feat: update changelog with Parcel to Vite refactor

feat: add danmuku plugin documentation and i18n setup guide

- Created a new documentation file for the danmuku plugin with code examples.
- Added a comprehensive guide for language settings (i18n) including default languages, importing languages, adding new languages, and modifying existing languages.
- Included code snippets for initializing the Artplayer with different language settings.

Add internationalization support for multiple languages in Artplayer

- Introduced Arabic (ar), Czech (cs), Spanish (es), Persian (fa), French (fr), Indonesian (id), Polish (pl), Russian (ru), Turkish (tr), Vietnamese (vi), and Traditional Chinese (zh-tw) translations.
- Created corresponding JavaScript and ES module files for each language containing translated strings for player controls and settings.
- Added a new documentation file for language settings in the project.

feat: add initial implementation of start option page with interactive code execution buttons

feat: add danmuku plugin documentation and i18n setup guide

- Created a new documentation file for the danmuku plugin, providing code examples for usage.
- Added a comprehensive guide for language settings, including default languages, importing languages, adding new languages, and modifying existing languages.
- Included code snippets for initializing the Artplayer with different language settings and importing language files.

refactor: update danmuku worker implementation and remove unused i18n files

- Changed the way the Danmuku class creates a Web Worker by using a worker loader instead of creating a blob.
- Removed Arabic, Czech, Spanish, Persian, French, Indonesian, Polish, Russian, Turkish, Vietnamese, and Traditional Chinese i18n files as they are no longer needed.
- Updated the Vite build configuration to disable banners for inline workers and added a plugin to remove worker banners from generated code.

feat: add danmuku plugin and i18n setup documentation

- Created a new documentation file for the danmuku plugin, providing code examples for usage.
- Added a new documentation file for language settings (i18n), detailing how to set default languages, import languages, and add new languages.
- Included code snippets for initializing the Artplayer with different language settings and examples for modifying existing languages.

feat: add danmuku plugin and i18n setup documentation

- Created a new documentation file for the danmuku plugin with code examples.
- Added a new documentation file for language settings (i18n) including import instructions and examples for setting default and custom languages.
- Updated the i18n documentation to include details on adding and modifying languages.

feat: add danmuku plugin and i18n setup documentation

- Created a new JavaScript file for the danmuku plugin documentation with multiple code execution buttons.
- Added a new JavaScript file for i18n (internationalization) setup documentation, including instructions for language settings, importing languages, and modifying language options.
- Included examples for setting default languages and adding new languages in the i18n documentation.

Refactor code structure for improved readability and maintainability
This commit is contained in:
Harvey Zhao committed 2026-03-07 15:21:34 +08:00
1 parent ddb78cf850
commit 699bf09577
397 files changed
+99776 -8638

No files matched your search

+2
View File
@@ -6,10 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased]
- Refactor `Parcel` to `Vite`
- Change `Artplayer.FULLSCREEN_WEB_IN_BODY` defaults to `true`
- The `reset` method is used to reset video request
- Fix [#1014](https://github.com/zhw2590582/ArtPlayer/issues/1014)
- Fix [#1023](https://github.com/zhw2590582/ArtPlayer/issues/1023)
- Fix [#1028](https://github.com/zhw2590582/ArtPlayer/issues/1028)
- Add `artplayer-plugin-jassub` plugin
- Add `artplayer-proxy-mediabunny` plugin
- Add `artplayer-plugin-audio-track` plugin
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-ads.js v2.0.0
* artplayer-plugin-ads.js v2.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,l,i){var r="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},a="function"==typeof r[l]&&r[l],o=a.i||{},d=a.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(t,n){if(!d[t]){if(!e[t]){if(i[t])return i[t];var o="function"==typeof r[l]&&r[l];if(!n&&o)return o(t,!0);if(a)return a(t,!0);if(u&&"string"==typeof t)return u(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}y.resolve=function(n){var l=e[t][1][n];return null!=l?l:n},y.cache={};var c=d[t]=new p.Module(t);e[t][0].call(c.exports,y,c,c.exports,r)}return d[t].exports;function y(e){var t=y.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],l=e[1],i=e[2]||e[0],r=p(l);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:r}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?r.__esModule?r.default:r:r[i]}})}),n}return p(t)}}p.isParcelRequire=!0,p.Module=function(e){this.id=e,this.bundle=p,this.require=u,this.exports={}},p.modules=e,p.cache=d,p.parent=a,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=o,p.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(p,"root",{get:function(){return r[l]}}),r[l]=p;for(var s=0;s<t.length;s++)p(t[s]);if(n){var c=p(n);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({ezZng:[function(e,t,n,l){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",()=>o);var r=e("bundle-text:./style.less"),a=i.interopDefault(r);function o(e){return t=>{!function(e){let{version:t,utils:{errorHandle:n}}=e.constructor,l=t.split(".").map(Number);n(l[0]+l[1]/100>=5,`Artplayer.js@${t} is not compatible the artplayerPluginAds@${o.version}. Please update it to version Artplayer.js@5.x.x`)}(t);let{template:{$player:n},icons:{volume:l,volumeClose:i,fullscreenOn:r,fullscreenOff:a,loading:d},constructor:{validator:u,utils:{query:p,append:s,setStyle:c}}}=t;e=u({html:"",video:"",url:"",playDuration:5,totalDuration:10,muted:!1,i18n:{close:"关闭广告",countdown:"%s秒",detail:"查看详情",canBeClosed:"%s秒后可关闭广告"},...e},{html:"?string",video:"?string",url:"?string",playDuration:"number",totalDuration:"number",muted:"?boolean",i18n:{close:"string",countdown:"string",detail:"string",canBeClosed:"string"}});let y=null,f=null,g=null,m=null,v=null,x=null,h=0,b=null,w=!1,j=!1,D=!1;function P(e,t){return t.replace("%s",e)}function O(){w=!0,t.play(),e.video&&y.pause(),c(t.template.$ads,"display","none"),t.emit("artplayerPluginAds:skip",e)}function k(){w||(b=setTimeout(()=>{h+=1;let t=e.playDuration-h;t>=1?g.innerHTML=P(t,e.i18n.canBeClosed):(g.innerHTML=e.i18n.close,D||(D=!0)),m.innerHTML=P(e.totalDuration-h,e.i18n.countdown),h>=e.totalDuration?O():k()},1e3))}function _(){w||clearTimeout(b)}function $(){j||(j=!0,function(){t.template.$ads=s(n,'<div class="artplayer-plugin-ads"></div>'),y=s(t.template.$ads,e.video?`<video class="artplayer-plugin-ads-video" src="${e.video}" loop playsInline></video>`:`<div class="artplayer-plugin-ads-html">${e.html}</div>`),x=s(t.template.$ads,'<div class="artplayer-plugin-ads-loading"></div>'),s(x,d),g=p(".artplayer-plugin-ads-close",f=s(t.template.$ads,`<div class="artplayer-plugin-ads-timer"><div class="artplayer-plugin-ads-close">${e.playDuration<=0?e.i18n.close:P(e.playDuration,e.i18n.canBeClosed)}</div><div class="artplayer-plugin-ads-countdown">${P(e.totalDuration,e.i18n.countdown)}</div></div>`)),m=p(".artplayer-plugin-ads-countdown",f),e.playDuration>=e.totalDuration&&c(g,"display","none"),t.proxy(g,"click",()=>{D&&O()});let o=p(".artplayer-plugin-ads-detail",v=s(t.template.$ads,`<div class="artplayer-plugin-ads-control"><div class="artplayer-plugin-ads-detail">${e.i18n.detail}</div><div class="artplayer-plugin-ads-muted"></div><div class="artplayer-plugin-ads-fullscreen"></div></div>`)),u=p(".artplayer-plugin-ads-muted",v),h=p(".artplayer-plugin-ads-fullscreen",v);if(e.url?t.proxy(o,"click",()=>{window.open(e.url),t.emit("artplayerPluginAds:click",e)}):c(o,"display","none"),e.video){let n=s(u,l),r=s(u,i);c(r,"display","none"),e.muted&&(y.muted=!0,c(n,"display","none"),c(r,"display","inline-flex")),t.proxy(u,"click",()=>{y.muted=!y.muted,y.muted?(c(n,"display","none"),c(r,"display","inline-flex")):(c(n,"display","inline-flex"),c(r,"display","none"))})}else c(u,"display","none");let b=s(h,r),w=s(h,a);c(w,"display","none"),t.proxy(h,"click",()=>{t.fullscreen=!t.fullscreen,t.fullscreen?(c(b,"display","inline-flex"),c(w,"display","none")):(c(b,"display","none"),c(w,"display","inline-flex"))}),t.proxy(y,"click",()=>{e.Line truncated
!function(e,l){"object"===typeof exports&&"undefined"!==typeof module?module.exports=l():"function"==typeof define&&define.amd?(t.ArtplayerPluginAds=l(),define(function(){return t.ArtplayerPluginAds})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginAds=l()}(this,function(){"use strict";function e(l){return n=>{!function(l){const{version:n,utils:{errorHandle:i}}=l.constructor,a=n.split(".").map(Number);i(a[0]+a[1]/100>=5,`Artplayer.js@${n} is not compatible the artplayerPluginAds@${e.version}. Please update it to version Artplayer.js@5.x.x`)}(n);const{template:{$player:i},icons:{volume:a,volumeClose:t,fullscreenOn:r,fullscreenOff:d,loading:o},constructor:{validator:s,utils:{query:p,append:u,setStyle:c}}}=n;l=s({html:"",video:"",url:"",playDuration:5,totalDuration:10,muted:!1,i18n:{close:"\u5173\u95ed\u5e7f\u544a",countdown:"%s\u79d2",detail:"\u67e5\u770b\u8be6\u60c5",canBeClosed:"%s\u79d2\u540e\u53ef\u5173\u95ed\u5e7f\u544a"},...l},{html:"?string",video:"?string",url:"?string",playDuration:"number",totalDuration:"number",muted:"?boolean",i18n:{close:"string",countdown:"string",detail:"string",canBeClosed:"string"}});let y=null,g=null,f=null,m=null,v=null,x=null,h=0,w=null,b=!1,$=!1,k=!1;function D(e,l){return l.replace("%s",e)}function A(){b=!0,n.play(),l.video&&y.pause(),c(n.template.$ads,"display","none"),n.emit("artplayerPluginAds:skip",l)}function P(){b||(w=setTimeout(()=>{h+=1;const e=l.playDuration-h;e>=1?f.innerHTML=D(e,l.i18n.canBeClosed):(f.innerHTML=l.i18n.close,k||(k=!0)),m.innerHTML=D(l.totalDuration-h,l.i18n.countdown),h>=l.totalDuration?A():P()},1e3))}function C(){b||clearTimeout(w)}function T(){$||($=!0,function(){n.template.$ads=u(i,'<div class="artplayer-plugin-ads"></div>'),y=u(n.template.$ads,l.video?`<video class="artplayer-plugin-ads-video" src="${l.video}" loop playsInline></video>`:`<div class="artplayer-plugin-ads-html">${l.html}</div>`),x=u(n.template.$ads,'<div class="artplayer-plugin-ads-loading"></div>'),u(x,o),g=u(n.template.$ads,`<div class="artplayer-plugin-ads-timer">\n <div class="artplayer-plugin-ads-close">${l.playDuration<=0?l.i18n.close:D(l.playDuration,l.i18n.canBeClosed)}</div>\n <div class="artplayer-plugin-ads-countdown">${D(l.totalDuration,l.i18n.countdown)}</div>\n </div>`),f=p(".artplayer-plugin-ads-close",g),m=p(".artplayer-plugin-ads-countdown",g),l.playDuration>=l.totalDuration&&c(f,"display","none"),n.proxy(f,"click",()=>{k&&A()}),v=u(n.template.$ads,`<div class="artplayer-plugin-ads-control">\n <div class="artplayer-plugin-ads-detail">${l.i18n.detail}</div>\n <div class="artplayer-plugin-ads-muted"></div>\n <div class="artplayer-plugin-ads-fullscreen"></div>\n </div>`);const e=p(".artplayer-plugin-ads-detail",v),s=p(".artplayer-plugin-ads-muted",v),h=p(".artplayer-plugin-ads-fullscreen",v);if(l.url?n.proxy(e,"click",()=>{window.open(l.url),n.emit("artplayerPluginAds:click",l)}):c(e,"display","none"),l.video){const e=u(s,a),i=u(s,t);c(i,"display","none"),l.muted&&(y.muted=!0,c(e,"display","none"),c(i,"display","inline-flex")),n.proxy(s,"click",()=>{y.muted=!y.muted,y.muted?(c(e,"display","none"),c(i,"display","inline-flex")):(c(e,"display","inline-flex"),c(i,"display","none"))})}else c(s,"display","none");const w=u(h,r),b=u(h,d);c(b,"display","none"),n.proxy(h,"click",()=>{n.fullscreen=!n.fullscreen,n.fullscreen?(c(w,"display","inline-flex"),c(b,"display","none")):(c(w,"display","none"),c(b,"display","inline-flex"))}),n.proxy(y,"click",()=>{l.url&&window.open(l.url),n.emit("artplayerPluginAds:click",l)})}(),n.pause(),l.video?(n.proxy(y,"error",A),n.proxy(y,"loadedmetadata",()=>{P(),y.play(),c(g,"display","flex"),c(v,"display","flex"),c(x,"display","none")})):(P(),c(g,"display","flex"),c(v,"display","flex"),c(x,"display","none")),n.on("document:visibilitychange",()=>{document.hidden?C():P()}))}return n.on("ready",()=>{n.once("play",T),n.once("video:playing",T)}),{name:"artplayerPluginAds",skip:A,pause:C,play:P}}}if("undefined"!==typeof document&&!document.getElementById("artplayer-plugin-ads")){const e=document.createElement("style");e.id="artplayer-plugin-ads",e.textContent=".artplayer-plugin-ads{position:absolute;z-index:150;inset:0;width:100%;height:100%;overflow:hidden;font-size:13px;line-height:1;color:#fff;background-color:#000}.artplayer-plugin-ads .artplayer-plugin-ads-html{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.artplayer-plugin-ads .artplayer-plugin-ads-video{width:100%;height:100%}.artplayer-plugin-ads .artplayer-plugin-ads-timer{display:none;position:absolute;top:10px;right:10px}.artplayer-plugin-ads .artplayer-plugin-ads-timer>div{display:flex;align-items:center;background-color:#00000080;border-radius:15px;margin-left:5px;padding:5px 10px;cursor:pointer}.artplayer-plugin-ads .artplayer-plugin-ads-control{display:none;position:absolute;bottom:10px;right:10px}.artplLine truncated
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-ads.js v2.0.0
* artplayer-plugin-ads.js v2.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,n,t,r,l){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},a="function"==typeof i[r]&&i[r],o=a.i||{},u=a.cache||{},s="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(n,t){if(!u[n]){if(!e[n]){if(l[n])return l[n];var o="function"==typeof i[r]&&i[r];if(!t&&o)return o(n,!0);if(a)return a(n,!0);if(s&&"string"==typeof n)return s(n);var d=Error("Cannot find module '"+n+"'");throw d.code="MODULE_NOT_FOUND",d}f.resolve=function(t){var r=e[n][1][t];return null!=r?r:t},f.cache={};var c=u[n]=new p.Module(n);e[n][0].call(c.exports,f,c,c.exports,i)}return u[n].exports;function f(e){var n=f.resolve(e);if(!1===n)return{};if(Array.isArray(n)){var t={__esModule:!0};return n.forEach(function(e){var n=e[0],r=e[1],l=e[2]||e[0],i=p(r);"*"===n?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===l?Object.defineProperty(t,n,{enumerable:!0,value:i}):Object.defineProperty(t,n,{enumerable:!0,get:function(){return"default"===l?i.__esModule?i.default:i:i[l]}})}),t}return p(n)}}p.isParcelRequire=!0,p.Module=function(e){this.id=e,this.bundle=p,this.require=s,this.exports={}},p.modules=e,p.cache=u,p.parent=a,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=o,p.register=function(n,t){e[n]=[function(e,n){n.exports=t},{}]},Object.defineProperty(p,"root",{get:function(){return i[r]}}),i[r]=p;for(var d=0;d<n.length;d++)p(n[d]);if(t){var c=p(t);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({"1qHWP":[function(e,n,t,r){var l=e("@parcel/transformer-js/src/esmodule-helpers.js");l.defineInteropFlag(t),l.export(t,"default",function(){return u});var i=e("@swc/helpers/cjs/_object_spread.cjs"),a=e("bundle-text:./style.less"),o=l.interopDefault(a);function u(e){return function(n){r=(t=n.constructor).version,(0,t.utils.errorHandle)((l=r.split(".").map(Number))[0]+l[1]/100>=5,"Artplayer.js@".concat(r," is not compatible the artplayerPluginAds@").concat(u.version,". Please update it to version Artplayer.js@5.x.x"));var t,r,l,a=n.template.$player,o=n.icons,s=o.volume,p=o.volumeClose,d=o.fullscreenOn,c=o.fullscreenOff,f=o.loading,y=n.constructor,g=y.validator,m=y.utils,v=m.query,b=m.append,h=m.setStyle;e=g((0,i._)({html:"",video:"",url:"",playDuration:5,totalDuration:10,muted:!1,i18n:{close:"关闭广告",countdown:"%s秒",detail:"查看详情",canBeClosed:"%s秒后可关闭广告"}},e),{html:"?string",video:"?string",url:"?string",playDuration:"number",totalDuration:"number",muted:"?boolean",i18n:{close:"string",countdown:"string",detail:"string",canBeClosed:"string"}});var x=null,w=null,j=null,O=null,P=null,_=null,D=0,k=null,M=!1,q=!1,A=!1;function E(e,n){return n.replace("%s",e)}function C(){M=!0,n.play(),e.video&&x.pause(),h(n.template.$ads,"display","none"),n.emit("artplayerPluginAds:skip",e)}function T(){M||(k=setTimeout(function(){D+=1;var n=e.playDuration-D;n>=1?j.innerHTML=E(n,e.i18n.canBeClosed):(j.innerHTML=e.i18n.close,A||(A=!0)),O.innerHTML=E(e.totalDuration-D,e.i18n.countdown),D>=e.totalDuration?C():T()},1e3))}function H(){M||clearTimeout(k)}function $(){q||(q=!0,function(){n.template.$ads=b(a,'<div class="artplayer-plugin-ads"></div>'),x=b(n.template.$ads,e.video?'<video class="artplayer-plugin-ads-video" src="'.concat(e.video,'" loop playsInline></video>'):'<div class="artplayer-plugin-ads-html">'.concat(e.html,"</div>")),_=b(n.template.$ads,'<div class="artplayer-plugin-ads-loading"></div>'),b(_,f),j=v(".artplayer-plugin-ads-close",w=b(n.template.$ads,'<div class="artplayer-plugin-ads-timer">\n<div class="artplayer-plugin-ads-close">'.concat(e.playDuration<=0?e.i18n.close:E(e.playDuration,e.i18n.canBeClosed),'</div>\n<div class="artplayer-plugin-ads-countdown">').concat(E(e.totalDuration,e.i18n.countdown),"</div>\n</div>"))),O=v(".artplayer-plugin-ads-countdown",w),e.playDuration>=e.totalDuration&&h(j,"display","none"),n.proxy(j,"click",function(){A&&C()});var t=v(".artplayer-plugin-ads-detail",P=b(n.template.$ads,'<div class="artplayer-plugin-ads-control">\n<div class="artplayer-plugin-ads-detail">'.concat(e.i18n.detail,'</div>\n<div class="artplayer-plugin-ads-muted"></div>\n<div class="artplayer-plugin-ads-fullscreen"></div>\n</div>'))),r=v(".artplayer-plugin-ads-muted",P),l=v(".artplayer-plugin-ads-fullscreen",P);if(e.url?n.proxy(t,"click",function(){window.open(e.url),n.emit("artplayerPluginAds:click",e)}):h(t,"display","none"),e.video){var i=b(r,s),o=b(r,p);h(o,"display","none"),e.muted&&(x.muted=!0,h(i,"display","none"),h(o,"display","inline-flex")),n.proxy(r,"click",function(){x.muted=!x.muted,x.muted?(h(i,"display","none"),h(o,"display","inline-flex")):(h(i,"display","inline-flex"),h(o,"display","none"))})}else h(r,"display","none");var u=b(l,d),y=b(l,c);h(y,"display","none"),n.proxy(l,"cLine truncated
!function(e,l){"object"===typeof exports&&"undefined"!==typeof module?module.exports=l():"function"==typeof define&&define.amd?(t.ArtplayerPluginAds=l(),define(function(){return t.ArtplayerPluginAds})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginAds=l()}(this,function(){"use strict";var e=Object.defineProperty,l=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,i=(l,n,a)=>n in l?e(l,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):l[n]=a;function t(e){return r=>{!function(e){const{version:l,utils:{errorHandle:n}}=e.constructor,a=l.split(".").map(Number);n(a[0]+a[1]/100>=5,`Artplayer.js@${l} is not compatible the artplayerPluginAds@${t.version}. Please update it to version Artplayer.js@5.x.x`)}(r);const{template:{$player:o},icons:{volume:d,volumeClose:p,fullscreenOn:s,fullscreenOff:u,loading:c},constructor:{validator:y,utils:{query:g,append:f,setStyle:m}}}=r;e=y(((e,t)=>{for(var r in t||(t={}))n.call(t,r)&&i(e,r,t[r]);if(l)for(var r of l(t))a.call(t,r)&&i(e,r,t[r]);return e})({html:"",video:"",url:"",playDuration:5,totalDuration:10,muted:!1,i18n:{close:"\u5173\u95ed\u5e7f\u544a",countdown:"%s\u79d2",detail:"\u67e5\u770b\u8be6\u60c5",canBeClosed:"%s\u79d2\u540e\u53ef\u5173\u95ed\u5e7f\u544a"}},e),{html:"?string",video:"?string",url:"?string",playDuration:"number",totalDuration:"number",muted:"?boolean",i18n:{close:"string",countdown:"string",detail:"string",canBeClosed:"string"}});let v=null,x=null,h=null,b=null,w=null,$=null,k=0,D=null,P=!1,A=!1,j=!1;function O(e,l){return l.replace("%s",e)}function C(){P=!0,r.play(),e.video&&v.pause(),m(r.template.$ads,"display","none"),r.emit("artplayerPluginAds:skip",e)}function T(){P||(D=setTimeout(()=>{k+=1;const l=e.playDuration-k;l>=1?h.innerHTML=O(l,e.i18n.canBeClosed):(h.innerHTML=e.i18n.close,j||(j=!0)),b.innerHTML=O(e.totalDuration-k,e.i18n.countdown),k>=e.totalDuration?C():T()},1e3))}function B(){P||clearTimeout(D)}function H(){A||(A=!0,function(){r.template.$ads=f(o,'<div class="artplayer-plugin-ads"></div>'),v=f(r.template.$ads,e.video?`<video class="artplayer-plugin-ads-video" src="${e.video}" loop playsInline></video>`:`<div class="artplayer-plugin-ads-html">${e.html}</div>`),$=f(r.template.$ads,'<div class="artplayer-plugin-ads-loading"></div>'),f($,c),x=f(r.template.$ads,`<div class="artplayer-plugin-ads-timer">\n <div class="artplayer-plugin-ads-close">${e.playDuration<=0?e.i18n.close:O(e.playDuration,e.i18n.canBeClosed)}</div>\n <div class="artplayer-plugin-ads-countdown">${O(e.totalDuration,e.i18n.countdown)}</div>\n </div>`),h=g(".artplayer-plugin-ads-close",x),b=g(".artplayer-plugin-ads-countdown",x),e.playDuration>=e.totalDuration&&m(h,"display","none"),r.proxy(h,"click",()=>{j&&C()}),w=f(r.template.$ads,`<div class="artplayer-plugin-ads-control">\n <div class="artplayer-plugin-ads-detail">${e.i18n.detail}</div>\n <div class="artplayer-plugin-ads-muted"></div>\n <div class="artplayer-plugin-ads-fullscreen"></div>\n </div>`);const l=g(".artplayer-plugin-ads-detail",w),n=g(".artplayer-plugin-ads-muted",w),a=g(".artplayer-plugin-ads-fullscreen",w);if(e.url?r.proxy(l,"click",()=>{window.open(e.url),r.emit("artplayerPluginAds:click",e)}):m(l,"display","none"),e.video){const l=f(n,d),a=f(n,p);m(a,"display","none"),e.muted&&(v.muted=!0,m(l,"display","none"),m(a,"display","inline-flex")),r.proxy(n,"click",()=>{v.muted=!v.muted,v.muted?(m(l,"display","none"),m(a,"display","inline-flex")):(m(l,"display","inline-flex"),m(a,"display","none"))})}else m(n,"display","none");const i=f(a,s),t=f(a,u);m(t,"display","none"),r.proxy(a,"click",()=>{r.fullscreen=!r.fullscreen,r.fullscreen?(m(i,"display","inline-flex"),m(t,"display","none")):(m(i,"display","none"),m(t,"display","inline-flex"))}),r.proxy(v,"click",()=>{e.url&&window.open(e.url),r.emit("artplayerPluginAds:click",e)})}(),r.pause(),e.video?(r.proxy(v,"error",C),r.proxy(v,"loadedmetadata",()=>{T(),v.play(),m(x,"display","flex"),m(w,"display","flex"),m($,"display","none")})):(T(),m(x,"display","flex"),m(w,"display","flex"),m($,"display","none")),r.on("document:visibilitychange",()=>{document.hidden?B():T()}))}return r.on("ready",()=>{r.once("play",H),r.once("video:playing",H)}),{name:"artplayerPluginAds",skip:C,pause:B,play:T}}}if("undefined"!==typeof document&&!document.getElementById("artplayer-plugin-ads")){const e=document.createElement("style");e.id="artplayer-plugin-ads",e.textContent=".artplayer-plugin-ads{position:absolute;z-index:150;inset:0;width:100%;height:100%;overflow:hidden;font-size:13px;line-height:1;color:#fff;background-color:#000}.artplayer-plugin-ads .artplayer-plugin-ads-html{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.artplayer-plugin-ads .artplayer-plugin-ads-video{width:100%;height:100%}.artplayer-plugin-ads .artplayer-plugin-ads-timer{display:noneLine truncated
+249 -3
View File
@@ -1,8 +1,254 @@
/*!
* artplayer-plugin-ads.js v2.0.0
* artplayer-plugin-ads.js v2.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,l,n,i){var r="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},a="function"==typeof r[n]&&r[n],o=a.i||{},d=a.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(t,l){if(!d[t]){if(!e[t]){if(i[t])return i[t];var o="function"==typeof r[n]&&r[n];if(!l&&o)return o(t,!0);if(a)return a(t,!0);if(u&&"string"==typeof t)return u(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}y.resolve=function(l){var n=e[t][1][l];return null!=n?n:l},y.cache={};var c=d[t]=new p.Module(t);e[t][0].call(c.exports,y,c,c.exports,r)}return d[t].exports;function y(e){var t=y.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var l={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],i=e[2]||e[0],r=p(n);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(l,e)||Object.defineProperty(l,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===i?Object.defineProperty(l,t,{enumerable:!0,value:r}):Object.defineProperty(l,t,{enumerable:!0,get:function(){return"default"===i?r.__esModule?r.default:r:r[i]}})}),l}return p(t)}}p.isParcelRequire=!0,p.Module=function(e){this.id=e,this.bundle=p,this.require=u,this.exports={}},p.modules=e,p.cache=d,p.parent=a,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=o,p.register=function(t,l){e[t]=[function(e,t){t.exports=l},{}]},Object.defineProperty(p,"root",{get:function(){return r[n]}}),r[n]=p;for(var s=0;s<t.length;s++)p(t[s]);if(l){var c=p(l);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({fZ8n3:[function(e,t,l,n){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(l),i.export(l,"default",()=>o);var r=e("bundle-text:./style.less"),a=i.interopDefault(r);function o(e){return t=>{!function(e){let{version:t,utils:{errorHandle:l}}=e.constructor,n=t.split(".").map(Number);l(n[0]+n[1]/100>=5,`Artplayer.js@${t} is not compatible the artplayerPluginAds@${o.version}. Please update it to version Artplayer.js@5.x.x`)}(t);let{template:{$player:l},icons:{volume:n,volumeClose:i,fullscreenOn:r,fullscreenOff:a,loading:d},constructor:{validator:u,utils:{query:p,append:s,setStyle:c}}}=t;e=u({html:"",video:"",url:"",playDuration:5,totalDuration:10,muted:!1,i18n:{close:"关闭广告",countdown:"%s秒",detail:"查看详情",canBeClosed:"%s秒后可关闭广告"},...e},{html:"?string",video:"?string",url:"?string",playDuration:"number",totalDuration:"number",muted:"?boolean",i18n:{close:"string",countdown:"string",detail:"string",canBeClosed:"string"}});let y=null,f=null,g=null,m=null,v=null,x=null,h=0,b=null,w=!1,j=!1,D=!1;function P(e,t){return t.replace("%s",e)}function O(){w=!0,t.play(),e.video&&y.pause(),c(t.template.$ads,"display","none"),t.emit("artplayerPluginAds:skip",e)}function _(){w||(b=setTimeout(()=>{h+=1;let t=e.playDuration-h;t>=1?g.innerHTML=P(t,e.i18n.canBeClosed):(g.innerHTML=e.i18n.close,D||(D=!0)),m.innerHTML=P(e.totalDuration-h,e.i18n.countdown),h>=e.totalDuration?O():_()},1e3))}function k(){w||clearTimeout(b)}function $(){j||(j=!0,function(){t.template.$ads=s(l,'<div class="artplayer-plugin-ads"></div>'),y=s(t.template.$ads,e.video?`<video class="artplayer-plugin-ads-video" src="${e.video}" loop playsInline></video>`:`<div class="artplayer-plugin-ads-html">${e.html}</div>`),x=s(t.template.$ads,'<div class="artplayer-plugin-ads-loading"></div>'),s(x,d),g=p(".artplayer-plugin-ads-close",f=s(t.template.$ads,`<div class="artplayer-plugin-ads-timer"><div class="artplayer-plugin-ads-close">${e.playDuration<=0?e.i18n.close:P(e.playDuration,e.i18n.canBeClosed)}</div><div class="artplayer-plugin-ads-countdown">${P(e.totalDuration,e.i18n.countdown)}</div></div>`)),m=p(".artplayer-plugin-ads-countdown",f),e.playDuration>=e.totalDuration&&c(g,"display","none"),t.proxy(g,"click",()=>{D&&O()});let o=p(".artplayer-plugin-ads-detail",v=s(t.template.$ads,`<div class="artplayer-plugin-ads-control"><div class="artplayer-plugin-ads-detail">${e.i18n.detail}</div><div class="artplayer-plugin-ads-muted"></div><div class="artplayer-plugin-ads-fullscreen"></div></div>`)),u=p(".artplayer-plugin-ads-muted",v),h=p(".artplayer-plugin-ads-fullscreen",v);if(e.url?t.proxy(o,"click",()=>{window.open(e.url),t.emit("artplayerPluginAds:click",e)}):c(o,"display","none"),e.video){let l=s(u,n),r=s(u,i);c(r,"display","none"),e.muted&&(y.muted=!0,c(l,"display","none"),c(r,"display","inline-flex")),t.proxy(u,"click",()=>{y.muted=!y.muted,y.muted?(c(l,"display","none"),c(r,"display","inline-flex")):(c(l,"display","inline-flex"),c(r,"display","none"))})}else c(u,"display","none");let b=s(h,r),w=s(h,a);c(w,"display","none"),t.proxy(h,"click",()=>{t.fullscreen=!t.fullscreen,t.fullscreen?(c(b,"display","inline-flex"),c(w,"display","none")):(c(b,"display","none"),c(w,"display","inline-flex"))}),t.proxy(y,"click",()=>{e.Line truncated
const style = ".artplayer-plugin-ads{position:absolute;z-index:150;inset:0;width:100%;height:100%;overflow:hidden;font-size:13px;line-height:1;color:#fff;background-color:#000}.artplayer-plugin-ads .artplayer-plugin-ads-html{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.artplayer-plugin-ads .artplayer-plugin-ads-video{width:100%;height:100%}.artplayer-plugin-ads .artplayer-plugin-ads-timer{display:none;position:absolute;top:10px;right:10px}.artplayer-plugin-ads .artplayer-plugin-ads-timer>div{display:flex;align-items:center;background-color:#00000080;border-radius:15px;margin-left:5px;padding:5px 10px;cursor:pointer}.artplayer-plugin-ads .artplayer-plugin-ads-control{display:none;position:absolute;bottom:10px;right:10px}.artplayer-plugin-ads .artplayer-plugin-ads-control>div{display:flex;align-items:center;background-color:#00000080;border-radius:15px;margin-left:5px;padding:5px 10px;cursor:pointer}.artplayer-plugin-ads .artplayer-plugin-ads-control .art-icon svg{width:20px;height:20px}.artplayer-plugin-ads .artplayer-plugin-ads-loading{display:flex;align-items:center;justify-content:center;position:absolute;inset:0;width:100%;height:100%}";
function checkVersion(art) {
const {
version,
utils: { errorHandle }
} = art.constructor;
const arr = version.split(".").map(Number);
const major = arr[0];
const minor = arr[1] / 100;
errorHandle(
major + minor >= 5,
`Artplayer.js@${version} is not compatible the artplayerPluginAds@${artplayerPluginAds.version}. Please update it to version Artplayer.js@5.x.x`
);
}
function artplayerPluginAds(option) {
return (art) => {
checkVersion(art);
const {
template: { $player },
icons: { volume, volumeClose, fullscreenOn, fullscreenOff, loading },
constructor: {
validator,
utils: { query, append, setStyle }
}
} = art;
option = validator(
{
html: "",
video: "",
url: "",
playDuration: 5,
totalDuration: 10,
muted: false,
i18n: {
close: "关闭广告",
countdown: "%s秒",
detail: "查看详情",
canBeClosed: "%s秒后可关闭广告"
},
...option
},
{
html: "?string",
video: "?string",
url: "?string",
playDuration: "number",
totalDuration: "number",
muted: "?boolean",
i18n: {
close: "string",
countdown: "string",
detail: "string",
canBeClosed: "string"
}
}
);
let $ads = null;
let $timer = null;
let $close = null;
let $countdown = null;
let $control = null;
let $loading = null;
let time = 0;
let timer = null;
let isEnd = false;
let isInit = false;
let isCanClose = false;
function getI18n(val, str) {
return str.replace("%s", val);
}
function skip() {
isEnd = true;
art.play();
if (option.video)
$ads.pause();
setStyle(art.template.$ads, "display", "none");
art.emit("artplayerPluginAds:skip", option);
}
function play() {
if (isEnd)
return;
timer = setTimeout(() => {
time += 1;
const playDuration = option.playDuration - time;
if (playDuration >= 1) {
$close.innerHTML = getI18n(playDuration, option.i18n.canBeClosed);
} else {
$close.innerHTML = option.i18n.close;
if (!isCanClose) {
isCanClose = true;
}
}
$countdown.innerHTML = getI18n(option.totalDuration - time, option.i18n.countdown);
if (time >= option.totalDuration) {
skip();
} else {
play();
}
}, 1e3);
}
function pause() {
if (isEnd)
return;
clearTimeout(timer);
}
function show() {
art.template.$ads = append($player, '<div class="artplayer-plugin-ads"></div>');
$ads = append(
art.template.$ads,
option.video ? `<video class="artplayer-plugin-ads-video" src="${option.video}" loop playsInline></video>` : `<div class="artplayer-plugin-ads-html">${option.html}</div>`
);
$loading = append(art.template.$ads, '<div class="artplayer-plugin-ads-loading"></div>');
append($loading, loading);
$timer = append(
art.template.$ads,
`<div class="artplayer-plugin-ads-timer">
<div class="artplayer-plugin-ads-close">${option.playDuration <= 0 ? option.i18n.close : getI18n(option.playDuration, option.i18n.canBeClosed)}</div>
<div class="artplayer-plugin-ads-countdown">${getI18n(
option.totalDuration,
option.i18n.countdown
)}</div>
</div>`
);
$close = query(".artplayer-plugin-ads-close", $timer);
$countdown = query(".artplayer-plugin-ads-countdown", $timer);
if (option.playDuration >= option.totalDuration) {
setStyle($close, "display", "none");
}
art.proxy($close, "click", () => {
if (isCanClose) {
skip();
}
});
$control = append(
art.template.$ads,
`<div class="artplayer-plugin-ads-control">
<div class="artplayer-plugin-ads-detail">${option.i18n.detail}</div>
<div class="artplayer-plugin-ads-muted"></div>
<div class="artplayer-plugin-ads-fullscreen"></div>
</div>`
);
const $detail = query(".artplayer-plugin-ads-detail", $control);
const $muted = query(".artplayer-plugin-ads-muted", $control);
const $fullscreen = query(".artplayer-plugin-ads-fullscreen", $control);
if (option.url) {
art.proxy($detail, "click", () => {
window.open(option.url);
art.emit("artplayerPluginAds:click", option);
});
} else {
setStyle($detail, "display", "none");
}
if (option.video) {
const $volume = append($muted, volume);
const $volumeClose = append($muted, volumeClose);
setStyle($volumeClose, "display", "none");
if (option.muted) {
$ads.muted = true;
setStyle($volume, "display", "none");
setStyle($volumeClose, "display", "inline-flex");
}
art.proxy($muted, "click", () => {
$ads.muted = !$ads.muted;
if ($ads.muted) {
setStyle($volume, "display", "none");
setStyle($volumeClose, "display", "inline-flex");
} else {
setStyle($volume, "display", "inline-flex");
setStyle($volumeClose, "display", "none");
}
});
} else {
setStyle($muted, "display", "none");
}
const $fullscreenOn = append($fullscreen, fullscreenOn);
const $fullscreenOff = append($fullscreen, fullscreenOff);
setStyle($fullscreenOff, "display", "none");
art.proxy($fullscreen, "click", () => {
art.fullscreen = !art.fullscreen;
if (art.fullscreen) {
setStyle($fullscreenOn, "display", "inline-flex");
setStyle($fullscreenOff, "display", "none");
} else {
setStyle($fullscreenOn, "display", "none");
setStyle($fullscreenOff, "display", "inline-flex");
}
});
art.proxy($ads, "click", () => {
if (option.url)
window.open(option.url);
art.emit("artplayerPluginAds:click", option);
});
}
function init() {
if (isInit)
return;
isInit = true;
show();
art.pause();
if (option.video) {
art.proxy($ads, "error", skip);
art.proxy($ads, "loadedmetadata", () => {
play();
$ads.play();
setStyle($timer, "display", "flex");
setStyle($control, "display", "flex");
setStyle($loading, "display", "none");
});
} else {
play();
setStyle($timer, "display", "flex");
setStyle($control, "display", "flex");
setStyle($loading, "display", "none");
}
art.on("document:visibilitychange", () => {
if (document.hidden) {
pause();
} else {
play();
}
});
}
art.on("ready", () => {
art.once("play", init);
art.once("video:playing", init);
});
return {
name: "artplayerPluginAds",
skip,
pause,
play
};
};
}
if (typeof document !== "undefined") {
if (!document.getElementById("artplayer-plugin-ads")) {
const $style = document.createElement("style");
$style.id = "artplayer-plugin-ads";
$style.textContent = style;
document.head.appendChild($style);
}
}
if (typeof window !== "undefined") {
window.artplayerPluginAds = artplayerPluginAds;
}
export {
artplayerPluginAds as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-ambilight.js v1.0.0
* artplayer-plugin-ambilight.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,r,t,n,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof i[n]&&i[n],l=u.i||{},a=u.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(r,t){if(!a[r]){if(!e[r]){if(o[r])return o[r];var l="function"==typeof i[n]&&i[n];if(!t&&l)return l(r,!0);if(u)return u(r,!0);if(f&&"string"==typeof r)return f(r);var d=Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(t){var n=e[r][1][t];return null!=n?n:t},p.cache={};var s=a[r]=new c.Module(r);e[r][0].call(s.exports,p,s,s.exports,i)}return a[r].exports;function p(e){var r=p.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],n=e[1],o=e[2]||e[0],i=c(n);"*"===r?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(t,r,{enumerable:!0,value:i}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),t}return c(r)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=a,c.parent=u,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(c,"root",{get:function(){return i[n]}}),i[n]=c;for(var d=0;d<r.length;d++)c(r[d]);if(t){var s=c(t);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({"2PWBI":[function(e,r,t,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e={}){return r=>{var t,n,o,i,u,l,a,f,c,d;let s,p,y,{$video:m}=r.template,{createElement:b,addClass:g,setStyles:h}=r.constructor.utils,{blur:v="50px",opacity:j=.5,frequency:w=10,duration:O=.3}=e,P=b("div"),_=((t=P).innerHTML=Array.from({length:9}).fill("<div></div>").join(""),Array.from(t.children));n=P,o=m,g(n,"artplayer-plugin-ambilight"),o.parentNode.insertBefore(n,o),h(n,{position:"absolute",top:0,left:0,zIndex:9,inset:0,display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gridTemplateRows:"1fr 1fr 1fr"}),i=_,u=v,l=j,a=O,i.forEach(e=>{h(e,{opacity:l,filter:`blur(${u})`,transition:`background-color ${a}s ease`})});let x=(f=m,c=_,d=w,p=(s=b("canvas")).getContext("2d"),s.width=3,s.height=3,y=0,function e(){let t=performance.now();if(t-y<1e3/d||!r.playing){A=requestAnimationFrame(e);return}y=t;let n=f.videoWidth/3,o=f.videoHeight/3,i=[[0,0],[n,0],[2*n,0],[0,o],[n,o],[2*n,o],[0,2*o],[n,2*o],[2*n,2*o]].map(([e,r])=>(function(e,r,t,n){p.drawImage(f,e,r,t,n,0,0,1,1);let[o,i,u]=p.getImageData(0,0,1,1).data;return`rgb(${o}, ${i}, ${u})`})(e,r,n,o));c.forEach((e,r)=>{e.style.backgroundColor=i[r]}),A=requestAnimationFrame(e)}),A=null;function M(){A||x()}function I(){A&&(cancelAnimationFrame(A),A=null)}return r.on("ready",M),r.on("destroy",I),{name:"artplayerPluginAmbilight",start:M,stop:I}}}o.defineInteropFlag(t),o.export(t,"default",()=>i),"u">typeof window&&(window.artplayerPluginAmbilight=i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(e,r,t,n){t.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},t.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.exportAll=function(e,r){return Object.keys(e).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r},t.export=function(e,r,t){Object.defineProperty(e,r,{enumerable:!0,get:t})}},{}]},["2PWBI"],"2PWBI","parcelRequire4dc0",{});
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginAmbilight=t(),define(function(){return t.ArtplayerPluginAmbilight})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginAmbilight=t()}(this,function(){"use strict";function e(e={}){return t=>{const{$video:n}=t.template,{createElement:i,addClass:r,setStyles:o}=t.constructor.utils,{blur:a="50px",opacity:l=.5,frequency:d=10,duration:u=.3}=e,f=i("div"),s=((c=f).innerHTML=Array.from({length:9}).fill("<div></div>").join(""),Array.from(c.children));var c,p,m,g;!function(e,t){r(e,"artplayer-plugin-ambilight"),t.parentNode.insertBefore(e,t),o(e,{position:"absolute",top:0,left:0,zIndex:9,inset:0,display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gridTemplateRows:"1fr 1fr 1fr"})}(f,n),p=a,m=l,g=u,s.forEach(e=>{o(e,{opacity:m,filter:`blur(${p})`,transition:`background-color ${g}s ease`})});const y=function(e,n,r){const o=i("canvas"),a=o.getContext("2d");o.width=3,o.height=3;let l=0;return function i(){const o=performance.now();if(o-l<1e3/r||!t.playing)return void(h=requestAnimationFrame(i));l=o;const d=e.videoWidth/3,u=e.videoHeight/3,f=[[0,0],[d,0],[2*d,0],[0,u],[d,u],[2*d,u],[0,2*u],[d,2*u],[2*d,2*u]].map(([t,n])=>function(t,n,i,r){a.drawImage(e,t,n,i,r,0,0,1,1);const[o,l,d]=a.getImageData(0,0,1,1).data;return`rgb(${o}, ${l}, ${d})`}(t,n,d,u));n.forEach((e,t)=>{e.style.backgroundColor=f[t]}),h=requestAnimationFrame(i)}}(n,s,d);let h=null;function b(){h||y()}function v(){h&&(cancelAnimationFrame(h),h=null)}return t.on("ready",b),t.on("destroy",v),{name:"artplayerPluginAmbilight",start:b,stop:v}}}return"undefined"!==typeof window&&(window.artplayerPluginAmbilight=e),e});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-ambilight.js v1.0.0
* artplayer-plugin-ambilight.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,r,t,n,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},a="function"==typeof i[n]&&i[n],u=a.i||{},c=a.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(r,t){if(!c[r]){if(!e[r]){if(o[r])return o[r];var u="function"==typeof i[n]&&i[n];if(!t&&u)return u(r,!0);if(a)return a(r,!0);if(f&&"string"==typeof r)return f(r);var d=Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(t){var n=e[r][1][t];return null!=n?n:t},p.cache={};var s=c[r]=new l.Module(r);e[r][0].call(s.exports,p,s,s.exports,i)}return c[r].exports;function p(e){var r=p.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],n=e[1],o=e[2]||e[0],i=l(n);"*"===r?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(t,r,{enumerable:!0,value:i}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),t}return l(r)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=f,this.exports={}},l.modules=e,l.cache=c,l.parent=a,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=u,l.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(l,"root",{get:function(){return i[n]}}),i[n]=l;for(var d=0;d<r.length;d++)l(r[d]);if(t){var s=l(t);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({"8Uro8":[function(e,r,t,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(t),o.export(t,"default",function(){return a});var i=e("@swc/helpers/cjs/_sliced_to_array.cjs");function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(r){var t,n,o,a,u,c,f,l,d,s,p,y,m,b=r.template.$video,v=r.constructor.utils,h=v.createElement,g=v.addClass,_=v.setStyles,j=e.blur,w=e.opacity,O=e.frequency,A=e.duration,x=h("div"),M=((t=x).innerHTML=Array.from({length:9}).fill("<div></div>").join(""),Array.from(t.children));n=x,o=b,g(n,"artplayer-plugin-ambilight"),o.parentNode.insertBefore(n,o),_(n,{position:"absolute",top:0,left:0,zIndex:9,inset:0,display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gridTemplateRows:"1fr 1fr 1fr"}),a=M,u=void 0===j?"50px":j,c=void 0===w?.5:w,f=void 0===A?.3:A,a.forEach(function(e){_(e,{opacity:c,filter:"blur(".concat(u,")"),transition:"background-color ".concat(f,"s ease")})});var S=(l=b,d=M,s=void 0===O?10:O,y=(p=h("canvas")).getContext("2d"),p.width=3,p.height=3,m=0,function e(){var t=performance.now();if(t-m<1e3/s||!r.playing){P=requestAnimationFrame(e);return}m=t;var n=l.videoWidth/3,o=l.videoHeight/3,a=[[0,0],[n,0],[2*n,0],[0,o],[n,o],[2*n,o],[0,2*o],[n,2*o],[2*n,2*o]].map(function(e){var r,t,a,u,c=(0,i._)(e,2),f=c[0],d=c[1];return y.drawImage(l,f,d,n,o,0,0,1,1),t=(r=(0,i._)(y.getImageData(0,0,1,1).data,3))[0],a=r[1],u=r[2],"rgb(".concat(t,", ").concat(a,", ").concat(u,")")});d.forEach(function(e,r){e.style.backgroundColor=a[r]}),P=requestAnimationFrame(e)}),P=null;function q(){P||S()}function I(){P&&(cancelAnimationFrame(P),P=null)}return r.on("ready",q),r.on("destroy",I),{name:"artplayerPluginAmbilight",start:q,stop:I}}}"u">typeof window&&(window.artplayerPluginAmbilight=a)},{"@swc/helpers/cjs/_sliced_to_array.cjs":"gIQTH","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],gIQTH:[function(e,r,t,n){"use strict";var o=e("d7c30a5ae0c1ab2"),i=e("3aacfce52f67defd"),a=e("f0dae09a1a08b16a"),u=e("83f3648e614d0830");t._=function(e,r){return o._(e)||i._(e,r)||u._(e,r)||a._()}},{d7c30a5ae0c1ab2:"3QSPl","3aacfce52f67defd":"5SSeo",f0dae09a1a08b16a:"heYSj","83f3648e614d0830":"fh7mx"}],"3QSPl":[function(e,r,t,n){"use strict";t._=function(e){if(Array.isArray(e))return e}},{}],"5SSeo":[function(e,r,t,n){"use strict";t._=function(e,r){var t,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,u=!1;try{for(o=o.call(e);!(a=(t=o.next()).done)&&(i.push(t.value),!r||i.length!==r);a=!0);}catch(e){u=!0,n=e}finally{try{a||null==o.return||o.return()}finally{if(u)throw n}}return i}}},{}],heYSj:[function(e,r,t,n){"use strict";t._=function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,r,t,n){"use strict";var o=e("3ee51b7dc02d0c44");t._=function(e,r){if(e){if("string"==typeof e)return o._(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return o._(e,r)}}},{"3ee51b7dc02d0c44":"1WOAB"}],"1WOAB":[function(e,r,t,nLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginAmbilight=t(),define(function(){return t.ArtplayerPluginAmbilight})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginAmbilight=t()}(this,function(){"use strict";function e(e={}){return t=>{const{$video:n}=t.template,{createElement:i,addClass:r,setStyles:o}=t.constructor.utils,{blur:a="50px",opacity:l=.5,frequency:d=10,duration:u=.3}=e,f=i("div"),s=((c=f).innerHTML=Array.from({length:9}).fill("<div></div>").join(""),Array.from(c.children));var c,p,m,g;!function(e,t){r(e,"artplayer-plugin-ambilight"),t.parentNode.insertBefore(e,t),o(e,{position:"absolute",top:0,left:0,zIndex:9,inset:0,display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gridTemplateRows:"1fr 1fr 1fr"})}(f,n),p=a,m=l,g=u,s.forEach(e=>{o(e,{opacity:m,filter:`blur(${p})`,transition:`background-color ${g}s ease`})});const y=function(e,n,r){const o=i("canvas"),a=o.getContext("2d");o.width=3,o.height=3;let l=0;return function i(){const o=performance.now();if(o-l<1e3/r||!t.playing)return void(h=requestAnimationFrame(i));l=o;const d=e.videoWidth/3,u=e.videoHeight/3,f=[[0,0],[d,0],[2*d,0],[0,u],[d,u],[2*d,u],[0,2*u],[d,2*u],[2*d,2*u]].map(([t,n])=>function(t,n,i,r){a.drawImage(e,t,n,i,r,0,0,1,1);const[o,l,d]=a.getImageData(0,0,1,1).data;return`rgb(${o}, ${l}, ${d})`}(t,n,d,u));n.forEach((e,t)=>{e.style.backgroundColor=f[t]}),h=requestAnimationFrame(i)}}(n,s,d);let h=null;function b(){h||y()}function v(){h&&(cancelAnimationFrame(h),h=null)}return t.on("ready",b),t.on("destroy",v),{name:"artplayerPluginAmbilight",start:b,stop:v}}}return"undefined"!==typeof window&&(window.artplayerPluginAmbilight=e),e});
+102 -3
View File
@@ -1,8 +1,107 @@
/*!
* artplayer-plugin-ambilight.js v1.0.0
* artplayer-plugin-ambilight.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,r,t,n,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof i[n]&&i[n],l=u.i||{},a=u.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(r,t){if(!a[r]){if(!e[r]){if(o[r])return o[r];var l="function"==typeof i[n]&&i[n];if(!t&&l)return l(r,!0);if(u)return u(r,!0);if(f&&"string"==typeof r)return f(r);var d=Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(t){var n=e[r][1][t];return null!=n?n:t},s.cache={};var p=a[r]=new c.Module(r);e[r][0].call(p.exports,s,p,p.exports,i)}return a[r].exports;function s(e){var r=s.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],n=e[1],o=e[2]||e[0],i=c(n);"*"===r?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(t,r,{enumerable:!0,value:i}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),t}return c(r)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=a,c.parent=u,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(c,"root",{get:function(){return i[n]}}),i[n]=c;for(var d=0;d<r.length;d++)c(r[d]);if(t){var p=c(t);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"4BFTD":[function(e,r,t,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e={}){return r=>{var t,n,o,i,u,l,a,f,c,d;let p,s,m,{$video:y}=r.template,{createElement:g,addClass:b,setStyles:h}=r.constructor.utils,{blur:v="50px",opacity:j=.5,frequency:w=10,duration:O=.3}=e,_=g("div"),x=((t=_).innerHTML=Array.from({length:9}).fill("<div></div>").join(""),Array.from(t.children));n=_,o=y,b(n,"artplayer-plugin-ambilight"),o.parentNode.insertBefore(n,o),h(n,{position:"absolute",top:0,left:0,zIndex:9,inset:0,display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gridTemplateRows:"1fr 1fr 1fr"}),i=x,u=v,l=j,a=O,i.forEach(e=>{h(e,{opacity:l,filter:`blur(${u})`,transition:`background-color ${a}s ease`})});let P=(f=y,c=x,d=w,s=(p=g("canvas")).getContext("2d"),p.width=3,p.height=3,m=0,function e(){let t=performance.now();if(t-m<1e3/d||!r.playing){q=requestAnimationFrame(e);return}m=t;let n=f.videoWidth/3,o=f.videoHeight/3,i=[[0,0],[n,0],[2*n,0],[0,o],[n,o],[2*n,o],[0,2*o],[n,2*o],[2*n,2*o]].map(([e,r])=>(function(e,r,t,n){s.drawImage(f,e,r,t,n,0,0,1,1);let[o,i,u]=s.getImageData(0,0,1,1).data;return`rgb(${o}, ${i}, ${u})`})(e,r,n,o));c.forEach((e,r)=>{e.style.backgroundColor=i[r]}),q=requestAnimationFrame(e)}),q=null;function A(){q||P()}function F(){q&&(cancelAnimationFrame(q),q=null)}return r.on("ready",A),r.on("destroy",F),{name:"artplayerPluginAmbilight",start:A,stop:F}}}o.defineInteropFlag(t),o.export(t,"default",()=>i),"u">typeof window&&(window.artplayerPluginAmbilight=i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,r,t,n){t.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},t.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.exportAll=function(e,r){return Object.keys(e).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r},t.export=function(e,r,t){Object.defineProperty(e,r,{enumerable:!0,get:t})}},{}]},["4BFTD"],"4BFTD","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("4BFTD");export{e as default};
function artplayerPluginAmbilight(option = {}) {
return (art) => {
const { $video } = art.template;
const { createElement, addClass, setStyles } = art.constructor.utils;
const { blur = "50px", opacity = 0.5, frequency = 10, duration = 0.3 } = option;
const $ambilight = createElement("div");
const gridItems = createGridItems($ambilight);
setupAmbilight($ambilight, $video);
setupGridItems(gridItems, blur, opacity, duration);
const updateColors = createColorUpdater($video, gridItems, frequency);
let animationFrameId = null;
function start() {
if (!animationFrameId) {
updateColors();
}
}
function stop() {
if (animationFrameId) {
cancelAnimationFrame(animationFrameId);
animationFrameId = null;
}
}
art.on("ready", start);
art.on("destroy", stop);
return {
name: "artplayerPluginAmbilight",
start,
stop
};
function createGridItems($ambilight2) {
$ambilight2.innerHTML = Array.from({ length: 9 }).fill("<div></div>").join("");
return Array.from($ambilight2.children);
}
function setupAmbilight($ambilight2, $video2) {
addClass($ambilight2, "artplayer-plugin-ambilight");
$video2.parentNode.insertBefore($ambilight2, $video2);
setStyles($ambilight2, {
position: "absolute",
top: 0,
left: 0,
zIndex: 9,
inset: 0,
display: "grid",
gridTemplateColumns: "1fr 1fr 1fr",
gridTemplateRows: "1fr 1fr 1fr"
});
}
function setupGridItems(gridItems2, blur2, opacity2, duration2) {
gridItems2.forEach(($item) => {
setStyles($item, {
opacity: opacity2,
filter: `blur(${blur2})`,
transition: `background-color ${duration2}s ease`
});
});
}
function createColorUpdater($video2, gridItems2, frequency2) {
const canvas = createElement("canvas");
const ctx = canvas.getContext("2d");
canvas.width = 3;
canvas.height = 3;
function getAverageColor(x, y, w, h) {
ctx.drawImage($video2, x, y, w, h, 0, 0, 1, 1);
const [r, g, b] = ctx.getImageData(0, 0, 1, 1).data;
return `rgb(${r}, ${g}, ${b})`;
}
let lastUpdateTime = 0;
return function updateColors2() {
const now = performance.now();
if (now - lastUpdateTime < 1e3 / frequency2 || !art.playing) {
animationFrameId = requestAnimationFrame(updateColors2);
return;
}
lastUpdateTime = now;
const w = $video2.videoWidth / 3;
const h = $video2.videoHeight / 3;
const colors = [
[0, 0],
[w, 0],
[2 * w, 0],
[0, h],
[w, h],
[2 * w, h],
[0, 2 * h],
[w, 2 * h],
[2 * w, 2 * h]
].map(([x, y]) => getAverageColor(x, y, w, h));
gridItems2.forEach(($item, index) => {
$item.style.backgroundColor = colors[index];
});
animationFrameId = requestAnimationFrame(updateColors2);
};
}
};
}
if (typeof window !== "undefined") {
window.artplayerPluginAmbilight = artplayerPluginAmbilight;
}
export {
artplayerPluginAmbilight as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-asr.js v2.0.0
* artplayer-plugin-asr.js v2.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof a[n]&&a[n],l=i.i||{},u=i.cache||{},s="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!u[t]){if(!e[t]){if(o[t])return o[t];var l="function"==typeof a[n]&&a[n];if(!r&&l)return l(t,!0);if(i)return i(t,!0);if(s&&"string"==typeof t)return s(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}f.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},f.cache={};var p=u[t]=new c.Module(t);e[t][0].call(p.exports,f,p,p.exports,a)}return u[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],a=c(n);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:a}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?a.__esModule?a.default:a:a[o]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=s,this.exports={}},c.modules=e,c.cache=u,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return a[n]}}),a[n]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var p=c(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"1gnQM":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>l);var a=e("bundle-text:./style.less"),i=o.interopDefault(a);function l(e={}){let{length:t=3,interval:r=100,sampleRate:n=16e3,autoHideTimeout:o=1e4,onAudioChunk:a=()=>null}=e;return e=>{let i=!1,l=null,u=null,s=null,c=null,d=[],p=null,f=!1,y=null,b=null,m=null,g=e.layers.add({name:"asr",html:""});function v(){g.style.display="none"}function h(e){"string"==typeof e&&(clearTimeout(y),y=setTimeout(v,o),g.style.display="",g.innerHTML=e.split(/(?<=[、。!?!?.])\s*/u).map(e=>e.trim()).filter(Boolean).slice(-t).map(e=>`<div class="art-asr-line">${e}</div>`).join(""))}let w=` class RecorderProcessor extends AudioWorkletProcessor { process(inputs) { const input = inputs[0]; if (input && input[0]) { this.port.postMessage(input[0]); } return true; } } registerProcessor('recorder-processor', RecorderProcessor); `;async function x(){return l||"suspended"===(l=new(window.AudioContext||window.webkitAudioContext)({sampleRate:n})).state&&await l.resume(),l}async function A(){if(!u&&e.video)try{return u=l.createMediaElementSource(e.video)}catch(e){console.warn("[artplayerPluginAsr] Direct connection failed:",e)}try{if(b||(b=await j(e.video)),b)return m=l.createMediaStreamSource(b)}catch(e){console.warn("[artplayerPluginAsr] MediaStream fallback failed:",e)}return null}async function j(e){try{if(e.captureStream)return e.captureStream();if(e.mozCaptureStream)return e.mozCaptureStream();return console.warn("[artplayerPluginAsr] captureStream not supported"),null}catch(e){return console.warn("[artplayerPluginAsr] Error capturing stream:",e),null}}async function P(){if(!i)try{await x();let e=await A();if(!e)throw Error("Could not establish audio source");if(!f){let e,t=(e=new Blob([w],{type:"application/javascript"}),URL.createObjectURL(e));await l.audioWorklet.addModule(t),URL.revokeObjectURL(t),f=!0}(c=l.createGain()).gain.value=1,(s=new AudioWorkletNode(l,"recorder-processor")).port.onmessage=e=>{d.push(new Float32Array(e.data))},e.connect(s),e.connect(c),c.connect(l.destination);let t=r/1e3*n;p=setInterval(async()=>{let e,r,o,i;if(0===d.length)return;let l=new Float32Array(0);for(;l.length<t&&d.length;){let e=d.shift(),t=new Float32Array(l.length+e.length);t.set(l,0),t.set(e,l.length),l=t}if(l.length<t)return;let u=l.slice(0,t),s=function(e){let t=e.length,r=new ArrayBuffer(2*t),n=new DataView(r);for(let r=0;r<t;r++){let t=Math.max(-1,Math.min(1,e[r]));n.setInt16(2*r,t<0?32768*t:32767*t,!0)}return r}(u),c=(e=s.byteLength,r=new ArrayBuffer(44+e),o=new DataView(r),(i=(e,t)=>{for(let r=0;r<t.length;r++)o.setUint8(e+r,t.charCodeAt(r))})(0,"RIFF"),o.setUint32(4,36+e,!0),i(8,"WAVE"),i(12,"fmt "),o.setUint32(16,16,!0),o.setUint16(20,1,!0),o.setUint16(22,1,!0),o.setUint32(24,n,!0),o.setUint32(28,2*n,!0),o.setUint16(32,2,!0),o.setUint16(34,16,!0),i(36,"data"),o.setUint32(40,e,!0),new Uint8Array(r).set(new Uint8Array(s),44),r),p=await a({pcm:s,wav:c});h(p)},r),i=!0}catch(e){console.error("[artplayerPluginAsr] Initialization failed:",e),await M()}}async function M(){i&&(i=!1,clearInterval(p),p=null,s&&(s.disconnect(),s.port.onmessage=null,s=null),c&&(c.disconnect(),c=null),d=[])}async function U(){await M()Line truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginAsr=e(),define(function(){return t.ArtplayerPluginAsr})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginAsr=e()}(this,function(){"use strict";function t(t={}){const{length:e=3,interval:n=100,sampleRate:r=16e3,autoHideTimeout:a=1e4,onAudioChunk:o=()=>null}=t;return t=>{let i=!1,l=null,s=null,u=null,c=null,d=[],p=null,f=!1,y=null,m=null,g=null;const w=t.layers.add({name:"asr",html:""});function h(){w.style.display="none"}function b(t){var n;"string"===typeof t&&(clearTimeout(y),y=setTimeout(h,a),w.style.display="",w.innerHTML=(n=t,n.split(/(?<=[\u3001\u3002\uff01\uff1f!?.])\s*/u).map(t=>t.trim()).filter(Boolean).slice(-e)).map(t=>`<div class="art-asr-line">${t}</div>`).join(""))}async function v(){if(!s&&t.video)try{return s=l.createMediaElementSource(t.video),s}catch(e){console.warn("[artplayerPluginAsr] Direct connection failed:",e)}try{if(m||(m=await async function(t){try{return t.captureStream?t.captureStream():t.mozCaptureStream?t.mozCaptureStream():(console.warn("[artplayerPluginAsr] captureStream not supported"),null)}catch(e){return console.warn("[artplayerPluginAsr] Error capturing stream:",e),null}}(t.video)),m)return g=l.createMediaStreamSource(m),g}catch(e){console.warn("[artplayerPluginAsr] MediaStream fallback failed:",e)}return null}async function x(){i&&(i=!1,clearInterval(p),p=null,u&&(u.disconnect(),u.port.onmessage=null,u=null),c&&(c.disconnect(),c=null),d=[])}async function A(){await x(),g&&(g.disconnect(),g=null),s&&(s.disconnect(),s=null),m&&(m.getTracks().forEach(t=>t.stop()),m=null),l&&(await l.close(),l=null),f=!1}return t.on("video:volumechange",()=>{c&&(c.gain.value=t.volume)}),t.on("play",async function(){if(!i)try{await async function(){return l||(l=new(window.AudioContext||window.webkitAudioContext)({sampleRate:r}),"suspended"===l.state&&await l.resume(),l)}();const t=await v();if(!t)throw new Error("Could not establish audio source");if(!f){const t=(()=>{const t=new Blob(["\n class RecorderProcessor extends AudioWorkletProcessor {\n process(inputs) {\n const input = inputs[0];\n if (input && input[0]) {\n this.port.postMessage(input[0]);\n }\n return true;\n }\n }\n registerProcessor('recorder-processor', RecorderProcessor);\n "],{type:"application/javascript"});return URL.createObjectURL(t)})();await l.audioWorklet.addModule(t),URL.revokeObjectURL(t),f=!0}c=l.createGain(),c.gain.value=1,u=new AudioWorkletNode(l,"recorder-processor"),u.port.onmessage=t=>{d.push(new Float32Array(t.data))},t.connect(u),t.connect(c),c.connect(l.destination);const e=r*(n/1e3);p=setInterval(async()=>{if(0===d.length)return;let t=new Float32Array(0);for(;t.length<e&&d.length;){const e=d.shift(),n=new Float32Array(t.length+e.length);n.set(t,0),n.set(e,t.length),t=n}if(t.length<e)return;const n=function(t){const e=t.length,n=new ArrayBuffer(2*e),r=new DataView(n);for(let a=0;a<e;a++){const e=Math.max(-1,Math.min(1,t[a]));r.setInt16(2*a,e<0?32768*e:32767*e,!0)}return n}(t.slice(0,e)),a=function(t,e){const n=t.byteLength,r=new ArrayBuffer(44+n),a=new DataView(r),o=(t,e)=>{for(let n=0;n<e.length;n++)a.setUint8(t+n,e.charCodeAt(n))};return o(0,"RIFF"),a.setUint32(4,36+n,!0),o(8,"WAVE"),o(12,"fmt "),a.setUint32(16,16,!0),a.setUint16(20,1,!0),a.setUint16(22,1,!0),a.setUint32(24,e,!0),a.setUint32(28,2*e,!0),a.setUint16(32,2,!0),a.setUint16(34,16,!0),o(36,"data"),a.setUint32(40,n,!0),new Uint8Array(r).set(new Uint8Array(t),44),r}(n,r);b(await o({pcm:n,wav:a}))},n),i=!0}catch(t){console.error("[artplayerPluginAsr] Initialization failed:",t),await x()}}),t.on("pause",x),t.on("destroy",A),{name:"artplayerPluginAsr",stop:A,hide:h,append:b}}}if("undefined"!==typeof document&&!document.getElementById("artplayer-plugin-asr")){const t=document.createElement("style");t.id="artplayer-plugin-asr",t.textContent=".art-video-player .art-layer-asr{pointer-events:none!important;position:absolute;z-index:150;inset:0;display:flex;flex-direction:column;justify-content:end;padding:0 2%;font-size:1rem;gap:var(--art-subtitle-gap);padding-bottom:var(--art-subtitle-bottom);transition:padding-bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-control-show .art-layer-asr{padding-bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}",document.head.appendChild(t)}return"undefined"!==typeof window&&(window.artplayerPluginAsr=t),t});
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-asr.js v2.0.0
* artplayer-plugin-asr.js v2.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof a[n]&&a[n],i=u.i||{},l=u.cache||{},s="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!l[t]){if(!e[t]){if(o[t])return o[t];var i="function"==typeof a[n]&&a[n];if(!r&&i)return i(t,!0);if(u)return u(t,!0);if(s&&"string"==typeof t)return s(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var p=l[t]=new c.Module(t);e[t][0].call(p.exports,d,p,p.exports,a)}return l[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],a=c(n);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:a}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?a.__esModule?a.default:a:a[o]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=s,this.exports={}},c.modules=e,c.cache=l,c.parent=u,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=i,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return a[n]}}),a[n]=c;for(var f=0;f<t.length;f++)c(t[f]);if(r){var p=c(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"98QZN":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return s});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),u=e("@swc/helpers/cjs/_ts_generator.cjs"),i=e("bundle-text:./style.less"),l=o.interopDefault(i);function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.length,r=void 0===t?3:t,n=e.interval,o=void 0===n?100:n,i=e.sampleRate,l=void 0===i?16e3:i,s=e.autoHideTimeout,c=void 0===s?1e4:s,f=e.onAudioChunk,p=void 0===f?function(){return null}:f;return function(e){var t=!1,n=null,i=null,s=null,f=null,d=[],b=null,h=!1,v=null,y=null,m=null,g=e.layers.add({name:"asr",html:""});function w(){g.style.display="none"}function x(e){"string"==typeof e&&(clearTimeout(v),v=setTimeout(w,c),g.style.display="",g.innerHTML=e.split(RegExp("(?<=[、。!?!?.])\\s*","u")).map(function(e){return e.trim()}).filter(Boolean).slice(-r).map(function(e){return'<div class="art-asr-line">'.concat(e,"</div>")}).join(""))}var _=function(){var e=new Blob(["\n class RecorderProcessor extends AudioWorkletProcessor {\n process(inputs) {\n const input = inputs[0];\n if (input && input[0]) {\n this.port.postMessage(input[0]);\n }\n return true;\n }\n }\n registerProcessor('recorder-processor', RecorderProcessor);\n "],{type:"application/javascript"});return URL.createObjectURL(e)};function j(){return(0,a._)(function(){return(0,u._)(this,function(e){return t&&(t=!1,clearInterval(b),b=null,s&&(s.disconnect(),s.port.onmessage=null,s=null),f&&(f.disconnect(),f=null),d=[]),[2]})})()}function A(){return(0,a._)(function(){return(0,u._)(this,function(e){switch(e.label){case 0:return[4,j()];case 1:if(e.sent(),m&&(m.disconnect(),m=null),i&&(i.disconnect(),i=null),y&&(y.getTracks().forEach(function(e){return e.stop()}),y=null),!n)return[3,3];return[4,n.close()];case 2:e.sent(),n=null,e.label=3;case 3:return h=!1,[2]}})})()}return e.on("video:volumechange",function(){f&&(f.gain.value=e.volume)}),e.on("play",function(){return(0,a._)(function(){var r,c,v;return(0,u._)(this,function(g){switch(g.label){case 0:if(t)return[2];g.label=1;case 1:return g.trys.push([1,6,,8]),[4,(0,a._)(function(){return(0,u._)(this,function(e){switch(e.label){case 0:if(n)return[2,n];if("suspended"!==(n=new(window.AudioContext||window.webkitAudioContext)({sampleRate:l})).state)return[3,2];return[4,n.resume()];case 1:e.sent(),e.label=2;case 2:return[2,n]}})})()];case 2:return g.sent(),[4,(0,a._)(function(){return(0,u._)(this,function(t){switch(t.label){case 0:if(!i&&e.video)try{return i=n.createMediaElementSource(e.video),[2,i]}catch(e){console.warn("[artplayerPluginAsr] Direct connection failed:",e)}t.label=1;case 1:var r;if(t.trys.push([1,4,,5]),y)return[3,3];return[4,(r=e.video,(0,a._)(function(){return(0,u._)(this,function(e){try{if(r.captureStream)return[2,r.captureStream()];if(r.mozCaptureStream)return[2,r.mozCaptureStream()];return console.warn("[artplayerPluginAsr] captureStream not supported"),[2,null]}catch(e){return console.warn("[artplayerPluginAsr] Error capturing stream:",e),[2,null]}})})())];case 2:y=t.sent(),t.label=3;case 3:if(y)return[2,m=n.createMediaStreamSource(y)];return[3,5];case 4:return console.warn("[artplayerPluginAsr] MediaStream fallback faileLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginAsr=e(),define(function(){return t.ArtplayerPluginAsr})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginAsr=e()}(this,function(){"use strict";var t=(t,e,n)=>new Promise((r,o)=>{var a=t=>{try{l(n.next(t))}catch(e){o(e)}},i=t=>{try{l(n.throw(t))}catch(e){o(e)}},l=t=>t.done?r(t.value):Promise.resolve(t.value).then(a,i);l((n=n.apply(t,e)).next())});function e(e={}){const{length:n=3,interval:r=100,sampleRate:o=16e3,autoHideTimeout:a=1e4,onAudioChunk:i=()=>null}=e;return e=>{let l=!1,s=null,u=null,c=null,d=null,p=[],f=null,y=!1,m=null,h=null,g=null;const v=e.layers.add({name:"asr",html:""});function b(){v.style.display="none"}function w(t){var e;"string"===typeof t&&(clearTimeout(m),m=setTimeout(b,a),v.style.display="",v.innerHTML=(e=t,e.split(new RegExp("(?<=[\u3001\u3002\uff01\uff1f!?.])\\s*","u")).map(t=>t.trim()).filter(Boolean).slice(-n)).map(t=>`<div class="art-asr-line">${t}</div>`).join(""))}function x(){return t(this,null,function*(){if(!u&&e.video)try{return u=s.createMediaElementSource(e.video),u}catch(n){console.warn("[artplayerPluginAsr] Direct connection failed:",n)}try{if(h||(h=yield function(e){return t(this,null,function*(){try{return e.captureStream?e.captureStream():e.mozCaptureStream?e.mozCaptureStream():(console.warn("[artplayerPluginAsr] captureStream not supported"),null)}catch(n){return console.warn("[artplayerPluginAsr] Error capturing stream:",n),null}})}(e.video)),h)return g=s.createMediaStreamSource(h),g}catch(n){console.warn("[artplayerPluginAsr] MediaStream fallback failed:",n)}return null})}function A(){return t(this,null,function*(){l&&(l=!1,clearInterval(f),f=null,c&&(c.disconnect(),c.port.onmessage=null,c=null),d&&(d.disconnect(),d=null),p=[])})}function U(){return t(this,null,function*(){yield A(),g&&(g.disconnect(),g=null),u&&(u.disconnect(),u=null),h&&(h.getTracks().forEach(t=>t.stop()),h=null),s&&(yield s.close(),s=null),y=!1})}return e.on("video:volumechange",()=>{d&&(d.gain.value=e.volume)}),e.on("play",function(){return t(this,null,function*(){if(!l)try{yield function(){return t(this,null,function*(){return s||(s=new(window.AudioContext||window.webkitAudioContext)({sampleRate:o}),"suspended"===s.state&&(yield s.resume()),s)})}();const e=yield x();if(!e)throw new Error("Could not establish audio source");if(!y){const t=(()=>{const t=new Blob(["\n class RecorderProcessor extends AudioWorkletProcessor {\n process(inputs) {\n const input = inputs[0];\n if (input && input[0]) {\n this.port.postMessage(input[0]);\n }\n return true;\n }\n }\n registerProcessor('recorder-processor', RecorderProcessor);\n "],{type:"application/javascript"});return URL.createObjectURL(t)})();yield s.audioWorklet.addModule(t),URL.revokeObjectURL(t),y=!0}d=s.createGain(),d.gain.value=1,c=new AudioWorkletNode(s,"recorder-processor"),c.port.onmessage=t=>{p.push(new Float32Array(t.data))},e.connect(c),e.connect(d),d.connect(s.destination);const n=o*(r/1e3);f=setInterval(()=>t(null,null,function*(){if(0===p.length)return;let t=new Float32Array(0);for(;t.length<n&&p.length;){const e=p.shift(),n=new Float32Array(t.length+e.length);n.set(t,0),n.set(e,t.length),t=n}if(t.length<n)return;const e=function(t){const e=t.length,n=new ArrayBuffer(2*e),r=new DataView(n);for(let o=0;o<e;o++){const e=Math.max(-1,Math.min(1,t[o]));r.setInt16(2*o,e<0?32768*e:32767*e,!0)}return n}(t.slice(0,n)),r=function(t,e){const n=t.byteLength,r=new ArrayBuffer(44+n),o=new DataView(r),a=(t,e)=>{for(let n=0;n<e.length;n++)o.setUint8(t+n,e.charCodeAt(n))};return a(0,"RIFF"),o.setUint32(4,36+n,!0),a(8,"WAVE"),a(12,"fmt "),o.setUint32(16,16,!0),o.setUint16(20,1,!0),o.setUint16(22,1,!0),o.setUint32(24,e,!0),o.setUint32(28,2*e,!0),o.setUint16(32,2,!0),o.setUint16(34,16,!0),a(36,"data"),o.setUint32(40,n,!0),new Uint8Array(r).set(new Uint8Array(t),44),r}(e,o);w(yield i({pcm:e,wav:r}))}),r),l=!0}catch(e){console.error("[artplayerPluginAsr] Initialization failed:",e),yield A()}})}),e.on("pause",A),e.on("destroy",U),{name:"artplayerPluginAsr",stop:U,hide:b,append:w}}}if("undefined"!==typeof document&&!document.getElementById("artplayer-plugin-asr")){const t=document.createElement("style");t.id="artplayer-plugin-asr",t.textContent=".art-video-player .art-layer-asr{pointer-events:none!important;position:absolute;z-index:150;inset:0;display:flex;flex-direction:column;justify-content:end;padding:0 2%;font-size:1rem;gap:var(--art-subtitle-gap);padding-bottom:var(--art-subtitle-bottom);transition:padding-bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtLine truncated
+250 -3
View File
@@ -1,8 +1,255 @@
/*!
* artplayer-plugin-asr.js v2.0.0
* artplayer-plugin-asr.js v2.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof a[n]&&a[n],i=l.i||{},u=l.cache||{},s="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!u[t]){if(!e[t]){if(o[t])return o[t];var i="function"==typeof a[n]&&a[n];if(!r&&i)return i(t,!0);if(l)return l(t,!0);if(s&&"string"==typeof t)return s(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}f.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},f.cache={};var p=u[t]=new c.Module(t);e[t][0].call(p.exports,f,p,p.exports,a)}return u[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],a=c(n);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:a}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?a.__esModule?a.default:a:a[o]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=s,this.exports={}},c.modules=e,c.cache=u,c.parent=l,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=i,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return a[n]}}),a[n]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var p=c(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({ejGkt:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>i);var a=e("bundle-text:./style.less"),l=o.interopDefault(a);function i(e={}){let{length:t=3,interval:r=100,sampleRate:n=16e3,autoHideTimeout:o=1e4,onAudioChunk:a=()=>null}=e;return e=>{let l=!1,i=null,u=null,s=null,c=null,d=[],p=null,f=!1,y=null,m=null,b=null,g=e.layers.add({name:"asr",html:""});function v(){g.style.display="none"}function h(e){"string"==typeof e&&(clearTimeout(y),y=setTimeout(v,o),g.style.display="",g.innerHTML=e.split(/(?<=[、。!?!?.])\s*/u).map(e=>e.trim()).filter(Boolean).slice(-t).map(e=>`<div class="art-asr-line">${e}</div>`).join(""))}let w=` class RecorderProcessor extends AudioWorkletProcessor { process(inputs) { const input = inputs[0]; if (input && input[0]) { this.port.postMessage(input[0]); } return true; } } registerProcessor('recorder-processor', RecorderProcessor); `;async function x(){return i||"suspended"===(i=new(window.AudioContext||window.webkitAudioContext)({sampleRate:n})).state&&await i.resume(),i}async function j(){if(!u&&e.video)try{return u=i.createMediaElementSource(e.video)}catch(e){console.warn("[artplayerPluginAsr] Direct connection failed:",e)}try{if(m||(m=await A(e.video)),m)return b=i.createMediaStreamSource(m)}catch(e){console.warn("[artplayerPluginAsr] MediaStream fallback failed:",e)}return null}async function A(e){try{if(e.captureStream)return e.captureStream();if(e.mozCaptureStream)return e.mozCaptureStream();return console.warn("[artplayerPluginAsr] captureStream not supported"),null}catch(e){return console.warn("[artplayerPluginAsr] Error capturing stream:",e),null}}async function P(){if(!l)try{await x();let e=await j();if(!e)throw Error("Could not establish audio source");if(!f){let e,t=(e=new Blob([w],{type:"application/javascript"}),URL.createObjectURL(e));await i.audioWorklet.addModule(t),URL.revokeObjectURL(t),f=!0}(c=i.createGain()).gain.value=1,(s=new AudioWorkletNode(i,"recorder-processor")).port.onmessage=e=>{d.push(new Float32Array(e.data))},e.connect(s),e.connect(c),c.connect(i.destination);let t=r/1e3*n;p=setInterval(async()=>{let e,r,o,l;if(0===d.length)return;let i=new Float32Array(0);for(;i.length<t&&d.length;){let e=d.shift(),t=new Float32Array(i.length+e.length);t.set(i,0),t.set(e,i.length),i=t}if(i.length<t)return;let u=i.slice(0,t),s=function(e){let t=e.length,r=new ArrayBuffer(2*t),n=new DataView(r);for(let r=0;r<t;r++){let t=Math.max(-1,Math.min(1,e[r]));n.setInt16(2*r,t<0?32768*t:32767*t,!0)}return r}(u),c=(e=s.byteLength,r=new ArrayBuffer(44+e),o=new DataView(r),(l=(e,t)=>{for(let r=0;r<t.length;r++)o.setUint8(e+r,t.charCodeAt(r))})(0,"RIFF"),o.setUint32(4,36+e,!0),l(8,"WAVE"),l(12,"fmt "),o.setUint32(16,16,!0),o.setUint16(20,1,!0),o.setUint16(22,1,!0),o.setUint32(24,n,!0),o.setUint32(28,2*n,!0),o.setUint16(32,2,!0),o.setUint16(34,16,!0),l(36,"data"),o.setUint32(40,e,!0),new Uint8Array(r).set(new Uint8Array(s),44),r),p=await a({pcm:s,wav:c});h(p)},r),l=!0}catch(e){console.error("[artplayerPluginAsr] Initialization failed:",e),await U()}}async function U(){l&&(l=!1,clearInterval(p),p=null,s&&(s.disconnect(),s.port.onmessage=null,s=null),c&&(c.disconnect(),c=null),d=[])}async function O(){await U(),bLine truncated
const style = ".art-video-player .art-layer-asr{pointer-events:none!important;position:absolute;z-index:150;inset:0;display:flex;flex-direction:column;justify-content:end;padding:0 2%;font-size:1rem;gap:var(--art-subtitle-gap);padding-bottom:var(--art-subtitle-bottom);transition:padding-bottom var(--art-transition-duration) ease;text-shadow:var(--art-subtitle-border) 1px 0 1px,var(--art-subtitle-border) 0 1px 1px,var(--art-subtitle-border) -1px 0 1px,var(--art-subtitle-border) 0 -1px 1px,var(--art-subtitle-border) 1px 1px 1px,var(--art-subtitle-border) -1px -1px 1px,var(--art-subtitle-border) 1px -1px 1px,var(--art-subtitle-border) -1px 1px 1px}.art-video-player.art-control-show .art-layer-asr{padding-bottom:calc(var(--art-control-height) + var(--art-subtitle-bottom))}";
function artplayerPluginAsr(option = {}) {
const {
length = 3,
interval = 100,
sampleRate = 16e3,
autoHideTimeout = 1e4,
onAudioChunk = () => null
} = option;
return (art) => {
let started = false;
let audioCtx = null;
let sourceNode = null;
let recorderNode = null;
let gainNode = null;
let bufferChunks = [];
let timer = null;
let workletLoaded = false;
let hideTimer = null;
let mediaStream = null;
let mediaStreamSource = null;
const $asr = art.layers.add({
name: "asr",
html: ""
});
function splitByPunctuation(text) {
return text.split(/(?<=[、。!?!?.])\s*/u).map((s) => s.trim()).filter(Boolean).slice(-length);
}
function hide() {
$asr.style.display = "none";
}
function append(subtitle) {
if (typeof subtitle !== "string")
return;
clearTimeout(hideTimer);
hideTimer = setTimeout(hide, autoHideTimeout);
$asr.style.display = "";
$asr.innerHTML = splitByPunctuation(subtitle).map((line) => `<div class="art-asr-line">${line}</div>`).join("");
}
const recorderProcessorCode = `
class RecorderProcessor extends AudioWorkletProcessor {
process(inputs) {
const input = inputs[0];
if (input && input[0]) {
this.port.postMessage(input[0]);
}
return true;
}
}
registerProcessor('recorder-processor', RecorderProcessor);
`;
const createWorkletBlobUrl = () => {
const blob = new Blob([recorderProcessorCode], { type: "application/javascript" });
return URL.createObjectURL(blob);
};
function floatTo16BitPCM(float32Array) {
const len = float32Array.length;
const buffer = new ArrayBuffer(len * 2);
const view = new DataView(buffer);
for (let i = 0; i < len; i++) {
const s = Math.max(-1, Math.min(1, float32Array[i]));
view.setInt16(i * 2, s < 0 ? s * 32768 : s * 32767, true);
}
return buffer;
}
function pcmToWav(pcmBuffer, sampleRate2) {
const pcmLength = pcmBuffer.byteLength;
const wavBuffer = new ArrayBuffer(44 + pcmLength);
const view = new DataView(wavBuffer);
const writeString = (offset, str) => {
for (let i = 0; i < str.length; i++) {
view.setUint8(offset + i, str.charCodeAt(i));
}
};
writeString(0, "RIFF");
view.setUint32(4, 36 + pcmLength, true);
writeString(8, "WAVE");
writeString(12, "fmt ");
view.setUint32(16, 16, true);
view.setUint16(20, 1, true);
view.setUint16(22, 1, true);
view.setUint32(24, sampleRate2, true);
view.setUint32(28, sampleRate2 * 2, true);
view.setUint16(32, 2, true);
view.setUint16(34, 16, true);
writeString(36, "data");
view.setUint32(40, pcmLength, true);
new Uint8Array(wavBuffer).set(new Uint8Array(pcmBuffer), 44);
return wavBuffer;
}
async function setupAudioContext() {
if (audioCtx)
return audioCtx;
audioCtx = new (window.AudioContext || window.webkitAudioContext)({ sampleRate });
if (audioCtx.state === "suspended")
await audioCtx.resume();
return audioCtx;
}
async function setupAudioSource() {
if (!sourceNode && art.video) {
try {
sourceNode = audioCtx.createMediaElementSource(art.video);
return sourceNode;
} catch (err) {
console.warn("[artplayerPluginAsr] Direct connection failed:", err);
}
}
try {
if (!mediaStream) {
mediaStream = await captureAudioFromVideo(art.video);
}
if (mediaStream) {
mediaStreamSource = audioCtx.createMediaStreamSource(mediaStream);
return mediaStreamSource;
}
} catch (err) {
console.warn("[artplayerPluginAsr] MediaStream fallback failed:", err);
}
return null;
}
async function captureAudioFromVideo(videoElement) {
try {
if (videoElement.captureStream)
return videoElement.captureStream();
if (videoElement.mozCaptureStream)
return videoElement.mozCaptureStream();
console.warn("[artplayerPluginAsr] captureStream not supported");
return null;
} catch (err) {
console.warn("[artplayerPluginAsr] Error capturing stream:", err);
return null;
}
}
async function startCapture() {
if (started)
return;
try {
await setupAudioContext();
const audioSource = await setupAudioSource();
if (!audioSource)
throw new Error("Could not establish audio source");
if (!workletLoaded) {
const blobUrl = createWorkletBlobUrl();
await audioCtx.audioWorklet.addModule(blobUrl);
URL.revokeObjectURL(blobUrl);
workletLoaded = true;
}
gainNode = audioCtx.createGain();
gainNode.gain.value = 1;
recorderNode = new AudioWorkletNode(audioCtx, "recorder-processor");
recorderNode.port.onmessage = (event) => {
bufferChunks.push(new Float32Array(event.data));
};
audioSource.connect(recorderNode);
audioSource.connect(gainNode);
gainNode.connect(audioCtx.destination);
const CHUNK_SAMPLES = sampleRate * (interval / 1e3);
timer = setInterval(async () => {
if (bufferChunks.length === 0)
return;
let accumulated = new Float32Array(0);
while (accumulated.length < CHUNK_SAMPLES && bufferChunks.length) {
const next = bufferChunks.shift();
const tmp = new Float32Array(accumulated.length + next.length);
tmp.set(accumulated, 0);
tmp.set(next, accumulated.length);
accumulated = tmp;
}
if (accumulated.length < CHUNK_SAMPLES)
return;
const chunkToSend = accumulated.slice(0, CHUNK_SAMPLES);
const pcm = floatTo16BitPCM(chunkToSend);
const wav = pcmToWav(pcm, sampleRate);
const subtitle = await onAudioChunk({ pcm, wav });
append(subtitle);
}, interval);
started = true;
} catch (err) {
console.error("[artplayerPluginAsr] Initialization failed:", err);
await stopCapture();
}
}
async function stopCapture() {
if (!started)
return;
started = false;
clearInterval(timer);
timer = null;
if (recorderNode) {
recorderNode.disconnect();
recorderNode.port.onmessage = null;
recorderNode = null;
}
if (gainNode) {
gainNode.disconnect();
gainNode = null;
}
bufferChunks = [];
}
async function destroy() {
await stopCapture();
if (mediaStreamSource) {
mediaStreamSource.disconnect();
mediaStreamSource = null;
}
if (sourceNode) {
sourceNode.disconnect();
sourceNode = null;
}
if (mediaStream) {
mediaStream.getTracks().forEach((track) => track.stop());
mediaStream = null;
}
if (audioCtx) {
await audioCtx.close();
audioCtx = null;
}
workletLoaded = false;
}
art.on("video:volumechange", () => {
if (gainNode) {
gainNode.gain.value = art.volume;
}
});
art.on("play", startCapture);
art.on("pause", stopCapture);
art.on("destroy", destroy);
return {
name: "artplayerPluginAsr",
stop: destroy,
hide,
append
};
};
}
if (typeof document !== "undefined") {
if (!document.getElementById("artplayer-plugin-asr")) {
const $style = document.createElement("style");
$style.id = "artplayer-plugin-asr";
$style.textContent = style;
document.head.appendChild($style);
}
}
if (typeof window !== "undefined") {
window.artplayerPluginAsr = artplayerPluginAsr;
}
export {
artplayerPluginAsr as default
};
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-audio-track.js v1.0.1
* artplayer-plugin-audio-track.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,r,t,o,n){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[o]&&u[o],a=i.i||{},l=i.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(r,t){if(!l[r]){if(!e[r]){if(n[r])return n[r];var a="function"==typeof u[o]&&u[o];if(!t&&a)return a(r,!0);if(i)return i(r,!0);if(c&&"string"==typeof r)return c(r);var d=Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(t){var o=e[r][1][t];return null!=o?o:t},s.cache={};var p=l[r]=new f.Module(r);e[r][0].call(p.exports,s,p,p.exports,u)}return l[r].exports;function s(e){var r=s.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],o=e[1],n=e[2]||e[0],u=f(o);"*"===r?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===n?Object.defineProperty(t,r,{enumerable:!0,value:u}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===n?u.__esModule?u.default:u:u[n]}})}),t}return f(r)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=c,this.exports={}},f.modules=e,f.cache=l,f.parent=i,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=a,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(f,"root",{get:function(){return u[o]}}),u[o]=f;for(var d=0;d<r.length;d++)f(r[d]);if(t){var p=f(t);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({b4T6O:[function(e,r,t,o){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function u(e){return r=>{let{url:t,offset:o=0,sync:n=.3}=e,u=new Audio;function i(){if(!r.video||!t)return;let e=r.currentTime+o;Math.abs(u.currentTime-e)>n&&(u.currentTime=e)}return u.preload="auto",t&&(u.src=t),r.on("play",()=>{t&&(i(),u.play().catch(e=>{console.warn(e)}))}),r.on("pause",()=>{u.pause()}),r.on("seek",()=>{i()}),r.on("video:timeupdate",()=>{r.playing&&i()}),r.on("video:ratechange",()=>{u.playbackRate=r.video.playbackRate}),r.on("video:volumechange",()=>{u.volume=r.volume,u.muted=r.muted}),r.on("video:waiting",()=>{u.pause()}),r.on("video:playing",()=>{t&&r.playing&&u.play().catch(e=>{console.warn(e)})}),r.on("destroy",()=>{u.pause(),u.src="",u.load()}),u.volume=r.volume,u.muted=r.muted,u.playbackRate=r.video?.playbackRate||1,{name:"artplayerPluginAudioTrack",audio:u,update:function(e){e.url&&e.url!==t&&(u.src=t=e.url,r.playing&&u.play().catch(e=>console.warn(e))),void 0!==e.offset&&(o=e.offset),void 0!==e.sync&&(n=e.sync)}}}}n.defineInteropFlag(t),n.export(t,"default",()=>u),"u">typeof window&&(window.artplayerPluginAudioTrack=u)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(e,r,t,o){t.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},t.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.exportAll=function(e,r){return Object.keys(e).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r},t.export=function(e,r,t){Object.defineProperty(e,r,{enumerable:!0,get:t})}},{}]},["b4T6O"],"b4T6O","parcelRequire4dc0",{});
!function(e,o){"object"===typeof exports&&"undefined"!==typeof module?module.exports=o():"function"==typeof define&&define.amd?(t.ArtplayerPluginAudioTrack=o(),define(function(){return t.ArtplayerPluginAudioTrack})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginAudioTrack=o()}(this,function(){"use strict";function e(e){return o=>{let{url:n,offset:a=0,sync:t=.3}=e;const i=new Audio;function u(){if(!o.video||!n)return;const e=o.currentTime+a;Math.abs(i.currentTime-e)>t&&(i.currentTime=e)}return i.preload="auto",n&&(i.src=n),o.on("play",()=>{n&&(u(),i.play().catch(e=>{console.warn(e)}))}),o.on("pause",()=>{i.pause()}),o.on("seek",()=>{u()}),o.on("video:timeupdate",()=>{o.playing&&u()}),o.on("video:ratechange",()=>{i.playbackRate=o.video.playbackRate}),o.on("video:volumechange",()=>{i.volume=o.volume,i.muted=o.muted}),o.on("video:waiting",()=>{i.pause()}),o.on("video:playing",()=>{n&&o.playing&&i.play().catch(e=>{console.warn(e)})}),o.on("destroy",()=>{i.pause(),i.src="",i.load()}),i.volume=o.volume,i.muted=o.muted,i.playbackRate=o.video?.playbackRate||1,{name:"artplayerPluginAudioTrack",audio:i,update:function(e){e.url&&e.url!==n&&(n=e.url,i.src=n,o.playing&&i.play().catch(e=>console.warn(e))),void 0!==e.offset&&(a=e.offset),void 0!==e.sync&&(t=e.sync)}}}}return"undefined"!==typeof window&&(window.artplayerPluginAudioTrack=e),e});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-audio-track.js v1.0.1
* artplayer-plugin-audio-track.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,n,o,t,r){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[t]&&u[t],a=i.i||{},c=i.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(n,o){if(!c[n]){if(!e[n]){if(r[n])return r[n];var a="function"==typeof u[t]&&u[t];if(!o&&a)return a(n,!0);if(i)return i(n,!0);if(f&&"string"==typeof n)return f(n);var d=Error("Cannot find module '"+n+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(o){var t=e[n][1][o];return null!=t?t:o},s.cache={};var p=c[n]=new l.Module(n);e[n][0].call(p.exports,s,p,p.exports,u)}return c[n].exports;function s(e){var n=s.resolve(e);if(!1===n)return{};if(Array.isArray(n)){var o={__esModule:!0};return n.forEach(function(e){var n=e[0],t=e[1],r=e[2]||e[0],u=l(t);"*"===n?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===r?Object.defineProperty(o,n,{enumerable:!0,value:u}):Object.defineProperty(o,n,{enumerable:!0,get:function(){return"default"===r?u.__esModule?u.default:u:u[r]}})}),o}return l(n)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=f,this.exports={}},l.modules=e,l.cache=c,l.parent=i,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=a,l.register=function(n,o){e[n]=[function(e,n){n.exports=o},{}]},Object.defineProperty(l,"root",{get:function(){return u[t]}}),u[t]=l;for(var d=0;d<n.length;d++)l(n[d]);if(o){var p=l(o);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"8tkGC":[function(e,n,o,t){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");function u(e){return function(n){var o,t=e.url,r=e.offset,u=void 0===r?0:r,i=e.sync,a=void 0===i?.3:i,c=new Audio;function f(){if(n.video&&t){var e=n.currentTime+u;Math.abs(c.currentTime-e)>a&&(c.currentTime=e)}}return c.preload="auto",t&&(c.src=t),n.on("play",function(){t&&(f(),c.play().catch(function(e){console.warn(e)}))}),n.on("pause",function(){c.pause()}),n.on("seek",function(){f()}),n.on("video:timeupdate",function(){n.playing&&f()}),n.on("video:ratechange",function(){c.playbackRate=n.video.playbackRate}),n.on("video:volumechange",function(){c.volume=n.volume,c.muted=n.muted}),n.on("video:waiting",function(){c.pause()}),n.on("video:playing",function(){t&&n.playing&&c.play().catch(function(e){console.warn(e)})}),n.on("destroy",function(){c.pause(),c.src="",c.load()}),c.volume=n.volume,c.muted=n.muted,c.playbackRate=(null==(o=n.video)?void 0:o.playbackRate)||1,{name:"artplayerPluginAudioTrack",audio:c,update:function(e){e.url&&e.url!==t&&(c.src=t=e.url,n.playing&&c.play().catch(function(e){return console.warn(e)})),void 0!==e.offset&&(u=e.offset),void 0!==e.sync&&(a=e.sync)}}}}r.defineInteropFlag(o),r.export(o,"default",function(){return u}),"u">typeof window&&(window.artplayerPluginAudioTrack=u)},{"@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],qpMMf:[function(e,n,o,t){o.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},o.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.exportAll=function(e,n){return Object.keys(e).forEach(function(o){"default"===o||"__esModule"===o||Object.prototype.hasOwnProperty.call(n,o)||Object.defineProperty(n,o,{enumerable:!0,get:function(){return e[o]}})}),n},o.export=function(e,n,o){Object.defineProperty(e,n,{enumerable:!0,get:o})}},{}]},["8tkGC"],"8tkGC","parcelRequire4dc0",{});
!function(e,o){"object"===typeof exports&&"undefined"!==typeof module?module.exports=o():"function"==typeof define&&define.amd?(t.ArtplayerPluginAudioTrack=o(),define(function(){return t.ArtplayerPluginAudioTrack})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginAudioTrack=o()}(this,function(){"use strict";function e(e){return o=>{var n;let{url:a,offset:t=0,sync:i=.3}=e;const u=new Audio;function l(){if(!o.video||!a)return;const e=o.currentTime+t;Math.abs(u.currentTime-e)>i&&(u.currentTime=e)}return u.preload="auto",a&&(u.src=a),o.on("play",()=>{a&&(l(),u.play().catch(e=>{console.warn(e)}))}),o.on("pause",()=>{u.pause()}),o.on("seek",()=>{l()}),o.on("video:timeupdate",()=>{o.playing&&l()}),o.on("video:ratechange",()=>{u.playbackRate=o.video.playbackRate}),o.on("video:volumechange",()=>{u.volume=o.volume,u.muted=o.muted}),o.on("video:waiting",()=>{u.pause()}),o.on("video:playing",()=>{a&&o.playing&&u.play().catch(e=>{console.warn(e)})}),o.on("destroy",()=>{u.pause(),u.src="",u.load()}),u.volume=o.volume,u.muted=o.muted,u.playbackRate=(null==(n=o.video)?void 0:n.playbackRate)||1,{name:"artplayerPluginAudioTrack",audio:u,update:function(e){e.url&&e.url!==a&&(a=e.url,u.src=a,o.playing&&u.play().catch(e=>console.warn(e))),void 0!==e.offset&&(t=e.offset),void 0!==e.sync&&(i=e.sync)}}}}return"undefined"!==typeof window&&(window.artplayerPluginAudioTrack=e),e});
+90 -3
View File
@@ -1,8 +1,95 @@
/*!
* artplayer-plugin-audio-track.js v1.0.1
* artplayer-plugin-audio-track.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,r,t,o,n){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[o]&&u[o],a=i.i||{},l=i.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(r,t){if(!l[r]){if(!e[r]){if(n[r])return n[r];var a="function"==typeof u[o]&&u[o];if(!t&&a)return a(r,!0);if(i)return i(r,!0);if(f&&"string"==typeof r)return f(r);var d=Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(t){var o=e[r][1][t];return null!=o?o:t},s.cache={};var p=l[r]=new c.Module(r);e[r][0].call(p.exports,s,p,p.exports,u)}return l[r].exports;function s(e){var r=s.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],o=e[1],n=e[2]||e[0],u=c(o);"*"===r?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===n?Object.defineProperty(t,r,{enumerable:!0,value:u}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===n?u.__esModule?u.default:u:u[n]}})}),t}return c(r)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=l,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=a,c.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(c,"root",{get:function(){return u[o]}}),u[o]=c;for(var d=0;d<r.length;d++)c(r[d]);if(t){var p=c(t);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({fHO26:[function(e,r,t,o){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function u(e){return r=>{let{url:t,offset:o=0,sync:n=.3}=e,u=new Audio;function i(){if(!r.video||!t)return;let e=r.currentTime+o;Math.abs(u.currentTime-e)>n&&(u.currentTime=e)}return u.preload="auto",t&&(u.src=t),r.on("play",()=>{t&&(i(),u.play().catch(e=>{console.warn(e)}))}),r.on("pause",()=>{u.pause()}),r.on("seek",()=>{i()}),r.on("video:timeupdate",()=>{r.playing&&i()}),r.on("video:ratechange",()=>{u.playbackRate=r.video.playbackRate}),r.on("video:volumechange",()=>{u.volume=r.volume,u.muted=r.muted}),r.on("video:waiting",()=>{u.pause()}),r.on("video:playing",()=>{t&&r.playing&&u.play().catch(e=>{console.warn(e)})}),r.on("destroy",()=>{u.pause(),u.src="",u.load()}),u.volume=r.volume,u.muted=r.muted,u.playbackRate=r.video?.playbackRate||1,{name:"artplayerPluginAudioTrack",audio:u,update:function(e){e.url&&e.url!==t&&(u.src=t=e.url,r.playing&&u.play().catch(e=>console.warn(e))),void 0!==e.offset&&(o=e.offset),void 0!==e.sync&&(n=e.sync)}}}}n.defineInteropFlag(t),n.export(t,"default",()=>u),"u">typeof window&&(window.artplayerPluginAudioTrack=u)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,r,t,o){t.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},t.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.exportAll=function(e,r){return Object.keys(e).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r},t.export=function(e,r,t){Object.defineProperty(e,r,{enumerable:!0,get:t})}},{}]},["fHO26"],"fHO26","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("fHO26");export{e as default};
function artplayerPluginAudioTrack(option) {
return (art) => {
let { url, offset = 0, sync = 0.3 } = option;
const audio = new Audio();
audio.preload = "auto";
if (url) {
audio.src = url;
}
function syncAudio() {
if (!art.video || !url)
return;
const videoTime = art.currentTime;
const targetTime = videoTime + offset;
if (Math.abs(audio.currentTime - targetTime) > sync) {
audio.currentTime = targetTime;
}
}
art.on("play", () => {
if (!url)
return;
syncAudio();
audio.play().catch((err) => {
console.warn(err);
});
});
art.on("pause", () => {
audio.pause();
});
art.on("seek", () => {
syncAudio();
});
art.on("video:timeupdate", () => {
if (art.playing) {
syncAudio();
}
});
art.on("video:ratechange", () => {
audio.playbackRate = art.video.playbackRate;
});
art.on("video:volumechange", () => {
audio.volume = art.volume;
audio.muted = art.muted;
});
art.on("video:waiting", () => {
audio.pause();
});
art.on("video:playing", () => {
if (url && art.playing) {
audio.play().catch((err) => {
console.warn(err);
});
}
});
art.on("destroy", () => {
audio.pause();
audio.src = "";
audio.load();
});
function update(newOption) {
if (newOption.url && newOption.url !== url) {
url = newOption.url;
audio.src = url;
if (art.playing) {
audio.play().catch((err) => console.warn(err));
}
}
if (newOption.offset !== void 0) {
offset = newOption.offset;
}
if (newOption.sync !== void 0) {
sync = newOption.sync;
}
}
audio.volume = art.volume;
audio.muted = art.muted;
audio.playbackRate = art.video?.playbackRate || 1;
return {
name: "artplayerPluginAudioTrack",
audio,
update
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginAudioTrack = artplayerPluginAudioTrack;
}
export {
artplayerPluginAudioTrack as default
};
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-auto-thumbnail.js v1.0.1
* artplayer-plugin-auto-thumbnail.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,o,n){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[o]&&u[o],l=i.i||{},a=i.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!a[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof u[o]&&u[o];if(!r&&l)return l(t,!0);if(i)return i(t,!0);if(f&&"string"==typeof t)return f(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},p.cache={};var s=a[t]=new c.Module(t);e[t][0].call(s.exports,p,s,s.exports,u)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],u=c(o);"*"===t?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:u}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?u.__esModule?u.default:u:u[n]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=a,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return u[o]}}),u[o]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var s=c(r);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({"6MsoC":[function(e,t,r,o){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function u(e){return async t=>(t.on("video:loadedmetadata",()=>{let r=e.url||t.option.url,o=e.width||160,n=e.number||100,u=e.scale||1;!function({url:e,width:t,number:r},o){let n=document.createElement("video");n.crossOrigin="anonymous",n.src=e,n.onloadedmetadata=()=>{let e=n.duration,u=document.createElement("canvas"),i=u.getContext("2d"),l=Math.floor(t*n.videoHeight/n.videoWidth);u.width=10*t,u.height=l*Math.ceil(r/10);let a=null;!function f(c){u.toBlob(e=>{URL.revokeObjectURL(a),o({url:a=URL.createObjectURL(e),height:l})},"image/jpeg"),c>=r||(n.currentTime=e*c/r,n.onseeked=()=>{i.drawImage(n,c%10*t,Math.floor(c/10)*l,t,l),f(c+1)})}(0)}}({url:r,width:o,number:n},e=>{t.thumbnails={...e,column:10,number:n,width:o,scale:u}})}),{name:"artplayerPluginAutoThumbnail"})}n.defineInteropFlag(r),n.export(r,"default",()=>u),"u">typeof window&&(window.artplayerPluginAutoThumbnail=u)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["6MsoC"],"6MsoC","parcelRequire4dc0",{});
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginAutoThumbnail=t(),define(function(){return t.ArtplayerPluginAutoThumbnail})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginAutoThumbnail=t()}(this,function(){"use strict";function e(e){return async t=>(t.on("video:loadedmetadata",()=>{const n=e.url||t.option.url,o=e.width||160,i=e.number||100,u=e.scale||1;!function({url:e,width:t,number:n},o){const i=document.createElement("video");i.crossOrigin="anonymous",i.src=e,i.onloadedmetadata=()=>{const e=i.duration,u=document.createElement("canvas"),a=u.getContext("2d"),d=Math.floor(t*i.videoHeight/i.videoWidth);u.width=10*t,u.height=d*Math.ceil(n/10);let l=null;!function r(c){u.toBlob(e=>{URL.revokeObjectURL(l),l=URL.createObjectURL(e),o({url:l,height:d})},"image/jpeg"),c>=n||(i.currentTime=e*c/n,i.onseeked=()=>{a.drawImage(i,c%10*t,Math.floor(c/10)*d,t,d),r(c+1)})}(0)}}({url:n,width:o,number:i},e=>{t.thumbnails={...e,column:10,number:i,width:o,scale:u}})}),{name:"artplayerPluginAutoThumbnail"})}return"undefined"!==typeof window&&(window.artplayerPluginAutoThumbnail=e),e});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-auto-thumbnail.js v1.0.1
* artplayer-plugin-auto-thumbnail.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},c="function"==typeof u[n]&&u[n],i=c.i||{},a=c.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!a[t]){if(!e[t]){if(o[t])return o[t];var i="function"==typeof u[n]&&u[n];if(!r&&i)return i(t,!0);if(c)return c(t,!0);if(l&&"string"==typeof t)return l(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var p=a[t]=new s.Module(t);e[t][0].call(p.exports,d,p,p.exports,u)}return a[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],u=s(n);"*"===t?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:u}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?u.__esModule?u.default:u:u[o]}})}),r}return s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.require=l,this.exports={}},s.modules=e,s.cache=a,s.parent=c,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=i,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return u[n]}}),u[n]=s;for(var f=0;f<t.length;f++)s(t[f]);if(r){var p=s(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"9JZgh":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return l});var u=e("@swc/helpers/cjs/_async_to_generator.cjs"),c=e("@swc/helpers/cjs/_object_spread.cjs"),i=e("@swc/helpers/cjs/_object_spread_props.cjs"),a=e("@swc/helpers/cjs/_ts_generator.cjs");function l(e){return function(t){return(0,u._)(function(){return(0,a._)(this,function(r){return t.on("video:loadedmetadata",function(){var r,n,o,u,a,l,s=e.url||t.option.url,f=e.width||160,p=e.number||100,d=e.scale||1;r={url:s,width:f,number:p},n=function(e){t.thumbnails=(0,i._)((0,c._)({},e),{column:10,number:p,width:f,scale:d})},o=r.url,u=r.width,a=r.number,(l=document.createElement("video")).crossOrigin="anonymous",l.src=o,l.onloadedmetadata=function(){var e=l.duration,t=document.createElement("canvas"),r=t.getContext("2d"),o=Math.floor(u*l.videoHeight/l.videoWidth);t.width=10*u,t.height=o*Math.ceil(a/10);var c=null;!function i(s){t.toBlob(function(e){URL.revokeObjectURL(c),n({url:c=URL.createObjectURL(e),height:o})},"image/jpeg"),s>=a||(l.currentTime=e*s/a,l.onseeked=function(){r.drawImage(l,s%10*u,Math.floor(s/10)*o,u,o),i(s+1)})}(0)}}),[2,{name:"artplayerPluginAutoThumbnail"}]})})()}}"u">typeof window&&(window.artplayerPluginAutoThumbnail=l)},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cZn0e:[function(e,t,r,n){"use strict";function o(e,t,r,n,o,u,c){try{var i=e[u](c),a=i.value}catch(e){r(e);return}i.done?t(a):Promise.resolve(a).then(n,o)}r._=function(e){return function(){var t=this,r=arguments;return new Promise(function(n,u){var c=e.apply(t,r);function i(e){o(c,n,u,i,a,"next",e)}function a(e){o(c,n,u,i,a,"throw",e)}i(void 0)})}}},{}],kyoEj:[function(e,t,r,n){"use strict";var o=e("9f9b8a24218ee51e");r._=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){o._(e,t,r[t])})}return e}},{"9f9b8a24218ee51e":"ltU3W"}],ltU3W:[function(e,t,r,n){"use strict";r._=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},{}],"3G1wX":[function(e,t,r,n){"use strict";r._=function(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}},{}],eltGh:[function(e,t,r,n){"use strict";r._=function(e,t){var r,n,o,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},c=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(c,"next",{value:a(0)}),i(c,"throw",{value:a(1)}),i(c,"return",{value:a(2)}),"function"==typeof Symbol&&i(c,SLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginAutoThumbnail=t(),define(function(){return t.ArtplayerPluginAutoThumbnail})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginAutoThumbnail=t()}(this,function(){"use strict";var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,a=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r;function l(e){return l=>{return u=null,c=null,d=function*(){return l.on("video:loadedmetadata",()=>{const u=e.url||l.option.url,c=e.width||160,d=e.number||100,s=e.scale||1;!function({url:e,width:t,number:n},r){const o=document.createElement("video");o.crossOrigin="anonymous",o.src=e,o.onloadedmetadata=()=>{const e=o.duration,i=document.createElement("canvas"),a=i.getContext("2d"),l=Math.floor(t*o.videoHeight/o.videoWidth);i.width=10*t,i.height=l*Math.ceil(n/10);let u=null;!function c(d){i.toBlob(e=>{URL.revokeObjectURL(u),u=URL.createObjectURL(e),r({url:u,height:l})},"image/jpeg"),d>=n||(o.currentTime=e*d/n,o.onseeked=()=>{a.drawImage(o,d%10*t,Math.floor(d/10)*l,t,l),c(d+1)})}(0)}}({url:u,width:c,number:d},e=>{var u;l.thumbnails=(u=((e,t)=>{for(var n in t||(t={}))o.call(t,n)&&a(e,n,t[n]);if(r)for(var n of r(t))i.call(t,n)&&a(e,n,t[n]);return e})({},e),t(u,n({column:10,number:d,width:c,scale:s})))})}),{name:"artplayerPluginAutoThumbnail"}},new Promise((e,t)=>{var n=e=>{try{o(d.next(e))}catch(n){t(n)}},r=e=>{try{o(d.throw(e))}catch(n){t(n)}},o=t=>t.done?e(t.value):Promise.resolve(t.value).then(n,r);o((d=d.apply(u,c)).next())});var u,c,d}}return"undefined"!==typeof window&&(window.artplayerPluginAutoThumbnail=l),l});
@@ -1,8 +1,66 @@
/*!
* artplayer-plugin-auto-thumbnail.js v1.0.1
* artplayer-plugin-auto-thumbnail.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,o,n){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[o]&&u[o],l=i.i||{},a=i.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!a[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof u[o]&&u[o];if(!r&&l)return l(t,!0);if(i)return i(t,!0);if(f&&"string"==typeof t)return f(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},p.cache={};var s=a[t]=new c.Module(t);e[t][0].call(s.exports,p,s,s.exports,u)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],u=c(o);"*"===t?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:u}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?u.__esModule?u.default:u:u[n]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=a,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return u[o]}}),u[o]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var s=c(r);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({lry5Y:[function(e,t,r,o){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");function u(e){return async t=>(t.on("video:loadedmetadata",()=>{let r=e.url||t.option.url,o=e.width||160,n=e.number||100,u=e.scale||1;!function({url:e,width:t,number:r},o){let n=document.createElement("video");n.crossOrigin="anonymous",n.src=e,n.onloadedmetadata=()=>{let e=n.duration,u=document.createElement("canvas"),i=u.getContext("2d"),l=Math.floor(t*n.videoHeight/n.videoWidth);u.width=10*t,u.height=l*Math.ceil(r/10);let a=null;!function f(c){u.toBlob(e=>{URL.revokeObjectURL(a),o({url:a=URL.createObjectURL(e),height:l})},"image/jpeg"),c>=r||(n.currentTime=e*c/r,n.onseeked=()=>{i.drawImage(n,c%10*t,Math.floor(c/10)*l,t,l),f(c+1)})}(0)}}({url:r,width:o,number:n},e=>{t.thumbnails={...e,column:10,number:n,width:o,scale:u}})}),{name:"artplayerPluginAutoThumbnail"})}n.defineInteropFlag(r),n.export(r,"default",()=>u),"u">typeof window&&(window.artplayerPluginAutoThumbnail=u)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["lry5Y"],"lry5Y","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("lry5Y");export{e as default};
function create({ url, width, number }, callback) {
const video = document.createElement("video");
video.crossOrigin = "anonymous";
video.src = url;
video.onloadedmetadata = () => {
const duration = video.duration;
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
const height = Math.floor(width * video.videoHeight / video.videoWidth);
canvas.width = width * 10;
canvas.height = height * Math.ceil(number / 10);
let blobUrl = null;
function seekAndDraw(index) {
canvas.toBlob((blob) => {
URL.revokeObjectURL(blobUrl);
blobUrl = URL.createObjectURL(blob);
callback({
url: blobUrl,
height
});
}, "image/jpeg");
if (index >= number)
return;
video.currentTime = duration * index / number;
video.onseeked = () => {
ctx.drawImage(video, index % 10 * width, Math.floor(index / 10) * height, width, height);
seekAndDraw(index + 1);
};
}
seekAndDraw(0);
};
}
function artplayerPluginAutoThumbnail(option) {
return async (art) => {
art.on("video:loadedmetadata", () => {
const url = option.url || art.option.url;
const width = option.width || 160;
const number = option.number || 100;
const scale = option.scale || 1;
create({ url, width, number }, (config) => {
art.thumbnails = {
...config,
column: 10,
number,
width,
scale
};
});
});
return {
name: "artplayerPluginAutoThumbnail"
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginAutoThumbnail = artplayerPluginAutoThumbnail;
}
export {
artplayerPluginAutoThumbnail as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-chapter.js v1.0.2
* artplayer-plugin-chapter.js v1.0.3
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(t,e,r,a,n){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof o[a]&&o[a],l=i.i||{},d=i.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(e,r){if(!d[e]){if(!t[e]){if(n[e])return n[e];var l="function"==typeof o[a]&&o[a];if(!r&&l)return l(e,!0);if(i)return i(e,!0);if(p&&"string"==typeof e)return p(e);var u=Error("Cannot find module '"+e+"'");throw u.code="MODULE_NOT_FOUND",u}f.resolve=function(r){var a=t[e][1][r];return null!=a?a:r},f.cache={};var c=d[e]=new s.Module(e);t[e][0].call(c.exports,f,c,c.exports,o)}return d[e].exports;function f(t){var e=f.resolve(t);if(!1===e)return{};if(Array.isArray(e)){var r={__esModule:!0};return e.forEach(function(t){var e=t[0],a=t[1],n=t[2]||t[0],o=s(a);"*"===e?Object.keys(o).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return o[t]}})}):"*"===n?Object.defineProperty(r,e,{enumerable:!0,value:o}):Object.defineProperty(r,e,{enumerable:!0,get:function(){return"default"===n?o.__esModule?o.default:o:o[n]}})}),r}return s(e)}}s.isParcelRequire=!0,s.Module=function(t){this.id=t,this.bundle=s,this.require=p,this.exports={}},s.modules=t,s.cache=d,s.parent=i,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=l,s.register=function(e,r){t[e]=[function(t,e){e.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return o[a]}}),o[a]=s;for(var u=0;u<e.length;u++)s(e[u]);if(r){var c=s(r);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({"3VfEb":[function(t,e,r,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"default",()=>l);var o=t("bundle-text:./style.less"),i=n.interopDefault(o);function l(t={}){return e=>{let{$player:r}=e.template,{setStyle:a,append:n,clamp:o,query:i,addClass:l,removeClass:d}=e.constructor.utils,p=`<div class="art-chapter"><div class="art-chapter-inner"><div class="art-progress-hover"></div><div class="art-progress-loaded"></div><div class="art-progress-played"></div></div></div>`,s=[],u=e.query(".art-control-progress-inner"),c=n(u,'<div class="art-chapters"></div>'),f=n(u,'<div class="art-chapter-title"></div>');function h(t=[]){if((s=[],c.textContent="",d(r,"artplayer-plugin-chapter"),Array.isArray(t)&&t.length)&&e.duration){t=t.sort((t,e)=>t.start-e.start);for(let r=0;r<t.length;r++){let a=t[r],n=t[r+1];if(a.end===1/0&&(a.end=e.duration),"number"!=typeof a.start||"number"!=typeof a.end||"string"!=typeof a.title)throw TypeError("Illegal chapter data type");if(a.start<0||a.end>e.duration||a.start>=a.end||n&&a.end>n.start)throw Error("Illegal chapter time point")}t[0].start>0&&t.unshift({start:0,end:t[0].start,title:""}),t[t.length-1].end<e.duration&&t.push({start:t[t.length-1].end,end:e.duration,title:""});for(let e=0;e<t.length-1;e++)t[e].end!==t[e+1].start&&t.splice(e+1,0,{start:t[e].end,end:t[e+1].start,title:""});s=t.map(t=>{let r=n(c,p),a=o(t.start,0,e.duration),l=o(t.end,0,e.duration),d=l-a,s=d/e.duration;return r.dataset.start=a,r.dataset.end=l,r.dataset.duration=d,r.dataset.title=t.title.trim(),r.style.width=`${100*s}%`,{$chapter:r,$hover:i(".art-progress-hover",r),$loaded:i(".art-progress-loaded",r),$played:i(".art-progress-played",r)}}),l(r,"artplayer-plugin-chapter"),e.emit("setBar","loaded",e.loaded||0)}}return e.on("setBar",(t,r)=>{if(s.length)for(let n=0;n<s.length;n++){let{$chapter:o,$loaded:i,$played:l,$hover:d}=s[n],p={hover:d,loaded:i,played:l}[t];if(!p)return;let h=c.clientWidth*r,g=e.duration*r,y=Number.parseFloat(o.dataset.duration),m=Number.parseFloat(o.dataset.start),v=Number.parseFloat(o.dataset.end);if(g<m&&a(p,"width",0),g>v&&a(p,"width","100%"),g>=m&&g<=v){let e=(g-m)/y;a(p,"width",`${100*e}%`),"hover"===t&&h>0&&function({$chapter:t,width:e}){let r=t.dataset.title.trim();if(r){f.textContent=r;let t=f.clientWidth;e<=t/2?a(f,"left",0):e>u.clientWidth-t/2?a(f,"left",`${u.clientWidth-t}px`):a(f,"left",`${e-t/2}px`)}}({$chapter:o,width:h})}}}),e.once("video:loadedmetadata",()=>h(t.chapters)),{name:"artplayerPluginChapter",update:({chapters:t})=>h(t)}}}if("u">typeof document){let t="artplayer-plugin-chapter",e=document.getElementById(t);e||((e=document.createElement("style")).id=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(e)}):(document.head||document.documentElement).appendChild(e)),e.textContent=i.default}"u">typeof window&&(window.artplayerPluginChapter=l)},{"bundle-text:./style.less":"4RPBI","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"4RPBI":[function(t,e,r,a){e.exports=".artplayer-plugin-chapter .art-control-progress-inner{background-color:#0000!important;height:100%!important}.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-hover,.artplayer-plugin-chaptLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginChapter=e(),define(function(){return t.ArtplayerPluginChapter})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginChapter=e()}(this,function(){"use strict";function t(t={}){return e=>{const{$player:r}=e.template,{setStyle:a,append:n,clamp:o,query:i,addClass:p,removeClass:d}=e.constructor.utils;let s=[];const l=e.query(".art-control-progress-inner"),c=n(l,'<div class="art-chapters"></div>'),h=n(l,'<div class="art-chapter-title"></div>');function u({$chapter:t,width:e}){const r=t.dataset.title.trim();if(r){h.textContent=r;const t=h.clientWidth;e<=t/2?a(h,"left",0):e>l.clientWidth-t/2?a(h,"left",l.clientWidth-t+"px"):a(h,"left",e-t/2+"px")}}function g(t=[]){if(s=[],c.textContent="",d(r,"artplayer-plugin-chapter"),Array.isArray(t)&&t.length&&e.duration){t=t.sort((t,e)=>t.start-e.start);for(let r=0;r<t.length;r++){const a=t[r],n=t[r+1];if(a.end===1/0&&(a.end=e.duration),"number"!==typeof a.start||"number"!==typeof a.end||"string"!==typeof a.title)throw new TypeError("Illegal chapter data type");if(a.start<0||a.end>e.duration||a.start>=a.end)throw new Error("Illegal chapter time point");if(n&&a.end>n.start)throw new Error("Illegal chapter time point")}t[0].start>0&&t.unshift({start:0,end:t[0].start,title:""}),t[t.length-1].end<e.duration&&t.push({start:t[t.length-1].end,end:e.duration,title:""});for(let e=0;e<t.length-1;e++)t[e].end!==t[e+1].start&&t.splice(e+1,0,{start:t[e].end,end:t[e+1].start,title:""});s=t.map(t=>{const r=n(c,'\n <div class="art-chapter">\n <div class="art-chapter-inner">\n <div class="art-progress-hover"></div>\n <div class="art-progress-loaded"></div>\n <div class="art-progress-played"></div>\n </div>\n </div>\n '),a=o(t.start,0,e.duration),p=o(t.end,0,e.duration),d=p-a,s=d/e.duration;return r.dataset.start=a,r.dataset.end=p,r.dataset.duration=d,r.dataset.title=t.title.trim(),r.style.width=100*s+"%",{$chapter:r,$hover:i(".art-progress-hover",r),$loaded:i(".art-progress-loaded",r),$played:i(".art-progress-played",r)}}),p(r,"artplayer-plugin-chapter"),e.emit("setBar","loaded",e.loaded||0)}}return e.on("setBar",(t,r)=>{if(s.length)for(let n=0;n<s.length;n++){const{$chapter:o,$loaded:i,$played:p,$hover:d}=s[n],l={hover:d,loaded:i,played:p}[t];if(!l)return;const h=c.clientWidth*r,g=e.duration*r,y=Number.parseFloat(o.dataset.duration),f=Number.parseFloat(o.dataset.start),m=Number.parseFloat(o.dataset.end);if(g<f&&a(l,"width",0),g>m&&a(l,"width","100%"),g>=f&&g<=m){a(l,"width",100*((g-f)/y)+"%"),"hover"===t&&h>0&&u({$chapter:o,width:h})}}}),e.once("video:loadedmetadata",()=>g(t.chapters)),{name:"artplayerPluginChapter",update:({chapters:t})=>g(t)}}}if("undefined"!==typeof document){const t="artplayer-plugin-chapter";let e=document.getElementById(t);e||(e=document.createElement("style"),e.id=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(e)}):(document.head||document.documentElement).appendChild(e)),e.textContent=".artplayer-plugin-chapter .art-control-progress-inner{height:100%!important;background-color:transparent!important}.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-hover,.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-loaded,.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-played{display:none!important}.artplayer-plugin-chapter .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 64px)!important}.artplayer-plugin-chapter .art-chapters{position:absolute;z-index:0;inset:0;display:flex;align-items:center;gap:4px;height:100%;transform:scaleY(1.25)}.artplayer-plugin-chapter .art-chapters .art-chapter{display:flex;align-items:center;height:100%}.artplayer-plugin-chapter .art-chapters .art-chapter .art-chapter-inner{position:relative;cursor:pointer;width:100%;height:50%;border-radius:10px;overflow:hidden;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.artplayer-plugin-chapter .art-chapters .art-chapter:hover .art-chapter-inner{height:100%}.artplayer-plugin-chapter .art-chapter-title{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:70;top:-50px;left:0;padding:3px 5px;line-height:1;font-size:14px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.artplayer-plugin-chapter.art-progress-hover .art-chapter-title{transform:scale(1);opacity:1}"}return"undefined"!==typeof window&&(window.artplayerPluginChapter=t),t});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-chapter.js v1.0.2
* artplayer-plugin-chapter.js v1.0.3
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(t,e,r,a,n){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof o[a]&&o[a],l=i.i||{},p=i.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(e,r){if(!p[e]){if(!t[e]){if(n[e])return n[e];var l="function"==typeof o[a]&&o[a];if(!r&&l)return l(e,!0);if(i)return i(e,!0);if(d&&"string"==typeof e)return d(e);var u=Error("Cannot find module '"+e+"'");throw u.code="MODULE_NOT_FOUND",u}f.resolve=function(r){var a=t[e][1][r];return null!=a?a:r},f.cache={};var c=p[e]=new s.Module(e);t[e][0].call(c.exports,f,c,c.exports,o)}return p[e].exports;function f(t){var e=f.resolve(t);if(!1===e)return{};if(Array.isArray(e)){var r={__esModule:!0};return e.forEach(function(t){var e=t[0],a=t[1],n=t[2]||t[0],o=s(a);"*"===e?Object.keys(o).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return o[t]}})}):"*"===n?Object.defineProperty(r,e,{enumerable:!0,value:o}):Object.defineProperty(r,e,{enumerable:!0,get:function(){return"default"===n?o.__esModule?o.default:o:o[n]}})}),r}return s(e)}}s.isParcelRequire=!0,s.Module=function(t){this.id=t,this.bundle=s,this.require=d,this.exports={}},s.modules=t,s.cache=p,s.parent=i,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=l,s.register=function(e,r){t[e]=[function(t,e){e.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return o[a]}}),o[a]=s;for(var u=0;u<e.length;u++)s(e[u]);if(r){var c=s(r);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({"7hySu":[function(t,e,r,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"default",function(){return l});var o=t("bundle-text:./style.less"),i=n.interopDefault(o);function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(e){var r=e.template.$player,a=e.constructor.utils,n=a.setStyle,o=a.append,i=a.clamp,l=a.query,p=a.addClass,d=a.removeClass,s=[],u=e.query(".art-control-progress-inner"),c=o(u,'<div class="art-chapters"></div>'),f=o(u,'<div class="art-chapter-title"></div>');function h(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if((s=[],c.textContent="",d(r,"artplayer-plugin-chapter"),Array.isArray(t)&&t.length)&&e.duration){t=t.sort(function(t,e){return t.start-e.start});for(var a=0;a<t.length;a++){var n=t[a],u=t[a+1];if(n.end===1/0&&(n.end=e.duration),"number"!=typeof n.start||"number"!=typeof n.end||"string"!=typeof n.title)throw TypeError("Illegal chapter data type");if(n.start<0||n.end>e.duration||n.start>=n.end||u&&n.end>u.start)throw Error("Illegal chapter time point")}t[0].start>0&&t.unshift({start:0,end:t[0].start,title:""}),t[t.length-1].end<e.duration&&t.push({start:t[t.length-1].end,end:e.duration,title:""});for(var f=0;f<t.length-1;f++)t[f].end!==t[f+1].start&&t.splice(f+1,0,{start:t[f].end,end:t[f+1].start,title:""});s=t.map(function(t){var r=o(c,'\n <div class="art-chapter">\n<div class="art-chapter-inner">\n<div class="art-progress-hover"></div>\n<div class="art-progress-loaded"></div>\n<div class="art-progress-played"></div>\n</div>\n</div>\n '),a=i(t.start,0,e.duration),n=i(t.end,0,e.duration),p=n-a,d=p/e.duration;return r.dataset.start=a,r.dataset.end=n,r.dataset.duration=p,r.dataset.title=t.title.trim(),r.style.width="".concat(100*d,"%"),{$chapter:r,$hover:l(".art-progress-hover",r),$loaded:l(".art-progress-loaded",r),$played:l(".art-progress-played",r)}}),p(r,"artplayer-plugin-chapter"),e.emit("setBar","loaded",e.loaded||0)}}return e.on("setBar",function(t,r){if(s.length)for(var a=0;a<s.length;a++){var o=s[a],i=o.$chapter,l=o.$loaded,p=o.$played,d={hover:o.$hover,loaded:l,played:p}[t];if(!d)return;var h=c.clientWidth*r,g=e.duration*r,y=Number.parseFloat(i.dataset.duration),v=Number.parseFloat(i.dataset.start),m=Number.parseFloat(i.dataset.end);if(g<v&&n(d,"width",0),g>m&&n(d,"width","100%"),g>=v&&g<=m){var b=(g-v)/y;n(d,"width","".concat(100*b,"%")),"hover"===t&&h>0&&function(t){var e=t.$chapter,r=t.width,a=e.dataset.title.trim();if(a){f.textContent=a;var o=f.clientWidth;r<=o/2?n(f,"left",0):r>u.clientWidth-o/2?n(f,"left","".concat(u.clientWidth-o,"px")):n(f,"left","".concat(r-o/2,"px"))}}({$chapter:i,width:h})}}}),e.once("video:loadedmetadata",function(){return h(t.chapters)}),{name:"artplayerPluginChapter",update:function(t){return h(t.chapters)}}}}if("u">typeof document){var p="artplayer-plugin-chapter",d=document.getElementById(p);d||((d=document.createElement("style")).id=p,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",function(){document.head.appendChild(d)}):(document.head||document.documentElement).appendChild(d)),d.textContent=i.default}"u">typeof window&&(window.artplayerPluginChapter=l)},{"bundle-text:./style.less":"35ZxU","@parcel/transformer-js/srcLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginChapter=e(),define(function(){return t.ArtplayerPluginChapter})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginChapter=e()}(this,function(){"use strict";function t(t={}){return e=>{const{$player:r}=e.template,{setStyle:a,append:n,clamp:o,query:i,addClass:p,removeClass:d}=e.constructor.utils;let s=[];const l=e.query(".art-control-progress-inner"),c=n(l,'<div class="art-chapters"></div>'),h=n(l,'<div class="art-chapter-title"></div>');function u({$chapter:t,width:e}){const r=t.dataset.title.trim();if(r){h.textContent=r;const t=h.clientWidth;e<=t/2?a(h,"left",0):e>l.clientWidth-t/2?a(h,"left",l.clientWidth-t+"px"):a(h,"left",e-t/2+"px")}}function g(t=[]){if(s=[],c.textContent="",d(r,"artplayer-plugin-chapter"),Array.isArray(t)&&t.length&&e.duration){t=t.sort((t,e)=>t.start-e.start);for(let r=0;r<t.length;r++){const a=t[r],n=t[r+1];if(a.end===1/0&&(a.end=e.duration),"number"!==typeof a.start||"number"!==typeof a.end||"string"!==typeof a.title)throw new TypeError("Illegal chapter data type");if(a.start<0||a.end>e.duration||a.start>=a.end)throw new Error("Illegal chapter time point");if(n&&a.end>n.start)throw new Error("Illegal chapter time point")}t[0].start>0&&t.unshift({start:0,end:t[0].start,title:""}),t[t.length-1].end<e.duration&&t.push({start:t[t.length-1].end,end:e.duration,title:""});for(let e=0;e<t.length-1;e++)t[e].end!==t[e+1].start&&t.splice(e+1,0,{start:t[e].end,end:t[e+1].start,title:""});s=t.map(t=>{const r=n(c,'\n <div class="art-chapter">\n <div class="art-chapter-inner">\n <div class="art-progress-hover"></div>\n <div class="art-progress-loaded"></div>\n <div class="art-progress-played"></div>\n </div>\n </div>\n '),a=o(t.start,0,e.duration),p=o(t.end,0,e.duration),d=p-a,s=d/e.duration;return r.dataset.start=a,r.dataset.end=p,r.dataset.duration=d,r.dataset.title=t.title.trim(),r.style.width=100*s+"%",{$chapter:r,$hover:i(".art-progress-hover",r),$loaded:i(".art-progress-loaded",r),$played:i(".art-progress-played",r)}}),p(r,"artplayer-plugin-chapter"),e.emit("setBar","loaded",e.loaded||0)}}return e.on("setBar",(t,r)=>{if(s.length)for(let n=0;n<s.length;n++){const{$chapter:o,$loaded:i,$played:p,$hover:d}=s[n],l={hover:d,loaded:i,played:p}[t];if(!l)return;const h=c.clientWidth*r,g=e.duration*r,y=Number.parseFloat(o.dataset.duration),f=Number.parseFloat(o.dataset.start),m=Number.parseFloat(o.dataset.end);if(g<f&&a(l,"width",0),g>m&&a(l,"width","100%"),g>=f&&g<=m){a(l,"width",100*((g-f)/y)+"%"),"hover"===t&&h>0&&u({$chapter:o,width:h})}}}),e.once("video:loadedmetadata",()=>g(t.chapters)),{name:"artplayerPluginChapter",update:({chapters:t})=>g(t)}}}if("undefined"!==typeof document){const t="artplayer-plugin-chapter";let e=document.getElementById(t);e||(e=document.createElement("style"),e.id=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(e)}):(document.head||document.documentElement).appendChild(e)),e.textContent=".artplayer-plugin-chapter .art-control-progress-inner{height:100%!important;background-color:transparent!important}.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-hover,.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-loaded,.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-played{display:none!important}.artplayer-plugin-chapter .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 64px)!important}.artplayer-plugin-chapter .art-chapters{position:absolute;z-index:0;inset:0;display:flex;align-items:center;gap:4px;height:100%;transform:scaleY(1.25)}.artplayer-plugin-chapter .art-chapters .art-chapter{display:flex;align-items:center;height:100%}.artplayer-plugin-chapter .art-chapters .art-chapter .art-chapter-inner{position:relative;cursor:pointer;width:100%;height:50%;border-radius:10px;overflow:hidden;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.artplayer-plugin-chapter .art-chapters .art-chapter:hover .art-chapter-inner{height:100%}.artplayer-plugin-chapter .art-chapter-title{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:70;top:-50px;left:0;padding:3px 5px;line-height:1;font-size:14px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.artplayer-plugin-chapter.art-progress-hover .art-chapter-title{transform:scale(1);opacity:1}"}return"undefined"!==typeof window&&(window.artplayerPluginChapter=t),t});
+157 -3
View File
@@ -1,8 +1,162 @@
/*!
* artplayer-plugin-chapter.js v1.0.2
* artplayer-plugin-chapter.js v1.0.3
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,a,n){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof o[a]&&o[a],l=i.i||{},d=i.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!d[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof o[a]&&o[a];if(!r&&l)return l(t,!0);if(i)return i(t,!0);if(p&&"string"==typeof t)return p(t);var u=Error("Cannot find module '"+t+"'");throw u.code="MODULE_NOT_FOUND",u}f.resolve=function(r){var a=e[t][1][r];return null!=a?a:r},f.cache={};var c=d[t]=new s.Module(t);e[t][0].call(c.exports,f,c,c.exports,o)}return d[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],n=e[2]||e[0],o=s(a);"*"===t?Object.keys(o).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return o[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:o}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?o.__esModule?o.default:o:o[n]}})}),r}return s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.require=p,this.exports={}},s.modules=e,s.cache=d,s.parent=i,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=l,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return o[a]}}),o[a]=s;for(var u=0;u<t.length;u++)s(t[u]);if(r){var c=s(r);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({fwWaD:[function(e,t,r,a){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"default",()=>l);var o=e("bundle-text:./style.less"),i=n.interopDefault(o);function l(e={}){return t=>{let{$player:r}=t.template,{setStyle:a,append:n,clamp:o,query:i,addClass:l,removeClass:d}=t.constructor.utils,p=`<div class="art-chapter"><div class="art-chapter-inner"><div class="art-progress-hover"></div><div class="art-progress-loaded"></div><div class="art-progress-played"></div></div></div>`,s=[],u=t.query(".art-control-progress-inner"),c=n(u,'<div class="art-chapters"></div>'),f=n(u,'<div class="art-chapter-title"></div>');function h(e=[]){if((s=[],c.textContent="",d(r,"artplayer-plugin-chapter"),Array.isArray(e)&&e.length)&&t.duration){e=e.sort((e,t)=>e.start-t.start);for(let r=0;r<e.length;r++){let a=e[r],n=e[r+1];if(a.end===1/0&&(a.end=t.duration),"number"!=typeof a.start||"number"!=typeof a.end||"string"!=typeof a.title)throw TypeError("Illegal chapter data type");if(a.start<0||a.end>t.duration||a.start>=a.end||n&&a.end>n.start)throw Error("Illegal chapter time point")}e[0].start>0&&e.unshift({start:0,end:e[0].start,title:""}),e[e.length-1].end<t.duration&&e.push({start:e[e.length-1].end,end:t.duration,title:""});for(let t=0;t<e.length-1;t++)e[t].end!==e[t+1].start&&e.splice(t+1,0,{start:e[t].end,end:e[t+1].start,title:""});s=e.map(e=>{let r=n(c,p),a=o(e.start,0,t.duration),l=o(e.end,0,t.duration),d=l-a,s=d/t.duration;return r.dataset.start=a,r.dataset.end=l,r.dataset.duration=d,r.dataset.title=e.title.trim(),r.style.width=`${100*s}%`,{$chapter:r,$hover:i(".art-progress-hover",r),$loaded:i(".art-progress-loaded",r),$played:i(".art-progress-played",r)}}),l(r,"artplayer-plugin-chapter"),t.emit("setBar","loaded",t.loaded||0)}}return t.on("setBar",(e,r)=>{if(s.length)for(let n=0;n<s.length;n++){let{$chapter:o,$loaded:i,$played:l,$hover:d}=s[n],p={hover:d,loaded:i,played:l}[e];if(!p)return;let h=c.clientWidth*r,g=t.duration*r,y=Number.parseFloat(o.dataset.duration),m=Number.parseFloat(o.dataset.start),v=Number.parseFloat(o.dataset.end);if(g<m&&a(p,"width",0),g>v&&a(p,"width","100%"),g>=m&&g<=v){let t=(g-m)/y;a(p,"width",`${100*t}%`),"hover"===e&&h>0&&function({$chapter:e,width:t}){let r=e.dataset.title.trim();if(r){f.textContent=r;let e=f.clientWidth;t<=e/2?a(f,"left",0):t>u.clientWidth-e/2?a(f,"left",`${u.clientWidth-e}px`):a(f,"left",`${t-e/2}px`)}}({$chapter:o,width:h})}}}),t.once("video:loadedmetadata",()=>h(e.chapters)),{name:"artplayerPluginChapter",update:({chapters:e})=>h(e)}}}if("u">typeof document){let e="artplayer-plugin-chapter",t=document.getElementById(e);t||((t=document.createElement("style")).id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(t)}):(document.head||document.documentElement).appendChild(t)),t.textContent=i.default}"u">typeof window&&(window.artplayerPluginChapter=l)},{"bundle-text:./style.less":"3lhZb","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"3lhZb":[function(e,t,r,a){t.exports=".artplayer-plugin-chapter .art-control-progress-inner{background-color:#0000!important;height:100%!important}.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-hover,.artplayer-plugin-chapterLine truncated
const style = ".artplayer-plugin-chapter .art-control-progress-inner{height:100%!important;background-color:transparent!important}.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-hover,.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-loaded,.artplayer-plugin-chapter .art-control-progress-inner>.art-progress-played{display:none!important}.artplayer-plugin-chapter .art-control-thumbnails{bottom:calc(var(--art-bottom-gap) + 64px)!important}.artplayer-plugin-chapter .art-chapters{position:absolute;z-index:0;inset:0;display:flex;align-items:center;gap:4px;height:100%;transform:scaleY(1.25)}.artplayer-plugin-chapter .art-chapters .art-chapter{display:flex;align-items:center;height:100%}.artplayer-plugin-chapter .art-chapters .art-chapter .art-chapter-inner{position:relative;cursor:pointer;width:100%;height:50%;border-radius:10px;overflow:hidden;transition:height var(--art-transition-duration) ease;background-color:var(--art-progress-color)}.artplayer-plugin-chapter .art-chapters .art-chapter:hover .art-chapter-inner{height:100%}.artplayer-plugin-chapter .art-chapter-title{transform-origin:bottom center;transform:scale(.5);opacity:0;position:absolute;z-index:70;top:-50px;left:0;padding:3px 5px;line-height:1;font-size:14px;border-radius:var(--art-border-radius);white-space:nowrap;background-color:var(--art-tip-background);transition:transform var(--art-transition-duration) ease,opacity var(--art-transition-duration) ease}.artplayer-plugin-chapter.art-progress-hover .art-chapter-title{transform:scale(1);opacity:1}";
function artplayerPluginChapter(option = {}) {
return (art) => {
const { $player } = art.template;
const { setStyle, append, clamp, query, addClass, removeClass } = art.constructor.utils;
const html = `
<div class="art-chapter">
<div class="art-chapter-inner">
<div class="art-progress-hover"></div>
<div class="art-progress-loaded"></div>
<div class="art-progress-played"></div>
</div>
</div>
`;
let $chapters = [];
const $inner = art.query(".art-control-progress-inner");
const $control = append($inner, '<div class="art-chapters"></div>');
const $title = append($inner, '<div class="art-chapter-title"></div>');
function showTitle({ $chapter, width }) {
const title = $chapter.dataset.title.trim();
if (title) {
$title.textContent = title;
const titleWidth = $title.clientWidth;
if (width <= titleWidth / 2) {
setStyle($title, "left", 0);
} else if (width > $inner.clientWidth - titleWidth / 2) {
setStyle($title, "left", `${$inner.clientWidth - titleWidth}px`);
} else {
setStyle($title, "left", `${width - titleWidth / 2}px`);
}
}
}
function update(chapters = []) {
$chapters = [];
$control.textContent = "";
removeClass($player, "artplayer-plugin-chapter");
if (!Array.isArray(chapters))
return;
if (!chapters.length)
return;
if (!art.duration)
return;
chapters = chapters.sort((a, b) => a.start - b.start);
for (let i = 0; i < chapters.length; i++) {
const chapter = chapters[i];
const nextChapter = chapters[i + 1];
if (chapter.end === Infinity) {
chapter.end = art.duration;
}
if (typeof chapter.start !== "number" || typeof chapter.end !== "number" || typeof chapter.title !== "string") {
throw new TypeError("Illegal chapter data type");
}
if (chapter.start < 0 || chapter.end > art.duration || chapter.start >= chapter.end) {
throw new Error("Illegal chapter time point");
}
if (nextChapter && chapter.end > nextChapter.start) {
throw new Error("Illegal chapter time point");
}
}
if (chapters[0].start > 0) {
chapters.unshift({ start: 0, end: chapters[0].start, title: "" });
}
if (chapters[chapters.length - 1].end < art.duration) {
chapters.push({ start: chapters[chapters.length - 1].end, end: art.duration, title: "" });
}
for (let i = 0; i < chapters.length - 1; i++) {
if (chapters[i].end !== chapters[i + 1].start) {
chapters.splice(i + 1, 0, {
start: chapters[i].end,
end: chapters[i + 1].start,
title: ""
});
}
}
$chapters = chapters.map((chapter) => {
const $chapter = append($control, html);
const start = clamp(chapter.start, 0, art.duration);
const end = clamp(chapter.end, 0, art.duration);
const duration = end - start;
const percentage = duration / art.duration;
$chapter.dataset.start = start;
$chapter.dataset.end = end;
$chapter.dataset.duration = duration;
$chapter.dataset.title = chapter.title.trim();
$chapter.style.width = `${percentage * 100}%`;
return {
$chapter,
$hover: query(".art-progress-hover", $chapter),
$loaded: query(".art-progress-loaded", $chapter),
$played: query(".art-progress-played", $chapter)
};
});
addClass($player, "artplayer-plugin-chapter");
art.emit("setBar", "loaded", art.loaded || 0);
}
art.on("setBar", (type, percentage) => {
if (!$chapters.length)
return;
for (let i = 0; i < $chapters.length; i++) {
const { $chapter, $loaded, $played, $hover } = $chapters[i];
const $target = {
hover: $hover,
loaded: $loaded,
played: $played
}[type];
if (!$target)
return;
const width = $control.clientWidth * percentage;
const currentTime = art.duration * percentage;
const duration = Number.parseFloat($chapter.dataset.duration);
const start = Number.parseFloat($chapter.dataset.start);
const end = Number.parseFloat($chapter.dataset.end);
if (currentTime < start) {
setStyle($target, "width", 0);
}
if (currentTime > end) {
setStyle($target, "width", "100%");
}
if (currentTime >= start && currentTime <= end) {
const percentage2 = (currentTime - start) / duration;
setStyle($target, "width", `${percentage2 * 100}%`);
if (type === "hover" && width > 0) {
showTitle({ $chapter, width });
}
}
}
});
art.once("video:loadedmetadata", () => update(option.chapters));
return {
name: "artplayerPluginChapter",
update: ({ chapters }) => update(chapters)
};
};
}
if (typeof document !== "undefined") {
const id = "artplayer-plugin-chapter";
let $style = document.getElementById(id);
if (!$style) {
$style = document.createElement("style");
$style.id = id;
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", () => {
document.head.appendChild($style);
});
} else {
(document.head || document.documentElement).appendChild($style);
}
}
$style.textContent = style;
}
if (typeof window !== "undefined") {
window.artplayerPluginChapter = artplayerPluginChapter;
}
export {
artplayerPluginChapter as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-chromecast.js v1.0.1
* artplayer-plugin-chromecast.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,o,n,r){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof a[n]&&a[n],c=i.i||{},s=i.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,o){if(!s[t]){if(!e[t]){if(r[t])return r[t];var c="function"==typeof a[n]&&a[n];if(!o&&c)return c(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var u=Error("Cannot find module '"+t+"'");throw u.code="MODULE_NOT_FOUND",u}p.resolve=function(o){var n=e[t][1][o];return null!=n?n:o},p.cache={};var f=s[t]=new d.Module(t);e[t][0].call(f.exports,p,f,f.exports,a)}return s[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],r=e[2]||e[0],a=d(n);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===r?Object.defineProperty(o,t,{enumerable:!0,value:a}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===r?a.__esModule?a.default:a:a[r]}})}),o}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=l,this.exports={}},d.modules=e,d.cache=s,d.parent=i,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=c,d.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(d,"root",{get:function(){return a[n]}}),a[n]=d;for(var u=0;u<t.length;u++)d(t[u]);if(o){var f=d(o);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"18Aaf":[function(e,t,o,n){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e){let t=!1,o=null,n=null,r=e=>{let t=document.querySelector(".art-icon-cast");if(t)switch(e){case"connected":t.style.color="red";break;case"connecting":case"disconnecting":t.style.color="orange";break;default:t.style.color="white"}},a=(t,o)=>{let n=e.url||t.option.url,r=new window.chrome.cast.media.MediaInfo(n,e.mimeType||({mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",ogv:"video/ogg",mp3:"audio/mp3",wav:"audio/wav",flv:"video/x-flv",mov:"video/quicktime",avi:"video/x-msvideo",wmv:"video/x-ms-wmv",mpd:"application/dash+xml",m3u8:"application/x-mpegURL"})[n.split("?")[0].split("#")[0].split(".").pop().toLowerCase()]||"application/octet-stream"),a=new window.chrome.cast.media.LoadRequest(r);o.loadMedia(a).then(()=>{t.notice.show="Casting started",e.onCastStart?.()}).catch(o=>{throw t.notice.show="Error casting media",e.onError?.(o),o})};return async i=>(i.controls.add({name:"chromecast",position:"right",tooltip:"Chromecast",html:`<i class="art-icon art-icon-cast">${e.icon||'<svg height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M512 96H64v99c-13-2-26.4-3-40-3H0V96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H288V456c0-13.6-1-27-3-40H512V96zM24 224c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 344c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z"/></svg>'}</i>`,click:async()=>{if(!t)try{await new Promise((a,i)=>{var c;window.__onGCastApiAvailable=c=>{if(c){let i=window.cast.framework.CastContext.getInstance();i.setOptions({receiverApplicationId:window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,autoJoinPolicy:window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}),i.addEventListener(window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED,t=>{let a=window.cast.framework.SessionState;switch(n=t.sessionState,o=t.session,t.sessionState){case a.NO_SESSION:e.onStateChange?.("disconnected"),r("disconnected");break;case a.SESSION_STARTING:e.onStateChange?.("connecting"),r("connecting");break;case a.SESSION_STARTED:e.onStateChange?.("connected"),r("connected");break;case a.SESSION_ENDING:e.onStateChange?.("disconnecting"),r("disconnecting");break;case a.SESSION_RESUMED:e.onStateChange?.("connected"),r("connected")}}),i.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED,t=>{let o=window.cast.framework.CastState;switch(t.castState){case o.NO_DEVICES_AVAILABLE:e.onCastAvailable?.(!1);break;case o.NOT_CONNECTED:case o.CONNECTING:case o.CONNECTED:e.onCastAvailable?.(!0)}}),t=!0,a()}else i(Error("Cast API is not available"))},window.chrome&&window.chrome.cast||(c=e.sdk||"https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",new Promise((e,t)=>{let o=document.createElement("script");o.src=c,o.onload=e,o.onerror=t,document.body.appendChild(o)})).catch(i)})}catch(t){throw i.notice.show="Failed to initialize Cast API",e.onError?.(t),t}let c=window.cast.framework.CastContext.getInstance();if(o)a(i,o);else try{let e=await c.Line truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginChromecast=t(),define(function(){return t.ArtplayerPluginChromecast})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginChromecast=t()}(this,function(){"use strict";function e(e){let t=!1,o=null,n=null;const a=e=>{const t=document.querySelector(".art-icon-cast");if(t)switch(e){case"connected":t.style.color="red";break;case"connecting":case"disconnecting":t.style.color="orange";break;default:t.style.color="white"}},c=()=>new Promise((c,s)=>{var i;window.__onGCastApiAvailable=i=>{if(i){const s=window.cast.framework.CastContext.getInstance();s.setOptions({receiverApplicationId:window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,autoJoinPolicy:window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}),s.addEventListener(window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED,t=>{const c=window.cast.framework.SessionState;switch(n=t.sessionState,o=t.session,t.sessionState){case c.NO_SESSION:e.onStateChange?.("disconnected"),a("disconnected");break;case c.SESSION_STARTING:e.onStateChange?.("connecting"),a("connecting");break;case c.SESSION_STARTED:e.onStateChange?.("connected"),a("connected");break;case c.SESSION_ENDING:e.onStateChange?.("disconnecting"),a("disconnecting");break;case c.SESSION_RESUMED:e.onStateChange?.("connected"),a("connected")}}),s.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED,t=>{const o=window.cast.framework.CastState;switch(t.castState){case o.NO_DEVICES_AVAILABLE:e.onCastAvailable?.(!1);break;case o.NOT_CONNECTED:case o.CONNECTING:case o.CONNECTED:e.onCastAvailable?.(!0)}}),t=!0,c()}else s(new Error("Cast API is not available"))},window.chrome&&window.chrome.cast||(i=e.sdk||"https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",new Promise((e,t)=>{const o=document.createElement("script");o.src=i,o.onload=e,o.onerror=t,document.body.appendChild(o)})).catch(s)}),s=(t,o)=>{const n=e.url||t.option.url,a=new window.chrome.cast.media.MediaInfo(n,e.mimeType||function(e){return{mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",ogv:"video/ogg",mp3:"audio/mp3",wav:"audio/wav",flv:"video/x-flv",mov:"video/quicktime",avi:"video/x-msvideo",wmv:"video/x-ms-wmv",mpd:"application/dash+xml",m3u8:"application/x-mpegURL"}[e.split("?")[0].split("#")[0].split(".").pop().toLowerCase()]||"application/octet-stream"}(n)),c=new window.chrome.cast.media.LoadRequest(a);o.loadMedia(c).then(()=>{t.notice.show="Casting started",e.onCastStart?.()}).catch(o=>{throw t.notice.show="Error casting media",e.onError?.(o),o})};return async a=>(a.controls.add({name:"chromecast",position:"right",tooltip:"Chromecast",html:`<i class="art-icon art-icon-cast">${e.icon||'<svg height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M512 96H64v99c-13-2-26.4-3-40-3H0V96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H288V456c0-13.6-1-27-3-40H512V96zM24 224c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 344c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z"/></svg>'}</i>`,click:async()=>{if(!t)try{await c()}catch(i){throw a.notice.show="Failed to initialize Cast API",e.onError?.(i),i}const n=window.cast.framework.CastContext.getInstance();if(o)s(a,o);else try{const e=await n.requestSession();s(a,e)}catch(i){throw a.notice.show="Error connecting to cast session",e.onError?.(i),i}}}),{name:"artplayerPluginChromecast",getCastState:()=>n,isCasting:()=>null!==o})}return"undefined"!==typeof window&&(window.artplayerPluginChromecast=e),e});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-chromecast.js v1.0.1
* artplayer-plugin-chromecast.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,r,o){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},c="function"==typeof a[r]&&a[r],i=c.i||{},s=c.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,n){if(!s[t]){if(!e[t]){if(o[t])return o[t];var i="function"==typeof a[r]&&a[r];if(!n&&i)return i(t,!0);if(c)return c(t,!0);if(l&&"string"==typeof t)return l(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}p.resolve=function(n){var r=e[t][1][n];return null!=r?r:n},p.cache={};var d=s[t]=new u.Module(t);e[t][0].call(d.exports,p,d,d.exports,a)}return s[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],o=e[2]||e[0],a=u(r);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===o?Object.defineProperty(n,t,{enumerable:!0,value:a}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===o?a.__esModule?a.default:a:a[o]}})}),n}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=l,this.exports={}},u.modules=e,u.cache=s,u.parent=c,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=i,u.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(u,"root",{get:function(){return a[r]}}),a[r]=u;for(var f=0;f<t.length;f++)u(t[f]);if(n){var d=u(n);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({"1xnGs":[function(e,t,n,r){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(n),o.export(n,"default",function(){return i});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),c=e("@swc/helpers/cjs/_ts_generator.cjs");function i(e){var t=!1,n=null,r=null,o=function(e){var t=document.querySelector(".art-icon-cast");if(t)switch(e){case"connected":t.style.color="red";break;case"connecting":case"disconnecting":t.style.color="orange";break;default:t.style.color="white"}},i=function(t,n){var r=e.url||t.option.url,o=new window.chrome.cast.media.MediaInfo(r,e.mimeType||({mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",ogv:"video/ogg",mp3:"audio/mp3",wav:"audio/wav",flv:"video/x-flv",mov:"video/quicktime",avi:"video/x-msvideo",wmv:"video/x-ms-wmv",mpd:"application/dash+xml",m3u8:"application/x-mpegURL"})[r.split("?")[0].split("#")[0].split(".").pop().toLowerCase()]||"application/octet-stream"),a=new window.chrome.cast.media.LoadRequest(o);n.loadMedia(a).then(function(){var n;t.notice.show="Casting started",null==(n=e.onCastStart)||n.call(e)}).catch(function(n){var r;throw t.notice.show="Error casting media",null==(r=e.onError)||r.call(e,n),n})};return function(s){return(0,a._)(function(){return(0,c._)(this,function(l){return s.controls.add({name:"chromecast",position:"right",tooltip:"Chromecast",html:'<i class="art-icon art-icon-cast">'.concat(e.icon||'<svg height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M512 96H64v99c-13-2-26.4-3-40-3H0V96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H288V456c0-13.6-1-27-3-40H512V96zM24 224c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 344c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z"/></svg>',"</i>"),click:function(){return(0,a._)(function(){var a,l,u,f,d;return(0,c._)(this,function(c){switch(c.label){case 0:if(t)return[3,4];c.label=1;case 1:return c.trys.push([1,3,,4]),[4,new Promise(function(a,c){var i;window.__onGCastApiAvailable=function(i){if(i){var s=window.cast.framework.CastContext.getInstance();s.setOptions({receiverApplicationId:window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,autoJoinPolicy:window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}),s.addEventListener(window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED,function(t){var a,c,i,s,l,u=window.cast.framework.SessionState;switch(r=t.sessionState,n=t.session,t.sessionState){case u.NO_SESSION:null==(a=e.onStateChange)||a.call(e,"disconnected"),o("disconnected");break;case u.SESSION_STARTING:null==(c=e.onStateChange)||c.call(e,"connecting"),o("connecting");break;case u.SESSION_STARTED:null==(i=e.onStateChange)||i.call(e,"connected"),o("connected");break;case u.SESSION_ENDING:null==(s=e.onStateChange)||s.call(e,"disconnecting"),o("disconnecting");break;case u.SESSION_RESUMED:null==(l=e.onStateChange)||l.call(e,"connected"),o("connected")}}),s.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED,function(t){var n,r,o,a=window.cast.framework.CastState;switch(t.castState){case a.NO_DEVICES_AVAILABLELine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginChromecast=t(),define(function(){return t.ArtplayerPluginChromecast})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginChromecast=t()}(this,function(){"use strict";var e=(e,t,n)=>new Promise((o,a)=>{var c=e=>{try{s(n.next(e))}catch(t){a(t)}},i=e=>{try{s(n.throw(e))}catch(t){a(t)}},s=e=>e.done?o(e.value):Promise.resolve(e.value).then(c,i);s((n=n.apply(e,t)).next())});function t(t){let n=!1,o=null,a=null;const c=e=>{const t=document.querySelector(".art-icon-cast");if(t)switch(e){case"connected":t.style.color="red";break;case"connecting":case"disconnecting":t.style.color="orange";break;default:t.style.color="white"}},i=()=>new Promise((e,i)=>{var s;window.__onGCastApiAvailable=s=>{if(s){const i=window.cast.framework.CastContext.getInstance();i.setOptions({receiverApplicationId:window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,autoJoinPolicy:window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}),i.addEventListener(window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED,e=>{var n,i,s,l,r;const d=window.cast.framework.SessionState;switch(a=e.sessionState,o=e.session,e.sessionState){case d.NO_SESSION:null==(n=t.onStateChange)||n.call(t,"disconnected"),c("disconnected");break;case d.SESSION_STARTING:null==(i=t.onStateChange)||i.call(t,"connecting"),c("connecting");break;case d.SESSION_STARTED:null==(s=t.onStateChange)||s.call(t,"connected"),c("connected");break;case d.SESSION_ENDING:null==(l=t.onStateChange)||l.call(t,"disconnecting"),c("disconnecting");break;case d.SESSION_RESUMED:null==(r=t.onStateChange)||r.call(t,"connected"),c("connected")}}),i.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED,e=>{var n,o,a;const c=window.cast.framework.CastState;switch(e.castState){case c.NO_DEVICES_AVAILABLE:null==(n=t.onCastAvailable)||n.call(t,!1);break;case c.NOT_CONNECTED:null==(o=t.onCastAvailable)||o.call(t,!0);break;case c.CONNECTING:case c.CONNECTED:null==(a=t.onCastAvailable)||a.call(t,!0)}}),n=!0,e()}else i(new Error("Cast API is not available"))},window.chrome&&window.chrome.cast||(s=t.sdk||"https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",new Promise((e,t)=>{const n=document.createElement("script");n.src=s,n.onload=e,n.onerror=t,document.body.appendChild(n)})).catch(i)}),s=(e,n)=>{const o=t.url||e.option.url,a=new window.chrome.cast.media.MediaInfo(o,t.mimeType||function(e){return{mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",ogv:"video/ogg",mp3:"audio/mp3",wav:"audio/wav",flv:"video/x-flv",mov:"video/quicktime",avi:"video/x-msvideo",wmv:"video/x-ms-wmv",mpd:"application/dash+xml",m3u8:"application/x-mpegURL"}[e.split("?")[0].split("#")[0].split(".").pop().toLowerCase()]||"application/octet-stream"}(o)),c=new window.chrome.cast.media.LoadRequest(a);n.loadMedia(c).then(()=>{var n;e.notice.show="Casting started",null==(n=t.onCastStart)||n.call(t)}).catch(n=>{var o;throw e.notice.show="Error casting media",null==(o=t.onError)||o.call(t,n),n})};return c=>e(null,null,function*(){return c.controls.add({name:"chromecast",position:"right",tooltip:"Chromecast",html:`<i class="art-icon art-icon-cast">${t.icon||'<svg height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M512 96H64v99c-13-2-26.4-3-40-3H0V96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H288V456c0-13.6-1-27-3-40H512V96zM24 224c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 344c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z"/></svg>'}</i>`,click:()=>e(null,null,function*(){var e,a;if(!n)try{yield i()}catch(r){throw c.notice.show="Failed to initialize Cast API",null==(e=t.onError)||e.call(t,r),r}const l=window.cast.framework.CastContext.getInstance();if(o)s(c,o);else try{const e=yield l.requestSession();s(c,e)}catch(r){throw c.notice.show="Error connecting to cast session",null==(a=t.onError)||a.call(t,r),r}})}),{name:"artplayerPluginChromecast",getCastState:()=>a,isCasting:()=>null!==o}})}return"undefined"!==typeof window&&(window.artplayerPluginChromecast=t),t});
+174 -3
View File
@@ -1,8 +1,179 @@
/*!
* artplayer-plugin-chromecast.js v1.0.1
* artplayer-plugin-chromecast.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,o,n,r){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof a[n]&&a[n],c=i.i||{},s=i.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,o){if(!s[t]){if(!e[t]){if(r[t])return r[t];var c="function"==typeof a[n]&&a[n];if(!o&&c)return c(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var u=Error("Cannot find module '"+t+"'");throw u.code="MODULE_NOT_FOUND",u}p.resolve=function(o){var n=e[t][1][o];return null!=n?n:o},p.cache={};var f=s[t]=new d.Module(t);e[t][0].call(f.exports,p,f,f.exports,a)}return s[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],r=e[2]||e[0],a=d(n);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===r?Object.defineProperty(o,t,{enumerable:!0,value:a}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===r?a.__esModule?a.default:a:a[r]}})}),o}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=l,this.exports={}},d.modules=e,d.cache=s,d.parent=i,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=c,d.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(d,"root",{get:function(){return a[n]}}),a[n]=d;for(var u=0;u<t.length;u++)d(t[u]);if(o){var f=d(o);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"2IQmJ":[function(e,t,o,n){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");function a(e){let t=!1,o=null,n=null,r=e=>{let t=document.querySelector(".art-icon-cast");if(t)switch(e){case"connected":t.style.color="red";break;case"connecting":case"disconnecting":t.style.color="orange";break;default:t.style.color="white"}},a=(t,o)=>{let n=e.url||t.option.url,r=new window.chrome.cast.media.MediaInfo(n,e.mimeType||({mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",ogv:"video/ogg",mp3:"audio/mp3",wav:"audio/wav",flv:"video/x-flv",mov:"video/quicktime",avi:"video/x-msvideo",wmv:"video/x-ms-wmv",mpd:"application/dash+xml",m3u8:"application/x-mpegURL"})[n.split("?")[0].split("#")[0].split(".").pop().toLowerCase()]||"application/octet-stream"),a=new window.chrome.cast.media.LoadRequest(r);o.loadMedia(a).then(()=>{t.notice.show="Casting started",e.onCastStart?.()}).catch(o=>{throw t.notice.show="Error casting media",e.onError?.(o),o})};return async i=>(i.controls.add({name:"chromecast",position:"right",tooltip:"Chromecast",html:`<i class="art-icon art-icon-cast">${e.icon||'<svg height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M512 96H64v99c-13-2-26.4-3-40-3H0V96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H288V456c0-13.6-1-27-3-40H512V96zM24 224c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 344c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z"/></svg>'}</i>`,click:async()=>{if(!t)try{await new Promise((a,i)=>{var c;window.__onGCastApiAvailable=c=>{if(c){let i=window.cast.framework.CastContext.getInstance();i.setOptions({receiverApplicationId:window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,autoJoinPolicy:window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}),i.addEventListener(window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED,t=>{let a=window.cast.framework.SessionState;switch(n=t.sessionState,o=t.session,t.sessionState){case a.NO_SESSION:e.onStateChange?.("disconnected"),r("disconnected");break;case a.SESSION_STARTING:e.onStateChange?.("connecting"),r("connecting");break;case a.SESSION_STARTED:e.onStateChange?.("connected"),r("connected");break;case a.SESSION_ENDING:e.onStateChange?.("disconnecting"),r("disconnecting");break;case a.SESSION_RESUMED:e.onStateChange?.("connected"),r("connected")}}),i.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED,t=>{let o=window.cast.framework.CastState;switch(t.castState){case o.NO_DEVICES_AVAILABLE:e.onCastAvailable?.(!1);break;case o.NOT_CONNECTED:case o.CONNECTING:case o.CONNECTED:e.onCastAvailable?.(!0)}}),t=!0,a()}else i(Error("Cast API is not available"))},window.chrome&&window.chrome.cast||(c=e.sdk||"https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",new Promise((e,t)=>{let o=document.createElement("script");o.src=c,o.onload=e,o.onerror=t,document.body.appendChild(o)})).catch(i)})}catch(t){throw i.notice.show="Failed to initialize Cast API",e.onError?.(t),t}let c=window.cast.framework.CastContext.getInstance();if(o)a(i,o);else try{let e=await c.Line truncated
function loadScript(src) {
return new Promise((resolve, reject) => {
const script = document.createElement("script");
script.src = src;
script.onload = resolve;
script.onerror = reject;
document.body.appendChild(script);
});
}
function getMimeType(url) {
const extension = url.split("?")[0].split("#")[0].split(".").pop().toLowerCase();
const mimeTypes = {
mp4: "video/mp4",
webm: "video/webm",
ogg: "video/ogg",
ogv: "video/ogg",
mp3: "audio/mp3",
wav: "audio/wav",
flv: "video/x-flv",
mov: "video/quicktime",
avi: "video/x-msvideo",
wmv: "video/x-ms-wmv",
mpd: "application/dash+xml",
m3u8: "application/x-mpegURL"
};
return mimeTypes[extension] || "application/octet-stream";
}
function artplayerPluginChromecast(option) {
const DEFAULT_ICON = `<svg height="20" width="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M512 96H64v99c-13-2-26.4-3-40-3H0V96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H288V456c0-13.6-1-27-3-40H512V96zM24 224c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM0 344c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z"/></svg>`;
const DEFAULT_SDK = "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1";
let isCastInitialized = false;
let castSession = null;
let castState = null;
const updateCastButton = (state) => {
const button = document.querySelector(".art-icon-cast");
if (button) {
switch (state) {
case "connected":
button.style.color = "red";
break;
case "connecting":
case "disconnecting":
button.style.color = "orange";
break;
case "disconnected":
default:
button.style.color = "white";
break;
}
}
};
const initializeCastApi = () => {
return new Promise((resolve, reject) => {
window.__onGCastApiAvailable = (isAvailable) => {
if (isAvailable) {
const context = window.cast.framework.CastContext.getInstance();
context.setOptions({
receiverApplicationId: window.chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,
autoJoinPolicy: window.chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED
});
context.addEventListener(
window.cast.framework.CastContextEventType.SESSION_STATE_CHANGED,
(event) => {
const SessionState = window.cast.framework.SessionState;
castState = event.sessionState;
castSession = event.session;
switch (event.sessionState) {
case SessionState.NO_SESSION:
option.onStateChange?.("disconnected");
updateCastButton("disconnected");
break;
case SessionState.SESSION_STARTING:
option.onStateChange?.("connecting");
updateCastButton("connecting");
break;
case SessionState.SESSION_STARTED:
option.onStateChange?.("connected");
updateCastButton("connected");
break;
case SessionState.SESSION_ENDING:
option.onStateChange?.("disconnecting");
updateCastButton("disconnecting");
break;
case SessionState.SESSION_RESUMED:
option.onStateChange?.("connected");
updateCastButton("connected");
break;
}
}
);
context.addEventListener(window.cast.framework.CastContextEventType.CAST_STATE_CHANGED, (event) => {
const CastState = window.cast.framework.CastState;
switch (event.castState) {
case CastState.NO_DEVICES_AVAILABLE:
option.onCastAvailable?.(false);
break;
case CastState.NOT_CONNECTED:
option.onCastAvailable?.(true);
break;
case CastState.CONNECTING:
case CastState.CONNECTED:
option.onCastAvailable?.(true);
break;
}
});
isCastInitialized = true;
resolve();
} else {
reject(new Error("Cast API is not available"));
}
};
if (!window.chrome || !window.chrome.cast) {
loadScript(option.sdk || DEFAULT_SDK).catch(reject);
}
});
};
const castVideo = (art, session) => {
const url = option.url || art.option.url;
const mediaInfo = new window.chrome.cast.media.MediaInfo(url, option.mimeType || getMimeType(url));
const request = new window.chrome.cast.media.LoadRequest(mediaInfo);
session.loadMedia(request).then(() => {
art.notice.show = "Casting started";
option.onCastStart?.();
}).catch((error) => {
art.notice.show = "Error casting media";
option.onError?.(error);
throw error;
});
};
return async (art) => {
art.controls.add({
name: "chromecast",
position: "right",
tooltip: "Chromecast",
html: `<i class="art-icon art-icon-cast">${option.icon || DEFAULT_ICON}</i>`,
click: async () => {
if (!isCastInitialized) {
try {
await initializeCastApi();
} catch (error) {
art.notice.show = "Failed to initialize Cast API";
option.onError?.(error);
throw error;
}
}
const context = window.cast.framework.CastContext.getInstance();
if (castSession) {
castVideo(art, castSession);
} else {
try {
const session = await context.requestSession();
castVideo(art, session);
} catch (error) {
art.notice.show = "Error connecting to cast session";
option.onError?.(error);
throw error;
}
}
}
});
return {
name: "artplayerPluginChromecast",
getCastState: () => castState,
isCasting: () => castSession !== null
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginChromecast = artplayerPluginChromecast;
}
export {
artplayerPluginChromecast as default
};
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-danmuku-mask.js v1.0.0
* artplayer-plugin-danmuku-mask.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,s){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof a[n]&&a[n],l=o.i||{},i=o.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!i[t]){if(!e[t]){if(s[t])return s[t];var l="function"==typeof a[n]&&a[n];if(!r&&l)return l(t,!0);if(o)return o(t,!0);if(p&&"string"==typeof t)return p(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}f.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},f.cache={};var d=i[t]=new u.Module(t);e[t][0].call(d.exports,f,d,d.exports,a)}return i[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],s=e[2]||e[0],a=u(n);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===s?Object.defineProperty(r,t,{enumerable:!0,value:a}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===s?a.__esModule?a.default:a:a[s]}})}),r}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=p,this.exports={}},u.modules=e,u.cache=i,u.parent=o,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=l,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return a[n]}}),a[n]=u;for(var c=0;c<t.length;c++)u(t[c]);if(r){var d=u(r);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({ecCzQ:[function(e,t,r,n){var s=e("@parcel/transformer-js/src/esmodule-helpers.js");s.defineInteropFlag(r),s.export(r,"default",()=>l);var a=e("@tensorflow-models/body-segmentation"),o=e("@tensorflow/tfjs-core");function l(e={}){return t=>{let{template:{$video:r,$danmuku:n}}=t,s=null,l=null,i=null,p=null,u=!1,c={solutionPath:e.solutionPath||"https://cdn.jsdelivr.net/npm/@mediapipe/selfie_segmentation",modelSelection:e.modelSelection||1,smoothSegmentation:void 0===e.smoothSegmentation||e.smoothSegmentation,minDetectionConfidence:e.minDetectionConfidence||.5,minTrackingConfidence:e.minTrackingConfidence||.5,selfieMode:e.selfieMode||!1,drawContour:e.drawContour||!1,foregroundThreshold:e.foregroundThreshold||.5,opacity:e.opacity||1,maskBlurAmount:e.maskBlurAmount||3};async function d(){try{await o.setBackend("webgl")}catch(e){console.warn("WebGL backend not available, falling back to CPU",e.message),await o.setBackend("cpu")}}async function f(){await d();let e=a.SupportedModels.MediaPipeSelfieSegmentation,t={runtime:"mediapipe",modelType:"general",solutionPath:c.solutionPath,modelSelection:c.modelSelection,smoothSegmentation:c.smoothSegmentation,minDetectionConfidence:c.minDetectionConfidence,minTrackingConfidence:c.minTrackingConfidence,selfieMode:c.selfieMode};try{s=await a.createSegmenter(e,t),u=!0}catch(e){console.error("Error initializing segmenter:",e),u=!1}}async function m(){if(!u||r.paused||r.ended){p=requestAnimationFrame(m);return}try{l.width=r.videoWidth,l.height=r.videoHeight;let e=await s.segmentPeople(r);if(!e||0===e.length){p=requestAnimationFrame(m);return}let t=await a.toBinaryMask(e,{r:255,g:255,b:255,a:255},{r:0,g:0,b:0,a:255},c.drawContour,c.foregroundThreshold);await a.drawMask(l,r,t,c.opacity,c.maskBlurAmount);let o=i.getImageData(0,0,l.width,l.height);i.putImageData(function(e){let t=e.data;for(let e=0;e<t.length;e+=4)t[e]>250&&t[e+1]>250&&t[e+2]>250&&(t[e+3]=0);return e}(o),0,0),n.style.maskImage=`url(${l.toDataURL()})`}catch(e){console.error("Error in segmentBody:",e)}p=requestAnimationFrame(m)}async function h(){u||await f(),l||(i=(l=document.createElement("canvas")).getContext("2d")),Object.assign(n.style,{maskMode:"alpha",maskSize:"contain",maskRepeat:"no-repeat",backgroundSize:"contain",backgroundRepeat:"no-repeat"}),m()}function g(){n.style.maskImage="none",p&&(cancelAnimationFrame(p),p=null)}return t.on("ready",h),t.on("destroy",g),{name:"artplayerPluginDanmukuMask",start:h,stop:g}}}e("@tensorflow/tfjs-backend-webgl"),e("@tensorflow/tfjs-backend-cpu"),"u">typeof window&&(window.artplayerPluginDanmukuMask=l)},{"@tensorflow-models/body-segmentation":"5Otso","@tensorflow/tfjs-core":"2Gtps","@tensorflow/tfjs-backend-webgl":"2ZcDF","@tensorflow/tfjs-backend-cpu":"b4yJT","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"5Otso":[function(e,t,r,n){var s,a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(r),a.export(r,"SupportedModels",()=>eR),a.export(r,"blurBodyPart",()=>eJ),a.export(r,"bodyPixMaskValueToRainbowColor",()=>b),a.export(r,"createSegmenter",()=>e$),a.export(r,"drawBokehEffect",()=>eQ),a.export(r,"drawMask",()=>eZ),a.export(r,"drawPixelatedMask",()=>eY),a.export(r,"toBinaryMask",()=>eK),a.export(r,"toColoredMask",()=>eX);var o=e("@tensorflow/tfjs-coLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginDanmukuMask=t(),define(function(){return t.ArtplayerPluginDanmukuMask})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginDanmukuMask=t()}(this,function(){"use strict";function e(e,t){for(var n=0;n<t.length;n++){const r=t[n];if("string"!==typeof r&&!Array.isArray(r))for(const t in r)if("default"!==t&&!(t in e)){const n=Object.getOwnPropertyDescriptor(r,t);n&&Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>r[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}class t{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}}class n{refCount(e){return r("refCount")}incRef(e){return r("incRef")}timerAvailable(){return!0}time(e){return r("time")}read(e){return r("read")}readSync(e){return r("readSync")}readToGPU(e,t){return r("readToGPU")}numDataIds(){return r("numDataIds")}disposeData(e,t){return r("disposeData")}write(e,t,n){return r("write")}move(e,t,n,a,s){return r("move")}createTensorFromGPUData(e,t,n){return r("createTensorFromGPUData")}memory(){return r("memory")}floatPrecision(){return r("floatPrecision")}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}dispose(){return r("dispose")}}function r(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function a(e,t,n){return Math.max(e,Math.min(t,n))}function s(e){return e%2===0?e:e+1}function o(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function i(e,t){if(!e)throw new Error("string"===typeof t?t:t())}function u(e,t,n=""){i(d(e,t),()=>n+` Shapes ${e} and ${t} must match`)}function l(e){i(null!=e,()=>"The input to the tensor constructor must be a non-null value.")}function c(e){if(0===e.length)return 1;let t=e[0];for(let n=1;n<e.length;n++)t*=e[n];return t}function d(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function p(e){return e%1===0}function h(e){const t=Math.ceil(Math.sqrt(e));return[t,Math.ceil(e/t)]}function f(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function m(e,t=e=>0,n,r){return new Promise((a,s)=>{let o=0;const i=()=>{if(e())return void a();o++;const u=t(o);null!=n&&o>=n?s():null!=r?r(i,u):setTimeout(i,u)};i()})}function g(e,t){let n=1,r=-1;for(let s=0;s<e.length;++s)if(e[s]>=0)n*=e[s];else if(-1===e[s]){if(-1!==r)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(-1===r){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(0===n)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);const a=e.slice();return a[r]=t/n,a}function y(e,t){const n=t.length;return i((e=null==e?t.map((e,t)=>t):[].concat(e)).every(e=>e>=-n&&e<n),()=>`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),i(e.every(e=>p(e)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(e=>e<0?n+e:e)}function b(e,t){const n=[],r=[],a=null!=t&&Array.isArray(t)&&0===t.length,s=null==t||a?null:y(t,e).sort();let o=0;for(let i=0;i<e.length;++i){if(null!=s){if(s[o]===i&&1!==e[i])throw new Error(`Can't squeeze axis ${i} since its dim '${e[i]}' is not 1`);(null==s[o]||s[o]>i)&&1===e[i]&&(n.push(e[i]),r.push(i)),s[o]<=i&&o++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function x(e,t){return v(e,t)}function v(e,t){let n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else if("bool"===e)n=new Uint8Array(t);else{if("string"!==e)throw new Error(`Unknown data type ${e}`);n=new Array(t)}return n}function w(e,t){return"complex64"!==t&&(("float32"!==t||"complex64"===e)&&(("int32"!==t||"float32"===e||"complex64"===e)&&("bool"!==t||"bool"!==e)))}function k(e){if("float32"===e||"int32"===e)return 4;if("complex64"===e)return 8;if("bool"===e)return 1;throw new Error(`Unknown dtype ${e}`)}function I(e){return"string"===typeof e||e instanceof String}function N(e){return Array.isArray(e)?N(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":"number"===typeof e?"float32":I(e)?"string":function(e){return"boolean"===typeof e}(e)?"bool":"float32"}function S(e){return!!(e&&e.constructor&&e.call&&e.apply)}function T(e,t){for(let n=t;n<e;++n)if(e%n===0)return nLine truncated
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-danmuku-mask.js v1.0.0
* artplayer-plugin-danmuku-mask.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,a){var s="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof s[n]&&s[n],i=o.i||{},c=o.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,r){if(!c[t]){if(!e[t]){if(a[t])return a[t];var i="function"==typeof s[n]&&s[n];if(!r&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var p=Error("Cannot find module '"+t+"'");throw p.code="MODULE_NOT_FOUND",p}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var f=c[t]=new l.Module(t);e[t][0].call(f.exports,d,f,f.exports,s)}return c[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],a=e[2]||e[0],s=l(n);"*"===t?Object.keys(s).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return s[e]}})}):"*"===a?Object.defineProperty(r,t,{enumerable:!0,value:s}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===a?s.__esModule?s.default:s:s[a]}})}),r}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=u,this.exports={}},l.modules=e,l.cache=c,l.parent=o,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=i,l.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(l,"root",{get:function(){return s[n]}}),s[n]=l;for(var p=0;p<t.length;p++)l(t[p]);if(r){var f=l(r);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"1FGEJ":[function(e,t,r,n){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(r),a.export(r,"default",function(){return u});var s=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_ts_generator.cjs"),i=e("@tensorflow-models/body-segmentation"),c=e("@tensorflow/tfjs-core");function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){var r=t.template,n=r.$video,a=r.$danmuku,u=null,l=null,p=null,f=null,d=!1,h={solutionPath:e.solutionPath||"https://cdn.jsdelivr.net/npm/@mediapipe/selfie_segmentation",modelSelection:e.modelSelection||1,smoothSegmentation:void 0===e.smoothSegmentation||e.smoothSegmentation,minDetectionConfidence:e.minDetectionConfidence||.5,minTrackingConfidence:e.minTrackingConfidence||.5,selfieMode:e.selfieMode||!1,drawContour:e.drawContour||!1,foregroundThreshold:e.foregroundThreshold||.5,opacity:e.opacity||1,maskBlurAmount:e.maskBlurAmount||3};function m(){return(0,s._)(function(){return(0,o._)(this,function(e){switch(e.label){case 0:if(d)return[3,2];return[4,(0,s._)(function(){var e,t;return(0,o._)(this,function(r){switch(r.label){case 0:return[4,(0,s._)(function(){return(0,o._)(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,4]),[4,c.setBackend("webgl")];case 1:case 3:return e.sent(),[3,4];case 2:return console.warn("WebGL backend not available, falling back to CPU",e.sent().message),[4,c.setBackend("cpu")];case 4:return[2]}})})()];case 1:r.sent(),e=i.SupportedModels.MediaPipeSelfieSegmentation,t={runtime:"mediapipe",modelType:"general",solutionPath:h.solutionPath,modelSelection:h.modelSelection,smoothSegmentation:h.smoothSegmentation,minDetectionConfidence:h.minDetectionConfidence,minTrackingConfidence:h.minTrackingConfidence,selfieMode:h.selfieMode},r.label=2;case 2:return r.trys.push([2,4,,5]),[4,i.createSegmenter(e,t)];case 3:return u=r.sent(),d=!0,[3,5];case 4:return console.error("Error initializing segmenter:",r.sent()),d=!1,[3,5];case 5:return[2]}})})()];case 1:e.sent(),e.label=2;case 2:return l||(p=(l=document.createElement("canvas")).getContext("2d")),Object.assign(a.style,{maskMode:"alpha",maskSize:"contain",maskRepeat:"no-repeat",backgroundSize:"contain",backgroundRepeat:"no-repeat"}),!function e(){return(0,s._)(function(){var t,r,s,c,m;return(0,o._)(this,function(o){switch(o.label){case 0:if(!d||n.paused||n.ended)return f=requestAnimationFrame(e),[2];o.label=1;case 1:return o.trys.push([1,5,,6]),l.width=n.videoWidth,l.height=n.videoHeight,[4,u.segmentPeople(n)];case 2:if(!(t=o.sent())||0===t.length)return f=requestAnimationFrame(e),[2];return r={r:255,g:255,b:255,a:255},s={r:0,g:0,b:0,a:255},[4,i.toBinaryMask(t,r,s,h.drawContour,h.foregroundThreshold)];case 3:return c=o.sent(),[4,i.drawMask(l,n,c,h.opacity,h.maskBlurAmount)];case 4:return o.sent(),m=p.getImageData(0,0,l.width,l.height),p.putImageData(function(e){for(var t=e.data,r=0;r<t.length;r+=4)t[r]>250&&t[r+1]>250&&t[r+2]>250&&(t[r+3]=0);return e}(m),0,0),a.style.maskImage="url(".concat(l.toDataURL(),")"),[3,6];case 5:return console.error("Error in segmentBody:",o.sent()),[3,6];case 6:return f=requestAnimationFrame(e),[2]}})})()}(),[2]}})})()}function g(){a.style.maskImage="none",f&&(cancelAnimationFrame(f),f=null)}return t.on("readyLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginDanmukuMask=t(),define(function(){return t.ArtplayerPluginDanmukuMask})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginDanmukuMask=t()}(this,function(){"use strict";var e=(e,t,n)=>new Promise((r,a)=>{var s=e=>{try{i(n.next(e))}catch(t){a(t)}},o=e=>{try{i(n.throw(e))}catch(t){a(t)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,o);i((n=n.apply(e,t)).next())});function t(e,t){for(var n=0;n<t.length;n++){const r=t[n];if("string"!==typeof r&&!Array.isArray(r))for(const t in r)if("default"!==t&&!(t in e)){const n=Object.getOwnPropertyDescriptor(r,t);n&&Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>r[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}class n{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}}class r{refCount(e){return a("refCount")}incRef(e){return a("incRef")}timerAvailable(){return!0}time(e){return a("time")}read(e){return a("read")}readSync(e){return a("readSync")}readToGPU(e,t){return a("readToGPU")}numDataIds(){return a("numDataIds")}disposeData(e,t){return a("disposeData")}write(e,t,n){return a("write")}move(e,t,n,r,s){return a("move")}createTensorFromGPUData(e,t,n){return a("createTensorFromGPUData")}memory(){return a("memory")}floatPrecision(){return a("floatPrecision")}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}dispose(){return a("dispose")}}function a(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function s(e,t,n){return Math.max(e,Math.min(t,n))}function o(e){return e%2===0?e:e+1}function i(e,t,n){const r=e[t];e[t]=e[n],e[n]=r}function u(e,t){if(!e)throw new Error("string"===typeof t?t:t())}function l(e,t,n=""){u(p(e,t),()=>n+` Shapes ${e} and ${t} must match`)}function c(e){u(null!=e,()=>"The input to the tensor constructor must be a non-null value.")}function d(e){if(0===e.length)return 1;let t=e[0];for(let n=1;n<e.length;n++)t*=e[n];return t}function p(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function h(e){return e%1===0}function f(e){const t=Math.ceil(Math.sqrt(e));return[t,Math.ceil(e/t)]}function m(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function g(e,t=e=>0,n,r){return new Promise((a,s)=>{let o=0;const i=()=>{if(e())return void a();o++;const u=t(o);null!=n&&o>=n?s():null!=r?r(i,u):setTimeout(i,u)};i()})}function y(e,t){let n=1,r=-1;for(let s=0;s<e.length;++s)if(e[s]>=0)n*=e[s];else if(-1===e[s]){if(-1!==r)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(-1===r){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(0===n)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);const a=e.slice();return a[r]=t/n,a}function b(e,t){const n=t.length;return u((e=null==e?t.map((e,t)=>t):[].concat(e)).every(e=>e>=-n&&e<n),()=>`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),u(e.every(e=>h(e)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(e=>e<0?n+e:e)}function x(e,t){const n=[],r=[],a=null!=t&&Array.isArray(t)&&0===t.length,s=null==t||a?null:b(t,e).sort();let o=0;for(let i=0;i<e.length;++i){if(null!=s){if(s[o]===i&&1!==e[i])throw new Error(`Can't squeeze axis ${i} since its dim '${e[i]}' is not 1`);(null==s[o]||s[o]>i)&&1===e[i]&&(n.push(e[i]),r.push(i)),s[o]<=i&&o++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function v(e,t){return w(e,t)}function w(e,t){let n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else if("bool"===e)n=new Uint8Array(t);else{if("string"!==e)throw new Error(`Unknown data type ${e}`);n=new Array(t)}return n}function k(e,t){return"complex64"!==t&&(("float32"!==t||"complex64"===e)&&(("int32"!==t||"float32"===e||"complex64"===e)&&("bool"!==t||"bool"!==e)))}function I(e){if("float32"===e||"int32"===e)return 4;if("complex64"===e)return 8;if("bool"===e)return 1;throw new Error(`Unknown dtype ${e}`)}function N(e){return"string"===typeof e||e instanceof String}function S(e){return Array.isArray(e)?S(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":"number"===tLine truncated
File diff suppressed because it is too large. Load diff
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-danmuku.js v5.2.0
* artplayer-plugin-danmuku.js v5.2.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(t,e,i,a,n,o,s,r){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},d="function"==typeof l[a]&&l[a],p=d.i||{},u=d.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function m(e,i){if(!u[e]){if(!t[e]){if(n[e])return n[e];var o="function"==typeof l[a]&&l[a];if(!i&&o)return o(e,!0);if(d)return d(e,!0);if(h&&"string"==typeof e)return h(e);var s=Error("Cannot find module '"+e+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(i){var a=t[e][1][i];return null!=a?a:i},p.cache={};var r=u[e]=new m.Module(e);t[e][0].call(r.exports,p,r,r.exports,l)}return u[e].exports;function p(t){var e=p.resolve(t);if(!1===e)return{};if(Array.isArray(e)){var i={__esModule:!0};return e.forEach(function(t){var e=t[0],a=t[1],n=t[2]||t[0],o=m(a);"*"===e?Object.keys(o).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(i,t)||Object.defineProperty(i,t,{enumerable:!0,get:function(){return o[t]}})}):"*"===n?Object.defineProperty(i,e,{enumerable:!0,value:o}):Object.defineProperty(i,e,{enumerable:!0,get:function(){return"default"===n?o.__esModule?o.default:o:o[n]}})}),i}return m(e)}}m.isParcelRequire=!0,m.Module=function(t){this.id=t,this.bundle=m,this.require=h,this.exports={}},m.modules=t,m.cache=u,m.parent=d,m.distDir=void 0,m.publicUrl=void 0,m.devServer=void 0,m.i=p,m.register=function(e,i){t[e]=[function(t,e){e.exports=i},{}]},Object.defineProperty(m,"root",{get:function(){return l[a]}}),l[a]=m;for(var c=0;c<e.length;c++)m(e[c]);if(i){var f=m(i);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"666Ok":[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i),n.export(i,"default",()=>u);var o=t("./danmuku"),s=n.interopDefault(o),r=t("./heatmap"),l=n.interopDefault(r),d=t("./setting"),p=n.interopDefault(d);function u(t){return e=>{let i=new(0,s.default)(e,t),a=new(0,p.default)(e,i);return i.option.heatmap&&(0,l.default)(e,i,i.option.heatmap),{name:"artplayerPluginDanmuku",emit:i.emit.bind(i),load:i.load.bind(i),config:i.config.bind(i),hide:i.hide.bind(i),show:i.show.bind(i),reset:i.reset.bind(i),mount:a.mount.bind(a),get option(){return i.option},get isHide(){return i.isHide},get isStop(){return i.isStop}}}}u.icons=p.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=u)},{"./danmuku":"g81Wu","./heatmap":"hjtgU","./setting":"ho690","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],g81Wu:[function(t,e,i,a){var n=t("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(i);var o=t("bundle-text:./worker"),s=n.interopDefault(o),r=t("./bilibili");class l{constructor(t,e){const{constructor:i,template:a}=t;this.utils=i.utils,this.validator=i.validator,this.$danmuku=a.$danmuku,this.$player=a.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=l.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(e,!0);const n=new Blob([s.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(n)),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.on("resize",this.resize),this.load()}static get option(){return{danmuku:[],speed:5,margin:[10,"25%"],opacity:1,color:"#FFFFFF",mode:0,modes:[0,1,2],fontSize:25,antiOverlap:!0,synchronousPlayback:!1,mount:void 0,heatmap:!1,width:512,points:[],filter:()=>!0,beforeEmit:()=>!0,beforeVisible:()=>!0,visible:!0,emitter:!0,maxLength:200,lockTime:5,theme:"dark",OPACITY:{},FONT_SIZE:{},MARGIN:{},SPEED:{},COLOR:[]}}static get scheme(){return{danmuku:"array|function|string",speed:"number",margin:"array",opacity:"number",color:"string",mode:"number",modes:"array",fontSize:"number|string",antiOverlap:"boolean",synchronousPlayback:"boolean",mount:"?htmldivelement|string",heatmap:"object|boolean",width:"number",points:"array",filter:"function",beforeEmit:"function",beforeVisible:"function",visible:"boolean",emitter:"boolean",maxLength:"number",lockTime:"number",theme:"string",OPACITY:"object",FONT_SIZE:"object",MARGIN:"object",SPEED:"object",COLOR:"array"}}static get cssText(){return` user-select: none; position: absolute; white-space: pre; pointer-events: none; perspective: 500px; display: inline-block; will-change: transform; font-weight: normal; line-height: 1.125; visibility: hidden; font-family: SimHei, "Microsoft JhengHei", Arial, Helvetica, sans-serif; text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px; `}get isRotate(){return this.art.pLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginDanmuku=e(),define(function(){return t.ArtplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginDanmuku=e()}(this,function(){"use strict";function t(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function e(e){if("string"!==typeof e)return[];const i=e.matchAll(/<d[^>]*?p="(?<p>[^"]+)"[^>]*>(?<text>.*?)<\/d>/gs);return Array.from(i).map(e=>{const i=e.groups.p.split(",");if(i.length>=8){return{text:e.groups.text.trim().replaceAll("&quot;",'"').replaceAll("&apos;","'").replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&"),time:Number(i[0]),mode:t(Number(i[1])),fontSize:Number(i[2]),color:`#${Number(i[3]).toString(16)}`,timestamp:Number(i[4]),pool:Number(i[5]),userID:i[6],rowID:Number(i[7])}}return null}).filter(Boolean)}function i({data:t}){const{xml:i,id:n}=t;if(!n||!i)return;const a=e(i);globalThis.postMessage({danmus:a,id:n})}function n(){const n=`\n ${t.toString()}\n ${e.toString()}\n onmessage = ${i.toString()}\n `,a=new Blob([n],{type:"application/javascript"});return new Worker(URL.createObjectURL(a))}const a='/*!\n * artplayer-plugin-danmuku.js v5.2.1\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction getDanmuTop({ target, visibles, clientWidth, clientHeight, marginBottom, marginTop, antiOverlap }) {\n const maxTop = clientHeight - marginBottom;\n const danmus = visibles.filter((item) => item.mode === target.mode && item.top <= maxTop).sort((prev, next) => prev.top - next.top);\n if (danmus.length === 0) {\n if (target.mode === 2) {\n return maxTop - target.height;\n } else {\n return marginTop;\n }\n }\n danmus.unshift({\n type: "top",\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n danmus.push({\n type: "bottom",\n top: maxTop,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n if (target.mode === 2) {\n for (let index = danmus.length - 2; index >= 0; index -= 1) {\n const item = danmus[index];\n const prev = danmus[index + 1];\n const itemBottom = item.top + item.height;\n const diff = prev.top - itemBottom;\n if (diff >= target.height) {\n return prev.top - target.height;\n }\n }\n } else {\n for (let index = 1; index < danmus.length; index += 1) {\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevBottom = prev.top + prev.height;\n const diff = item.top - prevBottom;\n if (diff >= target.height) {\n return prevBottom;\n }\n }\n }\n const topMap = [];\n for (let index = 1; index < danmus.length - 1; index += 1) {\n const item = danmus[index];\n if (topMap.length) {\n const last = topMap[topMap.length - 1];\n if (last[0].top === item.top) {\n last.push(item);\n } else {\n topMap.push([item]);\n }\n } else {\n topMap.push([item]);\n }\n }\n if (antiOverlap) {\n switch (target.mode) {\n case 0: {\n const result = topMap.find((list) => {\n return list.every((danmu) => {\n if (clientWidth < danmu.distance)\n return false;\n if (target.speed < danmu.speed)\n return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time)\n return true;\n return false;\n });\n });\n return result && result[0] ? result[0].top : void 0;\n }\n // \u9759\u6b62\u5f39\u5e55\u6ca1\u6709\u91cd\u53e0\u95ee\u9898\n case 1:\n case 2:\n return void 0;\n }\n } else {\n switch (target.mode) {\n case 0:\n topMap.sort((prev, next) => {\n const nextMinRight = Math.min(...next.map((item) => item.right));\n const prevMinRight = Math.min(...prev.map((item) => item.right));\n return nextMinRight * next.length - prevMinRight * prev.length;\n });\n break;\n case 1:\n case 2:\n topMap.sort((prev, next) => {\n const nextMaxWidth = Math.max(...next.map((item) => item.width));\n const prevMaxWidth = Math.max(...prev.map((item) => item.width));\n return prevMaxWidth * prev.length - nextMaxWidth * next.length;\n });\n break;\n }\n return topMap[0][0].top;\n }\n}\nonmessage = (event) => {\n const { data } = event;\n if (!data.id || !data.type)\n return;\n const fns = { getDanmuTop };\n const fn = fns[data.type];\n const result = fn(data);\n globalThis.postMessage({\n result,\n id: data.id\n });Line truncated
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-danmuku.js v5.2.0
* artplayer-plugin-danmuku.js v5.2.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,a,i,r,o,s){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof l[a]&&l[a],d=u.i||{},c=u.cache||{},p="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,n){if(!c[t]){if(!e[t]){if(i[t])return i[t];var r="function"==typeof l[a]&&l[a];if(!n&&r)return r(t,!0);if(u)return u(t,!0);if(p&&"string"==typeof t)return p(t);var o=Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}d.resolve=function(n){var a=e[t][1][n];return null!=a?a:n},d.cache={};var s=c[t]=new f.Module(t);e[t][0].call(s.exports,d,s,s.exports,l)}return c[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],i=e[2]||e[0],r=f(a);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:r}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?r.__esModule?r.default:r:r[i]}})}),n}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=p,this.exports={}},f.modules=e,f.cache=c,f.parent=u,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=d,f.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(f,"root",{get:function(){return l[a]}}),l[a]=f;for(var h=0;h<t.length;h++)f(t[h]);if(n){var m=f(n);"object"==typeof exports&&"u">typeof module?module.exports=m:"function"==typeof define&&define.amd&&define(function(){return m})}}({l3CkF:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return c});var r=e("./danmuku"),o=i.interopDefault(r),s=e("./heatmap"),l=i.interopDefault(s),u=e("./setting"),d=i.interopDefault(u);function c(e){return function(t){var n=new(0,o.default)(t,e),a=new(0,d.default)(t,n);return n.option.heatmap&&(0,l.default)(t,n,n.option.heatmap),{name:"artplayerPluginDanmuku",emit:n.emit.bind(n),load:n.load.bind(n),config:n.config.bind(n),hide:n.hide.bind(n),show:n.show.bind(n),reset:n.reset.bind(n),mount:a.mount.bind(a),get option(){return n.option},get isHide(){return n.isHide},get isStop(){return n.isStop}}}}c.icons=d.default.icons,"u">typeof window&&(window.artplayerPluginDanmuku=c)},{"./danmuku":"u1ZRC","./heatmap":"hLPK6","./setting":"jpEpW","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],u1ZRC:[function(e,t,n,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return h});var r=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),u=e("@swc/helpers/cjs/_object_spread_props.cjs"),d=e("@swc/helpers/cjs/_ts_generator.cjs"),c=e("bundle-text:./worker"),p=i.interopDefault(c),f=e("./bilibili"),h=function(){"use strict";function e(t,n){(0,o._)(this,e);var a=t.constructor,i=t.template;this.utils=a.utils,this.validator=a.validator,this.$danmuku=i.$danmuku,this.$player=i.$player,this.art=t,this.queue=[],this.$refs=[],this.isStop=!1,this.isHide=!1,this.timer=null,this.index=0,this.option=e.option,this.states={wait:[],ready:[],emit:[],stop:[]},this.config(n,!0);var r=new Blob([p.default.replace("export{e as default};","")],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(r)),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.reset=this.reset.bind(this),this.resize=this.resize.bind(this),this.destroy=this.destroy.bind(this),t.on("video:play",this.start),t.on("video:playing",this.start),t.on("video:pause",this.stop),t.on("video:waiting",this.stop),t.on("destroy",this.destroy),t.on("resize",this.resize),this.load()}return(0,s._)(e,[{key:"isRotate",get:function(){var e,t;return null==(t=this.art.plugins)||null==(e=t.autoOrientation)?void 0:e.state}},{key:"marginTop",get:function(){var t=this.utils.clamp,n=this.option.margin[0],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[0]}},{key:"marginBottom",get:function(){var t=this.utils.clamp,n=this.option.margin[1],a=this.$player.clientHeight;return"number"==typeof n?t(n,0,a):"string"==typeof n&&n.endsWith("%")?t(a*(Number.parseFloat(n)/100),0,a):e.option.margin[1]}},{key:"fontSize",get:function(){var t=this.utils.clamp,n=this.$player.clientHeight,a=this.option.fontSize;return"number"==typeof a?Math.round(t(a,12,n)):"string"==typeof a&&a.endsWith("%")?Math.round(t(n*(Number.parseFloat(a)/100),12,n)):e.option.fontSize}},{key:"$ref",get:function(){var t=this.$refs.pop()||document.createElement("div");return t.style.cssText=e.cssText,t.dataset.mode="",t.dataset.id="",t.clLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginDanmuku=e(),define(function(){return t.ArtplayerPluginDanmuku})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginDanmuku=e()}(this,function(){"use strict";var t=Object.defineProperty,e=Object.defineProperties,i=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,o=Math.pow,r=(e,i,n)=>i in e?t(e,i,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[i]=n,l=(t,e)=>{for(var i in e||(e={}))a.call(e,i)&&r(t,i,e[i]);if(n)for(var i of n(e))s.call(e,i)&&r(t,i,e[i]);return t},d=(t,n)=>e(t,i(n)),p=(t,e,i)=>new Promise((n,a)=>{var s=t=>{try{r(i.next(t))}catch(e){a(e)}},o=t=>{try{r(i.throw(t))}catch(e){a(e)}},r=t=>t.done?n(t.value):Promise.resolve(t.value).then(s,o);r((i=i.apply(t,e)).next())});function h(t){switch(t){case 1:case 2:case 3:default:return 0;case 4:return 2;case 5:return 1}}function u(t){if("string"!==typeof t)return[];const e=new RegExp('<d[^>]*?p="(?<p>[^"]+)"[^>]*>(?<text>.*?)<\\/d>',"gs"),i=t.matchAll(e);return Array.from(i).map(t=>{const e=t.groups.p.split(",");if(e.length>=8){return{text:t.groups.text.trim().replaceAll("&quot;",'"').replaceAll("&apos;","'").replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&"),time:Number(e[0]),mode:h(Number(e[1])),fontSize:Number(e[2]),color:`#${Number(e[3]).toString(16)}`,timestamp:Number(e[4]),pool:Number(e[5]),userID:e[6],rowID:Number(e[7])}}return null}).filter(Boolean)}function c({data:t}){const{xml:e,id:i}=t;if(!i||!e)return;const n=u(e);globalThis.postMessage({danmus:n,id:i})}function m(){const t=`\n ${h.toString()}\n ${u.toString()}\n onmessage = ${c.toString()}\n `,e=new Blob([t],{type:"application/javascript"});return new Worker(URL.createObjectURL(e))}const f='/*!\n * artplayer-plugin-danmuku.js v5.2.1\n * Github: https://github.com/zhw2590582/ArtPlayer\n * (c) 2017-2026 Harvey Zhao\n * Released under the MIT License.\n */\nfunction getDanmuTop({ target, visibles, clientWidth, clientHeight, marginBottom, marginTop, antiOverlap }) {\n const maxTop = clientHeight - marginBottom;\n const danmus = visibles.filter((item) => item.mode === target.mode && item.top <= maxTop).sort((prev, next) => prev.top - next.top);\n if (danmus.length === 0) {\n if (target.mode === 2) {\n return maxTop - target.height;\n } else {\n return marginTop;\n }\n }\n danmus.unshift({\n type: "top",\n top: 0,\n left: 0,\n right: 0,\n height: marginTop,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n danmus.push({\n type: "bottom",\n top: maxTop,\n left: 0,\n right: 0,\n height: marginBottom,\n width: clientWidth,\n speed: 0,\n distance: clientWidth\n });\n if (target.mode === 2) {\n for (let index = danmus.length - 2; index >= 0; index -= 1) {\n const item = danmus[index];\n const prev = danmus[index + 1];\n const itemBottom = item.top + item.height;\n const diff = prev.top - itemBottom;\n if (diff >= target.height) {\n return prev.top - target.height;\n }\n }\n } else {\n for (let index = 1; index < danmus.length; index += 1) {\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevBottom = prev.top + prev.height;\n const diff = item.top - prevBottom;\n if (diff >= target.height) {\n return prevBottom;\n }\n }\n }\n const topMap = [];\n for (let index = 1; index < danmus.length - 1; index += 1) {\n const item = danmus[index];\n if (topMap.length) {\n const last = topMap[topMap.length - 1];\n if (last[0].top === item.top) {\n last.push(item);\n } else {\n topMap.push([item]);\n }\n } else {\n topMap.push([item]);\n }\n }\n if (antiOverlap) {\n switch (target.mode) {\n case 0: {\n const result = topMap.find((list) => {\n return list.every((danmu) => {\n if (clientWidth < danmu.distance)\n return false;\n if (target.speed < danmu.speed)\n return true;\n const overlapTime = danmu.right / (target.speed - danmu.speed);\n if (overlapTime > danmu.time)\n return true;\n return false;\n });\n });\n return result && result[0] ? result[0].top : void 0;\n }\n // \u9759\u6b62\u5f39\u5e55\u6ca1\u6709\u91cd\u53e0\u95ee\u9898\n case 1:\n case 2:\n return void 0;\n }\n } else {\n switch (target.mode) {\n case 0:\n topMap.sort((prev, next) => {\n const nextMinRight = Math.min(...next.map((item) => item.right));\n const prevMinRight = Math.min(...prev.map((item) => item.right));\n return nextMinRight * next.length - prevMinRight * prev.length;\n Line truncated
File diff suppressed because it is too large. Load diff
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-dash-control.js v1.0.0
* artplayer-plugin-dash-control.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,o,r,n){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof i[r]&&i[r],l=u.i||{},a=u.cache||{},s="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,o){if(!a[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof i[r]&&i[r];if(!o&&l)return l(t,!0);if(u)return u(t,!0);if(s&&"string"==typeof t)return s(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}p.resolve=function(o){var r=e[t][1][o];return null!=r?r:o},p.cache={};var c=a[t]=new d.Module(t);e[t][0].call(c.exports,p,c,c.exports,i)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],n=e[2]||e[0],i=d(r);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===n?Object.defineProperty(o,t,{enumerable:!0,value:i}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===n?i.__esModule?i.default:i:i[n]}})}),o}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=s,this.exports={}},d.modules=e,d.cache=a,d.parent=u,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=l,d.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(d,"root",{get:function(){return i[r]}}),i[r]=d;for(var f=0;f<t.length;f++)d(t[f]);if(o){var c=d(o);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({fpgdj:[function(e,t,o,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(o),n.export(o,"default",()=>d);var i=e("bundle-text:./audio.svg"),u=n.interopDefault(i),l=e("bundle-text:./quality.svg"),a=n.interopDefault(l);function s(e,t){let o=new Map;return e.filter(e=>{let r=e[t];return void 0===r||!o.has(r)&&o.set(r,1)})}function d(e={}){return t=>{let{$video:o}=t.template,{errorHandle:r}=t.constructor.utils;function n(){r(t.dash.getVideoElement()===o,'Cannot find instance of DASH from "art.dash"'),function(o){let r=o.getBitrateInfoListFor("video");if(!r||!r.length)return;let n=e.quality||{},i=n.auto||"Auto",u=n.title||"Quality",l=n.getName||(e=>`${e.height}p`),d=o.getQualityFor("video"),f=o.getSettings().streaming.abr.autoSwitchBitrate.video,c=f?i:l(r[d]),p=s(r.map(e=>({html:l(e),value:e.qualityIndex,default:d===e.qualityIndex&&!f})),"html").sort((e,t)=>t.value-e.value);p.push({html:i,value:"auto",default:f});let h=e=>("auto"===e.value?o.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!0}}}}):(o.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!1}}}}),o.setQualityFor("video",e.value)),t.notice.show=`${u}: ${e.html}`,n.control&&t.controls.check(e),n.setting&&t.setting.check(e),e.html);n.control&&t.controls.update({name:"dash-quality",position:"right",html:c,style:{padding:"0 10px"},selector:p,onSelect:h}),n.setting&&t.setting.update({name:"dash-quality",tooltip:c,html:u,icon:a.default,width:200,selector:p,onSelect:h})}(t.dash),function(o){let r=o.getTracksFor("audio");if(!r||!r.length)return;let n=e.audio||{},i=n.auto||"Auto",l=n.title||"Audio",a=n.getName||(e=>e.lang||e.id),d=o.getCurrentTrackFor("audio")||r[0],f=d?a(d):i,c=s(r.map(e=>({html:a(e),value:e,default:d===e})),"html"),p=e=>(o.setCurrentTrack(e.value),t.notice.show=`${l}: ${e.html}`,n.control&&t.controls.check(e),n.setting&&t.setting.check(e),e.html);n.control&&t.controls.update({name:"dash-audio",position:"right",html:f,style:{padding:"0 10px"},selector:c,onSelect:p}),n.setting&&t.setting.update({name:"dash-audio",tooltip:f,html:l,icon:u.default,width:200,selector:c,onSelect:p})}(t.dash)}return t.on("ready",n),t.on("restart",n),{name:"artplayerPluginDashControl",update:n}}}"u">typeof window&&(window.artplayerPluginDashControl=d)},{"bundle-text:./audio.svg":"h5IJQ","bundle-text:./quality.svg":"04OQC","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],h5IJQ:[function(e,t,o,r){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6 26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48-44.2 0-80-35.8-80-80V288C0 146.6 114.6 32 256 32s256 114.6 256 256v112c0 44.2-35.8 80-80 80-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48 10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80"/></svg>'},{}],"04OQC":[function(e,t,o,r){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M0 96c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64Zm323.8 106.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6-26.5-33.1c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4S78.8 416 88 416h336c8.9 0 17.1-4.9 21.Line truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginDashControl=e(),define(function(){return t.ArtplayerPluginDashControl})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginDashControl=e()}(this,function(){"use strict";function t(t,e){const o=new Map;return t.filter(t=>{const n=t[e];return void 0===n||!o.has(n)&&o.set(n,1)})}function e(e={}){return o=>{const{$video:n}=o.template,{errorHandle:i}=o.constructor.utils;function a(){i(o.dash.getVideoElement()===n,'Cannot find instance of DASH from "art.dash"'),function(n){const i=n.getBitrateInfoListFor("video");if(!i||!i.length)return;const a=e.quality||{},l=a.auto||"Auto",s=a.title||"Quality",r=a.getName||(t=>`${t.height}p`),c=n.getQualityFor("video"),u=n.getSettings().streaming.abr.autoSwitchBitrate.video,d=u?l:r(i[c]),h=t(i.map(t=>({html:r(t),value:t.qualityIndex,default:c===t.qualityIndex&&!u})),"html").sort((t,e)=>e.value-t.value);h.push({html:l,value:"auto",default:u});const g=t=>("auto"===t.value?n.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!0}}}}):(n.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!1}}}}),n.setQualityFor("video",t.value)),o.notice.show=`${s}: ${t.html}`,a.control&&o.controls.check(t),a.setting&&o.setting.check(t),t.html);a.control&&o.controls.update({name:"dash-quality",position:"right",html:d,style:{padding:"0 10px"},selector:h,onSelect:g}),a.setting&&o.setting.update({name:"dash-quality",tooltip:d,html:s,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>',width:200,selector:h,onSelect:g})}(o.dash),function(n){const i=n.getTracksFor("audio");if(!i||!i.length)return;const a=e.audio||{},l=a.auto||"Auto",s=a.title||"Audio",r=a.getName||(t=>t.lang||t.id),c=n.getCurrentTrackFor("audio")||i[0],u=c?r(c):l,d=t(i.map(t=>({html:r(t),value:t,default:c===t})),"html"),h=t=>(n.setCurrentTrack(t.value),o.notice.show=`${s}: ${t.html}`,a.control&&o.controls.check(t),a.setting&&o.setting.check(t),t.html);a.control&&o.controls.update({name:"dash-audio",position:"right",html:u,style:{padding:"0 10px"},selector:d,onSelect:h}),a.setting&&o.setting.update({name:"dash-audio",tooltip:u,html:s,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"/></svg>',width:200,selector:d,onSelect:h})}(o.dash)}return o.on("ready",a),o.on("restart",a),{name:"artplayerPluginDashControl",update:a}}}return"undefined"!==typeof window&&(window.artplayerPluginDashControl=e),e});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-dash-control.js v1.0.0
* artplayer-plugin-dash-control.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,o,n,r){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof i[n]&&i[n],a=u.i||{},l=u.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,o){if(!l[t]){if(!e[t]){if(r[t])return r[t];var a="function"==typeof i[n]&&i[n];if(!o&&a)return a(t,!0);if(u)return u(t,!0);if(c&&"string"==typeof t)return c(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(o){var n=e[t][1][o];return null!=n?n:o},p.cache={};var d=l[t]=new f.Module(t);e[t][0].call(d.exports,p,d,d.exports,i)}return l[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],r=e[2]||e[0],i=f(n);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===r?Object.defineProperty(o,t,{enumerable:!0,value:i}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===r?i.__esModule?i.default:i:i[r]}})}),o}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=c,this.exports={}},f.modules=e,f.cache=l,f.parent=u,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=a,f.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(f,"root",{get:function(){return i[n]}}),i[n]=f;for(var s=0;s<t.length;s++)f(t[s]);if(o){var d=f(o);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({SomuF:[function(e,t,o,n){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");r.defineInteropFlag(o),r.export(o,"default",function(){return f});var i=e("bundle-text:./audio.svg"),u=r.interopDefault(i),a=e("bundle-text:./quality.svg"),l=r.interopDefault(a);function c(e,t){var o=new Map;return e.filter(function(e){var n=e[t];return void 0===n||!o.has(n)&&o.set(n,1)})}function f(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){var o=t.template.$video,n=t.constructor.utils.errorHandle;function r(){n(t.dash.getVideoElement()===o,'Cannot find instance of DASH from "art.dash"'),function(o){var n=o.getBitrateInfoListFor("video");if(n&&n.length){var r=e.quality||{},i=r.auto||"Auto",u=r.title||"Quality",a=r.getName||function(e){return"".concat(e.height,"p")},f=o.getQualityFor("video"),s=o.getSettings().streaming.abr.autoSwitchBitrate.video,d=s?i:a(n[f]),p=c(n.map(function(e){return{html:a(e),value:e.qualityIndex,default:f===e.qualityIndex&&!s}}),"html").sort(function(e,t){return t.value-e.value});p.push({html:i,value:"auto",default:s});var h=function(e){return"auto"===e.value?o.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!0}}}}):(o.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!1}}}}),o.setQualityFor("video",e.value)),t.notice.show="".concat(u,": ").concat(e.html),r.control&&t.controls.check(e),r.setting&&t.setting.check(e),e.html};r.control&&t.controls.update({name:"dash-quality",position:"right",html:d,style:{padding:"0 10px"},selector:p,onSelect:h}),r.setting&&t.setting.update({name:"dash-quality",tooltip:d,html:u,icon:l.default,width:200,selector:p,onSelect:h})}}(t.dash),function(o){var n=o.getTracksFor("audio");if(n&&n.length){var r=e.audio||{},i=r.auto||"Auto",a=r.title||"Audio",l=r.getName||function(e){return e.lang||e.id},f=o.getCurrentTrackFor("audio")||n[0],s=f?l(f):i,d=c(n.map(function(e){return{html:l(e),value:e,default:f===e}}),"html"),p=function(e){return o.setCurrentTrack(e.value),t.notice.show="".concat(a,": ").concat(e.html),r.control&&t.controls.check(e),r.setting&&t.setting.check(e),e.html};r.control&&t.controls.update({name:"dash-audio",position:"right",html:s,style:{padding:"0 10px"},selector:d,onSelect:p}),r.setting&&t.setting.update({name:"dash-audio",tooltip:s,html:a,icon:u.default,width:200,selector:d,onSelect:p})}}(t.dash)}return t.on("ready",r),t.on("restart",r),{name:"artplayerPluginDashControl",update:r}}}"u">typeof window&&(window.artplayerPluginDashControl=f)},{"bundle-text:./audio.svg":"4hXZr","bundle-text:./quality.svg":"8Ayoe","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"4hXZr":[function(e,t,o,n){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6 26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48-44.2 0-80-35.8-80-80V288C0 146.6 114.6 32 256 32s256 114.6 256 256v112c0 44.2-35.8 80-80 80-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48 10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80"/></svg>'},{}],"8Ayoe":[function(e,t,o,n){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M0 96c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64cLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginDashControl=e(),define(function(){return t.ArtplayerPluginDashControl})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginDashControl=e()}(this,function(){"use strict";function t(t,e){const o=new Map;return t.filter(t=>{const n=t[e];return void 0===n||!o.has(n)&&o.set(n,1)})}function e(e={}){return o=>{const{$video:n}=o.template,{errorHandle:i}=o.constructor.utils;function a(){i(o.dash.getVideoElement()===n,'Cannot find instance of DASH from "art.dash"'),function(n){const i=n.getBitrateInfoListFor("video");if(!i||!i.length)return;const a=e.quality||{},l=a.auto||"Auto",s=a.title||"Quality",r=a.getName||(t=>`${t.height}p`),c=n.getQualityFor("video"),u=n.getSettings().streaming.abr.autoSwitchBitrate.video,d=u?l:r(i[c]),h=t(i.map(t=>({html:r(t),value:t.qualityIndex,default:c===t.qualityIndex&&!u})),"html").sort((t,e)=>e.value-t.value);h.push({html:l,value:"auto",default:u});const g=t=>("auto"===t.value?n.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!0}}}}):(n.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!1}}}}),n.setQualityFor("video",t.value)),o.notice.show=`${s}: ${t.html}`,a.control&&o.controls.check(t),a.setting&&o.setting.check(t),t.html);a.control&&o.controls.update({name:"dash-quality",position:"right",html:d,style:{padding:"0 10px"},selector:h,onSelect:g}),a.setting&&o.setting.update({name:"dash-quality",tooltip:d,html:s,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>',width:200,selector:h,onSelect:g})}(o.dash),function(n){const i=n.getTracksFor("audio");if(!i||!i.length)return;const a=e.audio||{},l=a.auto||"Auto",s=a.title||"Audio",r=a.getName||(t=>t.lang||t.id),c=n.getCurrentTrackFor("audio")||i[0],u=c?r(c):l,d=t(i.map(t=>({html:r(t),value:t,default:c===t})),"html"),h=t=>(n.setCurrentTrack(t.value),o.notice.show=`${s}: ${t.html}`,a.control&&o.controls.check(t),a.setting&&o.setting.check(t),t.html);a.control&&o.controls.update({name:"dash-audio",position:"right",html:u,style:{padding:"0 10px"},selector:d,onSelect:h}),a.setting&&o.setting.update({name:"dash-audio",tooltip:u,html:s,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"/></svg>',width:200,selector:d,onSelect:h})}(o.dash)}return o.on("ready",a),o.on("restart",a),{name:"artplayerPluginDashControl",update:a}}}return"undefined"!==typeof window&&(window.artplayerPluginDashControl=e),e});
+165 -3
View File
@@ -1,8 +1,170 @@
/*!
* artplayer-plugin-dash-control.js v1.0.0
* artplayer-plugin-dash-control.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,o,r,n){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof i[r]&&i[r],l=u.i||{},a=u.cache||{},s="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,o){if(!a[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof i[r]&&i[r];if(!o&&l)return l(t,!0);if(u)return u(t,!0);if(s&&"string"==typeof t)return s(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(o){var r=e[t][1][o];return null!=r?r:o},p.cache={};var f=a[t]=new c.Module(t);e[t][0].call(f.exports,p,f,f.exports,i)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],n=e[2]||e[0],i=c(r);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===n?Object.defineProperty(o,t,{enumerable:!0,value:i}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===n?i.__esModule?i.default:i:i[n]}})}),o}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=s,this.exports={}},c.modules=e,c.cache=a,c.parent=u,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(c,"root",{get:function(){return i[r]}}),i[r]=c;for(var d=0;d<t.length;d++)c(t[d]);if(o){var f=c(o);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({"2mXm2":[function(e,t,o,r){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(o),n.export(o,"default",()=>c);var i=e("bundle-text:./audio.svg"),u=n.interopDefault(i),l=e("bundle-text:./quality.svg"),a=n.interopDefault(l);function s(e,t){let o=new Map;return e.filter(e=>{let r=e[t];return void 0===r||!o.has(r)&&o.set(r,1)})}function c(e={}){return t=>{let{$video:o}=t.template,{errorHandle:r}=t.constructor.utils;function n(){r(t.dash.getVideoElement()===o,'Cannot find instance of DASH from "art.dash"'),function(o){let r=o.getBitrateInfoListFor("video");if(!r||!r.length)return;let n=e.quality||{},i=n.auto||"Auto",u=n.title||"Quality",l=n.getName||(e=>`${e.height}p`),c=o.getQualityFor("video"),d=o.getSettings().streaming.abr.autoSwitchBitrate.video,f=d?i:l(r[c]),p=s(r.map(e=>({html:l(e),value:e.qualityIndex,default:c===e.qualityIndex&&!d})),"html").sort((e,t)=>t.value-e.value);p.push({html:i,value:"auto",default:d});let h=e=>("auto"===e.value?o.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!0}}}}):(o.updateSettings({streaming:{abr:{autoSwitchBitrate:{video:!1}}}}),o.setQualityFor("video",e.value)),t.notice.show=`${u}: ${e.html}`,n.control&&t.controls.check(e),n.setting&&t.setting.check(e),e.html);n.control&&t.controls.update({name:"dash-quality",position:"right",html:f,style:{padding:"0 10px"},selector:p,onSelect:h}),n.setting&&t.setting.update({name:"dash-quality",tooltip:f,html:u,icon:a.default,width:200,selector:p,onSelect:h})}(t.dash),function(o){let r=o.getTracksFor("audio");if(!r||!r.length)return;let n=e.audio||{},i=n.auto||"Auto",l=n.title||"Audio",a=n.getName||(e=>e.lang||e.id),c=o.getCurrentTrackFor("audio")||r[0],d=c?a(c):i,f=s(r.map(e=>({html:a(e),value:e,default:c===e})),"html"),p=e=>(o.setCurrentTrack(e.value),t.notice.show=`${l}: ${e.html}`,n.control&&t.controls.check(e),n.setting&&t.setting.check(e),e.html);n.control&&t.controls.update({name:"dash-audio",position:"right",html:d,style:{padding:"0 10px"},selector:f,onSelect:p}),n.setting&&t.setting.update({name:"dash-audio",tooltip:d,html:l,icon:u.default,width:200,selector:f,onSelect:p})}(t.dash)}return t.on("ready",n),t.on("restart",n),{name:"artplayerPluginDashControl",update:n}}}"u">typeof window&&(window.artplayerPluginDashControl=c)},{"bundle-text:./audio.svg":"8JwGn","bundle-text:./quality.svg":"gADLz","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"8JwGn":[function(e,t,o,r){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6 26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48-44.2 0-80-35.8-80-80V288C0 146.6 114.6 32 256 32s256 114.6 256 256v112c0 44.2-35.8 80-80 80-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48 10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80"/></svg>'},{}],gADLz:[function(e,t,o,r){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M0 96c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64Zm323.8 106.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6-26.5-33.1c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4S78.8 416 88 416h336c8.9 0 17.1-4.9 2Line truncated
const $audio = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"/></svg>';
const $quality = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>';
function uniqBy(array, property) {
const seen = /* @__PURE__ */ new Map();
return array.filter((item) => {
const key = item[property];
if (key === void 0) {
return true;
}
return !seen.has(key) && seen.set(key, 1);
});
}
function artplayerPluginDashControl(option = {}) {
return (art) => {
const { $video } = art.template;
const { errorHandle } = art.constructor.utils;
function updateQuality(dash) {
const qualities = dash.getBitrateInfoListFor("video");
if (!qualities || !qualities.length)
return;
const config = option.quality || {};
const auto = config.auto || "Auto";
const title = config.title || "Quality";
const getName = config.getName || ((level) => `${level.height}p`);
const currentQuality = dash.getQualityFor("video");
const currentAuto = dash.getSettings().streaming.abr.autoSwitchBitrate.video;
const defaultHtml = currentAuto ? auto : getName(qualities[currentQuality]);
const selector = uniqBy(
qualities.map((item) => {
return {
html: getName(item),
value: item.qualityIndex,
default: currentQuality === item.qualityIndex && !currentAuto
};
}),
"html"
).sort((a, b) => b.value - a.value);
selector.push({
html: auto,
value: "auto",
default: currentAuto
});
const onSelect = (item) => {
if (item.value === "auto") {
dash.updateSettings({
streaming: {
abr: {
autoSwitchBitrate: {
video: true
}
}
}
});
} else {
dash.updateSettings({
streaming: {
abr: {
autoSwitchBitrate: {
video: false
}
}
}
});
dash.setQualityFor("video", item.value);
}
art.notice.show = `${title}: ${item.html}`;
if (config.control)
art.controls.check(item);
if (config.setting)
art.setting.check(item);
return item.html;
};
if (config.control) {
art.controls.update({
name: "dash-quality",
position: "right",
html: defaultHtml,
style: { padding: "0 10px" },
selector,
onSelect
});
}
if (config.setting) {
art.setting.update({
name: "dash-quality",
tooltip: defaultHtml,
html: title,
icon: $quality,
width: 200,
selector,
onSelect
});
}
}
function updateAudio(dash) {
const audioTracks = dash.getTracksFor("audio");
if (!audioTracks || !audioTracks.length)
return;
const config = option.audio || {};
const auto = config.auto || "Auto";
const title = config.title || "Audio";
const getName = config.getName || ((track) => track.lang || track.id);
const currentTrack = dash.getCurrentTrackFor("audio") || audioTracks[0];
const defaultHtml = currentTrack ? getName(currentTrack) : auto;
const selector = uniqBy(
audioTracks.map((item) => {
return {
html: getName(item),
value: item,
default: currentTrack === item
};
}),
"html"
);
const onSelect = (item) => {
dash.setCurrentTrack(item.value);
art.notice.show = `${title}: ${item.html}`;
if (config.control)
art.controls.check(item);
if (config.setting)
art.setting.check(item);
return item.html;
};
if (config.control) {
art.controls.update({
name: "dash-audio",
position: "right",
html: defaultHtml,
style: { padding: "0 10px" },
selector,
onSelect
});
}
if (config.setting) {
art.setting.update({
name: "dash-audio",
tooltip: defaultHtml,
html: title,
icon: $audio,
width: 200,
selector,
onSelect
});
}
}
function update() {
errorHandle(art.dash.getVideoElement() === $video, 'Cannot find instance of DASH from "art.dash"');
updateQuality(art.dash);
updateAudio(art.dash);
}
art.on("ready", update);
art.on("restart", update);
return {
name: "artplayerPluginDashControl",
update
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginDashControl = artplayerPluginDashControl;
}
export {
artplayerPluginDashControl as default
};
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-document-pip.js v1.0.2
* artplayer-plugin-document-pip.js v1.0.3
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,r,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof i[r]&&i[r],a=l.i||{},d=l.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,n){if(!d[t]){if(!e[t]){if(o[t])return o[t];var a="function"==typeof i[r]&&i[r];if(!n&&a)return a(t,!0);if(l)return l(t,!0);if(c&&"string"==typeof t)return c(t);var p=Error("Cannot find module '"+t+"'");throw p.code="MODULE_NOT_FOUND",p}f.resolve=function(n){var r=e[t][1][n];return null!=r?r:n},f.cache={};var s=d[t]=new u.Module(t);e[t][0].call(s.exports,f,s,s.exports,i)}return d[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],o=e[2]||e[0],i=u(r);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(n,t,{enumerable:!0,value:i}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),n}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=c,this.exports={}},u.modules=e,u.cache=d,u.parent=l,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=a,u.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(u,"root",{get:function(){return i[r]}}),i[r]=u;for(var p=0;p<t.length;p++)u(t[p]);if(n){var s=u(n);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({eo8f0:[function(e,t,n,r){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(n),o.export(n,"default",()=>a);var i=e("bundle-text:./style.less"),l=o.interopDefault(i);function a(e={}){let t={width:480,height:270,fallbackToVideoPiP:!0,placeholder:"Playing in Document Picture-in-Picture",...e};return e=>{let n="documentPictureInPicture"in window&&"function"==typeof window.documentPictureInPicture?.requestWindow,{proxy:r,icons:o,i18n:i,template:{$player:l},constructor:{utils:{append:a,tooltip:d,addClass:c,removeClass:u,sleep:p}}}=e,s={win:null,originalParent:null,originalNext:null,currentDoc:null,placeholder:null};async function f(){if(!n&&t.fallbackToVideoPiP){e.pip=!0,console.warn("[artplayer-plugin-document-pip] Document Picture-in-Picture is not supported, falling back to Video Picture-in-Picture");return}if(!s.win)try{let n=await window.documentPictureInPicture.requestWindow({width:t.width,height:t.height});s.win=n,s.currentDoc=n.document,s.placeholder=document.createElement("div"),s.placeholder.className="artplayer-document-pip-placeholder",s.placeholder.style.cssText="display:flex;justify-content:center;align-items:center;width:100%;height:100%;",s.placeholder.textContent=t.placeholder,s.originalParent=l.parentNode,s.originalNext=l.nextSibling,s.originalParent.insertBefore(s.placeholder,s.originalNext);let o=n.document.createElement("div");o.id="__art_dpip_root",n.document.body.appendChild(o);var r=n.document;let i=r.createElement("style");if(i.textContent=` html, body { margin:0; padding:0; width:100%; height:100%; background:#000; overflow:hidden; } #__art_dpip_root { position:absolute; inset:0; display:flex; } #__art_dpip_root > * { width:100% !important; height:100% !important; } `,r.head.appendChild(i),!r.querySelector('meta[name="viewport"]')){let e=r.createElement("meta");e.name="viewport",e.content="width=device-width,initial-scale=1",r.head.appendChild(e)}try{document.querySelectorAll('link[rel="stylesheet"]').forEach(e=>{let t=r.createElement("link");t.rel="stylesheet",t.href=e.href,e.media&&(t.media=e.media),e.crossOrigin&&(t.crossOrigin=e.crossOrigin),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),r.head.appendChild(t)})}catch{}try{document.querySelectorAll("style").forEach(e=>{let t=r.createElement("style");t.textContent=e.textContent,r.head.appendChild(t)})}catch{}let a=n.document.adoptNode(l);o.appendChild(a),s.currentDoc=n.document;let d=()=>e.resize?.(),u=()=>m();n.addEventListener("resize",d),n.addEventListener("pagehide",u),n.addEventListener("unload",u),s.cleanup=()=>{n.removeEventListener("resize",d),n.removeEventListener("pagehide",u),n.removeEventListener("unload",u)},c(l,"artplayer-document-pip"),e.events.bindGlobalEvents?.(),e.emit("document-pip",!0),await p(100),e.emit("resize")}catch(t){e.notice.show="Document Picture-in-Picture open failed",console.warn("[artplayer-plugin-document-pip] open failed:",t)}}async function m(){if(s.win)try{s.cleanup?.(),function(){if(!s.placeholder)return;let e=s.placeholder.ownerDocument||document,t=e.adoptNode(l);s.originalParent.insertBefore(t,s.placeholder),s.placeholder.remove(),s.placeholder=null,s.currentDoc=e}(),s.win.close(),s.win=null,u(l,"artplayer-document-pip"),e.events.bindGlobalEvents?.(),e.emit("document-pLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginDocumentPip=t(),define(function(){return t.ArtplayerPluginDocumentPip})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginDocumentPip=t()}(this,function(){"use strict";function e(e={}){const t={width:480,height:270,fallbackToVideoPiP:!0,placeholder:"Playing in Document Picture-in-Picture",...e};return e=>{const n="documentPictureInPicture"in window&&"function"===typeof window.documentPictureInPicture?.requestWindow,{proxy:i,icons:o,i18n:r,template:{$player:d},constructor:{utils:{append:l,tooltip:c,addClass:a,removeClass:p,sleep:u}}}=e,s={win:null,originalParent:null,originalNext:null,currentDoc:null,placeholder:null};async function m(){if(!n&&t.fallbackToVideoPiP)return e.pip=!0,void console.warn("[artplayer-plugin-document-pip] Document Picture-in-Picture is not supported, falling back to Video Picture-in-Picture");if(!s.win)try{const n=await window.documentPictureInPicture.requestWindow({width:t.width,height:t.height});s.win=n,s.currentDoc=n.document,s.placeholder=document.createElement("div"),s.placeholder.className="artplayer-document-pip-placeholder",s.placeholder.style.cssText="display:flex;justify-content:center;align-items:center;width:100%;height:100%;",s.placeholder.textContent=t.placeholder,s.originalParent=d.parentNode,s.originalNext=d.nextSibling,s.originalParent.insertBefore(s.placeholder,s.originalNext);const i=n.document.createElement("div");i.id="__art_dpip_root",n.document.body.appendChild(i),function(e){const t=e.createElement("style");if(t.textContent="\n html, body { margin:0; padding:0; width:100%; height:100%; background:#000; overflow:hidden; }\n #__art_dpip_root { position:absolute; inset:0; display:flex; }\n #__art_dpip_root > * { width:100% !important; height:100% !important; }\n ",e.head.appendChild(t),!e.querySelector('meta[name="viewport"]')){const t=e.createElement("meta");t.name="viewport",t.content="width=device-width,initial-scale=1",e.head.appendChild(t)}try{document.querySelectorAll('link[rel="stylesheet"]').forEach(t=>{const n=e.createElement("link");n.rel="stylesheet",n.href=t.href,t.media&&(n.media=t.media),t.crossOrigin&&(n.crossOrigin=t.crossOrigin),t.referrerPolicy&&(n.referrerPolicy=t.referrerPolicy),e.head.appendChild(n)})}catch{}try{document.querySelectorAll("style").forEach(t=>{const n=e.createElement("style");n.textContent=t.textContent,e.head.appendChild(n)})}catch{}}(n.document);const o=n.document.adoptNode(d);i.appendChild(o),s.currentDoc=n.document;const r=()=>e.resize?.(),l=()=>h();n.addEventListener("resize",r),n.addEventListener("pagehide",l),n.addEventListener("unload",l),s.cleanup=()=>{n.removeEventListener("resize",r),n.removeEventListener("pagehide",l),n.removeEventListener("unload",l)},a(d,"artplayer-document-pip"),e.events.bindGlobalEvents?.(),e.emit("document-pip",!0),await u(100),e.emit("resize")}catch(i){e.notice.show="Document Picture-in-Picture open failed",console.warn("[artplayer-plugin-document-pip] open failed:",i)}}async function h(){if(s.win)try{s.cleanup?.(),function(){if(!s.placeholder)return;const e=s.placeholder.ownerDocument||document,t=e.adoptNode(d);s.originalParent.insertBefore(t,s.placeholder),s.placeholder.remove(),s.placeholder=null,s.currentDoc=e}(),s.win.close(),s.win=null,p(d,"artplayer-document-pip"),e.events.bindGlobalEvents?.(),e.emit("document-pip",!1),await u(100),e.emit("resize")}catch(t){e.notice.show="Document Picture-in-Picture close failed",console.warn("[artplayer-plugin-document-pip] close failed:",t)}}function f(){s.win?h():m()}return e.controls.add({name:"document-pip",position:"right",index:40,tooltip:e.i18n.get("PIP Mode"),mounted:t=>{l(t,o.pip),i(t,"click",f),e.on("document-pip",e=>{c(t,r.get(e?"Exit PIP Mode":"PIP Mode"))})}}),e.on("destroy",h),{name:"artplayerPluginDocumentPip",get isSupported(){return n},get isActive(){return!!s.win},open:m,close:h,toggle:f}}}if("undefined"!==typeof window&&(window.artplayerPluginDocumentPip=e),"undefined"!==typeof document){const e="artplayer-plugin-document-pip";let t=document.getElementById(e);t||(t=document.createElement("style"),t.id=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{document.head.appendChild(t)}):(document.head||document.documentElement).appendChild(t)),t.textContent=".artplayer-document-pip.art-video-player{width:100%!important;height:100%!important}"}return e});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-document-pip.js v1.0.2
* artplayer-plugin-document-pip.js v1.0.3
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,r,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof i[r]&&i[r],c=l.i||{},u=l.cache||{},a="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,n){if(!u[t]){if(!e[t]){if(o[t])return o[t];var c="function"==typeof i[r]&&i[r];if(!n&&c)return c(t,!0);if(l)return l(t,!0);if(a&&"string"==typeof t)return a(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}f.resolve=function(n){var r=e[t][1][n];return null!=r?r:n},f.cache={};var p=u[t]=new d.Module(t);e[t][0].call(p.exports,f,p,p.exports,i)}return u[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],o=e[2]||e[0],i=d(r);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(n,t,{enumerable:!0,value:i}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),n}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=a,this.exports={}},d.modules=e,d.cache=u,d.parent=l,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=c,d.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(d,"root",{get:function(){return i[r]}}),i[r]=d;for(var s=0;s<t.length;s++)d(t[s]);if(n){var p=d(n);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"5Wzsp":[function(e,t,n,r){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(n),o.export(n,"default",function(){return d});var i=e("@swc/helpers/cjs/_async_to_generator.cjs"),l=e("@swc/helpers/cjs/_object_spread.cjs"),c=e("@swc/helpers/cjs/_ts_generator.cjs"),u=e("bundle-text:./style.less"),a=o.interopDefault(u);function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,l._)({width:480,height:270,fallbackToVideoPiP:!0,placeholder:"Playing in Document Picture-in-Picture"},e);return function(e){var n,r="documentPictureInPicture"in window&&"function"==typeof(null==(n=window.documentPictureInPicture)?void 0:n.requestWindow),o=e.proxy,l=e.icons,u=e.i18n,a=e.template.$player,d=e.constructor.utils,s=d.append,p=d.tooltip,f=d.addClass,h=d.removeClass,m=d.sleep,y={win:null,originalParent:null,originalNext:null,currentDoc:null,placeholder:null};function v(){return(0,i._)(function(){var n,o,i,l,u,d,s,p;return(0,c._)(this,function(c){switch(c.label){case 0:if(!r&&t.fallbackToVideoPiP)return e.pip=!0,console.warn("[artplayer-plugin-document-pip] Document Picture-in-Picture is not supported, falling back to Video Picture-in-Picture"),[2];if(y.win)return[2];c.label=1;case 1:return c.trys.push([1,4,,5]),[4,window.documentPictureInPicture.requestWindow({width:t.width,height:t.height})];case 2:y.win=i=c.sent(),y.currentDoc=i.document,y.placeholder=document.createElement("div"),y.placeholder.className="artplayer-document-pip-placeholder",y.placeholder.style.cssText="display:flex;justify-content:center;align-items:center;width:100%;height:100%;",y.placeholder.textContent=t.placeholder,y.originalParent=a.parentNode,y.originalNext=a.nextSibling,y.originalParent.insertBefore(y.placeholder,y.originalNext),(l=i.document.createElement("div")).id="__art_dpip_root",i.document.body.appendChild(l);var h=i.document,v=h.createElement("style");if(v.textContent="\n html, body { margin:0; padding:0; width:100%; height:100%; background:#000; overflow:hidden; }\n #__art_dpip_root { position:absolute; inset:0; display:flex; }\n #__art_dpip_root > * { width:100% !important; height:100% !important; }\n ",h.head.appendChild(v),!h.querySelector('meta[name="viewport"]')){var g=h.createElement("meta");g.name="viewport",g.content="width=device-width,initial-scale=1",h.head.appendChild(g)}try{document.querySelectorAll('link[rel="stylesheet"]').forEach(function(e){var t=h.createElement("link");t.rel="stylesheet",t.href=e.href,e.media&&(t.media=e.media),e.crossOrigin&&(t.crossOrigin=e.crossOrigin),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),h.head.appendChild(t)})}catch(e){}try{document.querySelectorAll("style").forEach(function(e){var t=h.createElement("style");t.textContent=e.textContent,h.head.appendChild(t)})}catch(e){}return u=i.document.adoptNode(a),l.appendChild(u),y.currentDoc=i.document,d=function(){var t;return null==(t=e.resize)?void 0:t.call(e)},s=function(){return b()},i.addEventListener("resize",d),i.addEventListener("pagehide",s),i.addEventListener("unload",s),y.cleanup=function(){i.removeEventListener("resize",d),i.removeEventListener("pagehide",s),i.removeEventListener("unload",s)},f(a,"artplayer-document-pip"),null==(n=(o=e.events).bindGlobalEvents)||n.call(o),e.emit("document-pip",!Line truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginDocumentPip=t(),define(function(){return t.ArtplayerPluginDocumentPip})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginDocumentPip=t()}(this,function(){"use strict";var e=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,o=(t,n,i)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[n]=i,r=(e,t,n)=>new Promise((i,o)=>{var r=e=>{try{c(n.next(e))}catch(t){o(t)}},l=e=>{try{c(n.throw(e))}catch(t){o(t)}},c=e=>e.done?i(e.value):Promise.resolve(e.value).then(r,l);c((n=n.apply(e,t)).next())});function l(e={}){const l=((e,r)=>{for(var l in r||(r={}))n.call(r,l)&&o(e,l,r[l]);if(t)for(var l of t(r))i.call(r,l)&&o(e,l,r[l]);return e})({width:480,height:270,fallbackToVideoPiP:!0,placeholder:"Playing in Document Picture-in-Picture"},e);return e=>{var t;const n="documentPictureInPicture"in window&&"function"===typeof(null==(t=window.documentPictureInPicture)?void 0:t.requestWindow),{proxy:i,icons:o,i18n:c,template:{$player:d},constructor:{utils:{append:a,tooltip:p,addClass:u,removeClass:s,sleep:m}}}=e,h={win:null,originalParent:null,originalNext:null,currentDoc:null,placeholder:null};function y(){return r(this,null,function*(){var t,i;if(!n&&l.fallbackToVideoPiP)return e.pip=!0,void console.warn("[artplayer-plugin-document-pip] Document Picture-in-Picture is not supported, falling back to Video Picture-in-Picture");if(!h.win)try{const n=yield window.documentPictureInPicture.requestWindow({width:l.width,height:l.height});h.win=n,h.currentDoc=n.document,h.placeholder=document.createElement("div"),h.placeholder.className="artplayer-document-pip-placeholder",h.placeholder.style.cssText="display:flex;justify-content:center;align-items:center;width:100%;height:100%;",h.placeholder.textContent=l.placeholder,h.originalParent=d.parentNode,h.originalNext=d.nextSibling,h.originalParent.insertBefore(h.placeholder,h.originalNext);const o=n.document.createElement("div");o.id="__art_dpip_root",n.document.body.appendChild(o),function(e){const t=e.createElement("style");if(t.textContent="\n html, body { margin:0; padding:0; width:100%; height:100%; background:#000; overflow:hidden; }\n #__art_dpip_root { position:absolute; inset:0; display:flex; }\n #__art_dpip_root > * { width:100% !important; height:100% !important; }\n ",e.head.appendChild(t),!e.querySelector('meta[name="viewport"]')){const t=e.createElement("meta");t.name="viewport",t.content="width=device-width,initial-scale=1",e.head.appendChild(t)}try{document.querySelectorAll('link[rel="stylesheet"]').forEach(t=>{const n=e.createElement("link");n.rel="stylesheet",n.href=t.href,t.media&&(n.media=t.media),t.crossOrigin&&(n.crossOrigin=t.crossOrigin),t.referrerPolicy&&(n.referrerPolicy=t.referrerPolicy),e.head.appendChild(n)})}catch(n){}try{document.querySelectorAll("style").forEach(t=>{const n=e.createElement("style");n.textContent=t.textContent,e.head.appendChild(n)})}catch(n){}}(n.document);const r=n.document.adoptNode(d);o.appendChild(r),h.currentDoc=n.document;const c=()=>{var t;return null==(t=e.resize)?void 0:t.call(e)},a=()=>f();n.addEventListener("resize",c),n.addEventListener("pagehide",a),n.addEventListener("unload",a),h.cleanup=()=>{n.removeEventListener("resize",c),n.removeEventListener("pagehide",a),n.removeEventListener("unload",a)},u(d,"artplayer-document-pip"),null==(i=(t=e.events).bindGlobalEvents)||i.call(t),e.emit("document-pip",!0),yield m(100),e.emit("resize")}catch(o){e.notice.show="Document Picture-in-Picture open failed",console.warn("[artplayer-plugin-document-pip] open failed:",o)}})}function f(){return r(this,null,function*(){var t,n,i;if(h.win)try{null==(t=h.cleanup)||t.call(h),function(){if(!h.placeholder)return;const e=h.placeholder.ownerDocument||document,t=e.adoptNode(d);h.originalParent.insertBefore(t,h.placeholder),h.placeholder.remove(),h.placeholder=null,h.currentDoc=e}(),h.win.close(),h.win=null,s(d,"artplayer-document-pip"),null==(i=(n=e.events).bindGlobalEvents)||i.call(n),e.emit("document-pip",!1),yield m(100),e.emit("resize")}catch(o){e.notice.show="Document Picture-in-Picture close failed",console.warn("[artplayer-plugin-document-pip] close failed:",o)}})}function g(){h.win?f():y()}return e.controls.add({name:"document-pip",position:"right",index:40,tooltip:e.i18n.get("PIP Mode"),mounted:t=>{a(t,o.pip),i(t,"click",g),e.on("document-pip",e=>{p(t,c.get(e?"Exit PIP Mode":"PIP Mode"))})}}),e.on("destroy",f),{name:"artplayerPluginDocumentPip",get isSupported(){return n},get isActive(){return!!h.win},open:y,close:f,toggle:g}}}if("undefined"!==typeof window&&(window.artplayerPluginDocumentPip=l),"undefined"!==typeof document){const e="artplayer-plugin-document-pip";let t=document.getElementById(e);t||(t=document.createElement("style"),t.id=e,"loading"===document.reLine truncated
+192 -3
View File
@@ -1,8 +1,197 @@
/*!
* artplayer-plugin-document-pip.js v1.0.2
* artplayer-plugin-document-pip.js v1.0.3
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,r,i){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof o[r]&&o[r],a=l.i||{},d=l.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,n){if(!d[t]){if(!e[t]){if(i[t])return i[t];var a="function"==typeof o[r]&&o[r];if(!n&&a)return a(t,!0);if(l)return l(t,!0);if(u&&"string"==typeof t)return u(t);var p=Error("Cannot find module '"+t+"'");throw p.code="MODULE_NOT_FOUND",p}s.resolve=function(n){var r=e[t][1][n];return null!=r?r:n},s.cache={};var f=d[t]=new c.Module(t);e[t][0].call(f.exports,s,f,f.exports,o)}return d[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],i=e[2]||e[0],o=c(r);"*"===t?Object.keys(o).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:o}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?o.__esModule?o.default:o:o[i]}})}),n}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=u,this.exports={}},c.modules=e,c.cache=d,c.parent=l,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=a,c.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(c,"root",{get:function(){return o[r]}}),o[r]=c;for(var p=0;p<t.length;p++)c(t[p]);if(n){var f=c(n);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({fiyFV:[function(e,t,n,r){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",()=>a);var o=e("bundle-text:./style.less"),l=i.interopDefault(o);function a(e={}){let t={width:480,height:270,fallbackToVideoPiP:!0,placeholder:"Playing in Document Picture-in-Picture",...e};return e=>{let n="documentPictureInPicture"in window&&"function"==typeof window.documentPictureInPicture?.requestWindow,{proxy:r,icons:i,i18n:o,template:{$player:l},constructor:{utils:{append:a,tooltip:d,addClass:u,removeClass:c,sleep:p}}}=e,f={win:null,originalParent:null,originalNext:null,currentDoc:null,placeholder:null};async function s(){if(!n&&t.fallbackToVideoPiP){e.pip=!0,console.warn("[artplayer-plugin-document-pip] Document Picture-in-Picture is not supported, falling back to Video Picture-in-Picture");return}if(!f.win)try{let n=await window.documentPictureInPicture.requestWindow({width:t.width,height:t.height});f.win=n,f.currentDoc=n.document,f.placeholder=document.createElement("div"),f.placeholder.className="artplayer-document-pip-placeholder",f.placeholder.style.cssText="display:flex;justify-content:center;align-items:center;width:100%;height:100%;",f.placeholder.textContent=t.placeholder,f.originalParent=l.parentNode,f.originalNext=l.nextSibling,f.originalParent.insertBefore(f.placeholder,f.originalNext);let i=n.document.createElement("div");i.id="__art_dpip_root",n.document.body.appendChild(i);var r=n.document;let o=r.createElement("style");if(o.textContent=` html, body { margin:0; padding:0; width:100%; height:100%; background:#000; overflow:hidden; } #__art_dpip_root { position:absolute; inset:0; display:flex; } #__art_dpip_root > * { width:100% !important; height:100% !important; } `,r.head.appendChild(o),!r.querySelector('meta[name="viewport"]')){let e=r.createElement("meta");e.name="viewport",e.content="width=device-width,initial-scale=1",r.head.appendChild(e)}try{document.querySelectorAll('link[rel="stylesheet"]').forEach(e=>{let t=r.createElement("link");t.rel="stylesheet",t.href=e.href,e.media&&(t.media=e.media),e.crossOrigin&&(t.crossOrigin=e.crossOrigin),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),r.head.appendChild(t)})}catch{}try{document.querySelectorAll("style").forEach(e=>{let t=r.createElement("style");t.textContent=e.textContent,r.head.appendChild(t)})}catch{}let a=n.document.adoptNode(l);i.appendChild(a),f.currentDoc=n.document;let d=()=>e.resize?.(),c=()=>m();n.addEventListener("resize",d),n.addEventListener("pagehide",c),n.addEventListener("unload",c),f.cleanup=()=>{n.removeEventListener("resize",d),n.removeEventListener("pagehide",c),n.removeEventListener("unload",c)},u(l,"artplayer-document-pip"),e.events.bindGlobalEvents?.(),e.emit("document-pip",!0),await p(100),e.emit("resize")}catch(t){e.notice.show="Document Picture-in-Picture open failed",console.warn("[artplayer-plugin-document-pip] open failed:",t)}}async function m(){if(f.win)try{f.cleanup?.(),function(){if(!f.placeholder)return;let e=f.placeholder.ownerDocument||document,t=e.adoptNode(l);f.originalParent.insertBefore(t,f.placeholder),f.placeholder.remove(),f.placeholder=null,f.currentDoc=e}(),f.win.close(),f.win=null,c(l,"artplayer-document-pip"),e.events.bindGlobalEvents?.(),e.emit("document-pLine truncated
const style = ".artplayer-document-pip.art-video-player{width:100%!important;height:100%!important}";
function artplayerPluginDocumentPip(userOptions = {}) {
const options = {
width: 480,
height: 270,
fallbackToVideoPiP: true,
placeholder: `Playing in Document Picture-in-Picture`,
...userOptions
};
return (art) => {
const isSupported = "documentPictureInPicture" in window && typeof window.documentPictureInPicture?.requestWindow === "function";
const { proxy, icons, i18n, template: { $player }, constructor: { utils: { append, tooltip, addClass, removeClass, sleep } } } = art;
const state = {
win: null,
originalParent: null,
originalNext: null,
currentDoc: null,
placeholder: null
};
function copyStylesTo(targetDoc) {
const base = targetDoc.createElement("style");
base.textContent = `
html, body { margin:0; padding:0; width:100%; height:100%; background:#000; overflow:hidden; }
#__art_dpip_root { position:absolute; inset:0; display:flex; }
#__art_dpip_root > * { width:100% !important; height:100% !important; }
`;
targetDoc.head.appendChild(base);
if (!targetDoc.querySelector('meta[name="viewport"]')) {
const meta = targetDoc.createElement("meta");
meta.name = "viewport";
meta.content = "width=device-width,initial-scale=1";
targetDoc.head.appendChild(meta);
}
try {
document.querySelectorAll('link[rel="stylesheet"]').forEach((link) => {
const clone = targetDoc.createElement("link");
clone.rel = "stylesheet";
clone.href = link.href;
if (link.media)
clone.media = link.media;
if (link.crossOrigin)
clone.crossOrigin = link.crossOrigin;
if (link.referrerPolicy)
clone.referrerPolicy = link.referrerPolicy;
targetDoc.head.appendChild(clone);
});
} catch {
}
try {
document.querySelectorAll("style").forEach((style2) => {
const clone = targetDoc.createElement("style");
clone.textContent = style2.textContent;
targetDoc.head.appendChild(clone);
});
} catch {
}
}
async function open() {
if (!isSupported && options.fallbackToVideoPiP) {
art.pip = true;
console.warn("[artplayer-plugin-document-pip] Document Picture-in-Picture is not supported, falling back to Video Picture-in-Picture");
return;
}
if (state.win)
return;
try {
const pipWin = await window.documentPictureInPicture.requestWindow({
width: options.width,
height: options.height
});
state.win = pipWin;
state.currentDoc = pipWin.document;
state.placeholder = document.createElement("div");
state.placeholder.className = "artplayer-document-pip-placeholder";
state.placeholder.style.cssText = `display:flex;justify-content:center;align-items:center;width:100%;height:100%;`;
state.placeholder.textContent = options.placeholder;
state.originalParent = $player.parentNode;
state.originalNext = $player.nextSibling;
state.originalParent.insertBefore(state.placeholder, state.originalNext);
const root = pipWin.document.createElement("div");
root.id = "__art_dpip_root";
pipWin.document.body.appendChild(root);
copyStylesTo(pipWin.document);
const adopted = pipWin.document.adoptNode($player);
root.appendChild(adopted);
state.currentDoc = pipWin.document;
const onResize = () => art.resize?.();
const onClose = () => close();
pipWin.addEventListener("resize", onResize);
pipWin.addEventListener("pagehide", onClose);
pipWin.addEventListener("unload", onClose);
state.cleanup = () => {
pipWin.removeEventListener("resize", onResize);
pipWin.removeEventListener("pagehide", onClose);
pipWin.removeEventListener("unload", onClose);
};
addClass($player, "artplayer-document-pip");
art.events.bindGlobalEvents?.();
art.emit("document-pip", true);
await sleep(100);
art.emit("resize");
} catch (err) {
art.notice.show = "Document Picture-in-Picture open failed";
console.warn("[artplayer-plugin-document-pip] open failed:", err);
}
}
function restoreToOriginalDocument() {
if (!state.placeholder)
return;
const backDoc = state.placeholder.ownerDocument || document;
const adoptedBack = backDoc.adoptNode($player);
state.originalParent.insertBefore(adoptedBack, state.placeholder);
state.placeholder.remove();
state.placeholder = null;
state.currentDoc = backDoc;
}
async function close() {
if (!state.win)
return;
try {
state.cleanup?.();
restoreToOriginalDocument();
state.win.close();
state.win = null;
removeClass($player, "artplayer-document-pip");
art.events.bindGlobalEvents?.();
art.emit("document-pip", false);
await sleep(100);
art.emit("resize");
} catch (err) {
art.notice.show = "Document Picture-in-Picture close failed";
console.warn("[artplayer-plugin-document-pip] close failed:", err);
}
}
function toggle() {
if (state.win) {
close();
} else {
open();
}
}
art.controls.add({
name: "document-pip",
position: "right",
index: 40,
tooltip: art.i18n.get("PIP Mode"),
mounted: ($control) => {
append($control, icons.pip);
proxy($control, "click", toggle);
art.on("document-pip", (value) => {
tooltip($control, i18n.get(value ? "Exit PIP Mode" : "PIP Mode"));
});
}
});
art.on("destroy", close);
return {
name: "artplayerPluginDocumentPip",
get isSupported() {
return isSupported;
},
get isActive() {
return !!state.win;
},
open,
close,
toggle
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginDocumentPip = artplayerPluginDocumentPip;
}
if (typeof document !== "undefined") {
const id = "artplayer-plugin-document-pip";
let $style = document.getElementById(id);
if (!$style) {
$style = document.createElement("style");
$style.id = id;
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", () => {
document.head.appendChild($style);
});
} else {
(document.head || document.documentElement).appendChild($style);
}
}
$style.textContent = style;
}
export {
artplayerPluginDocumentPip as default
};
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-hls-control.js v1.0.1
* artplayer-plugin-hls-control.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,o,n,r){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof l[n]&&l[n],i=u.i||{},a=u.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,o){if(!a[t]){if(!e[t]){if(r[t])return r[t];var i="function"==typeof l[n]&&l[n];if(!o&&i)return i(t,!0);if(u)return u(t,!0);if(c&&"string"==typeof t)return c(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}p.resolve=function(o){var n=e[t][1][o];return null!=n?n:o},p.cache={};var d=a[t]=new s.Module(t);e[t][0].call(d.exports,p,d,d.exports,l)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],r=e[2]||e[0],l=s(n);"*"===t?Object.keys(l).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return l[e]}})}):"*"===r?Object.defineProperty(o,t,{enumerable:!0,value:l}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===r?l.__esModule?l.default:l:l[r]}})}),o}return s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.require=c,this.exports={}},s.modules=e,s.cache=a,s.parent=u,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=i,s.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(s,"root",{get:function(){return l[n]}}),l[n]=s;for(var f=0;f<t.length;f++)s(t[f]);if(o){var d=s(o);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({dHVos:[function(e,t,o,n){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");r.defineInteropFlag(o),r.export(o,"default",()=>s);var l=e("bundle-text:./audio.svg"),u=r.interopDefault(l),i=e("bundle-text:./quality.svg"),a=r.interopDefault(i);function c(e,t){let o=new Map;return e.filter(e=>{let n=e[t];return void 0===n||!o.has(n)&&o.set(n,1)})}function s(e={}){return t=>{let{$video:o}=t.template,{errorHandle:n}=t.constructor.utils;function r(){n(t.hls?.media===o,'Cannot find instance of HLS from "art.hls"'),function(o){if(!o.levels.length)return;let n=e.quality||{},r=n.auto||"Auto",l=n.title||"Quality",u=n.getName||(e=>e.name||`${e.height}P`),i=o.levels[o.currentLevel],s=i?u(i):r,f=c(o.levels.map((e,t)=>({html:u(e,t),value:t,default:o.currentLevel===t})),"html").sort((e,t)=>t.value-e.value);f.push({html:r,value:-1,default:-1===o.currentLevel});let d=e=>(o.currentLevel=e.value,t.notice.show=`${l}: ${e.html}`,n.control&&t.controls.check(e),n.setting&&t.setting.check(e),e.html);n.control&&t.controls.update({name:"hls-quality",position:"right",html:s,style:{padding:"0 10px"},selector:f,onSelect:d}),n.setting&&t.setting.update({name:"hls-quality",tooltip:s,html:l,icon:a.default,width:200,selector:f,onSelect:d})}(t.hls),function(o){if(!o.audioTracks.length)return;let n=e.audio||{},r=n.auto||"Auto",l=n.title||"Audio",i=n.getName||(e=>e.name||e.lang||e.language),a=o.audioTracks[o.audioTrack],s=a?i(a):r,f=c(o.audioTracks.map((e,t)=>({html:i(e,t),value:e.id,default:o.audioTrack===e.id})),"html"),d=e=>(o.audioTrack=e.value,t.notice.show=`${l}: ${e.html}`,n.control&&t.controls.check(e),n.setting&&t.setting.check(e),e.html);n.control&&t.controls.update({name:"hls-audio",position:"right",html:s,style:{padding:"0 10px"},selector:f,onSelect:d}),n.setting&&t.setting.update({name:"hls-audio",tooltip:s,html:l,icon:u.default,width:200,selector:f,onSelect:d})}(t.hls)}return t.on("ready",r),t.on("restart",r),{name:"artplayerPluginHlsControl",update:r}}}"u">typeof window&&(window.artplayerPluginHlsControl=s)},{"bundle-text:./audio.svg":"fVNuY","bundle-text:./quality.svg":"5ZFEa","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],fVNuY:[function(e,t,o,n){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6 26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48-44.2 0-80-35.8-80-80V288C0 146.6 114.6 32 256 32s256 114.6 256 256v112c0 44.2-35.8 80-80 80-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48 10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80"/></svg>'},{}],"5ZFEa":[function(e,t,o,n){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M0 96c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64Zm323.8 106.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6-26.5-33.1c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4S78.8 416 88 416h336c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7ZM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96"/></svg>'},{}],"6ykb1":[function(e,t,o,n){o.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},o.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{vaLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginHlsControl=e(),define(function(){return t.ArtplayerPluginHlsControl})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginHlsControl=e()}(this,function(){"use strict";function t(t,e){const l=new Map;return t.filter(t=>{const n=t[e];return void 0===n||!l.has(n)&&l.set(n,1)})}function e(e={}){return l=>{const{$video:n}=l.template,{errorHandle:o}=l.constructor.utils;function i(){o(l.hls?.media===n,'Cannot find instance of HLS from "art.hls"'),function(n){if(!n.levels.length)return;const o=e.quality||{},i=o.auto||"Auto",s=o.title||"Quality",a=o.getName||(t=>t.name||`${t.height}P`),c=n.levels[n.currentLevel],r=c?a(c):i,u=t(n.levels.map((t,e)=>({html:a(t,e),value:e,default:n.currentLevel===e})),"html").sort((t,e)=>e.value-t.value);u.push({html:i,value:-1,default:-1===n.currentLevel});const d=t=>(n.currentLevel=t.value,l.notice.show=`${s}: ${t.html}`,o.control&&l.controls.check(t),o.setting&&l.setting.check(t),t.html);o.control&&l.controls.update({name:"hls-quality",position:"right",html:r,style:{padding:"0 10px"},selector:u,onSelect:d}),o.setting&&l.setting.update({name:"hls-quality",tooltip:r,html:s,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>',width:200,selector:u,onSelect:d})}(l.hls),function(n){if(!n.audioTracks.length)return;const o=e.audio||{},i=o.auto||"Auto",s=o.title||"Audio",a=o.getName||(t=>t.name||t.lang||t.language),c=n.audioTracks[n.audioTrack],r=c?a(c):i,u=t(n.audioTracks.map((t,e)=>({html:a(t,e),value:t.id,default:n.audioTrack===t.id})),"html"),d=t=>(n.audioTrack=t.value,l.notice.show=`${s}: ${t.html}`,o.control&&l.controls.check(t),o.setting&&l.setting.check(t),t.html);o.control&&l.controls.update({name:"hls-audio",position:"right",html:r,style:{padding:"0 10px"},selector:u,onSelect:d}),o.setting&&l.setting.update({name:"hls-audio",tooltip:r,html:s,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"/></svg>',width:200,selector:u,onSelect:d})}(l.hls)}return l.on("ready",i),l.on("restart",i),{name:"artplayerPluginHlsControl",update:i}}}return"undefined"!==typeof window&&(window.artplayerPluginHlsControl=e),e});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-hls-control.js v1.0.1
* artplayer-plugin-hls-control.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,o,r){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof u[o]&&u[o],i=l.i||{},a=l.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,n){if(!a[t]){if(!e[t]){if(r[t])return r[t];var i="function"==typeof u[o]&&u[o];if(!n&&i)return i(t,!0);if(l)return l(t,!0);if(c&&"string"==typeof t)return c(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(n){var o=e[t][1][n];return null!=o?o:n},p.cache={};var d=a[t]=new f.Module(t);e[t][0].call(d.exports,p,d,d.exports,u)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],r=e[2]||e[0],u=f(o);"*"===t?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===r?Object.defineProperty(n,t,{enumerable:!0,value:u}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===r?u.__esModule?u.default:u:u[r]}})}),n}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=c,this.exports={}},f.modules=e,f.cache=a,f.parent=l,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=i,f.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(f,"root",{get:function(){return u[o]}}),u[o]=f;for(var s=0;s<t.length;s++)f(t[s]);if(n){var d=f(n);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({do1Zn:[function(e,t,n,o){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");r.defineInteropFlag(n),r.export(n,"default",function(){return f});var u=e("bundle-text:./audio.svg"),l=r.interopDefault(u),i=e("bundle-text:./quality.svg"),a=r.interopDefault(i);function c(e,t){var n=new Map;return e.filter(function(e){var o=e[t];return void 0===o||!n.has(o)&&n.set(o,1)})}function f(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){var n=t.template.$video,o=t.constructor.utils.errorHandle;function r(){var r;o((null==(r=t.hls)?void 0:r.media)===n,'Cannot find instance of HLS from "art.hls"'),function(n){if(n.levels.length){var o=e.quality||{},r=o.auto||"Auto",u=o.title||"Quality",l=o.getName||function(e){return e.name||"".concat(e.height,"P")},i=n.levels[n.currentLevel],f=i?l(i):r,s=c(n.levels.map(function(e,t){return{html:l(e,t),value:t,default:n.currentLevel===t}}),"html").sort(function(e,t){return t.value-e.value});s.push({html:r,value:-1,default:-1===n.currentLevel});var d=function(e){return n.currentLevel=e.value,t.notice.show="".concat(u,": ").concat(e.html),o.control&&t.controls.check(e),o.setting&&t.setting.check(e),e.html};o.control&&t.controls.update({name:"hls-quality",position:"right",html:f,style:{padding:"0 10px"},selector:s,onSelect:d}),o.setting&&t.setting.update({name:"hls-quality",tooltip:f,html:u,icon:a.default,width:200,selector:s,onSelect:d})}}(t.hls),function(n){if(n.audioTracks.length){var o=e.audio||{},r=o.auto||"Auto",u=o.title||"Audio",i=o.getName||function(e){return e.name||e.lang||e.language},a=n.audioTracks[n.audioTrack],f=a?i(a):r,s=c(n.audioTracks.map(function(e,t){return{html:i(e,t),value:e.id,default:n.audioTrack===e.id}}),"html"),d=function(e){return n.audioTrack=e.value,t.notice.show="".concat(u,": ").concat(e.html),o.control&&t.controls.check(e),o.setting&&t.setting.check(e),e.html};o.control&&t.controls.update({name:"hls-audio",position:"right",html:f,style:{padding:"0 10px"},selector:s,onSelect:d}),o.setting&&t.setting.update({name:"hls-audio",tooltip:f,html:u,icon:l.default,width:200,selector:s,onSelect:d})}}(t.hls)}return t.on("ready",r),t.on("restart",r),{name:"artplayerPluginHlsControl",update:r}}}"u">typeof window&&(window.artplayerPluginHlsControl=f)},{"bundle-text:./audio.svg":"3PyT9","bundle-text:./quality.svg":"6NhUQ","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],"3PyT9":[function(e,t,n,o){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6 26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48-44.2 0-80-35.8-80-80V288C0 146.6 114.6 32 256 32s256 114.6 256 256v112c0 44.2-35.8 80-80 80-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48 10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80"/></svg>'},{}],"6NhUQ":[function(e,t,n,o){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M0 96c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64Zm323.8 106.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6-26.5-33.1c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4S78.8 416 88 416h336c8.9 0 17.1-4.9 21.2-12.8sLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginHlsControl=e(),define(function(){return t.ArtplayerPluginHlsControl})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginHlsControl=e()}(this,function(){"use strict";function t(t,e){const l=new Map;return t.filter(t=>{const n=t[e];return void 0===n||!l.has(n)&&l.set(n,1)})}function e(e={}){return l=>{const{$video:n}=l.template,{errorHandle:o}=l.constructor.utils;function i(){var i;o((null==(i=l.hls)?void 0:i.media)===n,'Cannot find instance of HLS from "art.hls"'),function(n){if(!n.levels.length)return;const o=e.quality||{},i=o.auto||"Auto",a=o.title||"Quality",s=o.getName||(t=>t.name||`${t.height}P`),c=n.levels[n.currentLevel],r=c?s(c):i,u=t(n.levels.map((t,e)=>({html:s(t,e),value:e,default:n.currentLevel===e})),"html").sort((t,e)=>e.value-t.value);u.push({html:i,value:-1,default:-1===n.currentLevel});const d=t=>(n.currentLevel=t.value,l.notice.show=`${a}: ${t.html}`,o.control&&l.controls.check(t),o.setting&&l.setting.check(t),t.html);o.control&&l.controls.update({name:"hls-quality",position:"right",html:r,style:{padding:"0 10px"},selector:u,onSelect:d}),o.setting&&l.setting.update({name:"hls-quality",tooltip:r,html:a,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>',width:200,selector:u,onSelect:d})}(l.hls),function(n){if(!n.audioTracks.length)return;const o=e.audio||{},i=o.auto||"Auto",a=o.title||"Audio",s=o.getName||(t=>t.name||t.lang||t.language),c=n.audioTracks[n.audioTrack],r=c?s(c):i,u=t(n.audioTracks.map((t,e)=>({html:s(t,e),value:t.id,default:n.audioTrack===t.id})),"html"),d=t=>(n.audioTrack=t.value,l.notice.show=`${a}: ${t.html}`,o.control&&l.controls.check(t),o.setting&&l.setting.check(t),t.html);o.control&&l.controls.update({name:"hls-audio",position:"right",html:r,style:{padding:"0 10px"},selector:u,onSelect:d}),o.setting&&l.setting.update({name:"hls-audio",tooltip:r,html:a,icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"/></svg>',width:200,selector:u,onSelect:d})}(l.hls)}return l.on("ready",i),l.on("restart",i),{name:"artplayerPluginHlsControl",update:i}}}return"undefined"!==typeof window&&(window.artplayerPluginHlsControl=e),e});
+141 -3
View File
@@ -1,8 +1,146 @@
/*!
* artplayer-plugin-hls-control.js v1.0.1
* artplayer-plugin-hls-control.js v1.0.2
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,o,n){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof l[o]&&l[o],i=u.i||{},a=u.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,r){if(!a[t]){if(!e[t]){if(n[t])return n[t];var i="function"==typeof l[o]&&l[o];if(!r&&i)return i(t,!0);if(u)return u(t,!0);if(c&&"string"==typeof t)return c(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},p.cache={};var d=a[t]=new f.Module(t);e[t][0].call(d.exports,p,d,d.exports,l)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],l=f(o);"*"===t?Object.keys(l).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return l[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:l}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?l.__esModule?l.default:l:l[n]}})}),r}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=c,this.exports={}},f.modules=e,f.cache=a,f.parent=u,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=i,f.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(f,"root",{get:function(){return l[o]}}),l[o]=f;for(var s=0;s<t.length;s++)f(t[s]);if(r){var d=f(r);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({"7qxYx":[function(e,t,r,o){var n=e("@parcel/transformer-js/src/esmodule-helpers.js");n.defineInteropFlag(r),n.export(r,"default",()=>f);var l=e("bundle-text:./audio.svg"),u=n.interopDefault(l),i=e("bundle-text:./quality.svg"),a=n.interopDefault(i);function c(e,t){let r=new Map;return e.filter(e=>{let o=e[t];return void 0===o||!r.has(o)&&r.set(o,1)})}function f(e={}){return t=>{let{$video:r}=t.template,{errorHandle:o}=t.constructor.utils;function n(){o(t.hls?.media===r,'Cannot find instance of HLS from "art.hls"'),function(r){if(!r.levels.length)return;let o=e.quality||{},n=o.auto||"Auto",l=o.title||"Quality",u=o.getName||(e=>e.name||`${e.height}P`),i=r.levels[r.currentLevel],f=i?u(i):n,s=c(r.levels.map((e,t)=>({html:u(e,t),value:t,default:r.currentLevel===t})),"html").sort((e,t)=>t.value-e.value);s.push({html:n,value:-1,default:-1===r.currentLevel});let d=e=>(r.currentLevel=e.value,t.notice.show=`${l}: ${e.html}`,o.control&&t.controls.check(e),o.setting&&t.setting.check(e),e.html);o.control&&t.controls.update({name:"hls-quality",position:"right",html:f,style:{padding:"0 10px"},selector:s,onSelect:d}),o.setting&&t.setting.update({name:"hls-quality",tooltip:f,html:l,icon:a.default,width:200,selector:s,onSelect:d})}(t.hls),function(r){if(!r.audioTracks.length)return;let o=e.audio||{},n=o.auto||"Auto",l=o.title||"Audio",i=o.getName||(e=>e.name||e.lang||e.language),a=r.audioTracks[r.audioTrack],f=a?i(a):n,s=c(r.audioTracks.map((e,t)=>({html:i(e,t),value:e.id,default:r.audioTrack===e.id})),"html"),d=e=>(r.audioTrack=e.value,t.notice.show=`${l}: ${e.html}`,o.control&&t.controls.check(e),o.setting&&t.setting.check(e),e.html);o.control&&t.controls.update({name:"hls-audio",position:"right",html:f,style:{padding:"0 10px"},selector:s,onSelect:d}),o.setting&&t.setting.update({name:"hls-audio",tooltip:f,html:l,icon:u.default,width:200,selector:s,onSelect:d})}(t.hls)}return t.on("ready",n),t.on("restart",n),{name:"artplayerPluginHlsControl",update:n}}}"u">typeof window&&(window.artplayerPluginHlsControl=f)},{"bundle-text:./audio.svg":"jEE7y","bundle-text:./quality.svg":"8KB1y","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],jEE7y:[function(e,t,r,o){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6 26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48-44.2 0-80-35.8-80-80V288C0 146.6 114.6 32 256 32s256 114.6 256 256v112c0 44.2-35.8 80-80 80-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48 10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80"/></svg>'},{}],"8KB1y":[function(e,t,r,o){t.exports='<svg xmlns="http://www.w3.org/2000/svg" height="18" viewBox="0 0 512 512"><path fill="#fff" d="M0 96c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64Zm323.8 106.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6-26.5-33.1c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4S78.8 416 88 416h336c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7ZM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96"/></svg>'},{}],loqXi:[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{vaLine truncated
const $audio = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z"/></svg>';
const $quality = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="18"><path fill="#fff" d="M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"/></svg>';
function uniqBy(array, property) {
const seen = /* @__PURE__ */ new Map();
return array.filter((item) => {
const key = item[property];
if (key === void 0) {
return true;
}
return !seen.has(key) && seen.set(key, 1);
});
}
function artplayerPluginHlsControl(option = {}) {
return (art) => {
const { $video } = art.template;
const { errorHandle } = art.constructor.utils;
function updateQuality(hls) {
if (!hls.levels.length)
return;
const config = option.quality || {};
const auto = config.auto || "Auto";
const title = config.title || "Quality";
const getName = config.getName || ((level) => level.name || `${level.height}P`);
const defaultLevel = hls.levels[hls.currentLevel];
const defaultHtml = defaultLevel ? getName(defaultLevel) : auto;
const selector = uniqBy(
hls.levels.map((item, index) => {
return {
html: getName(item, index),
value: index,
default: hls.currentLevel === index
};
}),
"html"
).sort((a, b) => b.value - a.value);
selector.push({
html: auto,
value: -1,
default: hls.currentLevel === -1
});
const onSelect = (item) => {
hls.currentLevel = item.value;
art.notice.show = `${title}: ${item.html}`;
if (config.control)
art.controls.check(item);
if (config.setting)
art.setting.check(item);
return item.html;
};
if (config.control) {
art.controls.update({
name: "hls-quality",
position: "right",
html: defaultHtml,
style: { padding: "0 10px" },
selector,
onSelect
});
}
if (config.setting) {
art.setting.update({
name: "hls-quality",
tooltip: defaultHtml,
html: title,
icon: $quality,
width: 200,
selector,
onSelect
});
}
}
function updateAudio(hls) {
if (!hls.audioTracks.length)
return;
const config = option.audio || {};
const auto = config.auto || "Auto";
const title = config.title || "Audio";
const getName = config.getName || ((track) => track.name || track.lang || track.language);
const defaultTrack = hls.audioTracks[hls.audioTrack];
const defaultHtml = defaultTrack ? getName(defaultTrack) : auto;
const selector = uniqBy(
hls.audioTracks.map((item, index) => {
return {
html: getName(item, index),
value: item.id,
default: hls.audioTrack === item.id
};
}),
"html"
);
const onSelect = (item) => {
hls.audioTrack = item.value;
art.notice.show = `${title}: ${item.html}`;
if (config.control)
art.controls.check(item);
if (config.setting)
art.setting.check(item);
return item.html;
};
if (config.control) {
art.controls.update({
name: "hls-audio",
position: "right",
html: defaultHtml,
style: { padding: "0 10px" },
selector,
onSelect
});
}
if (config.setting) {
art.setting.update({
name: "hls-audio",
tooltip: defaultHtml,
html: title,
icon: $audio,
width: 200,
selector,
onSelect
});
}
}
function update() {
errorHandle(art.hls?.media === $video, 'Cannot find instance of HLS from "art.hls"');
updateQuality(art.hls);
updateAudio(art.hls);
}
art.on("ready", update);
art.on("restart", update);
return {
name: "artplayerPluginHlsControl",
update
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginHlsControl = artplayerPluginHlsControl;
}
export {
artplayerPluginHlsControl as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-iframe.js v1.0.0
* artplayer-plugin-iframe.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,o,n){var s="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof s[o]&&s[o],a=i.i||{},u=i.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,r){if(!u[t]){if(!e[t]){if(n[t])return n[t];var a="function"==typeof s[o]&&s[o];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(f&&"string"==typeof t)return f(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},p.cache={};var d=u[t]=new l.Module(t);e[t][0].call(d.exports,p,d,d.exports,s)}return u[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],s=l(o);"*"===t?Object.keys(s).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return s[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:s}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?s.__esModule?s.default:s:s[n]}})}),r}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=f,this.exports={}},l.modules=e,l.cache=u,l.parent=i,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=a,l.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(l,"root",{get:function(){return s[o]}}),s[o]=l;for(var c=0;c<t.length;c++)l(t[c]);if(r){var d=l(r);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({jSFRI:[function(e,t,r,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);class n{static get iframe(){return window.top!==window}static postMessage({type:e,data:t,id:r=0}){if(!n.iframe)throw Error('The "ArtplayerPluginIframe.postMessage" method can only be used in iframe');window.parent.postMessage({type:e,data:t,id:r},"*")}static async onMessage(e){if(!n.iframe)throw Error('The "ArtplayerPluginIframe.onMessage" method can only be used in iframe');let{type:t,data:r,id:o}=e.data;if("commit"===t)try{if(r.match(/\bresolve\((.*?)\)/)){let e=`return new Promise(function(resolve){ ${r} })`,t=await Function(e)();n.postMessage({type:"response",data:t,id:o})}else{let e=Function(r)();n.postMessage({type:"response",data:e,id:o})}}catch(e){throw n.postMessage({type:"error",data:e.message,id:o}),e}}static inject(){if(!n.iframe)throw Error('The "ArtplayerPluginIframe.inject" method can only be used in iframe');n.postMessage({type:"inject"}),window.addEventListener("message",n.onMessage)}constructor({iframe:e,url:t}){if(e instanceof HTMLIFrameElement==!1)throw TypeError('"option.iframe" needs to be a HTMLIFrameElement');if("string"!=typeof t)throw TypeError('"option.url" needs to be a string');this.url=t,this.$iframe=e,this.promises={},this.injected=!1,this.destroyed=!1,this.messageCallback=()=>null,this.onMessage=this.onMessage.bind(this),window.addEventListener("message",this.onMessage),this.$iframe.src=this.url}onMessage(e){let{type:t,data:r,id:o}=e.data;"inject"===t&&(this.injected=!0),this.promises[o]&&("error"===t?this.promises[o].reject(Error(r)):this.promises[o].resove(r),delete this.promises[o]),this.messageCallback&&this.messageCallback({type:t,data:r})}postMessage({type:e,data:t}){return new Promise((r,o)=>{(function n(){if(this.destroyed)o(Error("The instance has been destroyed"));else if(this.injected){let n=Date.now();this.promises[n]={resove:r,reject:o},this.$iframe.contentWindow.postMessage({type:e,data:t,id:n},"*")}else setTimeout(n.bind(this),200)}).call(this)})}commit(e){if("function"!=typeof e)throw TypeError('"commit.callback" needs to be a function');let t=e.toString(),r=t.substring(t.indexOf("{")+1,t.lastIndexOf("}"));return this.postMessage({type:"commit",data:r})}message(e){if("function"!=typeof e)throw TypeError('"message.callback" needs to be a function');this.messageCallback=e}destroy(){this.destroyed=!0,window.removeEventListener("message",this.onMessage)}}r.default=n,"u">typeof window&&(window.ArtplayerPluginIframe=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["jSFRI"],"jSFRI","parcelRequire4dc0",{});
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginIframe=t(),define(function(){return t.ArtplayerPluginIframe})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginIframe=t()}(this,function(){"use strict";class e{static get iframe(){return window.top!==window}static postMessage({type:t,data:s,id:i=0}){if(!e.iframe)throw new Error('The "ArtplayerPluginIframe.postMessage" method can only be used in iframe');window.parent.postMessage({type:t,data:s,id:i},"*")}static async onMessage(t){if(!e.iframe)throw new Error('The "ArtplayerPluginIframe.onMessage" method can only be used in iframe');const{type:s,data:i,id:n}=t.data;if("commit"===s)try{if(i.match(/\bresolve\((.*?)\)/)){const t=`return new Promise(function(resolve){\n${i}\n})`,s=await new Function(t)();e.postMessage({type:"response",data:s,id:n})}else{const t=new Function(i)();e.postMessage({type:"response",data:t,id:n})}}catch(o){throw e.postMessage({type:"error",data:o.message,id:n}),o}}static inject(){if(!e.iframe)throw new Error('The "ArtplayerPluginIframe.inject" method can only be used in iframe');e.postMessage({type:"inject"}),window.addEventListener("message",e.onMessage)}constructor({iframe:e,url:t}){if(e instanceof HTMLIFrameElement===!1)throw new TypeError('"option.iframe" needs to be a HTMLIFrameElement');if("string"!==typeof t)throw new TypeError('"option.url" needs to be a string');this.url=t,this.$iframe=e,this.promises={},this.injected=!1,this.destroyed=!1,this.messageCallback=()=>null,this.onMessage=this.onMessage.bind(this),window.addEventListener("message",this.onMessage),this.$iframe.src=this.url}onMessage(e){const{type:t,data:s,id:i}=e.data;if("inject"===t)this.injected=!0;this.promises[i]&&("error"===t?this.promises[i].reject(new Error(s)):this.promises[i].resove(s),delete this.promises[i]),this.messageCallback&&this.messageCallback({type:t,data:s})}postMessage({type:e,data:t}){return new Promise((s,i)=>{(function n(){if(this.destroyed)i(new Error("The instance has been destroyed"));else if(this.injected){const n=Date.now();this.promises[n]={resove:s,reject:i},this.$iframe.contentWindow.postMessage({type:e,data:t,id:n},"*")}else setTimeout(n.bind(this),200)}).call(this)})}commit(e){if("function"!==typeof e)throw new TypeError('"commit.callback" needs to be a function');const t=e.toString(),s=t.substring(t.indexOf("{")+1,t.lastIndexOf("}"));return this.postMessage({type:"commit",data:s})}message(e){if("function"!==typeof e)throw new TypeError('"message.callback" needs to be a function');this.messageCallback=e}destroy(){this.destroyed=!0,window.removeEventListener("message",this.onMessage)}}return"undefined"!==typeof window&&(window.ArtplayerPluginIframe=e),e});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-iframe.js v1.0.0
* artplayer-plugin-iframe.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var s="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof s[n]&&s[n],a=i.i||{},c=i.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,r){if(!c[t]){if(!e[t]){if(o[t])return o[t];var a="function"==typeof s[n]&&s[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(u&&"string"==typeof t)return u(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var p=c[t]=new l.Module(t);e[t][0].call(p.exports,d,p,p.exports,s)}return c[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],s=l(n);"*"===t?Object.keys(s).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return s[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:s}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?s.__esModule?s.default:s:s[o]}})}),r}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=u,this.exports={}},l.modules=e,l.cache=c,l.parent=i,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=a,l.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(l,"root",{get:function(){return s[n]}}),s[n]=l;for(var f=0;f<t.length;f++)l(t[f]);if(r){var p=l(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"8IkGp":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return u});var s=e("@swc/helpers/cjs/_async_to_generator.cjs"),i=e("@swc/helpers/cjs/_class_call_check.cjs"),a=e("@swc/helpers/cjs/_create_class.cjs"),c=e("@swc/helpers/cjs/_ts_generator.cjs"),u=function(){"use strict";function e(t){var r=t.iframe,n=t.url;if((0,i._)(this,e),r instanceof HTMLIFrameElement==!1)throw TypeError('"option.iframe" needs to be a HTMLIFrameElement');if("string"!=typeof n)throw TypeError('"option.url" needs to be a string');this.url=n,this.$iframe=r,this.promises={},this.injected=!1,this.destroyed=!1,this.messageCallback=function(){return null},this.onMessage=this.onMessage.bind(this),window.addEventListener("message",this.onMessage),this.$iframe.src=this.url}return(0,a._)(e,[{key:"onMessage",value:function(e){var t=e.data,r=t.type,n=t.data,o=t.id;"inject"===r&&(this.injected=!0),this.promises[o]&&("error"===r?this.promises[o].reject(Error(n)):this.promises[o].resove(n),delete this.promises[o]),this.messageCallback&&this.messageCallback({type:r,data:n})}},{key:"postMessage",value:function(e){var t=this,r=e.type,n=e.data;return new Promise(function(e,o){(function t(){if(this.destroyed)o(Error("The instance has been destroyed"));else if(this.injected){var s=Date.now();this.promises[s]={resove:e,reject:o},this.$iframe.contentWindow.postMessage({type:r,data:n,id:s},"*")}else setTimeout(t.bind(this),200)}).call(t)})}},{key:"commit",value:function(e){if("function"!=typeof e)throw TypeError('"commit.callback" needs to be a function');var t=e.toString(),r=t.substring(t.indexOf("{")+1,t.lastIndexOf("}"));return this.postMessage({type:"commit",data:r})}},{key:"message",value:function(e){if("function"!=typeof e)throw TypeError('"message.callback" needs to be a function');this.messageCallback=e}},{key:"destroy",value:function(){this.destroyed=!0,window.removeEventListener("message",this.onMessage)}}],[{key:"iframe",get:function(){return window.top!==window}},{key:"postMessage",value:function(t){var r=t.type,n=t.data,o=t.id;if(!e.iframe)throw Error('The "ArtplayerPluginIframe.postMessage" method can only be used in iframe');window.parent.postMessage({type:r,data:n,id:void 0===o?0:o},"*")}},{key:"onMessage",value:function(t){return(0,s._)(function(){var r,n,o,s,i,a,u;return(0,c._)(this,function(c){switch(c.label){case 0:if(!e.iframe)throw Error('The "ArtplayerPluginIframe.onMessage" method can only be used in iframe');if(n=(r=t.data).type,o=r.data,s=r.id,"commit"===n)return[3,1];return[3,7];case 1:if(c.trys.push([1,5,,6]),!o.match(/\bresolve\((.*?)\)/))return[3,3];return[4,Function("return new Promise(function(resolve){\n".concat(o,"\n})"))()];case 2:return i=c.sent(),e.postMessage({type:"response",data:i,id:s}),[3,4];case 3:a=Function(o)(),e.postMessage({type:"response",data:a,id:s}),c.label=4;case 4:return[3,6];case 5:throw u=c.sent(),e.postMessage({type:"error",data:u.message,id:s}),u;case 6:case 7:return[3,8];case 8:return[2]}})})()}},{key:"inject",value:function(){if(!e.iframe)throw Error('The "ArtplayerPluginIframe.inject" method can only be used in iframe');e.postMessage({type:"inject"}),window.addEventListener("message",e.onMessage)}}]),e}();"u">typeof windoLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginIframe=t(),define(function(){return t.ArtplayerPluginIframe})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginIframe=t()}(this,function(){"use strict";class e{static get iframe(){return window.top!==window}static postMessage({type:t,data:s,id:i=0}){if(!e.iframe)throw new Error('The "ArtplayerPluginIframe.postMessage" method can only be used in iframe');window.parent.postMessage({type:t,data:s,id:i},"*")}static onMessage(t){return s=this,i=null,n=function*(){if(!e.iframe)throw new Error('The "ArtplayerPluginIframe.onMessage" method can only be used in iframe');const{type:s,data:i,id:n}=t.data;if("commit"===s)try{if(i.match(/\bresolve\((.*?)\)/)){const t=`return new Promise(function(resolve){\n${i}\n})`,s=yield new Function(t)();e.postMessage({type:"response",data:s,id:n})}else{const t=new Function(i)();e.postMessage({type:"response",data:t,id:n})}}catch(r){throw e.postMessage({type:"error",data:r.message,id:n}),r}},new Promise((e,t)=>{var r=e=>{try{a(n.next(e))}catch(s){t(s)}},o=e=>{try{a(n.throw(e))}catch(s){t(s)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,o);a((n=n.apply(s,i)).next())});var s,i,n}static inject(){if(!e.iframe)throw new Error('The "ArtplayerPluginIframe.inject" method can only be used in iframe');e.postMessage({type:"inject"}),window.addEventListener("message",e.onMessage)}constructor({iframe:e,url:t}){if(e instanceof HTMLIFrameElement===!1)throw new TypeError('"option.iframe" needs to be a HTMLIFrameElement');if("string"!==typeof t)throw new TypeError('"option.url" needs to be a string');this.url=t,this.$iframe=e,this.promises={},this.injected=!1,this.destroyed=!1,this.messageCallback=()=>null,this.onMessage=this.onMessage.bind(this),window.addEventListener("message",this.onMessage),this.$iframe.src=this.url}onMessage(e){const{type:t,data:s,id:i}=e.data;if("inject"===t)this.injected=!0;this.promises[i]&&("error"===t?this.promises[i].reject(new Error(s)):this.promises[i].resove(s),delete this.promises[i]),this.messageCallback&&this.messageCallback({type:t,data:s})}postMessage({type:e,data:t}){return new Promise((s,i)=>{(function n(){if(this.destroyed)i(new Error("The instance has been destroyed"));else if(this.injected){const n=Date.now();this.promises[n]={resove:s,reject:i},this.$iframe.contentWindow.postMessage({type:e,data:t,id:n},"*")}else setTimeout(n.bind(this),200)}).call(this)})}commit(e){if("function"!==typeof e)throw new TypeError('"commit.callback" needs to be a function');const t=e.toString(),s=t.substring(t.indexOf("{")+1,t.lastIndexOf("}"));return this.postMessage({type:"commit",data:s})}message(e){if("function"!==typeof e)throw new TypeError('"message.callback" needs to be a function');this.messageCallback=e}destroy(){this.destroyed=!0,window.removeEventListener("message",this.onMessage)}}return"undefined"!==typeof window&&(window.ArtplayerPluginIframe=e),e});
+135 -3
View File
@@ -1,8 +1,140 @@
/*!
* artplayer-plugin-iframe.js v1.0.0
* artplayer-plugin-iframe.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,o,s){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof n[o]&&n[o],a=i.i||{},f=i.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!f[t]){if(!e[t]){if(s[t])return s[t];var a="function"==typeof n[o]&&n[o];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},p.cache={};var d=f[t]=new u.Module(t);e[t][0].call(d.exports,p,d,d.exports,n)}return f[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],s=e[2]||e[0],n=u(o);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===s?Object.defineProperty(r,t,{enumerable:!0,value:n}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===s?n.__esModule?n.default:n:n[s]}})}),r}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=l,this.exports={}},u.modules=e,u.cache=f,u.parent=i,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=a,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return n[o]}}),n[o]=u;for(var c=0;c<t.length;c++)u(t[c]);if(r){var d=u(r);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({bfwB8:[function(e,t,r,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);class s{static get iframe(){return window.top!==window}static postMessage({type:e,data:t,id:r=0}){if(!s.iframe)throw Error('The "ArtplayerPluginIframe.postMessage" method can only be used in iframe');window.parent.postMessage({type:e,data:t,id:r},"*")}static async onMessage(e){if(!s.iframe)throw Error('The "ArtplayerPluginIframe.onMessage" method can only be used in iframe');let{type:t,data:r,id:o}=e.data;if("commit"===t)try{if(r.match(/\bresolve\((.*?)\)/)){let e=`return new Promise(function(resolve){ ${r} })`,t=await Function(e)();s.postMessage({type:"response",data:t,id:o})}else{let e=Function(r)();s.postMessage({type:"response",data:e,id:o})}}catch(e){throw s.postMessage({type:"error",data:e.message,id:o}),e}}static inject(){if(!s.iframe)throw Error('The "ArtplayerPluginIframe.inject" method can only be used in iframe');s.postMessage({type:"inject"}),window.addEventListener("message",s.onMessage)}constructor({iframe:e,url:t}){if(e instanceof HTMLIFrameElement==!1)throw TypeError('"option.iframe" needs to be a HTMLIFrameElement');if("string"!=typeof t)throw TypeError('"option.url" needs to be a string');this.url=t,this.$iframe=e,this.promises={},this.injected=!1,this.destroyed=!1,this.messageCallback=()=>null,this.onMessage=this.onMessage.bind(this),window.addEventListener("message",this.onMessage),this.$iframe.src=this.url}onMessage(e){let{type:t,data:r,id:o}=e.data;"inject"===t&&(this.injected=!0),this.promises[o]&&("error"===t?this.promises[o].reject(Error(r)):this.promises[o].resove(r),delete this.promises[o]),this.messageCallback&&this.messageCallback({type:t,data:r})}postMessage({type:e,data:t}){return new Promise((r,o)=>{(function s(){if(this.destroyed)o(Error("The instance has been destroyed"));else if(this.injected){let s=Date.now();this.promises[s]={resove:r,reject:o},this.$iframe.contentWindow.postMessage({type:e,data:t,id:s},"*")}else setTimeout(s.bind(this),200)}).call(this)})}commit(e){if("function"!=typeof e)throw TypeError('"commit.callback" needs to be a function');let t=e.toString(),r=t.substring(t.indexOf("{")+1,t.lastIndexOf("}"));return this.postMessage({type:"commit",data:r})}message(e){if("function"!=typeof e)throw TypeError('"message.callback" needs to be a function');this.messageCallback=e}destroy(){this.destroyed=!0,window.removeEventListener("message",this.onMessage)}}r.default=s,"u">typeof window&&(window.ArtplayerPluginIframe=s)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["bfwB8"],"bfwB8","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("bfwB8");export{e as default};
class ArtplayerPluginIframe {
static get iframe() {
return window.top !== window;
}
static postMessage({ type, data, id = 0 }) {
if (!ArtplayerPluginIframe.iframe) {
throw new Error('The "ArtplayerPluginIframe.postMessage" method can only be used in iframe');
}
window.parent.postMessage(
{
type,
data,
id
},
"*"
);
}
static async onMessage(event) {
if (!ArtplayerPluginIframe.iframe) {
throw new Error('The "ArtplayerPluginIframe.onMessage" method can only be used in iframe');
}
const { type, data, id } = event.data;
switch (type) {
case "commit":
try {
if (data.match(/\bresolve\((.*?)\)/)) {
const string = `return new Promise(function(resolve){
${data}
})`;
const result = await new Function(string)();
ArtplayerPluginIframe.postMessage({ type: "response", data: result, id });
} else {
const result = new Function(data)();
ArtplayerPluginIframe.postMessage({ type: "response", data: result, id });
}
} catch (error) {
ArtplayerPluginIframe.postMessage({ type: "error", data: error.message, id });
throw error;
}
break;
}
}
static inject() {
if (!ArtplayerPluginIframe.iframe) {
throw new Error('The "ArtplayerPluginIframe.inject" method can only be used in iframe');
}
ArtplayerPluginIframe.postMessage({ type: "inject" });
window.addEventListener("message", ArtplayerPluginIframe.onMessage);
}
constructor({ iframe, url }) {
if (iframe instanceof HTMLIFrameElement === false) {
throw new TypeError('"option.iframe" needs to be a HTMLIFrameElement');
}
if (typeof url !== "string") {
throw new TypeError('"option.url" needs to be a string');
}
this.url = url;
this.$iframe = iframe;
this.promises = {};
this.injected = false;
this.destroyed = false;
this.messageCallback = () => null;
this.onMessage = this.onMessage.bind(this);
window.addEventListener("message", this.onMessage);
this.$iframe.src = this.url;
}
onMessage(event) {
const { type, data, id } = event.data;
switch (type) {
case "inject":
this.injected = true;
break;
}
if (this.promises[id]) {
if (type === "error") {
this.promises[id].reject(new Error(data));
} else {
this.promises[id].resove(data);
}
delete this.promises[id];
}
if (this.messageCallback) {
this.messageCallback({ type, data });
}
}
postMessage({ type, data }) {
return new Promise((resove, reject) => {
(function loop() {
if (this.destroyed) {
reject(new Error("The instance has been destroyed"));
} else {
if (this.injected) {
const id = Date.now();
this.promises[id] = { resove, reject };
this.$iframe.contentWindow.postMessage(
{
type,
data,
id
},
"*"
);
} else {
setTimeout(loop.bind(this), 200);
}
}
}).call(this);
});
}
commit(callback) {
if (typeof callback !== "function") {
throw new TypeError('"commit.callback" needs to be a function');
}
const callbackString = callback.toString();
const bodyString = callbackString.substring(callbackString.indexOf("{") + 1, callbackString.lastIndexOf("}"));
return this.postMessage({ type: "commit", data: bodyString });
}
message(callback) {
if (typeof callback !== "function") {
throw new TypeError('"message.callback" needs to be a function');
}
this.messageCallback = callback;
}
destroy() {
this.destroyed = true;
window.removeEventListener("message", this.onMessage);
}
}
if (typeof window !== "undefined") {
window.ArtplayerPluginIframe = ArtplayerPluginIframe;
}
export {
ArtplayerPluginIframe as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-jassub.js v1.0.0
* artplayer-plugin-jassub.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,s,i,a){var r="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},n="function"==typeof r[i]&&r[i],o=n.i||{},h=n.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,s){if(!h[t]){if(!e[t]){if(a[t])return a[t];var o="function"==typeof r[i]&&r[i];if(!s&&o)return o(t,!0);if(n)return n(t,!0);if(d&&"string"==typeof t)return d(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}m.resolve=function(s){var i=e[t][1][s];return null!=i?i:s},m.cache={};var u=h[t]=new l.Module(t);e[t][0].call(u.exports,m,u,u.exports,r)}return h[t].exports;function m(e){var t=m.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var s={__esModule:!0};return t.forEach(function(e){var t=e[0],i=e[1],a=e[2]||e[0],r=l(i);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(s,e)||Object.defineProperty(s,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===a?Object.defineProperty(s,t,{enumerable:!0,value:r}):Object.defineProperty(s,t,{enumerable:!0,get:function(){return"default"===a?r.__esModule?r.default:r:r[a]}})}),s}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=d,this.exports={}},l.modules=e,l.cache=h,l.parent=n,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=o,l.register=function(t,s){e[t]=[function(e,t){t.exports=s},{}]},Object.defineProperty(l,"root",{get:function(){return r[i]}}),r[i]=l;for(var c=0;c<t.length;c++)l(t[c]);if(s){var u=l(s);"object"==typeof exports&&"u">typeof module?module.exports=u:"function"==typeof define&&define.amd&&define(function(){return u})}}({g5KxT:[function(e,t,s,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(s),a.export(s,"default",()=>o);var r=e("./jassub.es.js"),n=a.interopDefault(r);function o(e){return t=>{let s=new(0,n.default)({video:t.video,...e});return s._canvasParent.style.zIndex=20,t.on("destroy",()=>{s.destroy()}),{name:"artplayerPluginJassub",instance:s}}}"u">typeof window&&(window.artplayerPluginJassub=o)},{"./jassub.es.js":"8Qqq1","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"8Qqq1":[function(e,t,s,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(s),a.export(s,"default",()=>o),"u">typeof HTMLVideoElement&&!("requestVideoFrameCallback"in HTMLVideoElement.prototype)&&"getVideoPlaybackQuality"in HTMLVideoElement.prototype&&(HTMLVideoElement.prototype._rvfcpolyfillmap={},HTMLVideoElement.prototype.requestVideoFrameCallback=function(e){let t=performance.now(),s=this.getVideoPlaybackQuality(),i=this.mozPresentedFrames||this.mozPaintedFrames||s.totalVideoFrames-s.droppedVideoFrames,a=(r,n)=>{let o=this.getVideoPlaybackQuality(),h=this.mozPresentedFrames||this.mozPaintedFrames||o.totalVideoFrames-o.droppedVideoFrames;if(h>i){let i=this.mozFrameDelay||o.totalFrameDelay-s.totalFrameDelay||0,a=n-r;e(n,{presentationTime:n+1e3*i,expectedDisplayTime:n+a,width:this.videoWidth,height:this.videoHeight,mediaTime:Math.max(0,this.currentTime||0)+a/1e3,presentedFrames:h,processingDuration:i}),delete this._rvfcpolyfillmap[t]}else this._rvfcpolyfillmap[t]=requestAnimationFrame(e=>a(n,e))};return this._rvfcpolyfillmap[t]=requestAnimationFrame(e=>a(t,e)),t},HTMLVideoElement.prototype.cancelVideoFrameCallback=function(e){cancelAnimationFrame(this._rvfcpolyfillmap[e]),delete this._rvfcpolyfillmap[e]});let r={bt709:"BT709",bt470bg:"BT601",smpte170m:"BT601"},n={BT601:{BT709:"1.0863 -0.0723 -0.014 0 0 0.0965 0.8451 0.0584 0 0 -0.0141 -0.0277 1.0418"},BT709:{BT601:"0.9137 0.0784 0.0079 0 0 -0.1049 1.1722 -0.0671 0 0 0.0096 0.0322 0.9582"},FCC:{BT709:"1.0873 -0.0736 -0.0137 0 0 0.0974 0.8494 0.0531 0 0 -0.0127 -0.0251 1.0378",BT601:"1.001 -0.0008 -0.0002 0 0 0.0009 1.005 -0.006 0 0 0.0013 0.0027 0.996"},SMPTE240M:{BT709:"0.9993 0.0006 0.0001 0 0 -0.0004 0.9812 0.0192 0 0 -0.0034 -0.0114 1.0148",BT601:"0.913 0.0774 0.0096 0 0 -0.1051 1.1508 -0.0456 0 0 0.0063 0.0207 0.973"}};class o extends EventTarget{constructor(e){if(super(),!globalThis.Worker)throw this.destroy("Worker not supported");if(!e)throw this.destroy("No options provided");this._loaded=new Promise(e=>{this._init=e});const t=o._test();if(this._onDemandRender="requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e.onDemandRender??!0),this._offscreenRender="transferControlToOffscreen"in HTMLCanvasElement.prototype&&!e.canvas&&(e.offscreenRender??!0),this.timeOffset=e.timeOffset||0,this._video=e.video,this._videoHeight=0,this._videoWidth=0,this._videoColorSpace=null,this._canvas=e.canvas,this._video&&!this._canvas)this._canvasParent=document.createElement("div"),this._canvasParent.className="JASSUB",this._canvasParent.style.position="relative",this._canvas=this._createCanvas(),this._video.insertAdjacentElement("afterend",this._canvasParent);else if(!this._canvas)throw this.destroy("Don't know where to render: you should giveLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginJassub=t(),define(function(){return t.ArtplayerPluginJassub})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginJassub=t()}(this,function(){"use strict";var e=Object.defineProperty,t=(t,s,i)=>((t,s,i)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[s]=i)(t,"symbol"!==typeof s?s+"":s,i);typeof HTMLVideoElement<"u"&&!("requestVideoFrameCallback"in HTMLVideoElement.prototype)&&"getVideoPlaybackQuality"in HTMLVideoElement.prototype&&(HTMLVideoElement.prototype._rvfcpolyfillmap={},HTMLVideoElement.prototype.requestVideoFrameCallback=function(e){const t=performance.now(),s=this.getVideoPlaybackQuality(),i=this.mozPresentedFrames||this.mozPaintedFrames||s.totalVideoFrames-s.droppedVideoFrames,a=(r,n)=>{const o=this.getVideoPlaybackQuality(),h=this.mozPresentedFrames||this.mozPaintedFrames||o.totalVideoFrames-o.droppedVideoFrames;if(h>i){const i=this.mozFrameDelay||o.totalFrameDelay-s.totalFrameDelay||0,a=n-r;e(n,{presentationTime:n+1e3*i,expectedDisplayTime:n+a,width:this.videoWidth,height:this.videoHeight,mediaTime:Math.max(0,this.currentTime||0)+a/1e3,presentedFrames:h,processingDuration:i}),delete this._rvfcpolyfillmap[t]}else this._rvfcpolyfillmap[t]=requestAnimationFrame(e=>a(n,e))};return this._rvfcpolyfillmap[t]=requestAnimationFrame(e=>a(t,e)),t},HTMLVideoElement.prototype.cancelVideoFrameCallback=function(e){cancelAnimationFrame(this._rvfcpolyfillmap[e]),delete this._rvfcpolyfillmap[e]});const s={bt709:"BT709",bt470bg:"BT601",smpte170m:"BT601"},i={BT601:{BT709:"1.0863 -0.0723 -0.014 0 0 0.0965 0.8451 0.0584 0 0 -0.0141 -0.0277 1.0418"},BT709:{BT601:"0.9137 0.0784 0.0079 0 0 -0.1049 1.1722 -0.0671 0 0 0.0096 0.0322 0.9582"},FCC:{BT709:"1.0873 -0.0736 -0.0137 0 0 0.0974 0.8494 0.0531 0 0 -0.0127 -0.0251 1.0378",BT601:"1.001 -0.0008 -0.0002 0 0 0.0009 1.005 -0.006 0 0 0.0013 0.0027 0.996"},SMPTE240M:{BT709:"0.9993 0.0006 0.0001 0 0 -0.0004 0.9812 0.0192 0 0 -0.0034 -0.0114 1.0148",BT601:"0.913 0.0774 0.0096 0 0 -0.1051 1.1508 -0.0456 0 0 0.0063 0.0207 0.973"}},a=class e extends EventTarget{constructor(t){if(super(),!globalThis.Worker)throw this.destroy("Worker not supported");if(!t)throw this.destroy("No options provided");this._loaded=new Promise(e=>{this._init=e});const s=e._test();if(this._onDemandRender="requestVideoFrameCallback"in HTMLVideoElement.prototype&&(t.onDemandRender??!0),this._offscreenRender="transferControlToOffscreen"in HTMLCanvasElement.prototype&&!t.canvas&&(t.offscreenRender??!0),this.timeOffset=t.timeOffset||0,this._video=t.video,this._videoHeight=0,this._videoWidth=0,this._videoColorSpace=null,this._canvas=t.canvas,this._video&&!this._canvas)this._canvasParent=document.createElement("div"),this._canvasParent.className="JASSUB",this._canvasParent.style.position="relative",this._canvas=this._createCanvas(),this._video.insertAdjacentElement("afterend",this._canvasParent);else if(!this._canvas)throw this.destroy("Don't know where to render: you should give video or canvas in options.");if(this._bufferCanvas=document.createElement("canvas"),this._bufferCtx=this._bufferCanvas.getContext("2d"),!this._bufferCtx)throw this.destroy("Canvas rendering not supported");this._canvasctrl=this._offscreenRender?this._canvas.transferControlToOffscreen():this._canvas,this._ctx=!this._offscreenRender&&this._canvasctrl.getContext("2d"),this._lastRenderTime=0,this.debug=!!t.debug,this.prescaleFactor=t.prescaleFactor||1,this.prescaleHeightLimit=t.prescaleHeightLimit||1080,this.maxRenderHeight=t.maxRenderHeight||0,this._boundResize=this.resize.bind(this),this._boundTimeUpdate=this._timeupdate.bind(this),this._boundSetRate=this.setRate.bind(this),this._boundUpdateColorSpace=this._updateColorSpace.bind(this),this._video&&this.setVideo(t.video),this._onDemandRender&&(this.busy=!1,this._lastDemandTime=null),this._worker=new Worker(t.workerUrl||"jassub-worker.js"),this._worker.onmessage=e=>this._onmessage(e),this._worker.onerror=e=>this._error(e),s.then(()=>{this._worker.postMessage({target:"init",wasmUrl:e._supportsSIMD&&t.modernWasmUrl?t.modernWasmUrl:t.wasmUrl??"jassub-worker.wasm",legacyWasmUrl:t.legacyWasmUrl??"jassub-worker.wasm.js",asyncRender:typeof createImageBitmap<"u"&&(t.asyncRender??!0),onDemandRender:this._onDemandRender,width:this._canvasctrl.width||0,height:this._canvasctrl.height||0,blendMode:t.blendMode||"js",subUrl:t.subUrl,subContent:t.subContent||null,fonts:t.fonts||[],availableFonts:t.availableFonts||{"liberation sans":"./default.woff2"},fallbackFont:t.fallbackFont||"liberation sans",debug:this.debug,targetFps:t.targetFps||24,dropAllAnimations:t.dropAllAnimations,dropAllBlur:t.dropAllBlur,libassMemoryLimit:t.libassMemoryLimit||0,libassGlyphLimit:t.libassGlyphLimit||0,useLocalFonts:typeof queryLocalFonts<"u"&&(t.useLocalFonts??!0),hasBitmapBug:e._hasBitmapBug}),!0===this._offscreenRender&&this.sendMessage("ofLine truncated
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-jassub.js v1.0.0
* artplayer-plugin-jassub.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,i){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof a[n]&&a[n],o=s.i||{},c=s.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!c[t]){if(!e[t]){if(i[t])return i[t];var o="function"==typeof a[n]&&a[n];if(!r&&o)return o(t,!0);if(s)return s(t,!0);if(l&&"string"==typeof t)return l(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}h.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},h.cache={};var f=c[t]=new u.Module(t);e[t][0].call(f.exports,h,f,f.exports,a)}return c[t].exports;function h(e){var t=h.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],i=e[2]||e[0],a=u(n);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:a}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?a.__esModule?a.default:a:a[i]}})}),r}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=l,this.exports={}},u.modules=e,u.cache=c,u.parent=s,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=o,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return a[n]}}),a[n]=u;for(var d=0;d<t.length;d++)u(t[d]);if(r){var f=u(r);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({k1Tni:[function(e,t,r,n){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(r),i.export(r,"default",function(){return c});var a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("./jassub.es.js"),o=i.interopDefault(s);function c(e){return function(t){var r=new(0,o.default)((0,a._)({video:t.video},e));return r._canvasParent.style.zIndex=20,t.on("destroy",function(){r.destroy()}),{name:"artplayerPluginJassub",instance:r}}}"u">typeof window&&(window.artplayerPluginJassub=c)},{"@swc/helpers/cjs/_object_spread.cjs":"kyoEj","./jassub.es.js":"5H1mY","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],kyoEj:[function(e,t,r,n){"use strict";var i=e("9f9b8a24218ee51e");r._=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){i._(e,t,r[t])})}return e}},{"9f9b8a24218ee51e":"ltU3W"}],ltU3W:[function(e,t,r,n){"use strict";r._=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},{}],"5H1mY":[function(e,t,r,n){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(r),i.export(r,"default",function(){return b});var a=e("@swc/helpers/cjs/_async_to_generator.cjs"),s=e("@swc/helpers/cjs/_call_super.cjs"),o=e("@swc/helpers/cjs/_class_call_check.cjs"),c=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_define_property.cjs"),u=e("@swc/helpers/cjs/_inherits.cjs"),d=e("@swc/helpers/cjs/_object_spread.cjs"),f=e("@swc/helpers/cjs/_sliced_to_array.cjs"),h=e("@swc/helpers/cjs/_to_consumable_array.cjs"),_=e("@swc/helpers/cjs/_type_of.cjs"),v=e("@swc/helpers/cjs/_wrap_native_super.cjs"),p=e("@swc/helpers/cjs/_ts_generator.cjs");("u"<typeof HTMLVideoElement?"undefined":(0,_._)(HTMLVideoElement))<"u"&&!("requestVideoFrameCallback"in HTMLVideoElement.prototype)&&"getVideoPlaybackQuality"in HTMLVideoElement.prototype&&(HTMLVideoElement.prototype._rvfcpolyfillmap={},HTMLVideoElement.prototype.requestVideoFrameCallback=function(e){var t=this,r=performance.now(),n=this.getVideoPlaybackQuality(),i=this.mozPresentedFrames||this.mozPaintedFrames||n.totalVideoFrames-n.droppedVideoFrames,a=function(s,o){var c=t.getVideoPlaybackQuality(),l=t.mozPresentedFrames||t.mozPaintedFrames||c.totalVideoFrames-c.droppedVideoFrames;if(l>i){var u=t.mozFrameDelay||c.totalFrameDelay-n.totalFrameDelay||0,d=o-s;e(o,{presentationTime:o+1e3*u,expectedDisplayTime:o+d,width:t.videoWidth,height:t.videoHeight,mediaTime:Math.max(0,t.currentTime||0)+d/1e3,presentedFrames:l,processingDuration:u}),delete t._rvfcpolyfillmap[r]}else t._rvfcpolyfillmap[r]=requestAnimationFrame(function(e){return a(o,e)})};return this._rvfcpolyfillmap[r]=requestAnimationFrame(function(e){return a(r,e)}),r},HTMLVideoElement.prototype.cancelVideoFrameCallback=function(e){cancelAnimationFrame(this._rvfcpolyfillmap[e]),delete this._rvfcpolyfillmap[e]});var m={bt709:"BT709",bt470bg:"BT601",smpte170m:"BT601"},y={BT601:{BT709:"1.0863 -0.0723 -0.014 0 0 0.0965 0.8451 0.0584 0 0 -0.0141 -0.0277 1.0418"},BT709:{BT601:"0.9137 0.0784 0.0079 0 0 -Line truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginJassub=t(),define(function(){return t.ArtplayerPluginJassub})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginJassub=t()}(this,function(){"use strict";var e=Object.defineProperty,t=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,a=(t,s,i)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[s]=i,r=(e,r)=>{for(var n in r||(r={}))s.call(r,n)&&a(e,n,r[n]);if(t)for(var n of t(r))i.call(r,n)&&a(e,n,r[n]);return e},n=(e,t,s)=>a(e,"symbol"!==typeof t?t+"":t,s),o=(e,t,s)=>new Promise((i,a)=>{var r=e=>{try{o(s.next(e))}catch(t){a(t)}},n=e=>{try{o(s.throw(e))}catch(t){a(t)}},o=e=>e.done?i(e.value):Promise.resolve(e.value).then(r,n);o((s=s.apply(e,t)).next())});typeof HTMLVideoElement<"u"&&!("requestVideoFrameCallback"in HTMLVideoElement.prototype)&&"getVideoPlaybackQuality"in HTMLVideoElement.prototype&&(HTMLVideoElement.prototype._rvfcpolyfillmap={},HTMLVideoElement.prototype.requestVideoFrameCallback=function(e){const t=performance.now(),s=this.getVideoPlaybackQuality(),i=this.mozPresentedFrames||this.mozPaintedFrames||s.totalVideoFrames-s.droppedVideoFrames,a=(r,n)=>{const o=this.getVideoPlaybackQuality(),h=this.mozPresentedFrames||this.mozPaintedFrames||o.totalVideoFrames-o.droppedVideoFrames;if(h>i){const i=this.mozFrameDelay||o.totalFrameDelay-s.totalFrameDelay||0,a=n-r;e(n,{presentationTime:n+1e3*i,expectedDisplayTime:n+a,width:this.videoWidth,height:this.videoHeight,mediaTime:Math.max(0,this.currentTime||0)+a/1e3,presentedFrames:h,processingDuration:i}),delete this._rvfcpolyfillmap[t]}else this._rvfcpolyfillmap[t]=requestAnimationFrame(e=>a(n,e))};return this._rvfcpolyfillmap[t]=requestAnimationFrame(e=>a(t,e)),t},HTMLVideoElement.prototype.cancelVideoFrameCallback=function(e){cancelAnimationFrame(this._rvfcpolyfillmap[e]),delete this._rvfcpolyfillmap[e]});const h={bt709:"BT709",bt470bg:"BT601",smpte170m:"BT601"},d={BT601:{BT709:"1.0863 -0.0723 -0.014 0 0 0.0965 0.8451 0.0584 0 0 -0.0141 -0.0277 1.0418"},BT709:{BT601:"0.9137 0.0784 0.0079 0 0 -0.1049 1.1722 -0.0671 0 0 0.0096 0.0322 0.9582"},FCC:{BT709:"1.0873 -0.0736 -0.0137 0 0 0.0974 0.8494 0.0531 0 0 -0.0127 -0.0251 1.0378",BT601:"1.001 -0.0008 -0.0002 0 0 0.0009 1.005 -0.006 0 0 0.0013 0.0027 0.996"},SMPTE240M:{BT709:"0.9993 0.0006 0.0001 0 0 -0.0004 0.9812 0.0192 0 0 -0.0034 -0.0114 1.0148",BT601:"0.913 0.0774 0.0096 0 0 -0.1051 1.1508 -0.0456 0 0 0.0063 0.0207 0.973"}},l=class e extends EventTarget{constructor(t){var s,i;if(super(),!globalThis.Worker)throw this.destroy("Worker not supported");if(!t)throw this.destroy("No options provided");this._loaded=new Promise(e=>{this._init=e});const a=e._test();if(this._onDemandRender="requestVideoFrameCallback"in HTMLVideoElement.prototype&&(null==(s=t.onDemandRender)||s),this._offscreenRender="transferControlToOffscreen"in HTMLCanvasElement.prototype&&!t.canvas&&(null==(i=t.offscreenRender)||i),this.timeOffset=t.timeOffset||0,this._video=t.video,this._videoHeight=0,this._videoWidth=0,this._videoColorSpace=null,this._canvas=t.canvas,this._video&&!this._canvas)this._canvasParent=document.createElement("div"),this._canvasParent.className="JASSUB",this._canvasParent.style.position="relative",this._canvas=this._createCanvas(),this._video.insertAdjacentElement("afterend",this._canvasParent);else if(!this._canvas)throw this.destroy("Don't know where to render: you should give video or canvas in options.");if(this._bufferCanvas=document.createElement("canvas"),this._bufferCtx=this._bufferCanvas.getContext("2d"),!this._bufferCtx)throw this.destroy("Canvas rendering not supported");this._canvasctrl=this._offscreenRender?this._canvas.transferControlToOffscreen():this._canvas,this._ctx=!this._offscreenRender&&this._canvasctrl.getContext("2d"),this._lastRenderTime=0,this.debug=!!t.debug,this.prescaleFactor=t.prescaleFactor||1,this.prescaleHeightLimit=t.prescaleHeightLimit||1080,this.maxRenderHeight=t.maxRenderHeight||0,this._boundResize=this.resize.bind(this),this._boundTimeUpdate=this._timeupdate.bind(this),this._boundSetRate=this.setRate.bind(this),this._boundUpdateColorSpace=this._updateColorSpace.bind(this),this._video&&this.setVideo(t.video),this._onDemandRender&&(this.busy=!1,this._lastDemandTime=null),this._worker=new Worker(t.workerUrl||"jassub-worker.js"),this._worker.onmessage=e=>this._onmessage(e),this._worker.onerror=e=>this._error(e),a.then(()=>{var s,i,a,r;this._worker.postMessage({target:"init",wasmUrl:e._supportsSIMD&&t.modernWasmUrl?t.modernWasmUrl:null!=(s=t.wasmUrl)?s:"jassub-worker.wasm",legacyWasmUrl:null!=(i=t.legacyWasmUrl)?i:"jassub-worker.wasm.js",asyncRender:typeof createImageBitmap<"u"&&(null==(a=t.asyncRender)||a),onDemandRender:this._onDemandRender,width:this._canvasctrl.width||0,height:this._canvasctrl.height||0,blendMode:t.blendMode||"js",subUrl:t.subUrl,subLine truncated
+576 -3
View File
@@ -1,8 +1,581 @@
/*!
* artplayer-plugin-jassub.js v1.0.0
* artplayer-plugin-jassub.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,s,i,a){var r="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},n="function"==typeof r[i]&&r[i],o=n.i||{},h=n.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,s){if(!h[t]){if(!e[t]){if(a[t])return a[t];var o="function"==typeof r[i]&&r[i];if(!s&&o)return o(t,!0);if(n)return n(t,!0);if(d&&"string"==typeof t)return d(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}m.resolve=function(s){var i=e[t][1][s];return null!=i?i:s},m.cache={};var u=h[t]=new l.Module(t);e[t][0].call(u.exports,m,u,u.exports,r)}return h[t].exports;function m(e){var t=m.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var s={__esModule:!0};return t.forEach(function(e){var t=e[0],i=e[1],a=e[2]||e[0],r=l(i);"*"===t?Object.keys(r).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(s,e)||Object.defineProperty(s,e,{enumerable:!0,get:function(){return r[e]}})}):"*"===a?Object.defineProperty(s,t,{enumerable:!0,value:r}):Object.defineProperty(s,t,{enumerable:!0,get:function(){return"default"===a?r.__esModule?r.default:r:r[a]}})}),s}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=d,this.exports={}},l.modules=e,l.cache=h,l.parent=n,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=o,l.register=function(t,s){e[t]=[function(e,t){t.exports=s},{}]},Object.defineProperty(l,"root",{get:function(){return r[i]}}),r[i]=l;for(var c=0;c<t.length;c++)l(t[c]);if(s){var u=l(s);"object"==typeof exports&&"u">typeof module?module.exports=u:"function"==typeof define&&define.amd&&define(function(){return u})}}({bm4Y0:[function(e,t,s,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(s),a.export(s,"default",()=>o);var r=e("./jassub.es.js"),n=a.interopDefault(r);function o(e){return t=>{let s=new(0,n.default)({video:t.video,...e});return s._canvasParent.style.zIndex=20,t.on("destroy",()=>{s.destroy()}),{name:"artplayerPluginJassub",instance:s}}}"u">typeof window&&(window.artplayerPluginJassub=o)},{"./jassub.es.js":"kL36e","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],kL36e:[function(e,t,s,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(s),a.export(s,"default",()=>o),"u">typeof HTMLVideoElement&&!("requestVideoFrameCallback"in HTMLVideoElement.prototype)&&"getVideoPlaybackQuality"in HTMLVideoElement.prototype&&(HTMLVideoElement.prototype._rvfcpolyfillmap={},HTMLVideoElement.prototype.requestVideoFrameCallback=function(e){let t=performance.now(),s=this.getVideoPlaybackQuality(),i=this.mozPresentedFrames||this.mozPaintedFrames||s.totalVideoFrames-s.droppedVideoFrames,a=(r,n)=>{let o=this.getVideoPlaybackQuality(),h=this.mozPresentedFrames||this.mozPaintedFrames||o.totalVideoFrames-o.droppedVideoFrames;if(h>i){let i=this.mozFrameDelay||o.totalFrameDelay-s.totalFrameDelay||0,a=n-r;e(n,{presentationTime:n+1e3*i,expectedDisplayTime:n+a,width:this.videoWidth,height:this.videoHeight,mediaTime:Math.max(0,this.currentTime||0)+a/1e3,presentedFrames:h,processingDuration:i}),delete this._rvfcpolyfillmap[t]}else this._rvfcpolyfillmap[t]=requestAnimationFrame(e=>a(n,e))};return this._rvfcpolyfillmap[t]=requestAnimationFrame(e=>a(t,e)),t},HTMLVideoElement.prototype.cancelVideoFrameCallback=function(e){cancelAnimationFrame(this._rvfcpolyfillmap[e]),delete this._rvfcpolyfillmap[e]});let r={bt709:"BT709",bt470bg:"BT601",smpte170m:"BT601"},n={BT601:{BT709:"1.0863 -0.0723 -0.014 0 0 0.0965 0.8451 0.0584 0 0 -0.0141 -0.0277 1.0418"},BT709:{BT601:"0.9137 0.0784 0.0079 0 0 -0.1049 1.1722 -0.0671 0 0 0.0096 0.0322 0.9582"},FCC:{BT709:"1.0873 -0.0736 -0.0137 0 0 0.0974 0.8494 0.0531 0 0 -0.0127 -0.0251 1.0378",BT601:"1.001 -0.0008 -0.0002 0 0 0.0009 1.005 -0.006 0 0 0.0013 0.0027 0.996"},SMPTE240M:{BT709:"0.9993 0.0006 0.0001 0 0 -0.0004 0.9812 0.0192 0 0 -0.0034 -0.0114 1.0148",BT601:"0.913 0.0774 0.0096 0 0 -0.1051 1.1508 -0.0456 0 0 0.0063 0.0207 0.973"}};class o extends EventTarget{constructor(e){if(super(),!globalThis.Worker)throw this.destroy("Worker not supported");if(!e)throw this.destroy("No options provided");this._loaded=new Promise(e=>{this._init=e});let t=o._test();if(this._onDemandRender="requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e.onDemandRender??!0),this._offscreenRender="transferControlToOffscreen"in HTMLCanvasElement.prototype&&!e.canvas&&(e.offscreenRender??!0),this.timeOffset=e.timeOffset||0,this._video=e.video,this._videoHeight=0,this._videoWidth=0,this._videoColorSpace=null,this._canvas=e.canvas,this._video&&!this._canvas)this._canvasParent=document.createElement("div"),this._canvasParent.className="JASSUB",this._canvasParent.style.position="relative",this._canvas=this._createCanvas(),this._video.insertAdjacentElement("afterend",this._canvasParent);else if(!this._canvas)throw this.destroy("Don't know where to render: you should give vidLine truncated
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
typeof HTMLVideoElement < "u" && !("requestVideoFrameCallback" in HTMLVideoElement.prototype) && "getVideoPlaybackQuality" in HTMLVideoElement.prototype && (HTMLVideoElement.prototype._rvfcpolyfillmap = {}, HTMLVideoElement.prototype.requestVideoFrameCallback = function(c) {
const e = performance.now(), t = this.getVideoPlaybackQuality(), s = this.mozPresentedFrames || this.mozPaintedFrames || t.totalVideoFrames - t.droppedVideoFrames, r = (n, a) => {
const i = this.getVideoPlaybackQuality(), h = this.mozPresentedFrames || this.mozPaintedFrames || i.totalVideoFrames - i.droppedVideoFrames;
if (h > s) {
const d = this.mozFrameDelay || i.totalFrameDelay - t.totalFrameDelay || 0, l = a - n;
c(a, {
presentationTime: a + d * 1e3,
expectedDisplayTime: a + l,
width: this.videoWidth,
height: this.videoHeight,
mediaTime: Math.max(0, this.currentTime || 0) + l / 1e3,
presentedFrames: h,
processingDuration: d
}), delete this._rvfcpolyfillmap[e];
} else
this._rvfcpolyfillmap[e] = requestAnimationFrame((d) => r(a, d));
};
return this._rvfcpolyfillmap[e] = requestAnimationFrame((n) => r(e, n)), e;
}, HTMLVideoElement.prototype.cancelVideoFrameCallback = function(c) {
cancelAnimationFrame(this._rvfcpolyfillmap[c]), delete this._rvfcpolyfillmap[c];
});
const _ = {
bt709: "BT709",
// these might not be exactly correct? oops?
bt470bg: "BT601",
// alias BT.601 PAL... whats the difference?
smpte170m: "BT601"
// alias BT.601 NTSC... whats the difference?
}, f = {
BT601: {
BT709: "1.0863 -0.0723 -0.014 0 0 0.0965 0.8451 0.0584 0 0 -0.0141 -0.0277 1.0418"
},
BT709: {
BT601: "0.9137 0.0784 0.0079 0 0 -0.1049 1.1722 -0.0671 0 0 0.0096 0.0322 0.9582"
},
FCC: {
BT709: "1.0873 -0.0736 -0.0137 0 0 0.0974 0.8494 0.0531 0 0 -0.0127 -0.0251 1.0378",
BT601: "1.001 -0.0008 -0.0002 0 0 0.0009 1.005 -0.006 0 0 0.0013 0.0027 0.996"
},
SMPTE240M: {
BT709: "0.9993 0.0006 0.0001 0 0 -0.0004 0.9812 0.0192 0 0 -0.0034 -0.0114 1.0148",
BT601: "0.913 0.0774 0.0096 0 0 -0.1051 1.1508 -0.0456 0 0 0.0063 0.0207 0.973"
}
};
const _o = class _o extends EventTarget {
/**
* @param {Object} options Settings object.
* @param {HTMLVideoElement} options.video Video to use as target for rendering and event listeners. Optional if canvas is specified instead.
* @param {HTMLCanvasElement} [options.canvas=HTMLCanvasElement] Canvas to use for manual handling. Not required if video is specified.
* @param {'js'|'wasm'} [options.blendMode='js'] Which image blending mode to use. WASM will perform better on lower end devices, JS will perform better if the device and browser supports hardware acceleration.
* @param {Boolean} [options.asyncRender=true] Whether or not to use async rendering, which offloads the CPU by creating image bitmaps on the GPU.
* @param {Boolean} [options.offscreenRender=true] Whether or not to render things fully on the worker, greatly reduces CPU usage.
* @param {Boolean} [options.onDemandRender=true] Whether or not to render subtitles as the video player decodes renders, rather than predicting which frame the player is on using events.
* @param {Number} [options.targetFps=24] Target FPS to render subtitles at. Ignored when onDemandRender is enabled.
* @param {Number} [options.timeOffset=0] Subtitle time offset in seconds.
* @param {Boolean} [options.debug=false] Whether or not to print debug information.
* @param {Number} [options.prescaleFactor=1.0] Scale down (< 1.0) the subtitles canvas to improve performance at the expense of quality, or scale it up (> 1.0).
* @param {Number} [options.prescaleHeightLimit=1080] The height in pixels beyond which the subtitles canvas won't be prescaled.
* @param {Number} [options.maxRenderHeight=0] The maximum rendering height in pixels of the subtitles canvas. Beyond this subtitles will be upscaled by the browser.
* @param {Boolean} [options.dropAllAnimations=false] Attempt to discard all animated tags. Enabling this may severly mangle complex subtitles and should only be considered as an last ditch effort of uncertain success for hardware otherwise incapable of displaing anything. Will not reliably work with manually edited or allocated events.
* @param {Boolean} [options.dropAllBlur=false] The holy grail of performance gains. If heavy TS lags a lot, disabling this will make it ~x10 faster. This drops blur from all added subtitle tracks making most text and backgrounds look sharper, this is way less intrusive than dropping all animations, while still offering major performance gains.
* @param {String} [options.workerUrl='jassub-worker.js'] The URL of the worker.
* @param {String} [options.wasmUrl='jassub-worker.wasm'] The URL of the worker WASM.
* @param {String} [options.legacyWasmUrl='jassub-worker.wasm.js'] The URL of the worker WASM. Only loaded if the browser doesn't support WASM.
* @param {String} options.modernWasmUrl The URL of the modern worker WASM. This includes faster ASM instructions, but is only supported by newer browsers, disabled if the URL isn't defined.
* @param {String} [options.subUrl=options.subContent] The URL of the subtitle file to play.
* @param {String} [options.subContent=options.subUrl] The content of the subtitle file to play.
* @param {String[]|Uint8Array[]} [options.fonts] An array of links or Uint8Arrays to the fonts used in the subtitle. If Uint8Array is used the array is copied, not referenced. This forces all the fonts in this array to be loaded by the renderer, regardless of if they are used.
* @param {Object} [options.availableFonts={'liberation sans': './default.woff2'}] Object with all available fonts - Key is font family in lower case, value is link or Uint8Array: { arial: '/font1.ttf' }. These fonts are selectively loaded if detected as used in the current subtitle track.
* @param {String} [options.fallbackFont='liberation sans'] The font family key of the fallback font in availableFonts to use if the other font for the style is missing special glyphs or unicode.
* @param {Boolean} [options.useLocalFonts=false] If the Local Font Access API is enabled [chrome://flags/#font-access], the library will query for permissions to use local fonts and use them if any are missing. The permission can be queried beforehand using navigator.permissions.request({ name: 'local-fonts' }).
* @param {Number} [options.libassMemoryLimit] libass bitmap cache memory limit in MiB (approximate).
* @param {Number} [options.libassGlyphLimit] libass glyph cache memory limit in MiB (approximate).
*/
constructor(e) {
if (super(), !globalThis.Worker)
throw this.destroy("Worker not supported");
if (!e)
throw this.destroy("No options provided");
this._loaded = /** @type {Promise<void>} */
new Promise((s) => {
this._init = s;
});
const t = _o._test();
if (this._onDemandRender = "requestVideoFrameCallback" in HTMLVideoElement.prototype && (e.onDemandRender ?? true), this._offscreenRender = "transferControlToOffscreen" in HTMLCanvasElement.prototype && !e.canvas && (e.offscreenRender ?? true), this.timeOffset = e.timeOffset || 0, this._video = e.video, this._videoHeight = 0, this._videoWidth = 0, this._videoColorSpace = null, this._canvas = e.canvas, this._video && !this._canvas)
this._canvasParent = document.createElement("div"), this._canvasParent.className = "JASSUB", this._canvasParent.style.position = "relative", this._canvas = this._createCanvas(), this._video.insertAdjacentElement("afterend", this._canvasParent);
else if (!this._canvas)
throw this.destroy("Don't know where to render: you should give video or canvas in options.");
if (this._bufferCanvas = document.createElement("canvas"), this._bufferCtx = this._bufferCanvas.getContext("2d"), !this._bufferCtx)
throw this.destroy("Canvas rendering not supported");
this._canvasctrl = this._offscreenRender ? this._canvas.transferControlToOffscreen() : this._canvas, this._ctx = !this._offscreenRender && this._canvasctrl.getContext("2d"), this._lastRenderTime = 0, this.debug = !!e.debug, this.prescaleFactor = e.prescaleFactor || 1, this.prescaleHeightLimit = e.prescaleHeightLimit || 1080, this.maxRenderHeight = e.maxRenderHeight || 0, this._boundResize = this.resize.bind(this), this._boundTimeUpdate = this._timeupdate.bind(this), this._boundSetRate = this.setRate.bind(this), this._boundUpdateColorSpace = this._updateColorSpace.bind(this), this._video && this.setVideo(e.video), this._onDemandRender && (this.busy = false, this._lastDemandTime = null), this._worker = new Worker(e.workerUrl || "jassub-worker.js"), this._worker.onmessage = (s) => this._onmessage(s), this._worker.onerror = (s) => this._error(s), t.then(() => {
this._worker.postMessage({
target: "init",
wasmUrl: _o._supportsSIMD && e.modernWasmUrl ? e.modernWasmUrl : e.wasmUrl ?? "jassub-worker.wasm",
legacyWasmUrl: e.legacyWasmUrl ?? "jassub-worker.wasm.js",
asyncRender: typeof createImageBitmap < "u" && (e.asyncRender ?? true),
onDemandRender: this._onDemandRender,
width: this._canvasctrl.width || 0,
height: this._canvasctrl.height || 0,
blendMode: e.blendMode || "js",
subUrl: e.subUrl,
subContent: e.subContent || null,
fonts: e.fonts || [],
availableFonts: e.availableFonts || { "liberation sans": "./default.woff2" },
fallbackFont: e.fallbackFont || "liberation sans",
debug: this.debug,
targetFps: e.targetFps || 24,
dropAllAnimations: e.dropAllAnimations,
dropAllBlur: e.dropAllBlur,
libassMemoryLimit: e.libassMemoryLimit || 0,
libassGlyphLimit: e.libassGlyphLimit || 0,
// @ts-ignore
useLocalFonts: typeof queryLocalFonts < "u" && (e.useLocalFonts ?? true),
hasBitmapBug: _o._hasBitmapBug
}), this._offscreenRender === true && this.sendMessage("offscreenCanvas", null, [this._canvasctrl]);
});
}
_createCanvas() {
return this._canvas = document.createElement("canvas"), this._canvas.style.display = "block", this._canvas.style.position = "absolute", this._canvas.style.pointerEvents = "none", this._canvasParent.appendChild(this._canvas), this._canvas;
}
static _testSIMD() {
if (_o._supportsSIMD === null)
try {
_o._supportsSIMD = WebAssembly.validate(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11));
} catch {
_o._supportsSIMD = false;
}
}
static async _testImageBugs() {
if (_o._hasBitmapBug !== null)
return;
const e = document.createElement("canvas"), t = e.getContext("2d", { willReadFrequently: true });
if (!t)
throw new Error("Canvas rendering not supported");
if (typeof ImageData.prototype.constructor == "function")
try {
new ImageData(new Uint8ClampedArray([0, 0, 0, 0]), 1, 1);
} catch {
console.log("Detected that ImageData is not constructable despite browser saying so"), self.ImageData = function(h, d, l) {
const m = t.createImageData(d, l);
return h && m.data.set(h), m;
};
}
const s = document.createElement("canvas"), r = s.getContext("2d", { willReadFrequently: true });
if (!r)
throw new Error("Canvas rendering not supported");
e.width = s.width = 1, e.height = s.height = 1, t.clearRect(0, 0, 1, 1), r.clearRect(0, 0, 1, 1);
const n = r.getImageData(0, 0, 1, 1).data;
t.putImageData(new ImageData(new Uint8ClampedArray([0, 255, 0, 0]), 1, 1), 0, 0), r.drawImage(e, 0, 0);
const a = r.getImageData(0, 0, 1, 1).data;
if (_o._hasAlphaBug = n[1] !== a[1], _o._hasAlphaBug && console.log("Detected a browser having issue with transparent pixels, applying workaround"), typeof createImageBitmap < "u") {
const i = new Uint8ClampedArray([255, 0, 255, 0, 255]).subarray(1, 5);
r.drawImage(await createImageBitmap(new ImageData(i, 1)), 0, 0);
const { data: h } = r.getImageData(0, 0, 1, 1);
_o._hasBitmapBug = false;
for (const [d, l] of h.entries())
if (Math.abs(i[d] - l) > 15) {
_o._hasBitmapBug = true, console.log("Detected a browser having issue with partial bitmaps, applying workaround");
break;
}
} else
_o._hasBitmapBug = false;
e.remove(), s.remove();
}
static async _test() {
_o._testSIMD(), await _o._testImageBugs();
}
/**
* Resize the canvas to given parameters. Auto-generated if values are ommited.
* @param {Number} [width=0]
* @param {Number} [height=0]
* @param {Number} [top=0]
* @param {Number} [left=0]
* @param {Boolean} [force=false]
*/
resize(e = 0, t = 0, s = 0, r = 0, n = this._video?.paused) {
if ((!e || !t) && this._video) {
const a = this._getVideoPosition();
let i = null;
if (this._videoWidth) {
const h = this._video.videoWidth / this._videoWidth, d = this._video.videoHeight / this._videoHeight;
i = this._computeCanvasSize((a.width || 0) / h, (a.height || 0) / d);
} else
i = this._computeCanvasSize(a.width || 0, a.height || 0);
e = i.width, t = i.height, this._canvasParent && (s = a.y - (this._canvasParent.getBoundingClientRect().top - this._video.getBoundingClientRect().top), r = a.x), this._canvas.style.width = a.width + "px", this._canvas.style.height = a.height + "px";
}
this._canvas.style.top = s + "px", this._canvas.style.left = r + "px", n && this.busy === false ? this.busy = true : n = false, this.sendMessage("canvas", { width: e, height: t, videoWidth: this._videoWidth || this._video.videoWidth, videoHeight: this._videoHeight || this._video.videoHeight, force: n });
}
_getVideoPosition(e = this._video.videoWidth, t = this._video.videoHeight) {
const s = e / t, { offsetWidth: r, offsetHeight: n } = this._video, a = r / n;
e = r, t = n, a > s ? e = Math.floor(n * s) : t = Math.floor(r / s);
const i = (r - e) / 2, h = (n - t) / 2;
return { width: e, height: t, x: i, y: h };
}
_computeCanvasSize(e = 0, t = 0) {
const s = this.prescaleFactor <= 0 ? 1 : this.prescaleFactor, r = self.devicePixelRatio || 1;
if (t <= 0 || e <= 0)
e = 0, t = 0;
else {
const n = s < 1 ? -1 : 1;
let a = t * r;
n * a * s <= n * this.prescaleHeightLimit ? a *= s : n * a < n * this.prescaleHeightLimit && (a = this.prescaleHeightLimit), this.maxRenderHeight > 0 && a > this.maxRenderHeight && (a = this.maxRenderHeight), e *= a / t, t = a;
}
return { width: e, height: t };
}
_timeupdate({ type: e }) {
const s = {
seeking: true,
waiting: true,
playing: false
}[e];
s != null && (this._playstate = s), this.setCurrentTime(this._video.paused || this._playstate, this._video.currentTime + this.timeOffset);
}
/**
* Change the video to use as target for event listeners.
* @param {HTMLVideoElement} video
*/
setVideo(e) {
e instanceof HTMLVideoElement ? (this._removeListeners(), this._video = e, this._onDemandRender ? this._video.requestVideoFrameCallback(this._handleRVFC.bind(this)) : (this._playstate = e.paused, e.addEventListener("timeupdate", this._boundTimeUpdate, false), e.addEventListener("progress", this._boundTimeUpdate, false), e.addEventListener("waiting", this._boundTimeUpdate, false), e.addEventListener("seeking", this._boundTimeUpdate, false), e.addEventListener("playing", this._boundTimeUpdate, false), e.addEventListener("ratechange", this._boundSetRate, false), e.addEventListener("resize", this._boundResize, false)), "VideoFrame" in window && (e.addEventListener("loadedmetadata", this._boundUpdateColorSpace, false), e.readyState > 2 && this._updateColorSpace()), e.videoWidth > 0 && this.resize(), typeof ResizeObserver < "u" && (this._ro || (this._ro = new ResizeObserver(() => this.resize())), this._ro.observe(e))) : this._error("Video element invalid!");
}
runBenchmark() {
this.sendMessage("runBenchmark");
}
/**
* Overwrites the current subtitle content.
* @param {String} url URL to load subtitles from.
*/
setTrackByUrl(e) {
this.sendMessage("setTrackByUrl", { url: e }), this._reAttachOffscreen(), this._ctx && (this._ctx.filter = "none");
}
/**
* Overwrites the current subtitle content.
* @param {String} content Content of the ASS file.
*/
setTrack(e) {
this.sendMessage("setTrack", { content: e }), this._reAttachOffscreen(), this._ctx && (this._ctx.filter = "none");
}
/**
* Free currently used subtitle track.
*/
freeTrack() {
this.sendMessage("freeTrack");
}
/**
* Sets the playback state of the media.
* @param {Boolean} isPaused Pause/Play subtitle playback.
*/
setIsPaused(e) {
this.sendMessage("video", { isPaused: e });
}
/**
* Sets the playback rate of the media [speed multiplier].
* @param {Number} rate Playback rate.
*/
setRate(e) {
this.sendMessage("video", { rate: e });
}
/**
* Sets the current time, playback state and rate of the subtitles.
* @param {Boolean} [isPaused] Pause/Play subtitle playback.
* @param {Number} [currentTime] Time in seconds.
* @param {Number} [rate] Playback rate.
*/
setCurrentTime(e, t, s) {
this.sendMessage("video", { isPaused: e, currentTime: t, rate: s, colorSpace: this._videoColorSpace });
}
/**
* @typedef {Object} ASS_Event
* @property {Number} Start Start Time of the Event, in 0:00:00:00 format ie. Hrs:Mins:Secs:hundredths. This is the time elapsed during script playback at which the text will appear onscreen. Note that there is a single digit for the hours!
* @property {Number} Duration End Time of the Event, in 0:00:00:00 format ie. Hrs:Mins:Secs:hundredths. This is the time elapsed during script playback at which the text will disappear offscreen. Note that there is a single digit for the hours!
* @property {String} Style Style name. If it is "Default", then your own *Default style will be subtituted.
* @property {String} Name Character name. This is the name of the character who speaks the dialogue. It is for information only, to make the script is easier to follow when editing/timing.
* @property {Number} MarginL 4-figure Left Margin override. The values are in pixels. All zeroes means the default margins defined by the style are used.
* @property {Number} MarginR 4-figure Right Margin override. The values are in pixels. All zeroes means the default margins defined by the style are used.
* @property {Number} MarginV 4-figure Bottom Margin override. The values are in pixels. All zeroes means the default margins defined by the style are used.
* @property {String} Effect Transition Effect. This is either empty, or contains information for one of the three transition effects implemented in SSA v4.x
* @property {String} Text Subtitle Text. This is the actual text which will be displayed as a subtitle onscreen. Everything after the 9th comma is treated as the subtitle text, so it can include commas.
* @property {Number} ReadOrder Number in order of which to read this event.
* @property {Number} Layer Z-index overlap in which to render this event.
* @property {Number} _index (Internal) index of the event.
*/
/**
* Create a new ASS event directly.
* @param {ASS_Event} event
*/
createEvent(e) {
this.sendMessage("createEvent", { event: e });
}
/**
* Overwrite the data of the event with the specified index.
* @param {ASS_Event} event
* @param {Number} index
*/
setEvent(e, t) {
this.sendMessage("setEvent", { event: e, index: t });
}
/**
* Remove the event with the specified index.
* @param {Number} index
*/
removeEvent(e) {
this.sendMessage("removeEvent", { index: e });
}
/**
* Get all ASS events.
* @param {function(Error|null, ASS_Event): void} callback Function to callback when worker returns the events.
*/
getEvents(e) {
this._fetchFromWorker({
target: "getEvents"
}, (t, { events: s }) => {
e(t, s);
});
}
/**
* Set a style override.
* @param {ASS_Style} style
*/
styleOverride(e) {
this.sendMessage("styleOverride", { style: e });
}
/**
* Disable style override.
*/
disableStyleOverride() {
this.sendMessage("disableStyleOverride");
}
/**
* @typedef {Object} ASS_Style
* @property {String} Name The name of the Style. Case sensitive. Cannot include commas.
* @property {String} FontName The fontname as used by Windows. Case-sensitive.
* @property {Number} FontSize Font size.
* @property {Number} PrimaryColour A long integer BGR (blue-green-red) value. ie. the byte order in the hexadecimal equivelent of this number is BBGGRR
* @property {Number} SecondaryColour A long integer BGR (blue-green-red) value. ie. the byte order in the hexadecimal equivelent of this number is BBGGRR
* @property {Number} OutlineColour A long integer BGR (blue-green-red) value. ie. the byte order in the hexadecimal equivelent of this number is BBGGRR
* @property {Number} BackColour This is the colour of the subtitle outline or shadow, if these are used. A long integer BGR (blue-green-red) value. ie. the byte order in the hexadecimal equivelent of this number is BBGGRR.
* @property {Number} Bold This defines whether text is bold (true) or not (false). -1 is True, 0 is False. This is independant of the Italic attribute - you can have have text which is both bold and italic.
* @property {Number} Italic Italic. This defines whether text is italic (true) or not (false). -1 is True, 0 is False. This is independant of the bold attribute - you can have have text which is both bold and italic.
* @property {Number} Underline -1 or 0
* @property {Number} StrikeOut -1 or 0
* @property {Number} ScaleX Modifies the width of the font. [percent]
* @property {Number} ScaleY Modifies the height of the font. [percent]
* @property {Number} Spacing Extra space between characters. [pixels]
* @property {Number} Angle The origin of the rotation is defined by the alignment. Can be a floating point number. [degrees]
* @property {Number} BorderStyle 1=Outline + drop shadow, 3=Opaque box
* @property {Number} Outline If BorderStyle is 1, then this specifies the width of the outline around the text, in pixels. Values may be 0, 1, 2, 3 or 4.
* @property {Number} Shadow If BorderStyle is 1, then this specifies the depth of the drop shadow behind the text, in pixels. Values may be 0, 1, 2, 3 or 4. Drop shadow is always used in addition to an outline - SSA will force an outline of 1 pixel if no outline width is given.
* @property {Number} Alignment This sets how text is "justified" within the Left/Right onscreen margins, and also the vertical placing. Values may be 1=Left, 2=Centered, 3=Right. Add 4 to the value for a "Toptitle". Add 8 to the value for a "Midtitle". eg. 5 = left-justified toptitle
* @property {Number} MarginL This defines the Left Margin in pixels. It is the distance from the left-hand edge of the screen.The three onscreen margins (MarginL, MarginR, MarginV) define areas in which the subtitle text will be displayed.
* @property {Number} MarginR This defines the Right Margin in pixels. It is the distance from the right-hand edge of the screen. The three onscreen margins (MarginL, MarginR, MarginV) define areas in which the subtitle text will be displayed.
* @property {Number} MarginV This defines the vertical Left Margin in pixels. For a subtitle, it is the distance from the bottom of the screen. For a toptitle, it is the distance from the top of the screen. For a midtitle, the value is ignored - the text will be vertically centred.
* @property {Number} Encoding This specifies the font character set or encoding and on multi-lingual Windows installations it provides access to characters used in multiple than one languages. It is usually 0 (zero) for English (Western, ANSI) Windows.
* @property {Number} treat_fontname_as_pattern
* @property {Number} Blur
* @property {Number} Justify
*/
/**
* Create a new ASS style directly.
* @param {ASS_Style} style
*/
createStyle(e) {
this.sendMessage("createStyle", { style: e });
}
/**
* Overwrite the data of the style with the specified index.
* @param {ASS_Style} style
* @param {Number} index
*/
setStyle(e, t) {
this.sendMessage("setStyle", { style: e, index: t });
}
/**
* Remove the style with the specified index.
* @param {Number} index
*/
removeStyle(e) {
this.sendMessage("removeStyle", { index: e });
}
/**
* Get all ASS styles.
* @param {function(Error|null, ASS_Style): void} callback Function to callback when worker returns the styles.
*/
getStyles(e) {
this._fetchFromWorker({
target: "getStyles"
}, (t, { styles: s }) => {
e(t, s);
});
}
/**
* Adds a font to the renderer.
* @param {String|Uint8Array} font Font to add.
*/
addFont(e) {
this.sendMessage("addFont", { font: e });
}
/**
* Changes the font family of the default font, this font needs to be previously added via addFont or fonts array on construction.
* @param {String} font Font family to change to.
*/
setDefaultFont(e) {
this.sendMessage("defaultFont", { font: e });
}
_sendLocalFont(e) {
try {
queryLocalFonts().then((t) => {
const s = t?.find((r) => r.fullName.toLowerCase() === e);
s && s.blob().then((r) => {
r.arrayBuffer().then((n) => {
this.addFont(new Uint8Array(n));
});
});
});
} catch (t) {
console.warn("Local fonts API:", t);
}
}
_getLocalFont({ font: e }) {
try {
navigator?.permissions?.query ? navigator.permissions.query({ name: "local-fonts" }).then((t) => {
t.state === "granted" && this._sendLocalFont(e);
}) : this._sendLocalFont(e);
} catch (t) {
console.warn("Local fonts API:", t);
}
}
_unbusy() {
this._lastDemandTime ? this._demandRender(this._lastDemandTime) : this.busy = false;
}
_handleRVFC(e, { mediaTime: t, width: s, height: r }) {
if (this._destroyed)
return null;
this.busy ? this._lastDemandTime = { mediaTime: t, width: s, height: r } : (this.busy = true, this._demandRender({ mediaTime: t, width: s, height: r })), this._video.requestVideoFrameCallback(this._handleRVFC.bind(this));
}
_demandRender({ mediaTime: e, width: t, height: s }) {
this._lastDemandTime = null, (t !== this._videoWidth || s !== this._videoHeight) && (this._videoWidth = t, this._videoHeight = s, this.resize()), this.sendMessage("demand", { time: e + this.timeOffset });
}
// if we're using offscreen render, we can't use ctx filters, so we can't use a transfered canvas
_detachOffscreen() {
if (!this._offscreenRender || this._ctx)
return null;
this._canvas.remove(), this._createCanvas(), this._canvasctrl = this._canvas, this._ctx = this._canvasctrl.getContext("2d"), this.sendMessage("detachOffscreen"), this.busy = false, this.resize(0, 0, 0, 0, true);
}
// if the video or track changed, we need to re-attach the offscreen canvas
_reAttachOffscreen() {
if (!this._offscreenRender || !this._ctx)
return null;
this._canvas.remove(), this._createCanvas(), this._canvasctrl = this._canvas.transferControlToOffscreen(), this._ctx = false, this.sendMessage("offscreenCanvas", null, [this._canvasctrl]), this.resize(0, 0, 0, 0, true);
}
_updateColorSpace() {
this._video.requestVideoFrameCallback(() => {
try {
const e = new VideoFrame(this._video);
this._videoColorSpace = _[e.colorSpace.matrix], e.close(), this.sendMessage("getColorSpace");
} catch (e) {
console.warn(e);
}
});
}
/**
* Veryify the color spaces for subtitles and videos, then apply filters to correct the color of subtitles.
* @param {Object} options
* @param {String} options.subtitleColorSpace Subtitle color space. One of: BT601 BT709 SMPTE240M FCC
* @param {String=} options.videoColorSpace Video color space. One of: BT601 BT709
*/
_verifyColorSpace({ subtitleColorSpace: e, videoColorSpace: t = this._videoColorSpace }) {
!e || !t || e !== t && (this._detachOffscreen(), this._ctx.filter = `url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='f'><feColorMatrix type='matrix' values='${f[e][t]} 0 0 0 0 0 1 0'/></filter></svg>#f")`);
}
_render({ images: e, asyncRender: t, times: s, width: r, height: n, colorSpace: a }) {
this._unbusy(), this.debug && (s.IPCTime = Date.now() - s.JSRenderTime), (this._canvasctrl.width !== r || this._canvasctrl.height !== n) && (this._canvasctrl.width = r, this._canvasctrl.height = n, this._verifyColorSpace({ subtitleColorSpace: a })), this._ctx.clearRect(0, 0, this._canvasctrl.width, this._canvasctrl.height);
for (const i of e)
i.image && (t ? (this._ctx.drawImage(i.image, i.x, i.y), i.image.close()) : (this._bufferCanvas.width = i.w, this._bufferCanvas.height = i.h, this._bufferCtx.putImageData(new ImageData(this._fixAlpha(new Uint8ClampedArray(i.image)), i.w, i.h), 0, 0), this._ctx.drawImage(this._bufferCanvas, i.x, i.y)));
if (this.debug) {
s.JSRenderTime = Date.now() - s.JSRenderTime - s.IPCTime;
let i = 0;
const h = s.bitmaps || e.length;
delete s.bitmaps;
for (const d in s)
i += s[d];
console.log("Bitmaps: " + h + " Total: " + (i | 0) + "ms", s);
}
}
_fixAlpha(e) {
if (_o._hasAlphaBug)
for (let t = 3; t < e.length; t += 4)
e[t] = e[t] > 1 ? e[t] : 1;
return e;
}
_ready() {
this._init(), this.dispatchEvent(new CustomEvent("ready"));
}
/**
* Send data and execute function in the worker.
* @param {String} target Target function.
* @param {Object} [data] Data for function.
* @param {Transferable[]} [transferable] Array of transferables.
*/
async sendMessage(e, t = {}, s) {
await this._loaded, s ? this._worker.postMessage({
target: e,
transferable: s,
...t
}, [...s]) : this._worker.postMessage({
target: e,
...t
});
}
_fetchFromWorker(e, t) {
try {
const s = e.target, r = setTimeout(() => {
a(new Error("Error: Timeout while try to fetch " + s));
}, 5e3), n = ({ data: i }) => {
i.target === s && (t(null, i), this._worker.removeEventListener("message", n), this._worker.removeEventListener("error", a), clearTimeout(r));
}, a = (i) => {
t(i), this._worker.removeEventListener("message", n), this._worker.removeEventListener("error", a), clearTimeout(r);
};
this._worker.addEventListener("message", n), this._worker.addEventListener("error", a), this._worker.postMessage(e);
} catch (s) {
this._error(s);
}
}
_console({ content: e, command: t }) {
console[t].apply(console, JSON.parse(e));
}
_onmessage({ data: e }) {
this["_" + e.target] && this["_" + e.target](e);
}
_error(e) {
const t = e instanceof Error ? e : e instanceof ErrorEvent ? e.error : new Error(e), s = e instanceof Event ? new ErrorEvent(e.type, e) : new ErrorEvent("error", { error: t });
return this.dispatchEvent(s), console.error(t), t;
}
_removeListeners() {
this._video && (this._ro && this._ro.unobserve(this._video), this._ctx && (this._ctx.filter = "none"), this._video.removeEventListener("timeupdate", this._boundTimeUpdate), this._video.removeEventListener("progress", this._boundTimeUpdate), this._video.removeEventListener("waiting", this._boundTimeUpdate), this._video.removeEventListener("seeking", this._boundTimeUpdate), this._video.removeEventListener("playing", this._boundTimeUpdate), this._video.removeEventListener("ratechange", this._boundSetRate), this._video.removeEventListener("resize", this._boundResize), this._video.removeEventListener("loadedmetadata", this._boundUpdateColorSpace));
}
/**
* Destroy the object, worker, listeners and all data.
* @param {String|Error} [err] Error to throw when destroying.
*/
destroy(e) {
return e && (e = this._error(e)), this._video && this._canvasParent && this._video.parentNode?.removeChild(this._canvasParent), this._destroyed = true, this._removeListeners(), this.sendMessage("destroy"), this._worker?.terminate(), e;
}
};
// test support for WASM, ImageData, alphaBug, but only once, on init so it doesn't run when first running the page
/** @type {boolean|null} */
__publicField(_o, "_supportsSIMD", null);
/** @type {boolean|null} */
__publicField(_o, "_hasAlphaBug", null);
/** @type {boolean|null} */
__publicField(_o, "_hasBitmapBug", null);
let o = _o;
function artplayerPluginJassub(option) {
return (art) => {
const instance = new o({
video: art.video,
...option
});
instance._canvasParent.style.zIndex = 20;
art.on("destroy", () => {
instance.destroy();
});
return {
name: "artplayerPluginJassub",
instance
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginJassub = artplayerPluginJassub;
}
export {
artplayerPluginJassub as default
};
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-multiple-subtitles.js v1.1.0
* artplayer-plugin-multiple-subtitles.js v1.1.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,i,r){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof a[i]&&a[i],s=o.i||{},l=o.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,n){if(!l[t]){if(!e[t]){if(r[t])return r[t];var s="function"==typeof a[i]&&a[i];if(!n&&s)return s(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(n){var i=e[t][1][n];return null!=i?i:n},p.cache={};var d=l[t]=new f.Module(t);e[t][0].call(d.exports,p,d,d.exports,a)}return l[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],i=e[1],r=e[2]||e[0],a=f(i);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===r?Object.defineProperty(n,t,{enumerable:!0,value:a}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===r?a.__esModule?a.default:a:a[r]}})}),n}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=u,this.exports={}},f.modules=e,f.cache=l,f.parent=o,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=s,f.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(f,"root",{get:function(){return a[i]}}),a[i]=f;for(var c=0;c<t.length;c++)f(t[c]);if(n){var d=f(n);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({bY7Hk:[function(e,t,n,i){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");r.defineInteropFlag(n),r.export(n,"default",()=>s);var a=e("./parser");async function o(e,{getExt:t,srtToVtt:n,assToVtt:i}){let r=await fetch(e.url),a=await r.arrayBuffer(),s=new TextDecoder(e.encoding||"utf-8").decode(a);switch(e.type||t(e.url)){case"srt":return n(s);case"ass":return i(s);case"vtt":return s;default:return""}}function s({subtitles:e=[]}){return async t=>{let{unescape:n,getExt:i,srtToVtt:r,assToVtt:s}=t.constructor.utils,l=new(0,a.WebVTTParser),u=new(0,a.WebVTTSerializer),f=(await Promise.all(e.map(e=>o(e,{getExt:i,srtToVtt:r,assToVtt:s})))).map((t,n)=>{let i=l.parse(t,"metadata");return i.url=e[n].url,i.name=e[n].name,i}),c="";function d(e=[]){let i=function(e){let t=new(0,a.WebVTTParser)().parse("","metadata");for(let n=0;n<e.length;n++){let i=e[n];if(!i.updated){i.updated=!0;for(let e=0;e<i.cues.length;e++){let t=i.cues[e];for(let e=0;e<t.tree.children.length;e++){let n=t.tree.children[e];n.value=`<div class="art-subtitle-${i.name}">${n.value}</div>`}}}t.cues.push(...i.cues)}return t}(e),r=u.serialize(i.cues);URL.revokeObjectURL(c);let o=URL.createObjectURL(new Blob([r],{type:"text/vtt"}));c=o,t.option.subtitle.escape=!1,t.subtitle.init({...t.option.subtitle,url:o,type:"vtt",onVttLoad:n})}return d(f),{name:"multipleSubtitles",tracks:(e=[])=>d(e.map(e=>f.find(t=>t.name===e))),reset:()=>d(f)}}}"u">typeof window&&(window.artplayerPluginMultipleSubtitles=s)},{"./parser":"je6kr","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],je6kr:[function(e,t,n,i){!function(){var e={direction:"horizontal",snapToLines:!0,linePosition:"auto",lineAlign:"start",textPosition:"auto",positionAlign:"auto",size:100,alignment:"center"},t=function(t){t||(t={"&amp":"&","&lt":"<","&gt":">","&lrm":"‎","&rlm":"‏","&nbsp":" "}),this.entities=t,this.parse=function(n,a){n=n.replace(/\0/g,"�");var o=Date.now(),s=0,l=n.split(/\r\n|\r|\n/),u=!1,f=[],c=[],d=[];function p(e,t){d.push({message:e,line:s+1,col:t})}var m=l[s],g=m.length,v="WEBVTT",h=0,b=v.length;for("\uFEFF"===m[0]&&(h=1,b+=1),(g<b||m.indexOf(v)!==0+h||g>b&&" "!==m[b]&&" "!==m[b])&&p('No valid signature. (File needs to start with "WEBVTT".)'),s++;""!=l[s]&&void 0!=l[s];){if(p("No blank line after the signature."),-1!=l[s].indexOf("--\x3e")){u=!0;break}s++}for(;void 0!=l[s];){for(;!u&&""==l[s];)s++;if(!u&&void 0==l[s])break;var T=Object.assign({},e,{id:"",startTime:0,endTime:0,pauseOnExit:!1,direction:"horizontal",snapToLines:!0,linePosition:"auto",lineAlign:"start",textPosition:"auto",positionAlign:"auto",size:100,alignment:"center",text:"",tree:null}),y=!0;if(-1==l[s].indexOf("--\x3e")){if(T.id=l[s],/^NOTE($|[ \t])/.test(T.id)){for(s++;""!=l[s]&&void 0!=l[s];)-1!=l[s].indexOf("--\x3e")&&p("Cannot have timestamp in a comment."),s++;continue}if(/^STYLE($|[ \t])/.test(T.id)){var x=[],w=!1;for(s++;""!=l[s]&&void 0!=l[s];)-1!=l[s].indexOf("--\x3e")&&(p("Cannot have timestamp in a style block."),w=!0),x.push(l[s]),s++;if(c.length){p("Style blocks cannot appear after the first cue.");continue}w||f.push(x.join("\n"));continue}if(""==l[++s]||void 0==l[s]){p("Cue identifier cannot be standalone.");continue}if(-1==l[s].indexOf("--\x3e")){y=!1,p("Cue identifier needs to be followed by Line truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginMultipleSubtitles=t(),define(function(){return t.ArtplayerPluginMultipleSubtitles})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginMultipleSubtitles=t()}(this,function(){"use strict";var e={direction:"horizontal",snapToLines:!0,linePosition:"auto",lineAlign:"start",textPosition:"auto",positionAlign:"auto",size:100,alignment:"center"},t=function(t){t||(t={"&amp":"&","&lt":"<","&gt":">","&lrm":"\u200e","&rlm":"\u200f","&nbsp":"\xa0"}),this.entities=t,this.parse=function(a,s){a=a.replace(/\0/g,"\ufffd");var r=Date.now(),o=0,l=a.split(/\r\n|\r|\n/),f=!1,u=[],c=[],d=[];function p(e,t){d.push({message:e,line:o+1,col:t})}var m=l[o],g=m.length,h="WEBVTT",v=0,b=6;for("\ufeff"===m[0]&&(v=1,b+=1),(g<b||m.indexOf(h)!==0+v||g>b&&" "!==m[b]&&"\t"!==m[b])&&p('No valid signature. (File needs to start with "WEBVTT".)'),o++;""!=l[o]&&void 0!=l[o];){if(p("No blank line after the signature."),-1!=l[o].indexOf("--\x3e")){f=!0;break}o++}for(;void 0!=l[o];){for(var x;!f&&""==l[o];)o++;if(!f&&void 0==l[o])break;x=Object.assign({},e,{id:"",startTime:0,endTime:0,pauseOnExit:!1,direction:"horizontal",snapToLines:!0,linePosition:"auto",lineAlign:"start",textPosition:"auto",positionAlign:"auto",size:100,alignment:"center",text:"",tree:null});var T=!0;if(-1==l[o].indexOf("--\x3e")){if(x.id=l[o],/^NOTE($|[ \t])/.test(x.id)){for(o++;""!=l[o]&&void 0!=l[o];)-1!=l[o].indexOf("--\x3e")&&p("Cannot have timestamp in a comment."),o++;continue}if(/^STYLE($|[ \t])/.test(x.id)){var y=[],w=!1;for(o++;""!=l[o]&&void 0!=l[o];)-1!=l[o].indexOf("--\x3e")&&(p("Cannot have timestamp in a style block."),w=!0),y.push(l[o]),o++;if(c.length){p("Style blocks cannot appear after the first cue.");continue}w||u.push(y.join("\n"));continue}if(""==l[++o]||void 0==l[o]){p("Cue identifier cannot be standalone.");continue}if(-1==l[o].indexOf("--\x3e")){T=!1,p("Cue identifier needs to be followed by timestamp.");continue}}f=!1;var O=new n(l[o],p),L=0;if(c.length>0&&(L=c[c.length-1].startTime),!T||O.parse(x,L)){for(o++;""!=l[o]&&void 0!=l[o];){if(-1!=l[o].indexOf("--\x3e")){p("Blank line missing before cue."),f=!0;break}""!=x.text&&(x.text+="\n"),x.text+=l[o],o++}var A=new i(x.text,p,s,t);x.tree=A.parse(x.startTime,x.endTime),c.push(x)}else for(x=null,o++;""!=l[o]&&void 0!=l[o];){if(-1!=l[o].indexOf("--\x3e")){f=!0;break}o++}}return c.sort(function(e,t){return e.startTime<t.startTime?-1:e.startTime>t.startTime?1:e.endTime>t.endTime?-1:e.endTime<t.endTime?1:0}),{cues:c,errors:d,time:Date.now()-r,styles:u}}},n=function(e,t){var n=/[\u0020\t\f]/,i=/[^\u0020\t\f]/,a=(e=e,0),s=function(e){t(e,a+1)};function r(t){for(;void 0!=e[a]&&t.test(e[a]);)a++}function o(t){for(var n="";void 0!=e[a]&&t.test(e[a]);)n+=e[a],a++;return n}function l(){var t,n,i,r,l="minutes";if(void 0!=e[a])if(/\d/.test(e[a]))if(((t=o(/\d/)).length>2||parseInt(t,10)>59)&&(l="hours"),":"==e[a])if(a++,2==(n=o(/\d/)).length){if("hours"==l||":"==e[a]){if(":"!=e[a])return void s("No seconds found or minutes is greater than 59.");if(a++,2!=(i=o(/\d/)).length)return void s("Must be exactly two digits.")}else{if(2!=t.length)return void s("Must be exactly two digits.");i=n,n=t,t="0"}if("."==e[a])if(a++,3==(r=o(/\d/)).length)if(parseInt(n,10)>59)s("You cannot have more than 59 minutes.");else{if(!(parseInt(i,10)>59))return 60*parseInt(t,10)*60+60*parseInt(n,10)+parseInt(i,10)+parseInt(r,10)/1e3;s("You cannot have more than 59 seconds.")}else s("Milliseconds must be given in three digits.");else s('No decimal separator (".") found.')}else s("Must be exactly two digits.");else s("No time unit separator found.");else s("Timestamp must start with a character in the range 0-9.");else s("No timestamp found.")}this.parse=function(t,o){if(r(n),t.startTime=l(),void 0!=t.startTime)if(t.startTime<o&&s("Start timestamp is not greater than or equal to start timestamp of previous cue."),i.test(e[a])&&s("Timestamp not separated from '--\x3e' by whitespace."),r(n),"-"==e[a])if(a++,"-"==e[a])if(a++,">"==e[a]){if(a++,i.test(e[a])&&s("'--\x3e' not separated from timestamp by whitespace."),r(n),t.endTime=l(),void 0!=t.endTime)return t.endTime<=t.startTime&&s("End timestamp is not greater than start timestamp."),i.test(e[a]),r(n),function(e,t){for(var i=e.split(n),a=[],r=0;r<i.length;r++)if(""!=i[r]){var o=i[r].indexOf(":"),l=i[r].slice(0,o),f=i[r].slice(o+1);if(-1!=a.indexOf(l)&&s("Duplicate setting."),a.push(l),""==f)return void s("No value for setting defined.");if("vertical"==l){if("rl"!=f&&"lr"!=f){s("Writing direction can only be set to 'rl' or 'rl'.");continue}t.direction=f}else if("line"==l){if(/,/.test(f)){var u=f.split(",");f=u[0];var c=u[1]}if(!/^[-\d](\d*)(\.\d+)?%?$/.test(f)){s("Line position takes a number or percentage.");continue}if(-1!=f.indexOf("-",1)){s("Line position can only have '-' at the start.");continue}if(-1!=f.indexOf("%")&&f.indexOf("%")!=f.Line truncated
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-multiple-subtitles.js v1.1.0
* artplayer-plugin-multiple-subtitles.js v1.1.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,r,i){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},a="function"==typeof o[r]&&o[r],s=a.i||{},c=a.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,n){if(!c[t]){if(!e[t]){if(i[t])return i[t];var s="function"==typeof o[r]&&o[r];if(!n&&s)return s(t,!0);if(a)return a(t,!0);if(l&&"string"==typeof t)return l(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}p.resolve=function(n){var r=e[t][1][n];return null!=r?r:n},p.cache={};var d=c[t]=new u.Module(t);e[t][0].call(d.exports,p,d,d.exports,o)}return c[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],i=e[2]||e[0],o=u(r);"*"===t?Object.keys(o).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:o}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?o.__esModule?o.default:o:o[i]}})}),n}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=l,this.exports={}},u.modules=e,u.cache=c,u.parent=a,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=s,u.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(u,"root",{get:function(){return o[r]}}),o[r]=u;for(var f=0;f<t.length;f++)u(t[f]);if(n){var d=u(n);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({bNEbP:[function(e,t,n,r){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return f});var o=e("@swc/helpers/cjs/_async_to_generator.cjs"),a=e("@swc/helpers/cjs/_object_spread.cjs"),s=e("@swc/helpers/cjs/_object_spread_props.cjs"),c=e("@swc/helpers/cjs/_to_consumable_array.cjs"),l=e("@swc/helpers/cjs/_ts_generator.cjs"),u=e("./parser");function f(e){var t=e.subtitles,n=void 0===t?[]:t;return function(e){return(0,o._)(function(){var t,r,i,f,d,p,v,h,m;function b(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=function(e){for(var t=new(0,u.WebVTTParser)().parse("","metadata"),n=0;n<e.length;n++){var r,i=e[n];if(!i.updated){i.updated=!0;for(var o=0;o<i.cues.length;o++)for(var a=i.cues[o],s=0;s<a.tree.children.length;s++){var l=a.tree.children[s];l.value='<div class="art-subtitle-'.concat(i.name,'">').concat(l.value,"</div>")}}(r=t.cues).push.apply(r,(0,c._)(i.cues))}return t}(t),i=v.serialize(n.cues);URL.revokeObjectURL(m);var o=URL.createObjectURL(new Blob([i],{type:"text/vtt"}));m=o,e.option.subtitle.escape=!1,e.subtitle.init((0,s._)((0,a._)({},e.option.subtitle),{url:o,type:"vtt",onVttLoad:r}))}return(0,l._)(this,function(a){switch(a.label){case 0:return r=(t=e.constructor.utils).unescape,i=t.getExt,f=t.srtToVtt,d=t.assToVtt,p=new(0,u.WebVTTParser),v=new(0,u.WebVTTSerializer),[4,Promise.all(n.map(function(e){return function(e,t){return(0,o._)(function(e,t){var n,r,i,o,a;return(0,l._)(this,function(s){switch(s.label){case 0:return n=t.getExt,r=t.srtToVtt,i=t.assToVtt,[4,fetch(e.url)];case 1:return[4,s.sent().arrayBuffer()];case 2:switch(o=s.sent(),a=new TextDecoder(e.encoding||"utf-8").decode(o),e.type||n(e.url)){case"srt":return[2,r(a)];case"ass":return[2,i(a)];case"vtt":return[2,a];default:return[2,""]}}})}).apply(this,arguments)}(e,{getExt:i,srtToVtt:f,assToVtt:d})}))];case 1:return h=a.sent().map(function(e,t){var r=p.parse(e,"metadata");return r.url=n[t].url,r.name=n[t].name,r}),m="",b(h),[2,{name:"multipleSubtitles",tracks:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return b(e.map(function(e){return h.find(function(t){return t.name===e})}))},reset:function(){return b(h)}}]}})})()}}"u">typeof window&&(window.artplayerPluginMultipleSubtitles=f)},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_object_spread.cjs":"kyoEj","@swc/helpers/cjs/_object_spread_props.cjs":"3G1wX","@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","./parser":"hxyrW","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cZn0e:[function(e,t,n,r){"use strict";function i(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}n._=function(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function s(e){i(a,r,o,s,c,"next",e)}function c(e){i(a,r,o,s,c,"throw",e)}s(void 0)})}}},{}],kyoEj:[function(e,t,n,r){"use strict";var i=e("9f9b8a24218ee51e");n._=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){returLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginMultipleSubtitles=t(),define(function(){return t.ArtplayerPluginMultipleSubtitles})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginMultipleSubtitles=t()}(this,function(){"use strict";var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,i=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,s=(t,n,i)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[n]=i,o=(e,t)=>{for(var n in t||(t={}))a.call(t,n)&&s(e,n,t[n]);if(i)for(var n of i(t))r.call(t,n)&&s(e,n,t[n]);return e},l=(e,t,n)=>new Promise((i,a)=>{var r=e=>{try{o(n.next(e))}catch(t){a(t)}},s=e=>{try{o(n.throw(e))}catch(t){a(t)}},o=e=>e.done?i(e.value):Promise.resolve(e.value).then(r,s);o((n=n.apply(e,t)).next())}),f={direction:"horizontal",snapToLines:!0,linePosition:"auto",lineAlign:"start",textPosition:"auto",positionAlign:"auto",size:100,alignment:"center"},u=function(e){e||(e={"&amp":"&","&lt":"<","&gt":">","&lrm":"\u200e","&rlm":"\u200f","&nbsp":"\xa0"}),this.entities=e,this.parse=function(t,n){t=t.replace(/\0/g,"\ufffd");var i=Date.now(),a=0,r=t.split(/\r\n|\r|\n/),s=!1,o=[],l=[],u=[];function p(e,t){u.push({message:e,line:a+1,col:t})}var m=r[a],g=m.length,h="WEBVTT",v=0,b=6;for("\ufeff"===m[0]&&(v=1,b+=1),(g<b||m.indexOf(h)!==0+v||g>b&&" "!==m[b]&&"\t"!==m[b])&&p('No valid signature. (File needs to start with "WEBVTT".)'),a++;""!=r[a]&&void 0!=r[a];){if(p("No blank line after the signature."),-1!=r[a].indexOf("--\x3e")){s=!0;break}a++}for(;void 0!=r[a];){for(var x;!s&&""==r[a];)a++;if(!s&&void 0==r[a])break;x=Object.assign({},f,{id:"",startTime:0,endTime:0,pauseOnExit:!1,direction:"horizontal",snapToLines:!0,linePosition:"auto",lineAlign:"start",textPosition:"auto",positionAlign:"auto",size:100,alignment:"center",text:"",tree:null});var T=!0;if(-1==r[a].indexOf("--\x3e")){if(x.id=r[a],/^NOTE($|[ \t])/.test(x.id)){for(a++;""!=r[a]&&void 0!=r[a];)-1!=r[a].indexOf("--\x3e")&&p("Cannot have timestamp in a comment."),a++;continue}if(/^STYLE($|[ \t])/.test(x.id)){var y=[],w=!1;for(a++;""!=r[a]&&void 0!=r[a];)-1!=r[a].indexOf("--\x3e")&&(p("Cannot have timestamp in a style block."),w=!0),y.push(r[a]),a++;if(l.length){p("Style blocks cannot appear after the first cue.");continue}w||o.push(y.join("\n"));continue}if(""==r[++a]||void 0==r[a]){p("Cue identifier cannot be standalone.");continue}if(-1==r[a].indexOf("--\x3e")){T=!1,p("Cue identifier needs to be followed by timestamp.");continue}}s=!1;var O=new c(r[a],p),P=0;if(l.length>0&&(P=l[l.length-1].startTime),!T||O.parse(x,P)){for(a++;""!=r[a]&&void 0!=r[a];){if(-1!=r[a].indexOf("--\x3e")){p("Blank line missing before cue."),s=!0;break}""!=x.text&&(x.text+="\n"),x.text+=r[a],a++}var I=new d(x.text,p,n,e);x.tree=I.parse(x.startTime,x.endTime),l.push(x)}else for(x=null,a++;""!=r[a]&&void 0!=r[a];){if(-1!=r[a].indexOf("--\x3e")){s=!0;break}a++}}return l.sort(function(e,t){return e.startTime<t.startTime?-1:e.startTime>t.startTime?1:e.endTime>t.endTime?-1:e.endTime<t.endTime?1:0}),{cues:l,errors:u,time:Date.now()-i,styles:o}}},c=function(e,t){var n=/[\u0020\t\f]/,i=/[^\u0020\t\f]/,a=(e=e,0),r=function(e){t(e,a+1)};function s(t){for(;void 0!=e[a]&&t.test(e[a]);)a++}function o(t){for(var n="";void 0!=e[a]&&t.test(e[a]);)n+=e[a],a++;return n}function l(){var t,n,i,s,l="minutes";if(void 0!=e[a])if(/\d/.test(e[a]))if(((t=o(/\d/)).length>2||parseInt(t,10)>59)&&(l="hours"),":"==e[a])if(a++,2==(n=o(/\d/)).length){if("hours"==l||":"==e[a]){if(":"!=e[a])return void r("No seconds found or minutes is greater than 59.");if(a++,2!=(i=o(/\d/)).length)return void r("Must be exactly two digits.")}else{if(2!=t.length)return void r("Must be exactly two digits.");i=n,n=t,t="0"}if("."==e[a])if(a++,3==(s=o(/\d/)).length)if(parseInt(n,10)>59)r("You cannot have more than 59 minutes.");else{if(!(parseInt(i,10)>59))return 60*parseInt(t,10)*60+60*parseInt(n,10)+parseInt(i,10)+parseInt(s,10)/1e3;r("You cannot have more than 59 seconds.")}else r("Milliseconds must be given in three digits.");else r('No decimal separator (".") found.')}else r("Must be exactly two digits.");else r("No time unit separator found.");else r("Timestamp must start with a character in the range 0-9.");else r("No timestamp found.")}this.parse=function(t,o){if(s(n),t.startTime=l(),void 0!=t.startTime)if(t.startTime<o&&r("Start timestamp is not greater than or equal to start timestamp of previous cue."),i.test(e[a])&&r("Timestamp not separated from '--\x3e' by whitespace."),s(n),"-"==e[a])if(a++,"-"==e[a])if(a++,">"==e[a]){if(a++,i.test(e[a])&&r("'--\x3e' not separated from timestamp by whitespace."),s(n),t.endTime=l(),void 0!=t.endTime)return t.endTime<=t.startTime&&r("End timestamp is not greater than start timestamp."),i.test(e[a]),s(n),function(e,t){for(var i=e.split(n),a=[],s=0;s<i.length;s++)ifLine truncated
@@ -1,8 +1,837 @@
/*!
* artplayer-plugin-multiple-subtitles.js v1.1.0
* artplayer-plugin-multiple-subtitles.js v1.1.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,i,r){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof a[i]&&a[i],s=o.i||{},l=o.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,n){if(!l[t]){if(!e[t]){if(r[t])return r[t];var s="function"==typeof a[i]&&a[i];if(!n&&s)return s(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(n){var i=e[t][1][n];return null!=i?i:n},p.cache={};var d=l[t]=new f.Module(t);e[t][0].call(d.exports,p,d,d.exports,a)}return l[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],i=e[1],r=e[2]||e[0],a=f(i);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===r?Object.defineProperty(n,t,{enumerable:!0,value:a}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===r?a.__esModule?a.default:a:a[r]}})}),n}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=u,this.exports={}},f.modules=e,f.cache=l,f.parent=o,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=s,f.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(f,"root",{get:function(){return a[i]}}),a[i]=f;for(var c=0;c<t.length;c++)f(t[c]);if(n){var d=f(n);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({b4OMP:[function(e,t,n,i){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");r.defineInteropFlag(n),r.export(n,"default",()=>s);var a=e("./parser");async function o(e,{getExt:t,srtToVtt:n,assToVtt:i}){let r=await fetch(e.url),a=await r.arrayBuffer(),s=new TextDecoder(e.encoding||"utf-8").decode(a);switch(e.type||t(e.url)){case"srt":return n(s);case"ass":return i(s);case"vtt":return s;default:return""}}function s({subtitles:e=[]}){return async t=>{let{unescape:n,getExt:i,srtToVtt:r,assToVtt:s}=t.constructor.utils,l=new(0,a.WebVTTParser),u=new(0,a.WebVTTSerializer),f=(await Promise.all(e.map(e=>o(e,{getExt:i,srtToVtt:r,assToVtt:s})))).map((t,n)=>{let i=l.parse(t,"metadata");return i.url=e[n].url,i.name=e[n].name,i}),c="";function d(e=[]){let i=function(e){let t=new(0,a.WebVTTParser)().parse("","metadata");for(let n=0;n<e.length;n++){let i=e[n];if(!i.updated){i.updated=!0;for(let e=0;e<i.cues.length;e++){let t=i.cues[e];for(let e=0;e<t.tree.children.length;e++){let n=t.tree.children[e];n.value=`<div class="art-subtitle-${i.name}">${n.value}</div>`}}}t.cues.push(...i.cues)}return t}(e),r=u.serialize(i.cues);URL.revokeObjectURL(c);let o=URL.createObjectURL(new Blob([r],{type:"text/vtt"}));c=o,t.option.subtitle.escape=!1,t.subtitle.init({...t.option.subtitle,url:o,type:"vtt",onVttLoad:n})}return d(f),{name:"multipleSubtitles",tracks:(e=[])=>d(e.map(e=>f.find(t=>t.name===e))),reset:()=>d(f)}}}"u">typeof window&&(window.artplayerPluginMultipleSubtitles=s)},{"./parser":"3iLlq","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"3iLlq":[function(e,t,n,i){!function(){var e={direction:"horizontal",snapToLines:!0,linePosition:"auto",lineAlign:"start",textPosition:"auto",positionAlign:"auto",size:100,alignment:"center"},t=function(t){t||(t={"&amp":"&","&lt":"<","&gt":">","&lrm":"‎","&rlm":"‏","&nbsp":" "}),this.entities=t,this.parse=function(n,a){n=n.replace(/\0/g,"�");var o=Date.now(),s=0,l=n.split(/\r\n|\r|\n/),u=!1,f=[],c=[],d=[];function p(e,t){d.push({message:e,line:s+1,col:t})}var m=l[s],g=m.length,v="WEBVTT",h=0,b=v.length;for("\uFEFF"===m[0]&&(h=1,b+=1),(g<b||m.indexOf(v)!==0+h||g>b&&" "!==m[b]&&" "!==m[b])&&p('No valid signature. (File needs to start with "WEBVTT".)'),s++;""!=l[s]&&void 0!=l[s];){if(p("No blank line after the signature."),-1!=l[s].indexOf("--\x3e")){u=!0;break}s++}for(;void 0!=l[s];){for(;!u&&""==l[s];)s++;if(!u&&void 0==l[s])break;var T=Object.assign({},e,{id:"",startTime:0,endTime:0,pauseOnExit:!1,direction:"horizontal",snapToLines:!0,linePosition:"auto",lineAlign:"start",textPosition:"auto",positionAlign:"auto",size:100,alignment:"center",text:"",tree:null}),y=!0;if(-1==l[s].indexOf("--\x3e")){if(T.id=l[s],/^NOTE($|[ \t])/.test(T.id)){for(s++;""!=l[s]&&void 0!=l[s];)-1!=l[s].indexOf("--\x3e")&&p("Cannot have timestamp in a comment."),s++;continue}if(/^STYLE($|[ \t])/.test(T.id)){var x=[],w=!1;for(s++;""!=l[s]&&void 0!=l[s];)-1!=l[s].indexOf("--\x3e")&&(p("Cannot have timestamp in a style block."),w=!0),x.push(l[s]),s++;if(c.length){p("Style blocks cannot appear after the first cue.");continue}w||f.push(x.join("\n"));continue}if(""==l[++s]||void 0==l[s]){p("Cue identifier cannot be standalone.");continue}if(-1==l[s].indexOf("--\x3e")){y=!1,p("Cue identifier needs to be followed bLine truncated
var defaultCueSettings = {
direction: "horizontal",
snapToLines: true,
linePosition: "auto",
lineAlign: "start",
textPosition: "auto",
positionAlign: "auto",
size: 100,
alignment: "center"
};
var WebVTTParser = function(entities) {
if (!entities) {
entities = {
"&amp": "&",
"&lt": "<",
"&gt": ">",
"&lrm": "‎",
"&rlm": "‏",
"&nbsp": " "
};
}
this.entities = entities;
this.parse = function(input, mode) {
input = input.replace(/\0/g, "�");
var NEWLINE = /\r\n|\r|\n/, startTime = Date.now(), linePos = 0, lines = input.split(NEWLINE), alreadyCollected = false, styles = [], cues = [], errors = [];
function err(message, col) {
errors.push({ message, line: linePos + 1, col });
}
var line = lines[linePos], lineLength = line.length, signature = "WEBVTT", bom = 0, signature_length = signature.length;
if (line[0] === "\uFEFF") {
bom = 1;
signature_length += 1;
}
if (lineLength < signature_length || line.indexOf(signature) !== 0 + bom || lineLength > signature_length && line[signature_length] !== " " && line[signature_length] !== " ") {
err('No valid signature. (File needs to start with "WEBVTT".)');
}
linePos++;
while (lines[linePos] != "" && lines[linePos] != void 0) {
err("No blank line after the signature.");
if (lines[linePos].indexOf("-->") != -1) {
alreadyCollected = true;
break;
}
linePos++;
}
while (lines[linePos] != void 0) {
var cue;
while (!alreadyCollected && lines[linePos] == "") {
linePos++;
}
if (!alreadyCollected && lines[linePos] == void 0) break;
cue = Object.assign({}, defaultCueSettings, {
id: "",
startTime: 0,
endTime: 0,
pauseOnExit: false,
direction: "horizontal",
snapToLines: true,
linePosition: "auto",
lineAlign: "start",
textPosition: "auto",
positionAlign: "auto",
size: 100,
alignment: "center",
text: "",
tree: null
});
var parseTimings = true;
if (lines[linePos].indexOf("-->") == -1) {
cue.id = lines[linePos];
if (/^NOTE($|[ \t])/.test(cue.id)) {
linePos++;
while (lines[linePos] != "" && lines[linePos] != void 0) {
if (lines[linePos].indexOf("-->") != -1) err("Cannot have timestamp in a comment.");
linePos++;
}
continue;
}
if (/^STYLE($|[ \t])/.test(cue.id)) {
var style = [];
var invalid = false;
linePos++;
while (lines[linePos] != "" && lines[linePos] != void 0) {
if (lines[linePos].indexOf("-->") != -1) {
err("Cannot have timestamp in a style block.");
invalid = true;
}
style.push(lines[linePos]);
linePos++;
}
if (cues.length) {
err("Style blocks cannot appear after the first cue.");
continue;
}
if (!invalid) {
styles.push(style.join("\n"));
}
continue;
}
linePos++;
if (lines[linePos] == "" || lines[linePos] == void 0) {
err("Cue identifier cannot be standalone.");
continue;
}
if (lines[linePos].indexOf("-->") == -1) {
parseTimings = false;
err("Cue identifier needs to be followed by timestamp.");
continue;
}
}
alreadyCollected = false;
var timings = new WebVTTCueTimingsAndSettingsParser(lines[linePos], err);
var previousCueStart = 0;
if (cues.length > 0) {
previousCueStart = cues[cues.length - 1].startTime;
}
if (parseTimings && !timings.parse(cue, previousCueStart)) {
cue = null;
linePos++;
while (lines[linePos] != "" && lines[linePos] != void 0) {
if (lines[linePos].indexOf("-->") != -1) {
alreadyCollected = true;
break;
}
linePos++;
}
continue;
}
linePos++;
while (lines[linePos] != "" && lines[linePos] != void 0) {
if (lines[linePos].indexOf("-->") != -1) {
err("Blank line missing before cue.");
alreadyCollected = true;
break;
}
if (cue.text != "") cue.text += "\n";
cue.text += lines[linePos];
linePos++;
}
var cuetextparser = new WebVTTCueTextParser(cue.text, err, mode, entities);
cue.tree = cuetextparser.parse(cue.startTime, cue.endTime);
cues.push(cue);
}
cues.sort(function(a, b) {
if (a.startTime < b.startTime) return -1;
if (a.startTime > b.startTime) return 1;
if (a.endTime > b.endTime) return -1;
if (a.endTime < b.endTime) return 1;
return 0;
});
return { cues, errors, time: Date.now() - startTime, styles };
};
};
var WebVTTCueTimingsAndSettingsParser = function(line, errorHandler) {
var SPACE = /[\u0020\t\f]/, NOSPACE = /[^\u0020\t\f]/, line = line, pos = 0, err = function(message) {
errorHandler(message, pos + 1);
};
function skip(pattern) {
while (line[pos] != void 0 && pattern.test(line[pos])) {
pos++;
}
}
function collect(pattern) {
var str = "";
while (line[pos] != void 0 && pattern.test(line[pos])) {
str += line[pos];
pos++;
}
return str;
}
function timestamp() {
var units = "minutes", val1, val2, val3, val4;
if (line[pos] == void 0) {
err("No timestamp found.");
return;
}
if (!/\d/.test(line[pos])) {
err("Timestamp must start with a character in the range 0-9.");
return;
}
val1 = collect(/\d/);
if (val1.length > 2 || parseInt(val1, 10) > 59) {
units = "hours";
}
if (line[pos] != ":") {
err("No time unit separator found.");
return;
}
pos++;
val2 = collect(/\d/);
if (val2.length != 2) {
err("Must be exactly two digits.");
return;
}
if (units == "hours" || line[pos] == ":") {
if (line[pos] != ":") {
err("No seconds found or minutes is greater than 59.");
return;
}
pos++;
val3 = collect(/\d/);
if (val3.length != 2) {
err("Must be exactly two digits.");
return;
}
} else {
if (val1.length != 2) {
err("Must be exactly two digits.");
return;
}
val3 = val2;
val2 = val1;
val1 = "0";
}
if (line[pos] != ".") {
err('No decimal separator (".") found.');
return;
}
pos++;
val4 = collect(/\d/);
if (val4.length != 3) {
err("Milliseconds must be given in three digits.");
return;
}
if (parseInt(val2, 10) > 59) {
err("You cannot have more than 59 minutes.");
return;
}
if (parseInt(val3, 10) > 59) {
err("You cannot have more than 59 seconds.");
return;
}
return parseInt(val1, 10) * 60 * 60 + parseInt(val2, 10) * 60 + parseInt(val3, 10) + parseInt(val4, 10) / 1e3;
}
function parseSettings(input, cue) {
var settings = input.split(SPACE), seen = [];
for (var i = 0; i < settings.length; i++) {
if (settings[i] == "") continue;
var index = settings[i].indexOf(":"), setting = settings[i].slice(0, index), value = settings[i].slice(index + 1);
if (seen.indexOf(setting) != -1) {
err("Duplicate setting.");
}
seen.push(setting);
if (value == "") {
err("No value for setting defined.");
return;
}
if (setting == "vertical") {
if (value != "rl" && value != "lr") {
err("Writing direction can only be set to 'rl' or 'rl'.");
continue;
}
cue.direction = value;
} else if (setting == "line") {
if (/,/.test(value)) {
var comp = value.split(",");
value = comp[0];
var lineAlign = comp[1];
}
if (!/^[-\d](\d*)(\.\d+)?%?$/.test(value)) {
err("Line position takes a number or percentage.");
continue;
}
if (value.indexOf("-", 1) != -1) {
err("Line position can only have '-' at the start.");
continue;
}
if (value.indexOf("%") != -1 && value.indexOf("%") != value.length - 1) {
err("Line position can only have '%' at the end.");
continue;
}
if (value[0] == "-" && value[value.length - 1] == "%") {
err("Line position cannot be a negative percentage.");
continue;
}
var numVal = value;
var isPercent = false;
if (value[value.length - 1] == "%") {
isPercent = true;
numVal = value.slice(0, value.length - 1);
if (parseInt(value, 10) > 100) {
err("Line position cannot be >100%.");
continue;
}
}
if (numVal === "" || isNaN(numVal) || !isFinite(numVal)) {
err("Line position needs to be a number");
continue;
}
if (lineAlign !== void 0) {
if (!["start", "center", "end"].includes(lineAlign)) {
err("Line alignment needs to be one of start, center or end");
continue;
}
cue.lineAlign = lineAlign;
}
cue.snapToLines = !isPercent;
cue.linePosition = parseFloat(numVal);
if (parseFloat(numVal).toString() !== numVal) {
cue.nonSerializable = true;
}
} else if (setting == "position") {
if (/,/.test(value)) {
var comp = value.split(",");
value = comp[0];
var positionAlign = comp[1];
}
if (value[value.length - 1] != "%") {
err("Text position must be a percentage.");
continue;
}
if (parseInt(value, 10) > 100 || parseInt(value, 10) < 0) {
err("Text position needs to be between 0 and 100%.");
continue;
}
numVal = value.slice(0, value.length - 1);
if (numVal === "" || isNaN(numVal) || !isFinite(numVal)) {
err("Line position needs to be a number");
continue;
}
if (positionAlign !== void 0) {
if (!["line-left", "center", "line-right"].includes(positionAlign)) {
err("Position alignment needs to be one of line-left, center or line-right");
continue;
}
cue.positionAlign = positionAlign;
}
cue.textPosition = parseFloat(numVal);
} else if (setting == "size") {
if (value[value.length - 1] != "%") {
err("Size must be a percentage.");
continue;
}
if (parseInt(value, 10) > 100) {
err("Size cannot be >100%.");
continue;
}
var size = value.slice(0, value.length - 1);
if (size === void 0 || size === "" || isNaN(size)) {
err("Size needs to be a number");
size = 100;
continue;
} else {
size = parseFloat(size);
if (size < 0 || size > 100) {
err("Size needs to be between 0 and 100%.");
continue;
}
}
cue.size = size;
} else if (setting == "align") {
var alignValues = ["start", "center", "end", "left", "right"];
if (alignValues.indexOf(value) == -1) {
err("Alignment can only be set to one of " + alignValues.join(", ") + ".");
continue;
}
cue.alignment = value;
} else {
err("Invalid setting.");
}
}
}
this.parse = function(cue, previousCueStart) {
skip(SPACE);
cue.startTime = timestamp();
if (cue.startTime == void 0) {
return;
}
if (cue.startTime < previousCueStart) {
err("Start timestamp is not greater than or equal to start timestamp of previous cue.");
}
if (NOSPACE.test(line[pos])) {
err("Timestamp not separated from '-->' by whitespace.");
}
skip(SPACE);
if (line[pos] != "-") {
err("No valid timestamp separator found.");
return;
}
pos++;
if (line[pos] != "-") {
err("No valid timestamp separator found.");
return;
}
pos++;
if (line[pos] != ">") {
err("No valid timestamp separator found.");
return;
}
pos++;
if (NOSPACE.test(line[pos])) {
err("'-->' not separated from timestamp by whitespace.");
}
skip(SPACE);
cue.endTime = timestamp();
if (cue.endTime == void 0) {
return;
}
if (cue.endTime <= cue.startTime) {
err("End timestamp is not greater than start timestamp.");
}
if (NOSPACE.test(line[pos])) ;
skip(SPACE);
parseSettings(line.substring(pos), cue);
return true;
};
this.parseTimestamp = function() {
var ts = timestamp();
if (line[pos] != void 0) {
err("Timestamp must not have trailing characters.");
return;
}
return ts;
};
};
var WebVTTCueTextParser = function(line, errorHandler, mode, entities) {
this.entities = entities;
var self = this;
var line = line, pos = 0, err = function(message) {
if (mode == "metadata") return;
errorHandler(message, pos + 1);
};
this.parse = function(cueStart, cueEnd) {
function removeCycles(tree) {
const cyclelessTree = { ...tree };
if (tree.children) {
cyclelessTree.children = tree.children.map(removeCycles);
}
if (cyclelessTree.parent) {
delete cyclelessTree.parent;
}
return cyclelessTree;
}
var result = { children: [] }, current = result, timestamps = [];
function attach(token2) {
current.children.push({
type: "object",
name: token2[1],
classes: token2[2],
children: [],
parent: current
});
current = current.children[current.children.length - 1];
}
function inScope(name2) {
var node = current;
while (node) {
if (node.name == name2) return true;
node = node.parent;
}
return;
}
while (line[pos] != void 0) {
var token = nextToken();
if (token[0] == "text") {
current.children.push({ type: "text", value: token[1], parent: current });
} else if (token[0] == "start tag") {
if (mode == "chapters") err("Start tags not allowed in chapter title text.");
var name = token[1];
if (name != "v" && name != "lang" && token[3] != "") {
err("Only <v> and <lang> can have an annotation.");
}
if (name == "c" || name == "i" || name == "b" || name == "u" || name == "ruby") {
attach(token);
} else if (name == "rt" && current.name == "ruby") {
attach(token);
} else if (name == "v") {
if (inScope("v")) {
err("<v> cannot be nested inside itself.");
}
attach(token);
current.value = token[3];
if (!token[3]) {
err("<v> requires an annotation.");
}
} else if (name == "lang") {
attach(token);
current.value = token[3];
} else {
err("Incorrect start tag.");
}
} else if (token[0] == "end tag") {
if (mode == "chapters") err("End tags not allowed in chapter title text.");
if (token[1] == current.name) {
current = current.parent;
} else if (token[1] == "ruby" && current.name == "rt") {
current = current.parent.parent;
} else {
err("Incorrect end tag.");
}
} else if (token[0] == "timestamp") {
if (mode == "chapters") err("Timestamp not allowed in chapter title text.");
var timings = new WebVTTCueTimingsAndSettingsParser(token[1], err), timestamp = timings.parseTimestamp();
if (timestamp != void 0) {
if (timestamp <= cueStart || timestamp >= cueEnd) {
err("Timestamp must be between start timestamp and end timestamp.");
}
if (timestamps.length > 0 && timestamps[timestamps.length - 1] >= timestamp) {
err("Timestamp must be greater than any previous timestamp.");
}
current.children.push({ type: "timestamp", value: timestamp, parent: current });
timestamps.push(timestamp);
}
}
}
while (current.parent) {
if (current.name != "v") {
err("Required end tag missing.");
}
current = current.parent;
}
return removeCycles(result);
};
function nextToken() {
var state = "data", result = "", buffer = "", classes = [];
while (line[pos - 1] != void 0 || pos == 0) {
var c = line[pos];
if (state == "data") {
if (c == "&") {
buffer = c;
state = "escape";
} else if (c == "<" && result == "") {
state = "tag";
} else if (c == "<" || c == void 0) {
return ["text", result];
} else {
result += c;
}
} else if (state == "escape") {
if (c == "<" || c == void 0) {
err("Incorrect escape.");
let m;
if (m = buffer.match(/^&#([0-9]+)$/)) {
result += String.fromCharCode(m[1]);
} else {
if (self.entities[buffer]) {
result += self.entities[buffer];
} else {
result += buffer;
}
}
return ["text", result];
} else if (c == "&") {
err("Incorrect escape.");
result += buffer;
buffer = c;
} else if (/[a-z#0-9]/i.test(c)) {
buffer += c;
} else if (c == ";") {
let m;
if (m = buffer.match(/^&#(x?[0-9]+)$/)) {
result += String.fromCharCode("0" + m[1]);
} else if (self.entities[buffer + c]) {
result += self.entities[buffer + c];
} else if (m = Object.keys(entities).find((n) => buffer.startsWith(n))) {
result += self.entities[m] + buffer.slice(m.length) + c;
} else {
err("Incorrect escape.");
result += buffer + ";";
}
state = "data";
} else {
err("Incorrect escape.");
result += buffer + c;
state = "data";
}
} else if (state == "tag") {
if (c == " " || c == "\n" || c == "\f" || c == " ") {
state = "start tag annotation";
} else if (c == ".") {
state = "start tag class";
} else if (c == "/") {
state = "end tag";
} else if (/\d/.test(c)) {
result = c;
state = "timestamp tag";
} else if (c == ">" || c == void 0) {
if (c == ">") {
pos++;
}
return ["start tag", "", [], ""];
} else {
result = c;
state = "start tag";
}
} else if (state == "start tag") {
if (c == " " || c == "\f" || c == " ") {
state = "start tag annotation";
} else if (c == "\n") {
buffer = c;
state = "start tag annotation";
} else if (c == ".") {
state = "start tag class";
} else if (c == ">" || c == void 0) {
if (c == ">") {
pos++;
}
return ["start tag", result, [], ""];
} else {
result += c;
}
} else if (state == "start tag class") {
if (c == " " || c == "\f" || c == " ") {
if (buffer) {
classes.push(buffer);
}
buffer = "";
state = "start tag annotation";
} else if (c == "\n") {
if (buffer) {
classes.push(buffer);
}
buffer = c;
state = "start tag annotation";
} else if (c == ".") {
if (buffer) {
classes.push(buffer);
}
buffer = "";
} else if (c == ">" || c == void 0) {
if (c == ">") {
pos++;
}
if (buffer) {
classes.push(buffer);
}
return ["start tag", result, classes, ""];
} else {
buffer += c;
}
} else if (state == "start tag annotation") {
if (c == ">" || c == void 0) {
if (c == ">") {
pos++;
}
buffer = buffer.split(/[\u0020\t\f\r\n]+/).filter(function(item) {
if (item) return true;
}).join(" ");
return ["start tag", result, classes, buffer];
} else {
buffer += c;
}
} else if (state == "end tag") {
if (c == ">" || c == void 0) {
if (c == ">") {
pos++;
}
return ["end tag", result];
} else {
result += c;
}
} else if (state == "timestamp tag") {
if (c == ">" || c == void 0) {
if (c == ">") {
pos++;
}
return ["timestamp", result];
} else {
result += c;
}
} else {
err("Never happens.");
}
pos++;
}
}
};
var WebVTTSerializer = function() {
function serializeTimestamp(seconds) {
const ms = ("00" + (seconds - Math.floor(seconds)).toFixed(3) * 1e3).slice(-3);
let h = 0, m = 0, s = 0;
if (seconds >= 3600) {
h = Math.floor(seconds / 3600);
}
m = Math.floor((seconds - 3600 * h) / 60);
s = Math.floor(seconds - 3600 * h - 60 * m);
return (h ? h + ":" : "") + ("" + m).padStart(2, "0") + ":" + ("" + s).padStart(2, "0") + "." + ms;
}
function serializeCueSettings(cue) {
var result = "";
const nonDefaultSettings = Object.keys(defaultCueSettings).filter((s) => cue[s] !== defaultCueSettings[s]);
if (nonDefaultSettings.includes("direction")) {
result += " vertical:" + cue.direction;
}
if (nonDefaultSettings.includes("alignment")) {
result += " align:" + cue.alignment;
}
if (nonDefaultSettings.includes("size")) {
result += " size:" + cue.size + "%";
}
if (nonDefaultSettings.includes("lineAlign") || nonDefaultSettings.includes("linePosition")) {
result += " line:" + cue.linePosition + (cue.snapToLines ? "" : "%") + (cue.lineAlign && cue.lineAlign != defaultCueSettings.lineAlign ? "," + cue.lineAlign : "");
}
if (nonDefaultSettings.includes("textPosition") || nonDefaultSettings.includes("positionAlign")) {
result += " position:" + cue.textPosition + "%" + (cue.positionAlign && cue.positionAlign !== defaultCueSettings.positionAlign ? "," + cue.positionAlign : "");
}
return result;
}
function serializeTree(tree) {
var result = "";
for (var i = 0; i < tree.length; i++) {
var node = tree[i];
if (node.type == "text") {
result += node.value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
} else if (node.type == "object") {
result += "<" + node.name;
if (node.classes) {
for (var y = 0; y < node.classes.length; y++) {
result += "." + node.classes[y];
}
}
if (node.value) {
result += " " + node.value;
}
result += ">";
if (node.children) result += serializeTree(node.children);
result += "</" + node.name + ">";
} else if (node.type == "timestamp") {
result += "<" + serializeTimestamp(node.value) + ">";
} else {
result += "<" + node.value + ">";
}
}
return result;
}
function serializeCue(cue) {
return (cue.id !== void 0 ? cue.id + "\n" : "") + serializeTimestamp(cue.startTime) + " --> " + serializeTimestamp(cue.endTime) + serializeCueSettings(cue) + "\n" + serializeTree(cue.tree.children) + "\n\n";
}
function serializeStyle(style) {
return "STYLE\n" + style + "\n\n";
}
this.serialize = function(cues, styles) {
var result = "WEBVTT\n\n";
if (styles) {
for (var i = 0; i < styles.length; i++) {
result += serializeStyle(styles[i]);
}
}
for (var i = 0; i < cues.length; i++) {
result += serializeCue(cues[i]);
}
return result;
};
};
async function loadVtt(option, { getExt, srtToVtt, assToVtt }) {
const response = await fetch(option.url);
const buffer = await response.arrayBuffer();
const decoder = new TextDecoder(option.encoding || "utf-8");
const text = decoder.decode(buffer);
switch (option.type || getExt(option.url)) {
case "srt": {
return srtToVtt(text);
}
case "ass": {
return assToVtt(text);
}
case "vtt": {
return text;
}
default:
return "";
}
}
function mergeTrees(trees) {
const parser = new WebVTTParser();
const result = parser.parse("", "metadata");
for (let i = 0; i < trees.length; i++) {
const tree = trees[i];
if (!tree.updated) {
tree.updated = true;
for (let j = 0; j < tree.cues.length; j++) {
const cue = tree.cues[j];
for (let k = 0; k < cue.tree.children.length; k++) {
const children = cue.tree.children[k];
children.value = `<div class="art-subtitle-${tree.name}">${children.value}</div>`;
}
}
}
result.cues.push(...tree.cues);
}
return result;
}
function artplayerPluginMultipleSubtitles({ subtitles = [] }) {
return async (art) => {
const { unescape, getExt, srtToVtt, assToVtt } = art.constructor.utils;
const parser = new WebVTTParser();
const seri = new WebVTTSerializer();
const vtts = await Promise.all(
subtitles.map((option) => {
return loadVtt(option, { getExt, srtToVtt, assToVtt });
})
);
const trees = vtts.map((vtt, index) => {
const tree = parser.parse(vtt, "metadata");
tree.url = subtitles[index].url;
tree.name = subtitles[index].name;
return tree;
});
let lastUrl = "";
function setTracks(trees2 = []) {
const tree = mergeTrees(trees2);
const vtt = seri.serialize(tree.cues);
URL.revokeObjectURL(lastUrl);
const url = URL.createObjectURL(new Blob([vtt], { type: "text/vtt" }));
lastUrl = url;
art.option.subtitle.escape = false;
art.subtitle.init({
...art.option.subtitle,
url,
type: "vtt",
onVttLoad: unescape
});
}
setTracks(trees);
return {
name: "multipleSubtitles",
tracks(names = []) {
return setTracks(names.map((name) => trees.find((tree) => tree.name === name)));
},
reset() {
return setTracks(trees);
}
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginMultipleSubtitles = artplayerPluginMultipleSubtitles;
}
export {
artplayerPluginMultipleSubtitles as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-vast.js v1.1.0
* artplayer-plugin-vast.js v1.1.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,i,n,r){var s="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof s[n]&&s[n],a=o.i||{},u=o.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function h(t,i){if(!u[t]){if(!e[t]){if(r[t])return r[t];var a="function"==typeof s[n]&&s[n];if(!i&&a)return a(t,!0);if(o)return o(t,!0);if(d&&"string"==typeof t)return d(t);var l=Error("Cannot find module '"+t+"'");throw l.code="MODULE_NOT_FOUND",l}f.resolve=function(i){var n=e[t][1][i];return null!=n?n:i},f.cache={};var c=u[t]=new h.Module(t);e[t][0].call(c.exports,f,c,c.exports,s)}return u[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],r=e[2]||e[0],s=h(n);"*"===t?Object.keys(s).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return s[e]}})}):"*"===r?Object.defineProperty(i,t,{enumerable:!0,value:s}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===r?s.__esModule?s.default:s:s[r]}})}),i}return h(t)}}h.isParcelRequire=!0,h.Module=function(e){this.id=e,this.bundle=h,this.require=d,this.exports={}},h.modules=e,h.cache=u,h.parent=o,h.distDir=void 0,h.publicUrl=void 0,h.devServer=void 0,h.i=a,h.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(h,"root",{get:function(){return s[n]}}),s[n]=h;for(var l=0;l<t.length;l++)h(t[l]);if(i){var c=h(i);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({dwHLV:[function(e,t,i,n){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");r.defineInteropFlag(i),r.export(i,"default",()=>o);var s=e("@glomex/vast-ima-player");function o(e){return async t=>{let{template:i,constructor:n}=t,{createElement:r,setStyles:o}=n.utils,{$video:a,$player:u}=i;await (0,s.loadImaSdk)();let d=window.google.ima,h=new d.AdsRenderingSettings;h.restoreCustomPlaybackStateOnAdBreakComplete=!0,h.enablePreloading=!0;let l=new(0,s.PlayerOptions),c=!1,f=null,p=null;function v(){let e;return f?f:((e=r("div")).id=`art-vast-${Date.now()}`,o(e,{position:"absolute",inset:"0",width:"100%",height:"100%",zIndex:"150",backgroundColor:"black",display:"none",pointerEvents:"auto"}),p=e,u.appendChild(p),(f=new(0,s.Player)(d,a,p,h,l)).addEventListener("AdContentPauseRequested",()=>{c=!0,p.style.display="block"}),f.addEventListener("AdContentResumeRequested",()=>{c=!1,p.style.display="none"}),f.addEventListener("AdStarted",()=>{c=!0,p.style.display="block"}),f.addEventListener("AdError",e=>{console.error("VAST Ad Error:",e.detail),c=!1,p.style.display="none"}),f)}return"function"==typeof e&&await e({art:t,playUrl:function(e,t={}){if(c)return;f||v();let i=new d.AdsRequest;for(let n in i.adTagUrl=e,t)i[n]=t[n];f.playAds(i)},playRes:function(e,t={}){if(c)return;f||v();let i=new d.AdsRequest;for(let n in i.adsResponse=e,t)i[n]=t[n];f.playAds(i)},init:v,ima:d,adsRenderingSettings:h,playerOptions:l,get imaPlayer(){return f},get container(){return p}}),{name:"artplayerPluginVast",destroy:function(){f?.destroy&&f.destroy(),p?.parentNode&&p.parentNode.removeChild(p),p=null,f=null}}}}"u">typeof window&&(window.artplayerPluginVast=o)},{"@glomex/vast-ima-player":"edhqb","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],edhqb:[function(e,t,i,n){var r,s,o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"Player",()=>ed),o.export(i,"PlayerError",()=>j),o.export(i,"PlayerEvent",()=>M),o.export(i,"PlayerOptions",()=>L),o.export(i,"loadImaSdk",()=>d);var a=null,u=function(){a=null},d=function(){var e=window;return e.google&&e.google.ima?Promise.resolve(e.google.ima):a||((a=new Promise(function(e,t){var i=document.createElement("script");i.async=!0,i.src="https://imasdk.googleapis.com/js/sdkloader/ima3.js",i.onload=e,i.onerror=t,document.body.appendChild(i)}).then(function(){return e.google.ima})).then(u).catch(u),a)};function h(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function l(e,t,i){return t&&h(e.prototype,t),i&&h(e,i),e}function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,v(e,t)}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e,t,i){return(y=!function(){if("u"<typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof ProxyLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginVast=e(),define(function(){return t.ArtplayerPluginVast})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginVast=e()}(this,function(){"use strict";var t=null,e=function(){t=null};function i(t,e,i){return e&&function(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}(t.prototype,e),t}function n(){return n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},n.apply(this,arguments)}function s(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function r(t){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function a(t,e,i){return(a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,i){var n=[null];n.push.apply(n,e);var s=new(Function.bind.apply(t,n));return i&&o(s,i.prototype),s}).apply(null,arguments)}function d(t){var e="function"==typeof Map?new Map:void 0;return d=function(t){if(null===t||-1===Function.toString.call(t).indexOf("[native code]"))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,i)}function i(){return a(t,arguments,r(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),o(i,t)},d(t)}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}var l=0;function c(t){return"__private_"+l+++"_"+t}function f(t,e){if(!Object.prototype.hasOwnProperty.call(t,e))throw new TypeError("attempted to use private field on non-instance");return t}var p={};p.CustomEvent="function"==typeof CustomEvent?CustomEvent:function(t){return e[t]=new e("").constructor[t],e;function e(t,e){e||(e={});var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,!!e.bubbles,!!e.cancelable,e.detail),i}}("prototype");var v,E,y,A=p.CustomEvent,m=c("mediaElement"),b=c("currentTime"),g=c("enabled"),O=function(){function t(t){Object.defineProperty(this,m,{writable:!0,value:void 0}),Object.defineProperty(this,b,{writable:!0,value:void 0}),Object.defineProperty(this,g,{writable:!0,value:void 0}),this.seeking=void 0,f(this,m)[m]=t,f(this,b)[b]=0,f(this,g)[g]=!1,this.seeking=!1,this.t=this.t.bind(this),this.i=this.i.bind(this),this.h=this.h.bind(this),this.enable()}var e=t.prototype;return e.i=function(){this.seeking=!0},e.h=function(){this.seeking=!1},e.t=function(){var t,e;this.seeking||null!=(t=f(this,m)[m])&&t.paused||(f(this,b)[b]=null==(e=f(this,m)[m])?void 0:e.currentTime)},e.enable=function(){var t,e,i;f(this,g)[g]||(null==(t=f(this,m)[m])||t.addEventListener("seeking",this.i),null==(e=f(this,m)[m])||e.addEventListener("seeked",this.h),null==(i=f(this,m)[m])||i.addEventListener("timeupdate",this.t),f(this,g)[g]=!0)},e.disable=function(){var t,e,i;f(this,g)[g]&&(null==(t=f(this,m)[m])||t.removeEventListener("seeking",this.i),null==(e=f(this,m)[m])||e.removeEventListener("seeked",this.h),null==(i=f(this,m)[m])||i.removeEventListener("timeupdate",this.t),f(this,g)[g]=!1)},e.play=function(){var t=this;return new Promise(function(e){var i;e(null==(i=f(t,m)[m])?void 0:i.play())})},e.pause=function(){var t;null==(t=f(this,m)[m])||t.pause()},e.reset=function(){f(this,b)[b]=0,f(this,g)[g]=!1,this.seeking=!1,this.enable()},e.destroy=function(){f(this,b)[b]=0,f(this,g)[g]=!1,this.seeking=!1,this.disable(),f(this,m)[m]=void 0},i(t,[{key:"enabled",get:function(){return f(this,g)[g]}},{key:"currentTime",get:function(){return f(this,b)[b]}},{key:"duration",get:function(){var t;return null==(t=f(this,m)[m])?void 0:t.duration}},{key:"muted",get:function(){var t;return null==(t=f(this,m)[m])?void 0:t.muted}},{key:"volume",get:function(){var t;return null==(t=f(this,m)[m])?void 0:t.volume}}]),t}(),w=function(){function t(){this.delegate=document.createDocumentFragment()}var e=t.prototype;return e.addEventListener=function(){this.delegate.addEventListener.apply(this.delegate,[].slice.call(arguments))},e.dispatchEvent=function(){return this.delegate.dispatchEvent.apply(this.delegate,[].slice.call(arguments))},e.removeEventListener=function(){return this.delegate.removeEventListener.apply(this.delegate,[].slicLine truncated
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-vast.js v1.1.0
* artplayer-plugin-vast.js v1.1.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,i,n,r){var s="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof s[n]&&s[n],a=o.i||{},u=o.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,i){if(!u[t]){if(!e[t]){if(r[t])return r[t];var a="function"==typeof s[n]&&s[n];if(!i&&a)return a(t,!0);if(o)return o(t,!0);if(l&&"string"==typeof t)return l(t);var h=Error("Cannot find module '"+t+"'");throw h.code="MODULE_NOT_FOUND",h}f.resolve=function(i){var n=e[t][1][i];return null!=n?n:i},f.cache={};var c=u[t]=new d.Module(t);e[t][0].call(c.exports,f,c,c.exports,s)}return u[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],r=e[2]||e[0],s=d(n);"*"===t?Object.keys(s).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return s[e]}})}):"*"===r?Object.defineProperty(i,t,{enumerable:!0,value:s}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===r?s.__esModule?s.default:s:s[r]}})}),i}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=l,this.exports={}},d.modules=e,d.cache=u,d.parent=o,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=a,d.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(d,"root",{get:function(){return s[n]}}),s[n]=d;for(var h=0;h<t.length;h++)d(t[h]);if(i){var c=d(i);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({bxP13:[function(e,t,i,n){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");r.defineInteropFlag(i),r.export(i,"default",function(){return u});var s=e("@swc/helpers/cjs/_async_to_generator.cjs"),o=e("@swc/helpers/cjs/_ts_generator.cjs"),a=e("@glomex/vast-ima-player");function u(e){return function(t){return(0,s._)(function(){var i,n,r,s,u,l,d,h,c,f,p,v;function y(){var e;return p?p:((e=r("div")).id="art-vast-".concat(Date.now()),s(e,{position:"absolute",inset:"0",width:"100%",height:"100%",zIndex:"150",backgroundColor:"black",display:"none",pointerEvents:"auto"}),v=e,l.appendChild(v),(p=new(0,a.Player)(d,u,v,h,c)).addEventListener("AdContentPauseRequested",function(){f=!0,v.style.display="block"}),p.addEventListener("AdContentResumeRequested",function(){f=!1,v.style.display="none"}),p.addEventListener("AdStarted",function(){f=!0,v.style.display="block"}),p.addEventListener("AdError",function(e){console.error("VAST Ad Error:",e.detail),f=!1,v.style.display="none"}),p)}function E(){(null==p?void 0:p.destroy)&&p.destroy(),(null==v?void 0:v.parentNode)&&v.parentNode.removeChild(v),v=null,p=null}function b(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!f){p||y();var i=new d.AdsRequest;for(var n in i.adTagUrl=e,t)i[n]=t[n];p.playAds(i)}}function m(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!f){p||y();var i=new d.AdsRequest;for(var n in i.adsResponse=e,t)i[n]=t[n];p.playAds(i)}}return(0,o._)(this,function(o){switch(o.label){case 0:return i=t.template,r=(n=t.constructor.utils).createElement,s=n.setStyles,u=i.$video,l=i.$player,[4,(0,a.loadImaSdk)()];case 1:if(o.sent(),(h=new(d=window.google.ima).AdsRenderingSettings).restoreCustomPlaybackStateOnAdBreakComplete=!0,h.enablePreloading=!0,c=new(0,a.PlayerOptions),f=!1,p=null,v=null,"function"!=typeof e)return[3,3];return[4,e({art:t,playUrl:b,playRes:m,init:y,ima:d,adsRenderingSettings:h,playerOptions:c,get imaPlayer(){return p},get container(){return v}})];case 2:o.sent(),o.label=3;case 3:return[2,{name:"artplayerPluginVast",destroy:E}]}})})()}}"u">typeof window&&(window.artplayerPluginVast=u)},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","@glomex/vast-ima-player":"f25He","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cZn0e:[function(e,t,i,n){"use strict";function r(e,t,i,n,r,s,o){try{var a=e[s](o),u=a.value}catch(e){i(e);return}a.done?t(u):Promise.resolve(u).then(n,r)}i._=function(e){return function(){var t=this,i=arguments;return new Promise(function(n,s){var o=e.apply(t,i);function a(e){r(o,n,s,a,u,"next",e)}function u(e){r(o,n,s,a,u,"throw",e)}a(void 0)})}}},{}],eltGh:[function(e,t,i,n){"use strict";i._=function(e,t){var i,n,r,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),a=Object.defineProperty;return a(o,"next",{value:u(0)}),a(o,"throw",{value:u(1)}),a(o,"return",{value:u(2)}),"function"==typeof Symbol&&a(o,Symbol.iterator,{value:function(){return this}}),o;function u(a){return function(u){var l=[a,u];if(i)throw TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(s=0)),s;)try{if(i=1,n&&(r=2&l[0]?n.return:l[0]?n.throw||((r=n.return)&&r.cLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerPluginVast=e(),define(function(){return t.ArtplayerPluginVast})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginVast=e()}(this,function(){"use strict";var t=null,e=function(){t=null};function i(t,e,i){return e&&function(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}(t.prototype,e),t}function n(){return n=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])}return t},n.apply(this,arguments)}function s(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function r(t){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function a(t,e,i){return(a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,i){var n=[null];n.push.apply(n,e);var s=new(Function.bind.apply(t,n));return i&&o(s,i.prototype),s}).apply(null,arguments)}function d(t){var e="function"==typeof Map?new Map:void 0;return d=function(t){if(null===t||-1===Function.toString.call(t).indexOf("[native code]"))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,i)}function i(){return a(t,arguments,r(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),o(i,t)},d(t)}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}var l=0;function c(t){return"__private_"+l+++"_"+t}function f(t,e){if(!Object.prototype.hasOwnProperty.call(t,e))throw new TypeError("attempted to use private field on non-instance");return t}var v={};v.CustomEvent="function"==typeof CustomEvent?CustomEvent:function(t){return e[t]=new e("").constructor[t],e;function e(t,e){e||(e={});var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,!!e.bubbles,!!e.cancelable,e.detail),i}}("prototype");var p,y,E,A=v.CustomEvent,m=c("mediaElement"),b=c("currentTime"),g=c("enabled"),O=function(){function t(t){Object.defineProperty(this,m,{writable:!0,value:void 0}),Object.defineProperty(this,b,{writable:!0,value:void 0}),Object.defineProperty(this,g,{writable:!0,value:void 0}),this.seeking=void 0,f(this,m)[m]=t,f(this,b)[b]=0,f(this,g)[g]=!1,this.seeking=!1,this.t=this.t.bind(this),this.i=this.i.bind(this),this.h=this.h.bind(this),this.enable()}var e=t.prototype;return e.i=function(){this.seeking=!0},e.h=function(){this.seeking=!1},e.t=function(){var t,e;this.seeking||null!=(t=f(this,m)[m])&&t.paused||(f(this,b)[b]=null==(e=f(this,m)[m])?void 0:e.currentTime)},e.enable=function(){var t,e,i;f(this,g)[g]||(null==(t=f(this,m)[m])||t.addEventListener("seeking",this.i),null==(e=f(this,m)[m])||e.addEventListener("seeked",this.h),null==(i=f(this,m)[m])||i.addEventListener("timeupdate",this.t),f(this,g)[g]=!0)},e.disable=function(){var t,e,i;f(this,g)[g]&&(null==(t=f(this,m)[m])||t.removeEventListener("seeking",this.i),null==(e=f(this,m)[m])||e.removeEventListener("seeked",this.h),null==(i=f(this,m)[m])||i.removeEventListener("timeupdate",this.t),f(this,g)[g]=!1)},e.play=function(){var t=this;return new Promise(function(e){var i;e(null==(i=f(t,m)[m])?void 0:i.play())})},e.pause=function(){var t;null==(t=f(this,m)[m])||t.pause()},e.reset=function(){f(this,b)[b]=0,f(this,g)[g]=!1,this.seeking=!1,this.enable()},e.destroy=function(){f(this,b)[b]=0,f(this,g)[g]=!1,this.seeking=!1,this.disable(),f(this,m)[m]=void 0},i(t,[{key:"enabled",get:function(){return f(this,g)[g]}},{key:"currentTime",get:function(){return f(this,b)[b]}},{key:"duration",get:function(){var t;return null==(t=f(this,m)[m])?void 0:t.duration}},{key:"muted",get:function(){var t;return null==(t=f(this,m)[m])?void 0:t.muted}},{key:"volume",get:function(){var t;return null==(t=f(this,m)[m])?void 0:t.volume}}]),t}(),w=function(){function t(){this.delegate=document.createDocumentFragment()}var e=t.prototype;return e.addEventListener=function(){this.delegate.addEventListener.apply(this.delegate,[].slice.call(arguments))},e.dispatchEvent=function(){return this.delegate.dispatchEvent.apply(this.delegate,[].slice.call(arguments))},e.removeEventListener=function(){return this.delegate.removeEventListener.apply(this.delegate,[].slicLine truncated
+550 -3
View File
@@ -1,8 +1,555 @@
/*!
* artplayer-plugin-vast.js v1.1.0
* artplayer-plugin-vast.js v1.1.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,i,n,r){var s="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof s[n]&&s[n],a=o.i||{},u=o.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,i){if(!u[t]){if(!e[t]){if(r[t])return r[t];var a="function"==typeof s[n]&&s[n];if(!i&&a)return a(t,!0);if(o)return o(t,!0);if(d&&"string"==typeof t)return d(t);var h=Error("Cannot find module '"+t+"'");throw h.code="MODULE_NOT_FOUND",h}f.resolve=function(i){var n=e[t][1][i];return null!=n?n:i},f.cache={};var c=u[t]=new l.Module(t);e[t][0].call(c.exports,f,c,c.exports,s)}return u[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],r=e[2]||e[0],s=l(n);"*"===t?Object.keys(s).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return s[e]}})}):"*"===r?Object.defineProperty(i,t,{enumerable:!0,value:s}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===r?s.__esModule?s.default:s:s[r]}})}),i}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=d,this.exports={}},l.modules=e,l.cache=u,l.parent=o,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=a,l.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(l,"root",{get:function(){return s[n]}}),s[n]=l;for(var h=0;h<t.length;h++)l(t[h]);if(i){var c=l(i);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({cVeZd:[function(e,t,i,n){var r=e("@parcel/transformer-js/src/esmodule-helpers.js");r.defineInteropFlag(i),r.export(i,"default",()=>o);var s=e("@glomex/vast-ima-player");function o(e){return async t=>{let{template:i,constructor:n}=t,{createElement:r,setStyles:o}=n.utils,{$video:a,$player:u}=i;await (0,s.loadImaSdk)();let d=window.google.ima,l=new d.AdsRenderingSettings;l.restoreCustomPlaybackStateOnAdBreakComplete=!0,l.enablePreloading=!0;let h=new(0,s.PlayerOptions),c=!1,f=null,p=null;function v(){let e;return f?f:((e=r("div")).id=`art-vast-${Date.now()}`,o(e,{position:"absolute",inset:"0",width:"100%",height:"100%",zIndex:"150",backgroundColor:"black",display:"none",pointerEvents:"auto"}),p=e,u.appendChild(p),(f=new(0,s.Player)(d,a,p,l,h)).addEventListener("AdContentPauseRequested",()=>{c=!0,p.style.display="block"}),f.addEventListener("AdContentResumeRequested",()=>{c=!1,p.style.display="none"}),f.addEventListener("AdStarted",()=>{c=!0,p.style.display="block"}),f.addEventListener("AdError",e=>{console.error("VAST Ad Error:",e.detail),c=!1,p.style.display="none"}),f)}return"function"==typeof e&&await e({art:t,playUrl:function(e,t={}){if(c)return;f||v();let i=new d.AdsRequest;for(let n in i.adTagUrl=e,t)i[n]=t[n];f.playAds(i)},playRes:function(e,t={}){if(c)return;f||v();let i=new d.AdsRequest;for(let n in i.adsResponse=e,t)i[n]=t[n];f.playAds(i)},init:v,ima:d,adsRenderingSettings:l,playerOptions:h,get imaPlayer(){return f},get container(){return p}}),{name:"artplayerPluginVast",destroy:function(){f?.destroy&&f.destroy(),p?.parentNode&&p.parentNode.removeChild(p),p=null,f=null}}}}"u">typeof window&&(window.artplayerPluginVast=o)},{"@glomex/vast-ima-player":"1iE81","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],"1iE81":[function(e,t,i,n){var r,s,o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i),o.export(i,"Player",()=>ed),o.export(i,"PlayerError",()=>L),o.export(i,"PlayerEvent",()=>M),o.export(i,"PlayerOptions",()=>j),o.export(i,"loadImaSdk",()=>d);var a=null,u=function(){a=null},d=function(){var e=window;return e.google&&e.google.ima?Promise.resolve(e.google.ima):a||((a=new Promise(function(e,t){var i=document.createElement("script");i.async=!0,i.src="https://imasdk.googleapis.com/js/sdkloader/ima3.js",i.onload=e,i.onerror=t,document.body.appendChild(i)}).then(function(){return e.google.ima})).then(u).catch(u),a)};function l(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function h(e,t,i){return t&&l(e.prototype,t),i&&l(e,i),e}function c(){return(c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,v(e,t)}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function y(e,t,i){return(y=!function(){if("u"<typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof ProLine truncated
var t = null, i = function() {
t = null;
}, e = function() {
var e2 = window;
return e2.google && e2.google.ima ? Promise.resolve(e2.google.ima) : t || ((t = new Promise(function(t2, i2) {
var e3 = document.createElement("script");
e3.async = true, e3.src = "https://imasdk.googleapis.com/js/sdkloader/ima3.js", e3.onload = t2, e3.onerror = i2, document.body.appendChild(e3);
}).then(function() {
return e2.google.ima;
})).then(i).catch(i), t);
};
function n(t2, i2) {
for (var e2 = 0; e2 < i2.length; e2++) {
var n2 = i2[e2];
n2.enumerable = n2.enumerable || false, n2.configurable = true, "value" in n2 && (n2.writable = true), Object.defineProperty(t2, n2.key, n2);
}
}
function s(t2, i2, e2) {
return i2 && n(t2.prototype, i2), t2;
}
function h() {
return h = Object.assign || function(t2) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var e2 = arguments[i2];
for (var n2 in e2) Object.prototype.hasOwnProperty.call(e2, n2) && (t2[n2] = e2[n2]);
}
return t2;
}, h.apply(this, arguments);
}
function r(t2, i2) {
t2.prototype = Object.create(i2.prototype), t2.prototype.constructor = t2, a(t2, i2);
}
function o(t2) {
return o = Object.setPrototypeOf ? Object.getPrototypeOf : function(t3) {
return t3.__proto__ || Object.getPrototypeOf(t3);
}, o(t2);
}
function a(t2, i2) {
return a = Object.setPrototypeOf || function(t3, i3) {
return t3.__proto__ = i3, t3;
}, a(t2, i2);
}
function u() {
if ("undefined" == typeof Reflect || !Reflect.construct) return false;
if (Reflect.construct.sham) return false;
if ("function" == typeof Proxy) return true;
try {
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
})), true;
} catch (t2) {
return false;
}
}
function c(t2, i2, e2) {
return c = u() ? Reflect.construct : function(t3, i3, e3) {
var n2 = [null];
n2.push.apply(n2, i3);
var s2 = new (Function.bind.apply(t3, n2))();
return e3 && a(s2, e3.prototype), s2;
}, c.apply(null, arguments);
}
function d(t2) {
var i2 = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0;
return d = function(t3) {
if (null === t3 || -1 === Function.toString.call(t3).indexOf("[native code]")) return t3;
if ("function" != typeof t3) throw new TypeError("Super expression must either be null or a function");
if (void 0 !== i2) {
if (i2.has(t3)) return i2.get(t3);
i2.set(t3, e2);
}
function e2() {
return c(t3, arguments, o(this).constructor);
}
return e2.prototype = Object.create(t3.prototype, { constructor: { value: e2, enumerable: false, writable: true, configurable: true } }), a(e2, t3);
}, d(t2);
}
function l(t2) {
if (void 0 === t2) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return t2;
}
function f(t2, i2) {
(null == i2 || i2 > t2.length) && (i2 = t2.length);
for (var e2 = 0, n2 = new Array(i2); e2 < i2; e2++) n2[e2] = t2[e2];
return n2;
}
var v = 0;
function b(t2) {
return "__private_" + v++ + "_" + t2;
}
function w(t2, i2) {
if (!Object.prototype.hasOwnProperty.call(t2, i2)) throw new TypeError("attempted to use private field on non-instance");
return t2;
}
var m = {};
m.CustomEvent = "function" == typeof CustomEvent ? CustomEvent : (function(t2) {
return i2[t2] = new i2("").constructor[t2], i2;
function i2(t3, i3) {
i3 || (i3 = {});
var e2 = document.createEvent("CustomEvent");
return e2.initCustomEvent(t3, !!i3.bubbles, !!i3.cancelable, i3.detail), e2;
}
})("prototype");
var p, y, O = m.CustomEvent, j = b("mediaElement"), g = b("currentTime"), A = b("enabled"), k = (function() {
function t2(t3) {
Object.defineProperty(this, j, { writable: true, value: void 0 }), Object.defineProperty(this, g, { writable: true, value: void 0 }), Object.defineProperty(this, A, { writable: true, value: void 0 }), this.seeking = void 0, w(this, j)[j] = t3, w(this, g)[g] = 0, w(this, A)[A] = false, this.seeking = false, this.t = this.t.bind(this), this.i = this.i.bind(this), this.h = this.h.bind(this), this.enable();
}
var i2 = t2.prototype;
return i2.i = function() {
this.seeking = true;
}, i2.h = function() {
this.seeking = false;
}, i2.t = function() {
var t3, i3;
this.seeking || null != (t3 = w(this, j)[j]) && t3.paused || (w(this, g)[g] = null == (i3 = w(this, j)[j]) ? void 0 : i3.currentTime);
}, i2.enable = function() {
var t3, i3, e2;
w(this, A)[A] || (null == (t3 = w(this, j)[j]) || t3.addEventListener("seeking", this.i), null == (i3 = w(this, j)[j]) || i3.addEventListener("seeked", this.h), null == (e2 = w(this, j)[j]) || e2.addEventListener("timeupdate", this.t), w(this, A)[A] = true);
}, i2.disable = function() {
var t3, i3, e2;
w(this, A)[A] && (null == (t3 = w(this, j)[j]) || t3.removeEventListener("seeking", this.i), null == (i3 = w(this, j)[j]) || i3.removeEventListener("seeked", this.h), null == (e2 = w(this, j)[j]) || e2.removeEventListener("timeupdate", this.t), w(this, A)[A] = false);
}, i2.play = function() {
var t3 = this;
return new Promise(function(i3) {
var e2;
i3(null == (e2 = w(t3, j)[j]) ? void 0 : e2.play());
});
}, i2.pause = function() {
var t3;
null == (t3 = w(this, j)[j]) || t3.pause();
}, i2.reset = function() {
w(this, g)[g] = 0, w(this, A)[A] = false, this.seeking = false, this.enable();
}, i2.destroy = function() {
w(this, g)[g] = 0, w(this, A)[A] = false, this.seeking = false, this.disable(), w(this, j)[j] = void 0;
}, s(t2, [{ key: "enabled", get: function() {
return w(this, A)[A];
} }, { key: "currentTime", get: function() {
return w(this, g)[g];
} }, { key: "duration", get: function() {
var t3;
return null == (t3 = w(this, j)[j]) ? void 0 : t3.duration;
} }, { key: "muted", get: function() {
var t3;
return null == (t3 = w(this, j)[j]) ? void 0 : t3.muted;
} }, { key: "volume", get: function() {
var t3;
return null == (t3 = w(this, j)[j]) ? void 0 : t3.volume;
} }]), t2;
})(), C = (function() {
function t2() {
this.delegate = document.createDocumentFragment();
}
var i2 = t2.prototype;
return i2.addEventListener = function() {
this.delegate.addEventListener.apply(this.delegate, [].slice.call(arguments));
}, i2.dispatchEvent = function() {
return this.delegate.dispatchEvent.apply(this.delegate, [].slice.call(arguments));
}, i2.removeEventListener = function() {
return this.delegate.removeEventListener.apply(this.delegate, [].slice.call(arguments));
}, t2;
})(), P = ["abort", "canplay", "canplaythrough", "durationchange", "emptied", "ended", "error", "loadeddata", "loadedmetadata", "loadstart", "pause", "play", "playing", "progress", "ratechange", "seeked", "seeking", "stalled", "suspend", "timeupdate", "volumechange", "waiting"];
!(function(t2) {
t2.MEDIA_START = "MediaStart", t2.MEDIA_IMPRESSION = "MediaImpression", t2.MEDIA_STOP = "MediaStop", t2.MEDIA_CUE_POINTS_CHANGE = "MediaCuePointsChange", t2.MEDIA_RESUMED = "MediaResumed";
})(p || (p = {})), (function(t2) {
t2.AD_ERROR = "AdError", t2.AD_BUFFERING = "AdBuffering", t2.LOADED = "AdLoaded", t2.IMPRESSION = "AdImpression", t2.STARTED = "AdStarted", t2.FIRST_QUARTILE = "AdFirstQuartile", t2.MIDPOINT = "AdMidpoint", t2.THIRD_QUARTILE = "AdThirdQuartile", t2.AD_PROGRESS = "AdProgress", t2.COMPLETE = "AdComplete", t2.CLICK = "AdClick", t2.PAUSED = "AdPaused", t2.RESUMED = "AdResumed", t2.SKIPPED = "AdSkipped", t2.SKIPPABLE_STATE_CHANGED = "AdSkippableStateChanged", t2.VOLUME_CHANGED = "AdVolumeChanged", t2.VOLUME_MUTED = "AdMuted", t2.AD_METADATA = "AdMetadata", t2.AD_BREAK_READY = "AdBreakReady", t2.CONTENT_PAUSE_REQUESTED = "AdContentPauseRequested", t2.CONTENT_RESUME_REQUESTED = "AdContentResumeRequested", t2.ALL_ADS_COMPLETED = "AdAllAdsCompleted", t2.DURATION_CHANGE = "AdDurationChange", t2.INTERACTION = "AdInteraction", t2.LINEAR_CHANGED = "AdLinearChanged", t2.LOG = "AdLog", t2.USER_CLOSE = "AdUserClose", t2.AD_CAN_PLAY = "AdCanPlay", t2.EXPANDED_CHANGED = "AdExpandedChanged", t2.VIEWABLE_IMPRESSION = "AdViewableImpression";
})(y || (y = {}));
var R = h({}, y, p), E = function() {
this.disableCustomPlaybackForIOS10Plus = false, this.autoResize = true, this.clickTrackingElement = void 0;
}, T = (function(t2) {
function i2() {
var i3;
return (i3 = t2.call.apply(t2, [this].concat([].slice.call(arguments))) || this).errorCode = void 0, i3.innerError = void 0, i3.type = void 0, i3.vastErrorCode = void 0, i3;
}
return r(i2, t2), i2;
})(d(Error));
T.ERROR_CODE_ADS_MANAGER_LOADED_TIMEOUT = 9e3, T.ERROR_CODE_REQUEST_ADS_TIMEOUT = 9001;
var S = b("mediaElement"), M = b("adElement"), x = b("customPlayhead"), I = b("adsRenderingSettings"), B = b("ima"), L = b("adDisplayContainer"), D = b("adsManager"), W = b("width"), _ = b("height"), q = b("adsLoader"), F = b("playerOptions"), N = b("resizeObserver"), V = b("currentAd"), G = b("loadedAd"), Q = b("mediaStartTriggered"), U = b("mediaImpressionTriggered"), z = b("mediaInActivation"), Z = b("customPlaybackTimeAdjustedOnEnded"), $ = b("cuePoints"), H = b("adCurrentTime"), J = b("adDuration"), K = b("startAdCallback"), X = b("adsManagerLoadedTimeout"), Y = b("requestAdsTimeout"), tt = b("wasExternallyPaused"), it = b("lastNonZeroAdVolume"), et = b("activatePromise"), nt = (function(t2) {
function i2(i3, e3, n2, s2, h2) {
var r2;
void 0 === s2 && (s2 = new i3.AdsRenderingSettings()), void 0 === h2 && (h2 = new E()), r2 = t2.call(this) || this, Object.defineProperty(l(r2), S, { writable: true, value: void 0 }), Object.defineProperty(l(r2), M, { writable: true, value: void 0 }), Object.defineProperty(l(r2), x, { writable: true, value: void 0 }), Object.defineProperty(l(r2), I, { writable: true, value: void 0 }), Object.defineProperty(l(r2), B, { writable: true, value: void 0 }), Object.defineProperty(l(r2), L, { writable: true, value: void 0 }), Object.defineProperty(l(r2), D, { writable: true, value: void 0 }), Object.defineProperty(l(r2), W, { writable: true, value: void 0 }), Object.defineProperty(l(r2), _, { writable: true, value: void 0 }), Object.defineProperty(l(r2), q, { writable: true, value: void 0 }), Object.defineProperty(l(r2), F, { writable: true, value: void 0 }), Object.defineProperty(l(r2), N, { writable: true, value: void 0 }), Object.defineProperty(l(r2), V, { writable: true, value: void 0 }), Object.defineProperty(l(r2), G, { writable: true, value: void 0 }), Object.defineProperty(l(r2), Q, { writable: true, value: false }), Object.defineProperty(l(r2), U, { writable: true, value: false }), Object.defineProperty(l(r2), z, { writable: true, value: false }), Object.defineProperty(l(r2), Z, { writable: true, value: false }), Object.defineProperty(l(r2), $, { writable: true, value: [] }), Object.defineProperty(l(r2), H, { writable: true, value: void 0 }), Object.defineProperty(l(r2), J, { writable: true, value: void 0 }), Object.defineProperty(l(r2), K, { writable: true, value: void 0 }), Object.defineProperty(l(r2), X, { writable: true, value: void 0 }), Object.defineProperty(l(r2), Y, { writable: true, value: void 0 }), Object.defineProperty(l(r2), tt, { writable: true, value: false }), Object.defineProperty(l(r2), it, { writable: true, value: 1 }), Object.defineProperty(l(r2), et, { writable: true, value: Promise.resolve() }), w(l(r2), S)[S] = e3, w(l(r2), M)[M] = n2, w(l(r2), B)[B] = i3, w(l(r2), F)[F] = h2, w(l(r2), I)[I] = s2, w(l(r2), I)[I].restoreCustomPlaybackStateOnAdBreakComplete = true, h2.disableCustomPlaybackForIOS10Plus && !w(l(r2), S)[S].hasAttribute("playsinline") && w(l(r2), S)[S].setAttribute("playsinline", ""), w(l(r2), B)[B].settings.setDisableCustomPlaybackForIOS10Plus(h2.disableCustomPlaybackForIOS10Plus), w(l(r2), x)[x] = new k(w(l(r2), S)[S]), r2.o = r2.o.bind(l(r2)), P.forEach(function(t3) {
w(l(r2), S)[S].addEventListener(t3, r2.o);
}), r2.u = r2.u.bind(l(r2)), r2.l = r2.l.bind(l(r2));
var o2 = w(l(r2), S)[S], a2 = o2.offsetHeight, u2 = o2.offsetWidth;
return w(l(r2), W)[W] = u2, w(l(r2), _)[_] = a2, h2.autoResize && window.ResizeObserver && (w(l(r2), N)[N] = new window.ResizeObserver(function(t3) {
return r2.v(t3);
}), w(l(r2), N)[N].observe(w(l(r2), S)[S])), r2;
}
r(i2, t2);
var e2 = i2.prototype;
return e2.activate = function() {
var t3 = this;
if (!w(this, Q)[Q] && !w(this, z)[z] && (w(this, z)[z] = true, w(this, S)[S].paused)) {
var i3 = function() {
return w(t3, S)[S].pause(), new Promise(function(i4) {
setTimeout(function() {
w(t3, z)[z] = false, i4();
}, 1);
});
};
w(this, et)[et] = new Promise(function(i4) {
return i4(w(t3, S)[S].play());
}).then(i3).catch(i3);
}
}, e2.playAds = function(t3) {
this.m(t3);
}, e2.loadAds = function(t3, i3) {
this.m(t3, false, i3);
}, e2.p = function() {
var t3 = this;
return w(this, et)[et].then(function() {
return new Promise(function(i3) {
return i3(w(t3, S)[S].play());
});
});
}, e2.m = function(t3, i3, e3) {
var n2 = this;
void 0 === i3 && (i3 = true), this.reset(), this.O(), w(this, B)[B].settings.setAutoPlayAdBreaks(i3), w(this, S)[S].ended && (w(this, x)[x].reset(), w(this, S)[S].currentTime = 0), w(this, K)[K] = e3, t3.linearAdSlotWidth = w(this, W)[W], t3.linearAdSlotHeight = w(this, _)[_], t3.nonLinearAdSlotWidth = w(this, W)[W], t3.nonLinearAdSlotHeight = w(this, _)[_], null == t3.contentDuration && (t3.contentDuration = -3), w(this, X)[X] = window.setTimeout(function() {
var t4 = new T("No adsManagerLoadedEvent within 5000ms.");
t4.errorCode = T.ERROR_CODE_ADS_MANAGER_LOADED_TIMEOUT, n2.j(t4);
}, 5e3), w(this, Y)[Y] = window.setTimeout(function() {
var t4 = new T("No response for ads-request within 10000ms.");
t4.errorCode = T.ERROR_CODE_REQUEST_ADS_TIMEOUT, n2.j(t4);
}, 1e4), w(this, q)[q].requestAds(t3);
}, e2.O = function() {
w(this, L)[L] = new (w(this, B))[B].AdDisplayContainer(w(this, M)[M], w(this, F)[F].disableCustomPlaybackForIOS10Plus ? void 0 : w(this, S)[S], w(this, F)[F].clickTrackingElement), w(this, q)[q] = new (w(this, B))[B].AdsLoader(w(this, L)[L]), w(this, q)[q].addEventListener(w(this, B)[B].AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, this.u, false), w(this, q)[q].addEventListener(w(this, B)[B].AdErrorEvent.Type.AD_ERROR, this.l, false);
}, e2.skipAd = function() {
w(this, D)[D] && w(this, D)[D].skip();
}, e2.discardAdBreak = function() {
w(this, D)[D] && w(this, D)[D].discardAdBreak();
}, e2.play = function() {
var t3 = this;
w(this, tt)[tt] = false, !w(this, x)[x].enabled && w(this, D)[D] ? w(this, D)[D].resume() : w(this, X)[X] || this.p().then(function() {
}).catch(function() {
t3.dispatchEvent(new O("pause"));
});
}, e2.pause = function() {
w(this, tt)[tt] = true, !w(this, x)[x].enabled && w(this, D)[D] ? w(this, D)[D].pause() : w(this, S)[S].pause();
}, e2.g = function(t3) {
w(this, $)[$] = [].concat(t3), this.dispatchEvent(new O(R.MEDIA_CUE_POINTS_CHANGE, { detail: { cuePoints: [].concat(w(this, $)[$]) } }));
}, e2.A = function(t3) {
var i3 = this.cuePoints.indexOf(t3);
i3 > -1 && (w(this, $)[$].splice(i3, 1), this.g(w(this, $)[$]));
}, e2.resizeAd = function(t3, i3) {
w(this, W)[W] = t3, w(this, _)[_] = i3, w(this, D)[D] && w(this, D)[D].resize(t3, i3, this.k()), w(this, M)[M].style.width = t3 + "px", w(this, M)[M].style.height = i3 + "px";
}, e2.reset = function(t3) {
void 0 === t3 && (t3 = false), t3 && (w(this, U)[U] = false, w(this, Q)[Q] = false, w(this, Z)[Z] = false), this.C(), w(this, $)[$] = [], w(this, tt)[tt] = false, w(this, K)[K] = void 0, w(this, D)[D] && w(this, D)[D].destroy(), w(this, D)[D] = void 0, w(this, B)[B].settings.setAutoPlayAdBreaks(true), t3 && this.P(), w(this, M)[M].style.display = "none";
}, e2.P = function() {
w(this, q)[q] && (w(this, q)[q].removeEventListener(w(this, B)[B].AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, this.u, false), w(this, q)[q].removeEventListener(w(this, B)[B].AdErrorEvent.Type.AD_ERROR, this.l, false), w(this, q)[q].destroy()), w(this, L)[L] && w(this, L)[L].destroy();
}, e2.destroy = function() {
var t3, i3, e3, n2, s2 = this;
this.reset(true), w(this, x)[x].destroy(), P.forEach(function(t4) {
w(s2, S)[S].removeEventListener(t4, s2.o);
}), null == (t3 = w(this, q)[q]) || t3.removeEventListener(w(this, B)[B].AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, this.u, false), null == (i3 = w(this, L)[L]) || i3.destroy(), null == (e3 = w(this, q)[q]) || e3.destroy(), w(this, U)[U] = false, w(this, Z)[Z] = false, w(this, Q)[Q] = false, null == (n2 = w(this, N)[N]) || n2.disconnect();
}, e2.isCustomPlaybackUsed = function() {
return false === w(this, B)[B].settings.getDisableCustomPlaybackForIOS10Plus() && !w(this, M)[M].querySelector("video");
}, e2.C = function() {
window.clearTimeout(w(this, X)[X]), window.clearTimeout(w(this, Y)[Y]), w(this, X)[X] = void 0, w(this, Y)[Y] = void 0, w(this, V)[V] = void 0, w(this, H)[H] = void 0, w(this, J)[J] = void 0, w(this, M)[M].style.display = "none", w(this, M)[M].classList.remove("nonlinear"), w(this, D)[D] && this.R();
}, e2.o = function(t3) {
var i3 = this;
if (w(this, x)[x].enabled || "volumechange" === t3.type) {
if ("timeupdate" === t3.type) {
if (w(this, D)[D]) {
var e3 = w(this, D)[D].getCuePoints().filter(function(t4) {
return t4 >= 0 && t4 < w(i3, x)[x].currentTime;
}).pop();
this.A(e3);
}
!w(this, U)[U] && w(this, Q)[Q] && w(this, S)[S].currentTime >= 0.5 && (this.dispatchEvent(new O(R.MEDIA_IMPRESSION)), w(this, U)[U] = true);
}
if ("play" !== t3.type || w(this, Q)[Q] || w(this, z)[z] || (this.dispatchEvent(new O(R.MEDIA_START)), w(this, Q)[Q] = true), "ended" === t3.type && (this.isCustomPlaybackUsed() && w(this, S)[S].currentTime === w(this, S)[S].duration && w(this, $)[$].indexOf(-1) > -1 && (w(this, S)[S].currentTime = w(this, S)[S].duration - 1e-5, w(this, Z)[Z] = true), w(this, q)[q].contentComplete(), w(this, D)[D] || this.T()), !window.ResizeObserver && w(this, F)[F].autoResize && "loadedmetadata" === t3.type) {
var n2 = w(this, S)[S], s2 = n2.offsetHeight, h2 = n2.offsetWidth;
w(this, W)[W] = h2, w(this, _)[_] = s2, this.R();
}
w(this, z)[z] && "volumechange" !== t3.type || this.dispatchEvent(new O(t3.type));
}
}, e2.S = function(t3) {
var i3 = this, e3 = w(this, B)[B].AdEvent;
switch (t3.type) {
case e3.Type.LOADED:
var n2 = t3.getAd();
w(this, K)[K] && 0 === w(this, $)[$].length ? w(this, K)[K]({ ad: n2, start: function() {
i3.M(), w(i3, K)[K] = void 0;
}, startWithoutReset: function() {
i3.M();
} }) : w(this, G)[G] = n2;
break;
case e3.Type.AD_BREAK_READY:
this.C(), w(this, K)[K] ? (w(this, K)[K]({ ad: w(this, G)[G], adBreakTime: t3.getAdData().adBreakTime, start: function() {
i3.M(), w(i3, K)[K] = void 0;
}, startWithoutReset: function() {
i3.M();
} }), w(this, G)[G] = void 0) : this.M();
break;
case e3.Type.STARTED:
var s2 = w(this, V)[V] = t3.getAd();
s2.getAdPodInfo().getAdPosition() > 1 && w(this, D)[D].setVolume(w(this, D)[D].getVolume()), w(this, M)[M].classList.remove("nonlinear"), this.R(), s2.isLinear() ? (w(this, x)[x].disable(), w(this, J)[J] = s2.getDuration(), w(this, H)[H] = 0) : (w(this, M)[M].classList.add("nonlinear"), this.I()), w(this, M)[M].style.display = "", w(this, tt)[tt] && (w(this, tt)[tt] = false, w(this, D)[D].pause());
break;
case e3.Type.ALL_ADS_COMPLETED:
if (w(this, Z)[Z]) return;
this.isCustomPlaybackUsed() && Boolean(w(this, V)[V]) && -1 !== w(this, V)[V].getAdPodInfo().getTimeOffset() && this.I(), this.reset();
break;
case e3.Type.CONTENT_PAUSE_REQUESTED:
this.C(), w(this, V)[V] = t3.getAd(), w(this, M)[M].style.display = "", w(this, S)[S].pause(), this.R(), w(this, V)[V] && this.A(w(this, V)[V].getAdPodInfo().getTimeOffset()), w(this, D)[D].setVolume(w(this, S)[S].muted ? 0 : w(this, S)[S].volume), w(this, x)[x].disable(), w(this, J)[J] = w(this, V)[V].getDuration(), w(this, H)[H] = 0;
break;
case e3.Type.CONTENT_RESUME_REQUESTED:
var h2 = Boolean(w(this, V)[V]);
if (h2) {
var r2 = w(this, D)[D].getVolume();
w(this, S)[S].muted = 0 === r2, w(this, S)[S].volume = w(this, it)[it];
}
w(this, Z)[Z] && (w(this, S)[S].currentTime = w(this, S)[S].duration + 1, w(this, Z)[Z] = false), w(this, S)[S].ended ? (this.reset(), this.T()) : this.C(), h2 && (w(this, tt)[tt] = false, this.I());
break;
case e3.Type.AD_METADATA:
this.g(w(this, D)[D].getCuePoints()), -1 === w(this, $)[$].indexOf(0) && (w(this, K)[K] ? w(this, K)[K]({ start: function() {
i3.I(), w(i3, K)[K] = void 0;
}, startWithoutReset: function() {
i3.I();
} }) : this.I());
break;
case e3.Type.AD_PROGRESS:
var o2 = t3.getAdData();
w(this, H)[H] = o2.currentTime, w(this, J)[J] = o2.duration;
break;
case e3.Type.LOG:
var a2 = t3.getAdData();
w(this, K)[K] ? w(this, K)[K]({ start: function() {
i3.I(), w(i3, K)[K] = void 0;
}, startWithoutReset: function() {
i3.I();
} }) : a2.adError && !w(this, V)[V] && this.I();
break;
case e3.Type.VOLUME_CHANGED:
var u2 = w(this, D)[D].getVolume();
u2 > 0 && (w(this, it)[it] = u2);
}
}, e2.l = function(t3) {
this.j(this.B(t3));
}, e2.u = function(t3) {
var i3 = this, e3 = w(this, B)[B], n2 = e3.AdEvent, s2 = e3.AdErrorEvent.Type.AD_ERROR;
window.clearTimeout(w(this, X)[X]);
var h2 = w(this, D)[D] = t3.getAdsManager(w(this, x)[x], w(this, I)[I]);
Object.keys(n2.Type).forEach(function(t4) {
h2.addEventListener(n2.Type[t4], function(e4) {
if (i3.S(e4), R[t4]) {
var n3 = ["LOG", "AD_PROGRESS"].indexOf(t4) > -1;
i3.dispatchEvent(new O(R[t4], { detail: { ad: e4.getAd() || w(i3, V)[V], adData: n3 ? e4.getAdData() : {} } }));
}
});
}), h2.addEventListener(s2, function(t4) {
return i3.j(i3.B(t4));
});
try {
var r2;
h2.init(w(this, W)[W], w(this, _)[_], this.k()), h2.setVolume(w(this, S)[S].muted ? 0 : w(this, S)[S].volume), null == (r2 = w(this, L)[L]) || r2.initialize(), w(this, K)[K] || this.M();
} catch (t4) {
this.j(new T(t4.message));
}
}, e2.M = function() {
if (w(this, Q)[Q] || (this.dispatchEvent(new O(R.MEDIA_START)), w(this, Q)[Q] = true), w(this, D)[D]) try {
w(this, D)[D].start();
} catch (t3) {
this.j(new T(t3.message));
}
else this.I();
}, e2.T = function() {
var t3 = this;
setTimeout(function() {
w(t3, U)[U] = false, w(t3, Q)[Q] = false, w(t3, Z)[Z] = false, t3.dispatchEvent(new O(R.MEDIA_STOP));
}, 1);
}, e2.v = function(t3) {
for (var i3, e3 = (function(t4, i4) {
var e4 = "undefined" != typeof Symbol && t4[Symbol.iterator] || t4["@@iterator"];
if (e4) return (e4 = e4.call(t4)).next.bind(e4);
if (Array.isArray(t4) || (e4 = (function(t5, i5) {
if (t5) {
if ("string" == typeof t5) return f(t5, i5);
var e5 = Object.prototype.toString.call(t5).slice(8, -1);
return "Object" === e5 && t5.constructor && (e5 = t5.constructor.name), "Map" === e5 || "Set" === e5 ? Array.from(t5) : "Arguments" === e5 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e5) ? f(t5, i5) : void 0;
}
})(t4))) {
e4 && (t4 = e4);
var n3 = 0;
return function() {
return n3 >= t4.length ? { done: true } : { done: false, value: t4[n3++] };
};
}
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
})(t3); !(i3 = e3()).done; ) {
var n2 = i3.value;
n2.contentBoxSize && 1 === n2.contentBoxSize.length ? (w(this, W)[W] = n2.contentBoxSize[0].inlineSize, w(this, _)[_] = n2.contentBoxSize[0].blockSize) : n2.contentBoxSize && n2.contentBoxSize.inlineSize ? (w(this, W)[W] = n2.contentBoxSize.inlineSize, w(this, _)[_] = n2.contentBoxSize.blockSize) : (w(this, W)[W] = n2.contentRect.width, w(this, _)[_] = n2.contentRect.height);
}
this.R();
}, e2.R = function() {
if (w(this, F)[F].autoResize && w(this, D)[D]) {
var t3 = w(this, V)[V], i3 = this.k();
t3 && !t3.isLinear() ? t3 && (t3.getWidth() > w(this, W)[W] || t3.getHeight() > w(this, _)[_] ? this.resizeAd(w(this, W)[W], w(this, _)[_]) : (w(this, D)[D].resize(t3.getWidth(), t3.getHeight() + 20, i3), w(this, M)[M].style.width = t3.getWidth() + "px", w(this, M)[M].style.height = t3.getHeight() + 20 + "px")) : this.resizeAd(w(this, W)[W], w(this, _)[_]);
}
}, e2.k = function() {
return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || w(this, S)[S].webkitDisplayingFullscreen ? w(this, B)[B].ViewMode.FULLSCREEN : w(this, B)[B].ViewMode.NORMAL;
}, e2.I = function() {
var t3 = this;
w(this, M)[M].style.display = "none", w(this, S)[S].ended || (w(this, x)[x].enable(), w(this, tt)[tt] ? (w(this, S)[S].pause(), this.dispatchEvent(new O("pause"))) : (this.p().then(function() {
}).catch(function() {
t3.dispatchEvent(new O("pause"));
}), this.dispatchEvent(new O("play")), this.dispatchEvent(new O(R.MEDIA_RESUMED))), w(this, tt)[tt] = false);
}, e2.B = function(t3) {
var i3 = t3.getError(), e3 = new T(i3.getMessage());
return e3.type = i3.getType(), e3.errorCode = i3.getErrorCode(), e3.vastErrorCode = i3.getVastErrorCode && i3.getVastErrorCode(), e3.innerError = i3.getInnerError(), e3;
}, e2.j = function(t3) {
var i3 = this;
this.dispatchEvent(new O(R.AD_ERROR, { detail: { error: t3 } })), this.C(), w(this, K)[K] ? w(this, K)[K]({ start: function() {
i3.I(), w(i3, K)[K] = void 0;
}, startWithoutReset: function() {
i3.I();
} }) : this.I();
}, s(i2, [{ key: "volume", get: function() {
return !w(this, x)[x].enabled && w(this, D)[D] ? w(this, D)[D].getVolume() : w(this, S)[S].volume;
}, set: function(t3) {
!w(this, x)[x].enabled && w(this, D)[D] && w(this, D)[D].setVolume(t3), w(this, S)[S].volume = t3;
} }, { key: "muted", get: function() {
return !w(this, x)[x].enabled && w(this, D)[D] ? 0 === w(this, D)[D].getVolume() : w(this, S)[S].muted;
}, set: function(t3) {
!w(this, x)[x].enabled && w(this, D)[D] && w(this, D)[D].setVolume(t3 ? 0 : w(this, it)[it]), w(this, S)[S].muted = t3;
} }, { key: "currentTime", get: function() {
return void 0 !== w(this, H)[H] ? w(this, H)[H] : w(this, S)[S].currentTime;
}, set: function(t3) {
w(this, x)[x].enabled && (w(this, S)[S].currentTime = t3);
} }, { key: "duration", get: function() {
return void 0 !== w(this, J)[J] ? w(this, J)[J] : w(this, S)[S].duration;
} }, { key: "cuePoints", get: function() {
return [].concat(w(this, $)[$]);
} }]), i2;
})(C);
function artplayerPluginVast(callback) {
return async (art) => {
const { template, constructor } = art;
const { createElement, setStyles } = constructor.utils;
const { $video, $player } = template;
await e();
const google = window.google;
const ima = google.ima;
const adsRenderingSettings = new ima.AdsRenderingSettings();
adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true;
adsRenderingSettings.enablePreloading = true;
const playerOptions = new E();
let isAdPlaying = false;
let imaPlayer = null;
let $container = null;
function createContainer() {
const container = createElement("div");
const id = `art-vast-${Date.now()}`;
container.id = id;
setStyles(container, {
position: "absolute",
inset: "0",
width: "100%",
height: "100%",
zIndex: "150",
backgroundColor: "black",
display: "none",
pointerEvents: "auto"
});
return container;
}
function initPlayer() {
if (imaPlayer)
return imaPlayer;
$container = createContainer();
$player.appendChild($container);
imaPlayer = new nt(ima, $video, $container, adsRenderingSettings, playerOptions);
imaPlayer.addEventListener("AdContentPauseRequested", () => {
isAdPlaying = true;
$container.style.display = "block";
});
imaPlayer.addEventListener("AdContentResumeRequested", () => {
isAdPlaying = false;
$container.style.display = "none";
});
imaPlayer.addEventListener("AdStarted", () => {
isAdPlaying = true;
$container.style.display = "block";
});
imaPlayer.addEventListener("AdError", (event) => {
console.error("VAST Ad Error:", event.detail);
isAdPlaying = false;
$container.style.display = "none";
});
return imaPlayer;
}
function destroyPlayer() {
if (imaPlayer?.destroy)
imaPlayer.destroy();
if ($container?.parentNode)
$container.parentNode.removeChild($container);
$container = null;
imaPlayer = null;
}
function playUrl(url, config = {}) {
if (isAdPlaying)
return;
if (!imaPlayer)
initPlayer();
const request = new ima.AdsRequest();
request.adTagUrl = url;
for (const key in config) {
request[key] = config[key];
}
imaPlayer.playAds(request);
}
function playRes(res, config = {}) {
if (isAdPlaying)
return;
if (!imaPlayer)
initPlayer();
const request = new ima.AdsRequest();
request.adsResponse = res;
for (const key in config) {
request[key] = config[key];
}
imaPlayer.playAds(request);
}
if (typeof callback === "function") {
await callback({
art,
playUrl,
playRes,
init: initPlayer,
ima,
adsRenderingSettings,
playerOptions,
get imaPlayer() {
return imaPlayer;
},
get container() {
return $container;
}
});
}
return {
name: "artplayerPluginVast",
destroy: destroyPlayer
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginVast = artplayerPluginVast;
}
export {
artplayerPluginVast as default
};
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-vtt-thumbnail.js v1.0.3
* artplayer-plugin-vtt-thumbnail.js v1.0.4
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof l[n]&&l[n],u=i.i||{},a=i.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,r){if(!a[t]){if(!e[t]){if(o[t])return o[t];var u="function"==typeof l[n]&&l[n];if(!r&&u)return u(t,!0);if(i)return i(t,!0);if(f&&"string"==typeof t)return f(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},p.cache={};var c=a[t]=new d.Module(t);e[t][0].call(c.exports,p,c,c.exports,l)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],l=d(n);"*"===t?Object.keys(l).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return l[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:l}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?l.__esModule?l.default:l:l[o]}})}),r}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=f,this.exports={}},d.modules=e,d.cache=a,d.parent=i,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=u,d.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(d,"root",{get:function(){return l[n]}}),l[n]=d;for(var s=0;s<t.length;s++)d(t[s]);if(r){var c=d(r);"object"==typeof exports&&"u">typeof module?module.exports=c:"function"==typeof define&&define.amd&&define(function(){return c})}}({dNMrC:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>u);var l=e("./getVttArray"),i=o.interopDefault(l);function u(e){return async t=>{let{constructor:{utils:{setStyle:r,isMobile:n,addClass:o}},template:{$progress:l}}=t,u=null,a=await (0,i.default)(e.vtt);return t.controls.add({name:"vtt-thumbnail",position:"top",index:20,style:e.style||{},mounted(e){o(e,"art-control-thumbnails"),t.on("setBar",async(o,i,f)=>{let d="played"===o&&f&&n;if("hover"===o||d){let o=l.clientWidth*i,f=i*t.duration;r(e,"display","flex");let s=a.find(e=>f>=e.start&&f<=e.end);if(!s)return r(e,"display","none");if(o>0&&o<l.clientWidth)r(e,"backgroundImage",`url(${s.url})`),r(e,"height",`${s.h}px`),r(e,"width",`${s.w}px`),r(e,"backgroundPosition",`-${s.x}px -${s.y}px`),o<=s.w/2?r(e,"left",0):o>l.clientWidth-s.w/2?r(e,"left",`${l.clientWidth-s.w}px`):r(e,"left",`${o-s.w/2}px`);else n||r(e,"display","none");d&&(clearTimeout(u),u=setTimeout(()=>{r(e,"display","none")},500))}})}}),{name:"artplayerPluginVttThumbnail"}}}"u">typeof window&&(window.artplayerPluginVttThumbnail=u)},{"./getVttArray":"53JTS","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"53JTS":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function l(e){var t,r,n;let o=e.split("."),l=o[0].split(":")||[],i=Number((t=o[1]||"0",r=3,n="0",t.length>r?String(t):((r-=t.length)>n.length&&(n+=n.repeat(r/n.length)),String(t)+n.slice(0,r))))/1e3;return 3600*Number(l[l.length-3]||0)+60*Number(l[l.length-2]||0)+Number(l[l.length-1]||0)+i}async function i(e=""){let t=(await (await fetch(e)).text()).split(/[\n\r]/g).filter(e=>e.trim()),r=[];for(let n=1;n<t.length;n+=2){let o=t[n],i=t[n+1];if(!i.trim())continue;let u=/((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?) ?-->?((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?)/,a=o.match(u),f=/(.*)#(\w{4})=(.*)/,d=i.match(f),s=Math.floor(l(a[1])),c=Math.floor(l(a[2])),p=d[1];if(!/^\/|(?:https?|ftp|file):\/\//i.test(p)){let t=e.split("/");t.pop(),t.push(p),p=t.join("/")}let h={start:s,end:c,url:p},y=d[2].split(""),m=d[3].split(",");for(let e=0;e<y.length;e++)h[y[e]]=m[e];r.push(h)}return r}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["dNMrC"],"dNMrC","parcelRequire4dc0",{});
!function(t,n){"object"===typeof exports&&"undefined"!==typeof module?module.exports=n():"function"==typeof define&&define.amd?(t.ArtplayerPluginVttThumbnail=n(),define(function(){return t.ArtplayerPluginVttThumbnail})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginVttThumbnail=n()}(this,function(){"use strict";function t(t){const n=t.split("."),e=n[0].split(":")||[],i=(l=n[1]||"0",o=3,s="0",l.length>o?String(l):((o-=l.length)>s.length&&(s+=s.repeat(o/s.length)),String(l)+s.slice(0,o)));var l,o,s;const r=Number(i)/1e3;return 3600*Number(e[e.length-3]||0)+60*Number(e[e.length-2]||0)+Number(e[e.length-1]||0)+r}function n(n){return async e=>{const{constructor:{utils:{setStyle:i,isMobile:l,addClass:o}},template:{$progress:s}}=e;let r=null;const a=await async function(n=""){const e=(await(await fetch(n)).text()).split(/[\n\r]/g).filter(t=>t.trim()),i=[];for(let l=1;l<e.length;l+=2){const o=e[l],s=e[l+1];if(!s.trim())continue;const r=/((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?) ?--> ?((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?)/,a=o.match(r),u=/(.*)#(\w{4})=(.*)/,d=s.match(u),c=Math.floor(t(a[1])),p=Math.floor(t(a[2]));let f=d[1];if(!/^\/|(?:https?|ftp|file):\/\//i.test(f)){const t=n.split("/");t.pop(),t.push(f),f=t.join("/")}const h={start:c,end:p,url:f},m=d[2].split(""),g=d[3].split(",");for(let t=0;t<m.length;t++)h[m[t]]=g[t];i.push(h)}return i}(n.vtt);return e.controls.add({name:"vtt-thumbnail",position:"top",index:20,style:n.style||{},mounted(t){o(t,"art-control-thumbnails"),e.on("setBar",async(n,o,u)=>{const d="played"===n&&u&&l;if("hover"===n||d){const n=s.clientWidth*o,u=o*e.duration;i(t,"display","flex");const c=a.find(t=>u>=t.start&&u<=t.end);if(!c)return i(t,"display","none");n>0&&n<s.clientWidth?function(t,n,e){i(t,"backgroundImage",`url(${n.url})`),i(t,"height",`${n.h}px`),i(t,"width",`${n.w}px`),i(t,"backgroundPosition",`-${n.x}px -${n.y}px`),e<=n.w/2?i(t,"left",0):e>s.clientWidth-n.w/2?i(t,"left",s.clientWidth-n.w+"px"):i(t,"left",e-n.w/2+"px")}(t,c,n):l||i(t,"display","none"),d&&(clearTimeout(r),r=setTimeout(()=>{i(t,"display","none")},500))}})}}),{name:"artplayerPluginVttThumbnail"}}}return"undefined"!==typeof window&&(window.artplayerPluginVttThumbnail=n),n});
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-vtt-thumbnail.js v1.0.3
* artplayer-plugin-vtt-thumbnail.js v1.0.4
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[n]&&u[n],l=i.i||{},c=i.cache||{},a="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function s(t,r){if(!c[t]){if(!e[t]){if(o[t])return o[t];var l="function"==typeof u[n]&&u[n];if(!r&&l)return l(t,!0);if(i)return i(t,!0);if(a&&"string"==typeof t)return a(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var p=c[t]=new s.Module(t);e[t][0].call(p.exports,d,p,p.exports,u)}return c[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],u=s(n);"*"===t?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:u}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?u.__esModule?u.default:u:u[o]}})}),r}return s(t)}}s.isParcelRequire=!0,s.Module=function(e){this.id=e,this.bundle=s,this.require=a,this.exports={}},s.modules=e,s.cache=c,s.parent=i,s.distDir=void 0,s.publicUrl=void 0,s.devServer=void 0,s.i=l,s.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(s,"root",{get:function(){return u[n]}}),u[n]=s;for(var f=0;f<t.length;f++)s(t[f]);if(r){var p=s(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({gJaKg:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return a});var u=e("@swc/helpers/cjs/_async_to_generator.cjs"),i=e("@swc/helpers/cjs/_ts_generator.cjs"),l=e("./getVttArray"),c=o.interopDefault(l);function a(e){return function(t){return(0,u._)(function(){var r,n,o,l,a,s,f;return(0,i._)(this,function(p){switch(p.label){case 0:return n=(r=t.constructor.utils).setStyle,o=r.isMobile,l=r.addClass,a=t.template.$progress,s=null,[4,(0,c.default)(e.vtt)];case 1:return f=p.sent(),t.controls.add({name:"vtt-thumbnail",position:"top",index:20,style:e.style||{},mounted:function(e){l(e,"art-control-thumbnails"),t.on("setBar",function(r,l,c){return(0,u._)(function(){var u,p,d,h;return(0,i._)(this,function(i){if(u="played"===r&&c&&o,"hover"===r||u){if(p=a.clientWidth*l,d=l*t.duration,n(e,"display","flex"),!(h=f.find(function(e){return d>=e.start&&d<=e.end})))return[2,n(e,"display","none")];if(p>0&&p<a.clientWidth)n(e,"backgroundImage","url(".concat(h.url,")")),n(e,"height","".concat(h.h,"px")),n(e,"width","".concat(h.w,"px")),n(e,"backgroundPosition","-".concat(h.x,"px -").concat(h.y,"px")),p<=h.w/2?n(e,"left",0):p>a.clientWidth-h.w/2?n(e,"left","".concat(a.clientWidth-h.w,"px")):n(e,"left","".concat(p-h.w/2,"px"));else o||n(e,"display","none");u&&(clearTimeout(s),s=setTimeout(function(){n(e,"display","none")},500))}return[2]})})()})}}),[2,{name:"artplayerPluginVttThumbnail"}]}})})()}}"u">typeof window&&(window.artplayerPluginVttThumbnail=a)},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","./getVttArray":"j5vq0","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cZn0e:[function(e,t,r,n){"use strict";function o(e,t,r,n,o,u,i){try{var l=e[u](i),c=l.value}catch(e){r(e);return}l.done?t(c):Promise.resolve(c).then(n,o)}r._=function(e){return function(){var t=this,r=arguments;return new Promise(function(n,u){var i=e.apply(t,r);function l(e){o(i,n,u,l,c,"next",e)}function c(e){o(i,n,u,l,c,"throw",e)}l(void 0)})}}},{}],eltGh:[function(e,t,r,n){"use strict";r._=function(e,t){var r,n,o,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),l=Object.defineProperty;return l(i,"next",{value:c(0)}),l(i,"throw",{value:c(1)}),l(i,"return",{value:c(2)}),"function"==typeof Symbol&&l(i,Symbol.iterator,{value:function(){return this}}),i;function c(l){return function(c){var a=[l,c];if(r)throw TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(u=0)),u;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,n=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){u=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){u.label=a[1];break}if(6===a[0]&&u.label<o[1]){u.label=o[1],o=a;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(a);break}o[2]&&u.ops.pop(),u.trys.pop();continue}a=t.call(e,u)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])thLine truncated
!function(t,n){"object"===typeof exports&&"undefined"!==typeof module?module.exports=n():"function"==typeof define&&define.amd?(t.ArtplayerPluginVttThumbnail=n(),define(function(){return t.ArtplayerPluginVttThumbnail})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerPluginVttThumbnail=n()}(this,function(){"use strict";var t=(t,n,e)=>new Promise((l,i)=>{var o=t=>{try{s(e.next(t))}catch(n){i(n)}},r=t=>{try{s(e.throw(t))}catch(n){i(n)}},s=t=>t.done?l(t.value):Promise.resolve(t.value).then(o,r);s((e=e.apply(t,n)).next())});function n(t){const n=t.split("."),e=n[0].split(":")||[],l=(i=n[1]||"0",o=3,r="0",i.length>o?String(i):((o-=i.length)>r.length&&(r+=r.repeat(o/r.length)),String(i)+r.slice(0,o)));var i,o,r;const s=Number(l)/1e3;return 3600*Number(e[e.length-3]||0)+60*Number(e[e.length-2]||0)+Number(e[e.length-1]||0)+s}function e(e){return l=>t(null,null,function*(){const{constructor:{utils:{setStyle:i,isMobile:o,addClass:r}},template:{$progress:s}}=l;let u=null;const d=yield function(e=""){return t(this,null,function*(){const t=(yield(yield fetch(e)).text()).split(/[\n\r]/g).filter(t=>t.trim()),l=[];for(let i=1;i<t.length;i+=2){const o=t[i],r=t[i+1];if(!r.trim())continue;const s=/((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?) ?--> ?((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?)/,u=o.match(s),d=/(.*)#(\w{4})=(.*)/,a=r.match(d),c=Math.floor(n(u[1])),p=Math.floor(n(u[2]));let f=a[1];if(!/^\/|(?:https?|ftp|file):\/\//i.test(f)){const t=e.split("/");t.pop(),t.push(f),f=t.join("/")}const h={start:c,end:p,url:f},m=a[2].split(""),y=a[3].split(",");for(let t=0;t<m.length;t++)h[m[t]]=y[t];l.push(h)}return l})}(e.vtt);return l.controls.add({name:"vtt-thumbnail",position:"top",index:20,style:e.style||{},mounted(n){r(n,"art-control-thumbnails"),l.on("setBar",(e,r,a)=>t(null,null,function*(){const t="played"===e&&a&&o;if("hover"===e||t){const e=s.clientWidth*r,a=r*l.duration;i(n,"display","flex");const c=d.find(t=>a>=t.start&&a<=t.end);if(!c)return i(n,"display","none");e>0&&e<s.clientWidth?function(t,n,e){i(t,"backgroundImage",`url(${n.url})`),i(t,"height",`${n.h}px`),i(t,"width",`${n.w}px`),i(t,"backgroundPosition",`-${n.x}px -${n.y}px`),e<=n.w/2?i(t,"left",0):e>s.clientWidth-n.w/2?i(t,"left",s.clientWidth-n.w+"px"):i(t,"left",e-n.w/2+"px")}(n,c,e):o||i(n,"display","none"),t&&(clearTimeout(u),u=setTimeout(()=>{i(n,"display","none")},500))}}))}}),{name:"artplayerPluginVttThumbnail"}})}return"undefined"!==typeof window&&(window.artplayerPluginVttThumbnail=e),e});
@@ -1,8 +1,127 @@
/*!
* artplayer-plugin-vtt-thumbnail.js v1.0.3
* artplayer-plugin-vtt-thumbnail.js v1.0.4
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof l[n]&&l[n],u=i.i||{},a=i.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!a[t]){if(!e[t]){if(o[t])return o[t];var u="function"==typeof l[n]&&l[n];if(!r&&u)return u(t,!0);if(i)return i(t,!0);if(f&&"string"==typeof t)return f(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},p.cache={};var s=a[t]=new c.Module(t);e[t][0].call(s.exports,p,s,s.exports,l)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],l=c(n);"*"===t?Object.keys(l).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return l[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:l}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?l.__esModule?l.default:l:l[o]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=a,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=u,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return l[n]}}),l[n]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var s=c(r);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({egVzc:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",()=>u);var l=e("./getVttArray"),i=o.interopDefault(l);function u(e){return async t=>{let{constructor:{utils:{setStyle:r,isMobile:n,addClass:o}},template:{$progress:l}}=t,u=null,a=await (0,i.default)(e.vtt);return t.controls.add({name:"vtt-thumbnail",position:"top",index:20,style:e.style||{},mounted(e){o(e,"art-control-thumbnails"),t.on("setBar",async(o,i,f)=>{let c="played"===o&&f&&n;if("hover"===o||c){let o=l.clientWidth*i,f=i*t.duration;r(e,"display","flex");let d=a.find(e=>f>=e.start&&f<=e.end);if(!d)return r(e,"display","none");if(o>0&&o<l.clientWidth)r(e,"backgroundImage",`url(${d.url})`),r(e,"height",`${d.h}px`),r(e,"width",`${d.w}px`),r(e,"backgroundPosition",`-${d.x}px -${d.y}px`),o<=d.w/2?r(e,"left",0):o>l.clientWidth-d.w/2?r(e,"left",`${l.clientWidth-d.w}px`):r(e,"left",`${o-d.w/2}px`);else n||r(e,"display","none");c&&(clearTimeout(u),u=setTimeout(()=>{r(e,"display","none")},500))}})}}),{name:"artplayerPluginVttThumbnail"}}}"u">typeof window&&(window.artplayerPluginVttThumbnail=u)},{"./getVttArray":"i9qdo","@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],i9qdo:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function l(e){var t,r,n;let o=e.split("."),l=o[0].split(":")||[],i=Number((t=o[1]||"0",r=3,n="0",t.length>r?String(t):((r-=t.length)>n.length&&(n+=n.repeat(r/n.length)),String(t)+n.slice(0,r))))/1e3;return 3600*Number(l[l.length-3]||0)+60*Number(l[l.length-2]||0)+Number(l[l.length-1]||0)+i}async function i(e=""){let t=(await (await fetch(e)).text()).split(/[\n\r]/g).filter(e=>e.trim()),r=[];for(let n=1;n<t.length;n+=2){let o=t[n],i=t[n+1];if(!i.trim())continue;let u=/((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?) ?-->?((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?)/,a=o.match(u),f=/(.*)#(\w{4})=(.*)/,c=i.match(f),d=Math.floor(l(a[1])),s=Math.floor(l(a[2])),p=c[1];if(!/^\/|(?:https?|ftp|file):\/\//i.test(p)){let t=e.split("/");t.pop(),t.push(p),p=t.join("/")}let h={start:d,end:s,url:p},y=c[2].split(""),m=c[3].split(",");for(let e=0;e<y.length;e++)h[y[e]]=m[e];r.push(h)}return r}o.defineInteropFlag(r),o.export(r,"default",()=>i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["egVzc"],"egVzc","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("egVzc");export{e as default};
function padEnd(str, targetLength, padString) {
if (str.length > targetLength) {
return String(str);
} else {
targetLength = targetLength - str.length;
if (targetLength > padString.length) {
padString += padString.repeat(targetLength / padString.length);
}
return String(str) + padString.slice(0, targetLength);
}
}
function t2d(time) {
const arr = time.split(".");
const left = arr[0].split(":") || [];
const right = padEnd(arr[1] || "0", 3, "0");
const ms = Number(right) / 1e3;
const h = Number(left[left.length - 3] || 0) * 3600;
const m = Number(left[left.length - 2] || 0) * 60;
const s = Number(left[left.length - 1] || 0);
return h + m + s + ms;
}
async function getVttArray(vttUrl = "") {
const vttString = await (await fetch(vttUrl)).text();
const lines = vttString.split(/[\n\r]/g).filter((item) => item.trim());
const vttArray = [];
for (let i = 1; i < lines.length; i += 2) {
const time = lines[i];
const text = lines[i + 1];
if (!text.trim())
continue;
const timeReg = /((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?) ?--> ?((?:\d{2}:)?(?:\d{2}:)?\d{2}(?:.\d{3})?)/;
const timeMatch = time.match(timeReg);
const textReg = /(.*)#(\w{4})=(.*)/;
const textMatch = text.match(textReg);
const start = Math.floor(t2d(timeMatch[1]));
const end = Math.floor(t2d(timeMatch[2]));
let url = textMatch[1];
const isAbsoluteUrl = /^\/|(?:https?|ftp|file):\/\//i.test(url);
if (!isAbsoluteUrl) {
const urlArr = vttUrl.split("/");
urlArr.pop();
urlArr.push(url);
url = urlArr.join("/");
}
const result = { start, end, url };
const keys = textMatch[2].split("");
const values = textMatch[3].split(",");
for (let j = 0; j < keys.length; j++) {
result[keys[j]] = values[j];
}
vttArray.push(result);
}
return vttArray;
}
function artplayerPluginVttThumbnail(option) {
return async (art) => {
const {
constructor: {
utils: { setStyle, isMobile, addClass }
},
template: { $progress }
} = art;
let timer = null;
const thumbnails = await getVttArray(option.vtt);
function showThumbnails($control, find, width) {
setStyle($control, "backgroundImage", `url(${find.url})`);
setStyle($control, "height", `${find.h}px`);
setStyle($control, "width", `${find.w}px`);
setStyle($control, "backgroundPosition", `-${find.x}px -${find.y}px`);
if (width <= find.w / 2) {
setStyle($control, "left", 0);
} else if (width > $progress.clientWidth - find.w / 2) {
setStyle($control, "left", `${$progress.clientWidth - find.w}px`);
} else {
setStyle($control, "left", `${width - find.w / 2}px`);
}
}
art.controls.add({
name: "vtt-thumbnail",
position: "top",
index: 20,
style: option.style || {},
mounted($control) {
addClass($control, "art-control-thumbnails");
art.on("setBar", async (type, percentage, event) => {
const isMobileDroging = type === "played" && event && isMobile;
if (type === "hover" || isMobileDroging) {
const width = $progress.clientWidth * percentage;
const second = percentage * art.duration;
setStyle($control, "display", "flex");
const find = thumbnails.find((item) => second >= item.start && second <= item.end);
if (!find)
return setStyle($control, "display", "none");
if (width > 0 && width < $progress.clientWidth) {
showThumbnails($control, find, width);
} else {
if (!isMobile) {
setStyle($control, "display", "none");
}
}
if (isMobileDroging) {
clearTimeout(timer);
timer = setTimeout(() => {
setStyle($control, "display", "none");
}, 500);
}
}
});
}
});
return {
name: "artplayerPluginVttThumbnail"
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginVttThumbnail = artplayerPluginVttThumbnail;
}
export {
artplayerPluginVttThumbnail as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-websr.js v1.0.0
* artplayer-plugin-websr.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,i,s){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},o="function"==typeof a[i]&&a[i],n=o.i||{},l=o.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!l[t]){if(!e[t]){if(s[t])return s[t];var n="function"==typeof a[i]&&a[i];if(!r&&n)return n(t,!0);if(o)return o(t,!0);if(d&&"string"==typeof t)return d(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}h.resolve=function(r){var i=e[t][1][r];return null!=i?i:r},h.cache={};var m=l[t]=new u.Module(t);e[t][0].call(m.exports,h,m,m.exports,a)}return l[t].exports;function h(e){var t=h.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],i=e[1],s=e[2]||e[0],a=u(i);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===s?Object.defineProperty(r,t,{enumerable:!0,value:a}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===s?a.__esModule?a.default:a:a[s]}})}),r}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=d,this.exports={}},u.modules=e,u.cache=l,u.parent=o,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=n,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return a[i]}}),a[i]=u;for(var c=0;c<t.length;c++)u(t[c]);if(r){var m=u(r);"object"==typeof exports&&"u">typeof module?module.exports=m:"function"==typeof define&&define.amd&&define(function(){return m})}}({"80h6e":[function(e,t,r,i){var s=e("@parcel/transformer-js/src/esmodule-helpers.js"),a=e("./Upscaler.js"),o=s.interopDefault(a);window.artplayerPluginWebsr=function(e={networkSize:"medium",compare:!1,weightsBaseUrl:"/weights",workerUrl:"/worker/main.js",videoScale:2}){return t=>{let{$video:r,$player:i}=t.template,s=document.createElement("canvas");function a(){let e=t.video,r=i.offsetWidth||640,s=i.offsetHeight||360,a=(e.videoWidth||640)/(e.videoHeight||360),o=r,n=s;return r/s>a?o=s*a:n=r/a,{displayWidth:o,displayHeight:n}}if(i.appendChild(s),s.style.position="absolute",s.style.zIndex="11",s.style.pointerEvents="none",s.style.top="50%",s.style.left="50%",s.style.transform="translate(-50%, -50%)",s.style.opacity="0",s.style.transition="opacity 0.2s ease",!o.default||!o.default.isSupported||!o.default.isSupported())return void console.warn("Upscaler is not supported in this environment");let n=new(0,o.default)({networkSize:e.networkSize||"medium",weightsBaseUrl:e.weightsBaseUrl||"/weights",workerUrl:e.workerUrl||"/worker/main.js",videoScale:e.videoScale||2}),l=!1;async function d(){if(!l){l=!0;try{await new Promise((e,t)=>{if(r.readyState>=1)return void e();let i=()=>{a(),e()},s=()=>{a(),t(Error("Failed to load video metadata"))},a=()=>{r.removeEventListener("loadedmetadata",i),r.removeEventListener("error",s)};r.addEventListener("loadedmetadata",i),r.addEventListener("error",s)}),await n.startRealtimeUpscale(r,s,e.networkSize||n.networkSize),requestAnimationFrame(()=>{s.style.opacity="1"})}catch(e){console.error("artplayer-plugin-upscaler: failed to start realtime",e)}}}let{displayWidth:u,displayHeight:c}=a();s.style.width=u+"px",s.style.height=c+"px";let m=50,h=!1,p=!!e.compare,f=document.createElement("div");function g(){if(p){let{displayWidth:e,displayHeight:t}=a(),r=`linear-gradient(to right, transparent 0%, transparent ${m}%, black ${m}%, black 100%)`;s.style.maskImage=r;let o=i.offsetWidth||640,n=i.offsetHeight||360,l=(o-e)/2+e*m/100;f.style.top=(n-t)/2+"px",f.style.left=l+"px",f.style.height=t+"px",f.style.transform="translateX(-50%)"}else s.style.maskImage="none"}function w(e){p&&(h=!0)}function y(e){if(p&&h){let t=i.getBoundingClientRect(),{displayWidth:r}=a(),s=i.offsetWidth||640;m=Math.max(0,Math.min(100,m=(e.clientX-t.left-(s-r)/2)/r*100)),g()}}function v(e){h=!1}return f.style.position="absolute",f.style.width="3px",f.style.backgroundColor="rgba(255, 255, 255, 0.75)",f.style.cursor="ew-resize",f.style.zIndex="12",f.style.pointerEvents="auto",f.style.display=p?"block":"none",f.style.boxShadow="0 0 2px rgba(0, 0, 0, 0.1)",p&&(i.appendChild(f),f.addEventListener("mousedown",w),document.addEventListener("mousemove",y),document.addEventListener("mouseup",v),g()),t.on("destroy",()=>{n&&"function"==typeof n.dispose&&n.dispose(),f.removeEventListener("mousedown",w),document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",v)}),t.on("resize",()=>{let{displayWidth:e,displayHeight:t}=a();s.style.width=e+"px",s.style.height=t+"px",g()}),t.on("play",()=>{d()}),{name:"artplayerPluginWebsr",upscaler:n,update:function(r={}){if(r&&"object"==typeof r){if(Object.prototype.hasOwnProperty.call(r,"compare")){let t=!!r.compare;e.compare=t,(p=t)?(f.parentNode||i.appendChild(f),f.style.display="block"Line truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginWebsr=t(),define(function(){return t.ArtplayerPluginWebsr})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginWebsr=t()}(this,function(){"use strict";var e=Object.defineProperty,t=(t,s,r)=>((t,s,r)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[s]=r)(t,"symbol"!==typeof s?s+"":s,r);const s=class e{static isSupported(){try{const e="undefined"!==typeof Worker,t="undefined"!==typeof OffscreenCanvas||"undefined"!==typeof document&&!!document.createElement("canvas").transferControlToOffscreen,s="undefined"!==typeof Blob;return e&&t&&s}catch{return!1}}static isVideoSupported(){try{return"undefined"!==typeof VideoEncoder&&"undefined"!==typeof VideoDecoder}catch{return!1}}constructor(t={}){const s=t.weightsBaseUrl||"/weights";this.networks=t.networks||{small:{name:"anime4k/cnn-2x-l",weightsUrl:`${s}/cnn-8.json`},medium:{name:"anime4k/cnn-2x-16",weightsUrl:`${s}/cnn-16.json`},large:{name:"anime4k/cnn-2x-28",weightsUrl:`${s}/cnn-28.json`}},this.weightsBaseUrl=s,this.networkSize=t.networkSize||"medium",this.workerUrl=t.workerUrl||"/worker/main.js",this.timeouts={...e.DEFAULT_TIMEOUTS,...t.timeouts||{}},this.delays={...e.DEFAULT_DELAYS,...t.delays||{}},this.imageScale="number"===typeof t.imageScale&&t.imageScale>0?t.imageScale:2,this.videoScale="number"===typeof t.videoScale&&t.videoScale>0?t.videoScale:2,this.weightsCache=new Map,this.workerInstance=null,this.messageHandlers={},this.progressCallback=null,this.processingType=null,this.realtimeLoopId=null,this.realtimeState=null,this.init()}init({prewarm:t=!0}={}){if(!e.isSupported())throw new Error("Upscaler is not supported in this environment");return t&&this.getWorker().postMessage({cmd:"isSupported"}),this}getWorker(){return this.workerInstance||(this.workerInstance=new Worker(this.workerUrl),this.workerInstance.onmessage=e=>this.handleWorkerMessage(e)),this.workerInstance}static extractProgressValue(e){const t=e.data??e.progress??e.value??e.percentage;return"number"===typeof t?Math.min(100,Math.max(0,Math.round(t))):null}handleBlobResponse(e){const t="video"===this.processingType?"videoBlob":"imageBlob",s=this.messageHandlers[t];e.data instanceof Blob&&s&&s({[t]:e.data})}requestBlob(){const e="video"===this.processingType?"getVideoBlob":"getImageBlob";this.getWorker().postMessage({cmd:e})}handleWorkerMessage(t){const{data:s}=t;if(!s.cmd)return;const{cmd:r}=s;if("progress"===r){const t=e.extractProgressValue(s);null!==t&&this.progressCallback&&this.progressCallback(t),this.messageHandlers.progress&&this.messageHandlers.progress(s)}else"finished"===r?s.data instanceof Blob?this.handleBlobResponse(s):this.requestBlob():this.messageHandlers[r]&&this.messageHandlers[r](s)}async loadWeights(e){if(this.validateNetworkSize(e),this.weightsCache.has(e))return this.weightsCache.get(e);const t=this.networks[e],s=await fetch(t.weightsUrl);if(!s.ok)throw new Error(`Failed to fetch weights: ${s.statusText}`);const r=await s.json();return this.weightsCache.set(e,r),r}static loadImageMetadata(e,t){return new Promise((s,r)=>{const i=new Blob([e],{type:t}),a=URL.createObjectURL(i),n=new Image;n.onload=()=>{URL.revokeObjectURL(a),s({width:n.width,height:n.height})},n.onerror=()=>{URL.revokeObjectURL(a),r(new Error("Failed to load image"))},n.src=a})}static loadVideoMetadata(e,t){return new Promise((s,r)=>{const i=URL.createObjectURL(e),a=document.createElement("video");a.src=i;const n=setTimeout(()=>r(new Error("Timeout")),t);a.onloadedmetadata=()=>{clearTimeout(n),URL.revokeObjectURL(i),s({width:a.videoWidth,height:a.videoHeight,duration:a.duration})},a.onerror=()=>{clearTimeout(n),URL.revokeObjectURL(i),r(new Error("Failed to load video"))}})}createOffscreenCanvas(e,t,s=2){const r="number"===typeof s&&s>0?s:1,i=document.createElement("canvas");if(i.width=e*r,i.height=t*r,"function"!==typeof i.transferControlToOffscreen)throw new TypeError("OffscreenCanvas is not supported in this environment");return i.transferControlToOffscreen()}createBlobPromise(e,t){return new Promise((s,r)=>{const i=setTimeout(()=>{this.messageHandlers[e]&&(delete this.messageHandlers[e],r(new Error(`${e} processing timeout`)))},t);this.messageHandlers[e]=t=>{delete this.messageHandlers[e],clearTimeout(i);const a=t[e]||t.data;a instanceof Blob?s(a):r(new Error(`Invalid ${e} format`))}})}validateNetworkSize(e){if(!this.networks[e])throw new Error(`Invalid networkSize: use one of ${Object.keys(this.networks).join(", ")}`)}async upscaleImage(t,s,r){if(!t)throw new Error("Image file is required");const i=s||this.networkSize;this.validateNetworkSize(i),this.processingType="image";const a=await t.arrayBuffer(),n=t.type||"image/jpeg",{width:o,height:d}=await e.loadImageMetadata(a,n),l=await this.loadWeights(i),c=this.networks[i],h="number"===typeof r&&r>0?r:this.imageScale,[m,u]=[this.createOffscreenCanvas(o,d,h),this.createOffscreLine truncated
@@ -1,8 +1,7 @@
/*!
* artplayer-plugin-websr.js v1.0.0
* artplayer-plugin-websr.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,s){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof o[n]&&o[n],a=i.i||{},c=i.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!c[t]){if(!e[t]){if(s[t])return s[t];var a="function"==typeof o[n]&&o[n];if(!r&&a)return a(t,!0);if(i)return i(t,!0);if(l&&"string"==typeof t)return l(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}h.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},h.cache={};var f=c[t]=new u.Module(t);e[t][0].call(f.exports,h,f,f.exports,o)}return c[t].exports;function h(e){var t=h.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],s=e[2]||e[0],o=u(n);"*"===t?Object.keys(o).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return o[e]}})}):"*"===s?Object.defineProperty(r,t,{enumerable:!0,value:o}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===s?o.__esModule?o.default:o:o[s]}})}),r}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=l,this.exports={}},u.modules=e,u.cache=c,u.parent=i,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=a,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return o[n]}}),o[n]=u;for(var d=0;d<t.length;d++)u(t[d]);if(r){var f=u(r);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({hrC3O:[function(e,t,r,n){var s=e("@parcel/transformer-js/src/esmodule-helpers.js"),o=e("@swc/helpers/cjs/_async_to_generator.cjs"),i=e("@swc/helpers/cjs/_type_of.cjs"),a=e("@swc/helpers/cjs/_ts_generator.cjs"),c=e("./Upscaler.js"),l=s.interopDefault(c);window.artplayerPluginWebsr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{networkSize:"medium",compare:!1,weightsBaseUrl:"/weights",workerUrl:"/worker/main.js",videoScale:2};return function(t){var r=t.template,n=r.$video,s=r.$player,c=document.createElement("canvas");function u(){var e=t.video,r=s.offsetWidth||640,n=s.offsetHeight||360,o=(e.videoWidth||640)/(e.videoHeight||360),i=r,a=n;return r/n>o?i=n*o:a=r/o,{displayWidth:i,displayHeight:a}}if(s.appendChild(c),c.style.position="absolute",c.style.zIndex="11",c.style.pointerEvents="none",c.style.top="50%",c.style.left="50%",c.style.transform="translate(-50%, -50%)",c.style.opacity="0",c.style.transition="opacity 0.2s ease",!l.default||!l.default.isSupported||!l.default.isSupported())return void console.warn("Upscaler is not supported in this environment");var d=new(0,l.default)({networkSize:e.networkSize||"medium",weightsBaseUrl:e.weightsBaseUrl||"/weights",workerUrl:e.workerUrl||"/worker/main.js",videoScale:e.videoScale||2}),f=!1;function h(){return(0,o._)(function(){return(0,a._)(this,function(t){switch(t.label){case 0:if(f)return[2];f=!0,t.label=1;case 1:return t.trys.push([1,4,,5]),[4,new Promise(function(e,t){if(n.readyState>=1)return void e();var r=function(){o(),e()},s=function(){o(),t(Error("Failed to load video metadata"))},o=function(){n.removeEventListener("loadedmetadata",r),n.removeEventListener("error",s)};n.addEventListener("loadedmetadata",r),n.addEventListener("error",s)})];case 2:return t.sent(),[4,d.startRealtimeUpscale(n,c,e.networkSize||d.networkSize)];case 3:return t.sent(),requestAnimationFrame(function(){c.style.opacity="1"}),[3,5];case 4:return console.error("artplayer-plugin-upscaler: failed to start realtime",t.sent()),[3,5];case 5:return[2]}})})()}var p=u(),m=p.displayWidth,v=p.displayHeight;c.style.width=m+"px",c.style.height=v+"px";var g=50,y=!1,w=!!e.compare,b=document.createElement("div");function k(){if(w){var e=u(),t=e.displayWidth,r=e.displayHeight,n="linear-gradient(to right, transparent 0%, transparent ".concat(g,"%, black ").concat(g,"%, black 100%)");c.style.maskImage=n;var o=s.offsetWidth||640,i=s.offsetHeight||360,a=(o-t)/2+t*g/100;b.style.top=(i-r)/2+"px",b.style.left=a+"px",b.style.height=r+"px",b.style.transform="translateX(-50%)"}else c.style.maskImage="none"}function _(e){w&&(y=!0)}function j(e){if(w&&y){var t=s.getBoundingClientRect(),r=u().displayWidth,n=s.offsetWidth||640;g=Math.max(0,Math.min(100,g=(e.clientX-t.left-(n-r)/2)/r*100)),k()}}function E(e){y=!1}return b.style.position="absolute",b.style.width="3px",b.style.backgroundColor="rgba(255, 255, 255, 0.75)",b.style.cursor="ew-resize",b.style.zIndex="12",b.style.pointerEvents="auto",b.style.display=w?"block":"none",b.style.boxShadow="0 0 2px rgba(0, 0, 0, 0.1)",w&&(s.appendChild(b),b.addEventListener("mousedown",_),document.addEventListener("mousemove",j),document.addEventListener("mouseup",E),k()),t.on("destroy",function(){d&&"function"==typeof d.dispose&&d.dispose(),b.removeEventListeLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerPluginWebsr=t(),define(function(){return t.ArtplayerPluginWebsr})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerPluginWebsr=t()}(this,function(){"use strict";var e=Object.defineProperty,t=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,i=Math.pow,n=(t,r,s)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[r]=s,o=(e,i)=>{for(var o in i||(i={}))r.call(i,o)&&n(e,o,i[o]);if(t)for(var o of t(i))s.call(i,o)&&n(e,o,i[o]);return e},a=(e,t,r)=>n(e,"symbol"!==typeof t?t+"":t,r),l=(e,t,r)=>new Promise((s,i)=>{var n=e=>{try{a(r.next(e))}catch(t){i(t)}},o=e=>{try{a(r.throw(e))}catch(t){i(t)}},a=e=>e.done?s(e.value):Promise.resolve(e.value).then(n,o);a((r=r.apply(e,t)).next())});const d=class e{static isSupported(){try{const e="undefined"!==typeof Worker,t="undefined"!==typeof OffscreenCanvas||"undefined"!==typeof document&&!!document.createElement("canvas").transferControlToOffscreen,r="undefined"!==typeof Blob;return e&&t&&r}catch(e){return!1}}static isVideoSupported(){try{return"undefined"!==typeof VideoEncoder&&"undefined"!==typeof VideoDecoder}catch(e){return!1}}constructor(t={}){const r=t.weightsBaseUrl||"/weights";this.networks=t.networks||{small:{name:"anime4k/cnn-2x-l",weightsUrl:`${r}/cnn-8.json`},medium:{name:"anime4k/cnn-2x-16",weightsUrl:`${r}/cnn-16.json`},large:{name:"anime4k/cnn-2x-28",weightsUrl:`${r}/cnn-28.json`}},this.weightsBaseUrl=r,this.networkSize=t.networkSize||"medium",this.workerUrl=t.workerUrl||"/worker/main.js",this.timeouts=o(o({},e.DEFAULT_TIMEOUTS),t.timeouts||{}),this.delays=o(o({},e.DEFAULT_DELAYS),t.delays||{}),this.imageScale="number"===typeof t.imageScale&&t.imageScale>0?t.imageScale:2,this.videoScale="number"===typeof t.videoScale&&t.videoScale>0?t.videoScale:2,this.weightsCache=new Map,this.workerInstance=null,this.messageHandlers={},this.progressCallback=null,this.processingType=null,this.realtimeLoopId=null,this.realtimeState=null,this.init()}init({prewarm:t=!0}={}){if(!e.isSupported())throw new Error("Upscaler is not supported in this environment");return t&&this.getWorker().postMessage({cmd:"isSupported"}),this}getWorker(){return this.workerInstance||(this.workerInstance=new Worker(this.workerUrl),this.workerInstance.onmessage=e=>this.handleWorkerMessage(e)),this.workerInstance}static extractProgressValue(e){var t,r,s;const i=null!=(s=null!=(r=null!=(t=e.data)?t:e.progress)?r:e.value)?s:e.percentage;return"number"===typeof i?Math.min(100,Math.max(0,Math.round(i))):null}handleBlobResponse(e){const t="video"===this.processingType?"videoBlob":"imageBlob",r=this.messageHandlers[t];e.data instanceof Blob&&r&&r({[t]:e.data})}requestBlob(){const e="video"===this.processingType?"getVideoBlob":"getImageBlob";this.getWorker().postMessage({cmd:e})}handleWorkerMessage(t){const{data:r}=t;if(!r.cmd)return;const{cmd:s}=r;if("progress"===s){const t=e.extractProgressValue(r);null!==t&&this.progressCallback&&this.progressCallback(t),this.messageHandlers.progress&&this.messageHandlers.progress(r)}else"finished"===s?r.data instanceof Blob?this.handleBlobResponse(r):this.requestBlob():this.messageHandlers[s]&&this.messageHandlers[s](r)}loadWeights(e){return l(this,null,function*(){if(this.validateNetworkSize(e),this.weightsCache.has(e))return this.weightsCache.get(e);const t=this.networks[e],r=yield fetch(t.weightsUrl);if(!r.ok)throw new Error(`Failed to fetch weights: ${r.statusText}`);const s=yield r.json();return this.weightsCache.set(e,s),s})}static loadImageMetadata(e,t){return new Promise((r,s)=>{const i=new Blob([e],{type:t}),n=URL.createObjectURL(i),o=new Image;o.onload=()=>{URL.revokeObjectURL(n),r({width:o.width,height:o.height})},o.onerror=()=>{URL.revokeObjectURL(n),s(new Error("Failed to load image"))},o.src=n})}static loadVideoMetadata(e,t){return new Promise((r,s)=>{const i=URL.createObjectURL(e),n=document.createElement("video");n.src=i;const o=setTimeout(()=>s(new Error("Timeout")),t);n.onloadedmetadata=()=>{clearTimeout(o),URL.revokeObjectURL(i),r({width:n.videoWidth,height:n.videoHeight,duration:n.duration})},n.onerror=()=>{clearTimeout(o),URL.revokeObjectURL(i),s(new Error("Failed to load video"))}})}createOffscreenCanvas(e,t,r=2){const s="number"===typeof r&&r>0?r:1,i=document.createElement("canvas");if(i.width=e*s,i.height=t*s,"function"!==typeof i.transferControlToOffscreen)throw new TypeError("OffscreenCanvas is not supported in this environment");return i.transferControlToOffscreen()}createBlobPromise(e,t){return new Promise((r,s)=>{const i=setTimeout(()=>{this.messageHandlers[e]&&(delete this.messageHandlers[e],s(new Error(`${e} processing timeout`)))},t);this.messageHandlers[e]=t=>{delete this.messageHandlers[e],clearTimeout(i);const n=t[e]||t.data;n instanceof Blob?r(n):s(new Error(`Invalid ${e} format`))}})}validateNetworkSize(e){if(!this.netLine truncated
+722 -3
View File
@@ -1,8 +1,727 @@
/*!
* artplayer-plugin-websr.js v1.0.0
* artplayer-plugin-websr.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,i,a){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof o[i]&&o[i],n=s.i||{},l=s.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!l[t]){if(!e[t]){if(a[t])return a[t];var n="function"==typeof o[i]&&o[i];if(!r&&n)return n(t,!0);if(s)return s(t,!0);if(d&&"string"==typeof t)return d(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}h.resolve=function(r){var i=e[t][1][r];return null!=i?i:r},h.cache={};var m=l[t]=new u.Module(t);e[t][0].call(m.exports,h,m,m.exports,o)}return l[t].exports;function h(e){var t=h.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],i=e[1],a=e[2]||e[0],o=u(i);"*"===t?Object.keys(o).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return o[e]}})}):"*"===a?Object.defineProperty(r,t,{enumerable:!0,value:o}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===a?o.__esModule?o.default:o:o[a]}})}),r}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=d,this.exports={}},u.modules=e,u.cache=l,u.parent=s,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=n,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return o[i]}}),o[i]=u;for(var c=0;c<t.length;c++)u(t[c]);if(r){var m=u(r);"object"==typeof exports&&"u">typeof module?module.exports=m:"function"==typeof define&&define.amd&&define(function(){return m})}}({hOg5u:[function(e,t,r,i){var a=e("@parcel/transformer-js/src/esmodule-helpers.js"),o=e("./Upscaler.js"),s=a.interopDefault(o);window.artplayerPluginWebsr=function(e={networkSize:"medium",compare:!1,weightsBaseUrl:"/weights",workerUrl:"/worker/main.js",videoScale:2}){return t=>{let{$video:r,$player:i}=t.template,a=document.createElement("canvas");function o(){let e=t.video,r=i.offsetWidth||640,a=i.offsetHeight||360,o=(e.videoWidth||640)/(e.videoHeight||360),s=r,n=a;return r/a>o?s=a*o:n=r/o,{displayWidth:s,displayHeight:n}}if(i.appendChild(a),a.style.position="absolute",a.style.zIndex="11",a.style.pointerEvents="none",a.style.top="50%",a.style.left="50%",a.style.transform="translate(-50%, -50%)",a.style.opacity="0",a.style.transition="opacity 0.2s ease",!s.default||!s.default.isSupported||!s.default.isSupported())return void console.warn("Upscaler is not supported in this environment");let n=new(0,s.default)({networkSize:e.networkSize||"medium",weightsBaseUrl:e.weightsBaseUrl||"/weights",workerUrl:e.workerUrl||"/worker/main.js",videoScale:e.videoScale||2}),l=!1;async function d(){if(!l){l=!0;try{await new Promise((e,t)=>{if(r.readyState>=1)return void e();let i=()=>{o(),e()},a=()=>{o(),t(Error("Failed to load video metadata"))},o=()=>{r.removeEventListener("loadedmetadata",i),r.removeEventListener("error",a)};r.addEventListener("loadedmetadata",i),r.addEventListener("error",a)}),await n.startRealtimeUpscale(r,a,e.networkSize||n.networkSize),requestAnimationFrame(()=>{a.style.opacity="1"})}catch(e){console.error("artplayer-plugin-upscaler: failed to start realtime",e)}}}let{displayWidth:u,displayHeight:c}=o();a.style.width=u+"px",a.style.height=c+"px";let m=50,h=!1,p=!!e.compare,f=document.createElement("div");function g(){if(p){let{displayWidth:e,displayHeight:t}=o(),r=`linear-gradient(to right, transparent 0%, transparent ${m}%, black ${m}%, black 100%)`;a.style.maskImage=r;let s=i.offsetWidth||640,n=i.offsetHeight||360,l=(s-e)/2+e*m/100;f.style.top=(n-t)/2+"px",f.style.left=l+"px",f.style.height=t+"px",f.style.transform="translateX(-50%)"}else a.style.maskImage="none"}function w(e){p&&(h=!0)}function y(e){if(p&&h){let t=i.getBoundingClientRect(),{displayWidth:r}=o(),a=i.offsetWidth||640;m=Math.max(0,Math.min(100,m=(e.clientX-t.left-(a-r)/2)/r*100)),g()}}function v(e){h=!1}return f.style.position="absolute",f.style.width="3px",f.style.backgroundColor="rgba(255, 255, 255, 0.75)",f.style.cursor="ew-resize",f.style.zIndex="12",f.style.pointerEvents="auto",f.style.display=p?"block":"none",f.style.boxShadow="0 0 2px rgba(0, 0, 0, 0.1)",p&&(i.appendChild(f),f.addEventListener("mousedown",w),document.addEventListener("mousemove",y),document.addEventListener("mouseup",v),g()),t.on("destroy",()=>{n&&"function"==typeof n.dispose&&n.dispose(),f.removeEventListener("mousedown",w),document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",v)}),t.on("resize",()=>{let{displayWidth:e,displayHeight:t}=o();a.style.width=e+"px",a.style.height=t+"px",g()}),t.on("play",()=>{d()}),{name:"artplayerPluginWebsr",upscaler:n,update:function(r={}){if(r&&"object"==typeof r){if(Object.prototype.hasOwnProperty.call(r,"compare")){let t=!!r.compare;e.compare=t,(p=t)?(f.parentNode||i.appendChild(f),f.style.display="block",fLine truncated
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
const _Upscaler = class _Upscaler {
static isSupported() {
try {
const hasWorker = typeof Worker !== "undefined";
const hasOffscreen = typeof OffscreenCanvas !== "undefined" || typeof document !== "undefined" && !!document.createElement("canvas").transferControlToOffscreen;
const hasBlob = typeof Blob !== "undefined";
return hasWorker && hasOffscreen && hasBlob;
} catch {
return false;
}
}
static isVideoSupported() {
try {
return typeof VideoEncoder !== "undefined" && typeof VideoDecoder !== "undefined";
} catch {
return false;
}
}
constructor(options = {}) {
const weightsBaseUrl = options.weightsBaseUrl || "/weights";
this.networks = options.networks || {
small: {
name: "anime4k/cnn-2x-l",
weightsUrl: `${weightsBaseUrl}/cnn-8.json`
},
medium: {
name: "anime4k/cnn-2x-16",
weightsUrl: `${weightsBaseUrl}/cnn-16.json`
},
large: {
name: "anime4k/cnn-2x-28",
weightsUrl: `${weightsBaseUrl}/cnn-28.json`
}
};
this.weightsBaseUrl = weightsBaseUrl;
this.networkSize = options.networkSize || "medium";
this.workerUrl = options.workerUrl || "/worker/main.js";
this.timeouts = {
..._Upscaler.DEFAULT_TIMEOUTS,
...options.timeouts || {}
};
this.delays = { ..._Upscaler.DEFAULT_DELAYS, ...options.delays || {} };
this.imageScale = typeof options.imageScale === "number" && options.imageScale > 0 ? options.imageScale : 2;
this.videoScale = typeof options.videoScale === "number" && options.videoScale > 0 ? options.videoScale : 2;
this.weightsCache = /* @__PURE__ */ new Map();
this.workerInstance = null;
this.messageHandlers = {};
this.progressCallback = null;
this.processingType = null;
this.realtimeLoopId = null;
this.realtimeState = null;
this.init();
}
init({ prewarm = true } = {}) {
if (!_Upscaler.isSupported()) {
throw new Error("Upscaler is not supported in this environment");
}
if (prewarm) {
this.getWorker().postMessage({ cmd: "isSupported" });
}
return this;
}
getWorker() {
if (!this.workerInstance) {
this.workerInstance = new Worker(this.workerUrl);
this.workerInstance.onmessage = (event) => this.handleWorkerMessage(event);
}
return this.workerInstance;
}
static extractProgressValue(data) {
const value = data.data ?? data.progress ?? data.value ?? data.percentage;
return typeof value === "number" ? Math.min(100, Math.max(0, Math.round(value))) : null;
}
handleBlobResponse(data) {
const blobType = this.processingType === "video" ? "videoBlob" : "imageBlob";
const handler = this.messageHandlers[blobType];
if (data.data instanceof Blob && handler) {
handler({ [blobType]: data.data });
}
}
requestBlob() {
const cmd = this.processingType === "video" ? "getVideoBlob" : "getImageBlob";
this.getWorker().postMessage({ cmd });
}
handleWorkerMessage(event) {
const { data } = event;
if (!data.cmd)
return;
const { cmd } = data;
if (cmd === "progress") {
const progress = _Upscaler.extractProgressValue(data);
if (progress !== null && this.progressCallback) {
this.progressCallback(progress);
}
if (this.messageHandlers.progress)
this.messageHandlers.progress(data);
} else if (cmd === "finished") {
if (data.data instanceof Blob) {
this.handleBlobResponse(data);
} else {
this.requestBlob();
}
} else if (this.messageHandlers[cmd]) {
this.messageHandlers[cmd](data);
}
}
async loadWeights(networkSize) {
this.validateNetworkSize(networkSize);
if (this.weightsCache.has(networkSize)) {
return this.weightsCache.get(networkSize);
}
const network = this.networks[networkSize];
const response = await fetch(network.weightsUrl);
if (!response.ok)
throw new Error(`Failed to fetch weights: ${response.statusText}`);
const weights = await response.json();
this.weightsCache.set(networkSize, weights);
return weights;
}
static loadImageMetadata(arrayBuffer, mimeType) {
return new Promise((resolve, reject) => {
const blob = new Blob([arrayBuffer], { type: mimeType });
const url = URL.createObjectURL(blob);
const img = new Image();
img.onload = () => {
URL.revokeObjectURL(url);
resolve({ width: img.width, height: img.height });
};
img.onerror = () => {
URL.revokeObjectURL(url);
reject(new Error("Failed to load image"));
};
img.src = url;
});
}
static loadVideoMetadata(file, timeoutMs) {
return new Promise((resolve, reject) => {
const url = URL.createObjectURL(file);
const video = document.createElement("video");
video.src = url;
const timeout = setTimeout(() => reject(new Error("Timeout")), timeoutMs);
video.onloadedmetadata = () => {
clearTimeout(timeout);
URL.revokeObjectURL(url);
resolve({
width: video.videoWidth,
height: video.videoHeight,
duration: video.duration
});
};
video.onerror = () => {
clearTimeout(timeout);
URL.revokeObjectURL(url);
reject(new Error("Failed to load video"));
};
});
}
createOffscreenCanvas(width, height, scale = 2) {
const factor = typeof scale === "number" && scale > 0 ? scale : 1;
const canvas = document.createElement("canvas");
canvas.width = width * factor;
canvas.height = height * factor;
if (typeof canvas.transferControlToOffscreen !== "function") {
throw new TypeError("OffscreenCanvas is not supported in this environment");
}
return canvas.transferControlToOffscreen();
}
createBlobPromise(blobType, timeout) {
return new Promise((resolve, reject) => {
const timeoutId = setTimeout(() => {
if (this.messageHandlers[blobType]) {
delete this.messageHandlers[blobType];
reject(new Error(`${blobType} processing timeout`));
}
}, timeout);
this.messageHandlers[blobType] = (msg) => {
delete this.messageHandlers[blobType];
clearTimeout(timeoutId);
const blob = msg[blobType] || msg.data;
if (blob instanceof Blob) {
resolve(blob);
} else {
reject(new Error(`Invalid ${blobType} format`));
}
};
});
}
validateNetworkSize(size) {
if (!this.networks[size]) {
throw new Error(
`Invalid networkSize: use one of ${Object.keys(this.networks).join(", ")}`
);
}
}
async upscaleImage(imageFile, networkSize, scaleOverride) {
if (!imageFile)
throw new Error("Image file is required");
const size = networkSize || this.networkSize;
this.validateNetworkSize(size);
this.processingType = "image";
const arrayBuffer = await imageFile.arrayBuffer();
const mimeType = imageFile.type || "image/jpeg";
const { width, height } = await _Upscaler.loadImageMetadata(
arrayBuffer,
mimeType
);
const weights = await this.loadWeights(size);
const network = this.networks[size];
const scale = typeof scaleOverride === "number" && scaleOverride > 0 ? scaleOverride : this.imageScale;
const [canvasUp, canvasOrig] = [
this.createOffscreenCanvas(width, height, scale),
this.createOffscreenCanvas(width, height, 1)
];
const blobPromise = this.createBlobPromise(
"imageBlob",
this.timeouts.IMAGE
);
this.getWorker().postMessage(
{
cmd: "init",
data: {
imageArrayBuffer: arrayBuffer,
imageMimeType: mimeType,
upscaled: canvasUp,
original: canvasOrig,
resolution: { width, height },
network_name: network.name,
weights
}
},
[canvasUp, canvasOrig]
);
setTimeout(() => {
this.getWorker().postMessage({
cmd: "network",
data: {
name: network.name,
imageArrayBuffer: arrayBuffer,
imageMimeType: mimeType,
weights
}
});
setTimeout(() => {
this.getWorker().postMessage({
cmd: "getImageBlob",
data: { imageArrayBuffer: arrayBuffer, imageMimeType: mimeType }
});
}, this.delays.NETWORK);
}, this.delays.INIT);
return blobPromise;
}
async upscaleVideo(videoFile, networkSize, scaleOverride) {
if (!videoFile)
throw new Error("Video file is required");
const size = networkSize || this.networkSize;
this.validateNetworkSize(size);
if (!_Upscaler.isVideoSupported()) {
throw new Error("WebCodecs API not supported. Requires Chrome 94+");
}
this.processingType = "video";
const { width, height, duration } = await _Upscaler.loadVideoMetadata(
videoFile,
this.timeouts.METADATA
);
const weights = await this.loadWeights(size);
const network = this.networks[size];
const scale = typeof scaleOverride === "number" && scaleOverride > 0 ? scaleOverride : this.videoScale;
const [canvasOut, canvasIn] = [
this.createOffscreenCanvas(width, height, scale),
this.createOffscreenCanvas(width, height, 1)
];
const blobPromise = this.createBlobPromise(
"videoBlob",
this.timeouts.VIDEO
);
this.getWorker().postMessage(
{
cmd: "process",
file: videoFile,
fileSize: videoFile.size,
duration,
adjustedResolution: {
adjustedInputWidth: width,
adjustedInputHeight: height,
adjustedOutputWidth: width * scale,
adjustedOutputHeight: height * scale
},
upscaled: canvasOut,
original: canvasIn,
weights,
network_name: network.name,
skipDemuxProgress: true
},
[canvasOut, canvasIn]
);
return blobPromise;
}
async startRealtimeUpscale(videoElement, canvasElement, networkSize, scaleOverride) {
if (!videoElement || !canvasElement) {
throw new Error("videoElement and canvasElement are required");
}
const size = networkSize || this.networkSize;
this.validateNetworkSize(size);
const network = this.networks[size];
const weights = await this.loadWeights(size);
const scale = typeof scaleOverride === "number" && scaleOverride > 0 ? scaleOverride : this.videoScale;
const ensureMetadata = () => {
return new Promise((resolve, reject) => {
if (videoElement.readyState >= 1) {
resolve();
return;
}
let onLoaded, onError;
const cleanup = () => {
videoElement.removeEventListener("loadedmetadata", onLoaded);
videoElement.removeEventListener("error", onError);
};
onLoaded = () => {
cleanup();
resolve();
};
onError = () => {
cleanup();
reject(new Error("Failed to load video metadata"));
};
videoElement.addEventListener("loadedmetadata", onLoaded);
videoElement.addEventListener("error", onError);
});
};
await ensureMetadata();
const width = videoElement.videoWidth;
const height = videoElement.videoHeight;
if (!width || !height) {
throw new Error("Invalid video dimensions");
}
const firstInit = !canvasElement._upscalerTransferred;
let offscreen = null;
if (firstInit) {
canvasElement.width = width * scale;
canvasElement.height = height * scale;
if (typeof canvasElement.transferControlToOffscreen !== "function") {
throw new TypeError("OffscreenCanvas is not supported in this environment");
}
offscreen = canvasElement.transferControlToOffscreen();
canvasElement._upscalerTransferred = true;
}
const captureCanvas = document.createElement("canvas");
captureCanvas.width = width;
captureCanvas.height = height;
const captureCtx = captureCanvas.getContext("2d");
if (this.realtimeLoopId) {
cancelAnimationFrame(this.realtimeLoopId);
this.realtimeLoopId = null;
}
const initPayload = {
cmd: "realtimeInit",
data: {
upscaled: firstInit ? offscreen : null,
resolution: {
width,
height,
scale,
outputWidth: width * scale,
outputHeight: height * scale
},
network_name: network.name,
weights
}
};
if (firstInit && offscreen) {
this.getWorker().postMessage(initPayload, [offscreen]);
} else {
this.getWorker().postMessage(initPayload);
}
this.realtimeState = {
running: true,
video: videoElement,
canvas: canvasElement,
scale,
busy: false,
frameIndex: 0,
captureCanvas,
captureCtx
};
const loop = async () => {
if (!this.realtimeState || !this.realtimeState.running)
return;
const state = this.realtimeState;
const v = state.video;
const haveCurrentData = v.HAVE_CURRENT_DATA || 2;
if (!v.paused && !v.ended && !state.busy && v.readyState >= haveCurrentData && v.videoWidth > 0 && v.videoHeight > 0) {
state.busy = true;
try {
const captureCanvas2 = state.captureCanvas;
const captureCtx2 = state.captureCtx;
if (!captureCanvas2 || !captureCtx2) {
throw new Error("Missing capture canvas");
}
captureCtx2.drawImage(v, 0, 0, captureCanvas2.width, captureCanvas2.height);
const frame = await createImageBitmap(captureCanvas2);
state.frameIndex += 1;
this.getWorker().postMessage(
{
cmd: "realtimeFrame",
frame
},
[frame]
);
} catch (e) {
console.warn("realtimeFrame error", e);
} finally {
if (this.realtimeState) {
this.realtimeState.busy = false;
}
}
}
this.realtimeLoopId = requestAnimationFrame(loop);
};
this.realtimeLoopId = requestAnimationFrame(loop);
}
stopRealtimeUpscale() {
if (this.realtimeLoopId) {
cancelAnimationFrame(this.realtimeLoopId);
this.realtimeLoopId = null;
}
if (this.realtimeState) {
this.realtimeState.running = false;
this.realtimeState = null;
}
}
async downloadUpscaled(file, networkSize, filename = null) {
const isVideo = file.type.startsWith("video");
const size = networkSize || this.networkSize;
const blob = isVideo ? await this.upscaleVideo(file, size) : await this.upscaleImage(file, size);
const url = URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = filename || `upscaled_${Date.now()}.${isVideo ? "mp4" : "png"}`;
link.click();
URL.revokeObjectURL(url);
return blob;
}
getSupportedNetworks() {
return Object.keys(this.networks);
}
static async getGPUCapability() {
try {
if (navigator.gpu) {
const adapter = await navigator.gpu.requestAdapter();
if (adapter) {
const buffer = adapter.limits.maxStorageBufferBindingSize / 512;
const texture = 8192 * 8192;
return Math.min(buffer, texture);
}
}
const canvas = document.createElement("canvas");
const gl = canvas.getContext("webgl2");
if (gl)
return gl.getParameter(gl.MAX_TEXTURE_SIZE) ** 2;
return 8388608;
} catch {
return 8388608;
}
}
static getBackendType() {
try {
if (navigator.gpu)
return "webgpu";
if (document.createElement("canvas").getContext("webgl2"))
return "webgl";
return "unknown";
} catch {
return "unknown";
}
}
getAppState() {
return {
backend: _Upscaler.getBackendType(),
isProcessing: false,
progress: 0,
width: 0,
height: 0
};
}
onProgress(callback) {
if (typeof callback === "function") {
this.progressCallback = callback;
}
}
dispose() {
this.stopRealtimeUpscale();
if (this.workerInstance) {
this.workerInstance.terminate();
this.workerInstance = null;
}
this.messageHandlers = {};
this.progressCallback = null;
this.processingType = null;
this.weightsCache.clear();
}
};
__publicField(_Upscaler, "DEFAULT_TIMEOUTS", { IMAGE: 3e5, VIDEO: 36e5, METADATA: 1e4 });
__publicField(_Upscaler, "DEFAULT_DELAYS", { INIT: 500, NETWORK: 300 });
let Upscaler = _Upscaler;
function artplayerPluginWebsr(option = {
networkSize: "medium",
compare: false,
weightsBaseUrl: "/weights",
workerUrl: "/worker/main.js",
videoScale: 2
}) {
return (art) => {
const { $video, $player } = art.template;
const $canvas = document.createElement("canvas");
$player.appendChild($canvas);
$canvas.style.position = "absolute";
$canvas.style.zIndex = "11";
$canvas.style.pointerEvents = "none";
$canvas.style.top = "50%";
$canvas.style.left = "50%";
$canvas.style.transform = "translate(-50%, -50%)";
$canvas.style.opacity = "0";
$canvas.style.transition = "opacity 0.2s ease";
function calcCanvasSize() {
const videoElement = art.video;
const containerWidth = $player.offsetWidth || 640;
const containerHeight = $player.offsetHeight || 360;
const videoWidth = videoElement.videoWidth || 640;
const videoHeight = videoElement.videoHeight || 360;
const aspectRatio = videoWidth / videoHeight;
let displayWidth2 = containerWidth;
let displayHeight2 = containerHeight;
if (containerWidth / containerHeight > aspectRatio) {
displayWidth2 = containerHeight * aspectRatio;
} else {
displayHeight2 = containerWidth / aspectRatio;
}
return { displayWidth: displayWidth2, displayHeight: displayHeight2 };
}
if (!Upscaler || !Upscaler.isSupported || !Upscaler.isSupported()) {
console.warn("Upscaler is not supported in this environment");
return;
}
const upscaler = new Upscaler({
networkSize: option.networkSize || "medium",
weightsBaseUrl: option.weightsBaseUrl || "/weights",
workerUrl: option.workerUrl || "/worker/main.js",
videoScale: option.videoScale || 2
});
let realtimeStarted = false;
async function startRealtime() {
if (realtimeStarted)
return;
realtimeStarted = true;
try {
await new Promise((resolve, reject) => {
if ($video.readyState >= 1) {
resolve();
return;
}
let onLoaded, onError;
const cleanup = () => {
$video.removeEventListener("loadedmetadata", onLoaded);
$video.removeEventListener("error", onError);
};
onLoaded = () => {
cleanup();
resolve();
};
onError = () => {
cleanup();
reject(new Error("Failed to load video metadata"));
};
$video.addEventListener("loadedmetadata", onLoaded);
$video.addEventListener("error", onError);
});
await upscaler.startRealtimeUpscale(
$video,
$canvas,
option.networkSize || upscaler.networkSize
);
requestAnimationFrame(() => {
$canvas.style.opacity = "1";
});
} catch (e) {
console.error(
"artplayer-plugin-upscaler: failed to start realtime",
e
);
}
}
const { displayWidth, displayHeight } = calcCanvasSize();
$canvas.style.width = `${displayWidth}px`;
$canvas.style.height = `${displayHeight}px`;
let comparePosition = 50;
let isDragging = false;
let compareEnabled = !!option.compare;
const $handler = document.createElement("div");
$handler.style.position = "absolute";
$handler.style.width = "3px";
$handler.style.backgroundColor = "rgba(255, 255, 255, 0.75)";
$handler.style.cursor = "ew-resize";
$handler.style.zIndex = "12";
$handler.style.pointerEvents = "auto";
$handler.style.display = compareEnabled ? "block" : "none";
$handler.style.boxShadow = "0 0 2px rgba(0, 0, 0, 0.1)";
if (compareEnabled) {
$player.appendChild($handler);
$handler.addEventListener("mousedown", handleMouseDown);
document.addEventListener("mousemove", handleMouseMove);
document.addEventListener("mouseup", handleMouseUp);
updateCompareMask();
}
function updateCompareMask() {
if (compareEnabled) {
const { displayWidth: displayWidth2, displayHeight: displayHeight2 } = calcCanvasSize();
const gradient = `linear-gradient(to right, transparent 0%, transparent ${comparePosition}%, black ${comparePosition}%, black 100%)`;
$canvas.style.maskImage = gradient;
const containerWidth = $player.offsetWidth || 640;
const containerHeight = $player.offsetHeight || 360;
const canvasLeft = (containerWidth - displayWidth2) / 2;
const canvasTop = (containerHeight - displayHeight2) / 2;
const handlerX = canvasLeft + displayWidth2 * comparePosition / 100;
$handler.style.top = `${canvasTop}px`;
$handler.style.left = `${handlerX}px`;
$handler.style.height = `${displayHeight2}px`;
$handler.style.transform = "translateX(-50%)";
} else {
$canvas.style.maskImage = "none";
}
}
function handleMouseDown(_e) {
if (compareEnabled) {
isDragging = true;
}
}
function handleMouseMove(e) {
if (compareEnabled && isDragging) {
const rect = $player.getBoundingClientRect();
const { displayWidth: displayWidth2 } = calcCanvasSize();
const containerWidth = $player.offsetWidth || 640;
const canvasLeft = (containerWidth - displayWidth2) / 2;
const x = e.clientX - rect.left;
const relativeX = x - canvasLeft;
comparePosition = relativeX / displayWidth2 * 100;
comparePosition = Math.max(0, Math.min(100, comparePosition));
updateCompareMask();
}
}
function handleMouseUp(_e) {
isDragging = false;
}
art.on("destroy", () => {
if (upscaler && typeof upscaler.dispose === "function") {
upscaler.dispose();
}
$handler.removeEventListener("mousedown", handleMouseDown);
document.removeEventListener("mousemove", handleMouseMove);
document.removeEventListener("mouseup", handleMouseUp);
});
art.on("resize", () => {
const { displayWidth: displayWidth2, displayHeight: displayHeight2 } = calcCanvasSize();
$canvas.style.width = `${displayWidth2}px`;
$canvas.style.height = `${displayHeight2}px`;
updateCompareMask();
});
art.on("play", () => {
startRealtime();
});
function update(newOption = {}) {
if (!newOption || typeof newOption !== "object")
return;
if (Object.prototype.hasOwnProperty.call(newOption, "compare")) {
const nextCompare = !!newOption.compare;
option.compare = nextCompare;
compareEnabled = nextCompare;
if (compareEnabled) {
if (!$handler.parentNode) {
$player.appendChild($handler);
}
$handler.style.display = "block";
$handler.addEventListener("mousedown", handleMouseDown);
document.addEventListener("mousemove", handleMouseMove);
document.addEventListener("mouseup", handleMouseUp);
updateCompareMask();
} else {
$canvas.style.maskImage = "none";
$handler.style.display = "none";
$handler.removeEventListener("mousedown", handleMouseDown);
document.removeEventListener("mousemove", handleMouseMove);
document.removeEventListener("mouseup", handleMouseUp);
}
}
if (newOption.networkSize) {
const nextSize = newOption.networkSize;
option.networkSize = nextSize;
if (upscaler && typeof upscaler.stopRealtimeUpscale === "function") {
upscaler.stopRealtimeUpscale();
}
realtimeStarted = false;
if (!art.paused) {
startRealtime();
}
}
}
return {
name: "artplayerPluginWebsr",
upscaler,
update
};
};
}
if (typeof window !== "undefined") {
window.artplayerPluginWebsr = artplayerPluginWebsr;
}
export {
artplayerPluginWebsr as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-proxy-canvas.js v1.0.0
* artplayer-proxy-canvas.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},a="function"==typeof i[n]&&i[n],u=a.i||{},f=a.cache||{},l="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!f[t]){if(!e[t]){if(o[t])return o[t];var u="function"==typeof i[n]&&i[n];if(!r&&u)return u(t,!0);if(a)return a(t,!0);if(l&&"string"==typeof t)return l(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},p.cache={};var s=f[t]=new c.Module(t);e[t][0].call(s.exports,p,s,s.exports,i)}return f[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],i=c(n);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:i}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=l,this.exports={}},c.modules=e,c.cache=f,c.parent=a,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=u,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return i[n]}}),i[n]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var s=c(r);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({fsIOq:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>{let{constructor:r}=t,{createElement:n}=r.utils,o=n("canvas"),i=n("video"),a=o.getContext("2d"),u=null,f={};for(let e in o)"function"==typeof o[e]&&(f[e]=o[e].bind(o));for(let e in i)e in o||Object.defineProperty(o,e,{get(){let t=i[e];return"function"==typeof t?t.bind(i):t},set(t){i[e]=t},configurable:!0,enumerable:!0});for(let e in f)o[e]=function(...t){return e in f?f[e](...t):i[e](...t)};return function(){let{events:e}=r.config;setTimeout(()=>{e.forEach(e=>{t.proxy(i,e,e=>{t.emit(`video:${e.type}`,e)})})})}(),t.on("video:loadedmetadata",()=>{o.width=i.videoWidth,o.height=i.videoHeight}),t.on("video:play",()=>{cancelAnimationFrame(u),c()}),t.on("video:pause",()=>{cancelAnimationFrame(u)}),t.on("resize",()=>{!function(){let e,r,n=t.template?.$player;if(!n||t.option.autoSize)return;let a=i.videoWidth/i.videoHeight,u=n.clientWidth,f=n.clientHeight;u/f>a?e=(r=f)*a:r=(e=u)/a,o.width=e,o.height=r;let l=(u-e)/2,c=(f-r)/2;Object.assign(o.style,{padding:`${c}px ${l}px`})}(),l()}),t.on("destroy",()=>{cancelAnimationFrame(u)}),o;async function l(){try{if("u">typeof createImageBitmap){let e=await createImageBitmap(i);a.drawImage(e,0,0,o.width,o.height),e.close()}else a.drawImage(i,0,0,o.width,o.height);e&&e(a,i),t.emit("artplayerProxyCanvas:draw",a,i)}catch(e){t.emit("artplayerProxyCanvas:error",e)}}async function c(){await l(),u=requestAnimationFrame(c)}}}o.defineInteropFlag(r),o.export(r,"default",()=>i),"u">typeof window&&(window.artplayerProxyCanvas=i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],"6ykb1":[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["fsIOq"],"fsIOq","parcelRequire4dc0",{});
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerProxyCanvas=t(),define(function(){return t.ArtplayerProxyCanvas})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerProxyCanvas=t()}(this,function(){"use strict";function e(e){return t=>{const{constructor:n}=t,{createElement:i}=n.utils,o=i("canvas"),a=i("video"),r=o.getContext("2d");let c=null;const d={};for(const e in o)"function"===typeof o[e]&&(d[e]=o[e].bind(o));for(const e in a)e in o||Object.defineProperty(o,e,{get(){const t=a[e];return"function"===typeof t?t.bind(a):t},set(t){a[e]=t},configurable:!0,enumerable:!0});for(const e in d)o[e]=function(...t){return e in d?d[e](...t):a[e](...t)};return function(){const{events:e}=n.config;setTimeout(()=>{e.forEach(e=>{t.proxy(a,e,e=>{t.emit(`video:${e.type}`,e)})})})}(),t.on("video:loadedmetadata",()=>{o.width=a.videoWidth,o.height=a.videoHeight}),t.on("video:play",()=>{cancelAnimationFrame(c),f()}),t.on("video:pause",()=>{cancelAnimationFrame(c)}),t.on("resize",()=>{!function(){const e=t.template?.$player;if(!e||t.option.autoSize)return;const n=a.videoWidth/a.videoHeight,i=e.clientWidth,r=e.clientHeight;let c,d;i/r>n?(d=r,c=d*n):(c=i,d=c/n),o.width=c,o.height=d;const s=(i-c)/2,f=(r-d)/2;Object.assign(o.style,{padding:`${f}px ${s}px`})}(),s()}),t.on("destroy",()=>{cancelAnimationFrame(c)}),o;async function s(){try{if("undefined"!==typeof createImageBitmap){const e=await createImageBitmap(a);r.drawImage(e,0,0,o.width,o.height),e.close()}else r.drawImage(a,0,0,o.width,o.height);e&&e(r,a),t.emit("artplayerProxyCanvas:draw",r,a)}catch(n){t.emit("artplayerProxyCanvas:error",n)}}async function f(){await s(),c=requestAnimationFrame(f)}}}return"undefined"!==typeof window&&(window.artplayerProxyCanvas=e),e});
@@ -1,8 +1,7 @@
/*!
* artplayer-proxy-canvas.js v1.0.0
* artplayer-proxy-canvas.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},c="function"==typeof i[n]&&i[n],a=c.i||{},u=c.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,r){if(!u[t]){if(!e[t]){if(o[t])return o[t];var a="function"==typeof i[n]&&i[n];if(!r&&a)return a(t,!0);if(c)return c(t,!0);if(f&&"string"==typeof t)return f(t);var s=Error("Cannot find module '"+t+"'");throw s.code="MODULE_NOT_FOUND",s}p.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},p.cache={};var d=u[t]=new l.Module(t);e[t][0].call(d.exports,p,d,d.exports,i)}return u[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],i=l(n);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:i}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),r}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=f,this.exports={}},l.modules=e,l.cache=u,l.parent=c,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=a,l.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(l,"root",{get:function(){return i[n]}}),i[n]=l;for(var s=0;s<t.length;s++)l(t[s]);if(r){var d=l(r);"object"==typeof exports&&"u">typeof module?module.exports=d:"function"==typeof define&&define.amd&&define(function(){return d})}}({LnyEn:[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r),o.export(r,"default",function(){return u});var i=e("@swc/helpers/cjs/_async_to_generator.cjs"),c=e("@swc/helpers/cjs/_to_consumable_array.cjs"),a=e("@swc/helpers/cjs/_ts_generator.cjs");function u(e){return function(t){var r,n=function(e){e in l||Object.defineProperty(l,e,{get:function(){var t=s[e];return"function"==typeof t?t.bind(s):t},set:function(t){s[e]=t},configurable:!0,enumerable:!0})},o=function(e){l[e]=function(){for(var t=arguments.length,r=Array(t),n=0;n<t;n++)r[n]=arguments[n];return e in y?y[e].apply(y,(0,c._)(r)):s[e].apply(s,(0,c._)(r))}},u=t.constructor,f=u.utils.createElement,l=f("canvas"),s=f("video"),d=l.getContext("2d"),p=null,y={};for(var b in l)"function"==typeof l[b]&&(y[b]=l[b].bind(l));for(var h in s)n(h);for(var v in y)o(v);return r=u.config.events,setTimeout(function(){r.forEach(function(e){t.proxy(s,e,function(e){t.emit("video:".concat(e.type),e)})})}),t.on("video:loadedmetadata",function(){l.width=s.videoWidth,l.height=s.videoHeight}),t.on("video:play",function(){cancelAnimationFrame(p),function e(){return(0,i._)(function(){return(0,a._)(this,function(t){switch(t.label){case 0:return[4,m()];case 1:return t.sent(),p=requestAnimationFrame(e),[2]}})})()}()}),t.on("video:pause",function(){cancelAnimationFrame(p)}),t.on("resize",function(){!function(){var e,r,n,o=null==(e=t.template)?void 0:e.$player;if(o&&!t.option.autoSize){var i=s.videoWidth/s.videoHeight,c=o.clientWidth,a=o.clientHeight;c/a>i?r=(n=a)*i:n=(r=c)/i,l.width=r,l.height=n;var u=(c-r)/2,f=(a-n)/2;Object.assign(l.style,{padding:"".concat(f,"px ").concat(u,"px")})}}(),m()}),t.on("destroy",function(){cancelAnimationFrame(p)}),l;function m(){return(0,i._)(function(){var r,n;return(0,a._)(this,function(o){switch(o.label){case 0:if(o.trys.push([0,4,,5]),"u"<typeof createImageBitmap)return[3,2];return[4,createImageBitmap(s)];case 1:return r=o.sent(),d.drawImage(r,0,0,l.width,l.height),r.close(),[3,3];case 2:d.drawImage(s,0,0,l.width,l.height),o.label=3;case 3:return e&&e(d,s),t.emit("artplayerProxyCanvas:draw",d,s),[3,5];case 4:return n=o.sent(),t.emit("artplayerProxyCanvas:error",n),[3,5];case 5:return[2]}})})()}}}"u">typeof window&&(window.artplayerProxyCanvas=u)},{"@swc/helpers/cjs/_async_to_generator.cjs":"cZn0e","@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","@swc/helpers/cjs/_ts_generator.cjs":"eltGh","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],cZn0e:[function(e,t,r,n){"use strict";function o(e,t,r,n,o,i,c){try{var a=e[i](c),u=a.value}catch(e){r(e);return}a.done?t(u):Promise.resolve(u).then(n,o)}r._=function(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var c=e.apply(t,r);function a(e){o(c,n,i,a,u,"next",e)}function u(e){o(c,n,i,a,u,"throw",e)}a(void 0)})}}},{}],i81N6:[function(e,t,r,n){"use strict";var o=e("d402183024004bc7"),i=e("3209e2b12672cd18"),c=e("fc58adb8f1bff142"),a=e("5e213dc122a10171");r._=function(e){return o._(e)||i._(e)||a._(e)||c._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,r,n){"use strict";var o=e("5bd5b10bf87fc8e");r._=function(e){if(Array.isArray(e))return o._(e)}},Line truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerProxyCanvas=t(),define(function(){return t.ArtplayerProxyCanvas})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerProxyCanvas=t()}(this,function(){"use strict";var e=(e,t,n)=>new Promise((i,o)=>{var r=e=>{try{c(n.next(e))}catch(t){o(t)}},a=e=>{try{c(n.throw(e))}catch(t){o(t)}},c=e=>e.done?i(e.value):Promise.resolve(e.value).then(r,a);c((n=n.apply(e,t)).next())});function t(t){return n=>{const{constructor:i}=n,{createElement:o}=i.utils,r=o("canvas"),a=o("video"),c=r.getContext("2d");let d=null;const l={};for(const e in r)"function"===typeof r[e]&&(l[e]=r[e].bind(r));for(const e in a)e in r||Object.defineProperty(r,e,{get(){const t=a[e];return"function"===typeof t?t.bind(a):t},set(t){a[e]=t},configurable:!0,enumerable:!0});for(const e in l)r[e]=function(...t){return e in l?l[e](...t):a[e](...t)};return function(){const{events:e}=i.config;setTimeout(()=>{e.forEach(e=>{n.proxy(a,e,e=>{n.emit(`video:${e.type}`,e)})})})}(),n.on("video:loadedmetadata",()=>{r.width=a.videoWidth,r.height=a.videoHeight}),n.on("video:play",()=>{cancelAnimationFrame(d),u()}),n.on("video:pause",()=>{cancelAnimationFrame(d)}),n.on("resize",()=>{!function(){var e;const t=null==(e=n.template)?void 0:e.$player;if(!t||n.option.autoSize)return;const i=a.videoWidth/a.videoHeight,o=t.clientWidth,c=t.clientHeight;let d,l;o/c>i?(l=c,d=l*i):(d=o,l=d/i),r.width=d,r.height=l;const s=(o-d)/2,u=(c-l)/2;Object.assign(r.style,{padding:`${u}px ${s}px`})}(),s()}),n.on("destroy",()=>{cancelAnimationFrame(d)}),r;function s(){return e(this,null,function*(){try{if("undefined"!==typeof createImageBitmap){const e=yield createImageBitmap(a);c.drawImage(e,0,0,r.width,r.height),e.close()}else c.drawImage(a,0,0,r.width,r.height);t&&t(c,a),n.emit("artplayerProxyCanvas:draw",c,a)}catch(e){n.emit("artplayerProxyCanvas:error",e)}})}function u(){return e(this,null,function*(){yield s(),d=requestAnimationFrame(u)})}}}return"undefined"!==typeof window&&(window.artplayerProxyCanvas=t),t});
+122 -3
View File
@@ -1,8 +1,127 @@
/*!
* artplayer-proxy-canvas.js v1.0.0
* artplayer-proxy-canvas.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},a="function"==typeof i[n]&&i[n],u=a.i||{},l=a.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!l[t]){if(!e[t]){if(o[t])return o[t];var u="function"==typeof i[n]&&i[n];if(!r&&u)return u(t,!0);if(a)return a(t,!0);if(f&&"string"==typeof t)return f(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},s.cache={};var p=l[t]=new c.Module(t);e[t][0].call(p.exports,s,p,p.exports,i)}return l[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],i=c(n);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:i}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=l,c.parent=a,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=u,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return i[n]}}),i[n]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var p=c(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"7gEKL":[function(e,t,r,n){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");function i(e){return t=>{let{constructor:r}=t,{createElement:n}=r.utils,o=n("canvas"),i=n("video"),a=o.getContext("2d"),u=null,l={};for(let e in o)"function"==typeof o[e]&&(l[e]=o[e].bind(o));for(let e in i)e in o||Object.defineProperty(o,e,{get(){let t=i[e];return"function"==typeof t?t.bind(i):t},set(t){i[e]=t},configurable:!0,enumerable:!0});for(let e in l)o[e]=function(...t){return e in l?l[e](...t):i[e](...t)};return function(){let{events:e}=r.config;setTimeout(()=>{e.forEach(e=>{t.proxy(i,e,e=>{t.emit(`video:${e.type}`,e)})})})}(),t.on("video:loadedmetadata",()=>{o.width=i.videoWidth,o.height=i.videoHeight}),t.on("video:play",()=>{cancelAnimationFrame(u),c()}),t.on("video:pause",()=>{cancelAnimationFrame(u)}),t.on("resize",()=>{!function(){let e,r,n=t.template?.$player;if(!n||t.option.autoSize)return;let a=i.videoWidth/i.videoHeight,u=n.clientWidth,l=n.clientHeight;u/l>a?e=(r=l)*a:r=(e=u)/a,o.width=e,o.height=r;let f=(u-e)/2,c=(l-r)/2;Object.assign(o.style,{padding:`${c}px ${f}px`})}(),f()}),t.on("destroy",()=>{cancelAnimationFrame(u)}),o;async function f(){try{if("u">typeof createImageBitmap){let e=await createImageBitmap(i);a.drawImage(e,0,0,o.width,o.height),e.close()}else a.drawImage(i,0,0,o.width,o.height);e&&e(a,i),t.emit("artplayerProxyCanvas:draw",a,i)}catch(e){t.emit("artplayerProxyCanvas:error",e)}}async function c(){await f(),u=requestAnimationFrame(c)}}}o.defineInteropFlag(r),o.export(r,"default",()=>i),"u">typeof window&&(window.artplayerProxyCanvas=i)},{"@parcel/transformer-js/src/esmodule-helpers.js":"loqXi"}],loqXi:[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["7gEKL"],"7gEKL","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("7gEKL");export{e as default};
function artplayerProxyCanvas(callback) {
return (art) => {
const { constructor } = art;
const { createElement } = constructor.utils;
const canvas = createElement("canvas");
const video = createElement("video");
const ctx = canvas.getContext("2d");
let animationId = null;
const originalCanvasMethods = {};
for (const prop in canvas) {
if (typeof canvas[prop] === "function") {
originalCanvasMethods[prop] = canvas[prop].bind(canvas);
}
}
for (const prop in video) {
if (!(prop in canvas)) {
Object.defineProperty(canvas, prop, {
get() {
const value = video[prop];
return typeof value === "function" ? value.bind(video) : value;
},
set(value) {
video[prop] = value;
},
configurable: true,
enumerable: true
});
}
}
for (const prop in originalCanvasMethods) {
canvas[prop] = function(...args) {
if (prop in originalCanvasMethods) {
return originalCanvasMethods[prop](...args);
}
return video[prop](...args);
};
}
setupEventListeners();
setupArtPlayerEvents();
return canvas;
function setupEventListeners() {
const { events } = constructor.config;
setTimeout(() => {
events.forEach((event) => {
art.proxy(video, event, (event2) => {
art.emit(`video:${event2.type}`, event2);
});
});
});
}
async function draw() {
try {
if (typeof createImageBitmap !== "undefined") {
const bitmap = await createImageBitmap(video);
ctx.drawImage(bitmap, 0, 0, canvas.width, canvas.height);
bitmap.close();
} else {
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
}
callback && callback(ctx, video);
art.emit("artplayerProxyCanvas:draw", ctx, video);
} catch (error) {
art.emit("artplayerProxyCanvas:error", error);
}
}
async function animation() {
await draw();
animationId = requestAnimationFrame(animation);
}
function resize() {
const player = art.template?.$player;
if (!player || art.option.autoSize)
return;
const aspectRatio = video.videoWidth / video.videoHeight;
const containerWidth = player.clientWidth;
const containerHeight = player.clientHeight;
const containerRatio = containerWidth / containerHeight;
let canvasWidth, canvasHeight;
if (containerRatio > aspectRatio) {
canvasHeight = containerHeight;
canvasWidth = canvasHeight * aspectRatio;
} else {
canvasWidth = containerWidth;
canvasHeight = canvasWidth / aspectRatio;
}
canvas.width = canvasWidth;
canvas.height = canvasHeight;
const paddingLeft = (containerWidth - canvasWidth) / 2;
const paddingTop = (containerHeight - canvasHeight) / 2;
Object.assign(canvas.style, {
padding: `${paddingTop}px ${paddingLeft}px`
});
}
function setupArtPlayerEvents() {
art.on("video:loadedmetadata", () => {
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
});
art.on("video:play", () => {
cancelAnimationFrame(animationId);
animation();
});
art.on("video:pause", () => {
cancelAnimationFrame(animationId);
});
art.on("resize", () => {
resize();
draw();
});
art.on("destroy", () => {
cancelAnimationFrame(animationId);
});
}
};
}
if (typeof window !== "undefined") {
window.artplayerProxyCanvas = artplayerProxyCanvas;
}
export {
artplayerProxyCanvas as default
};
+216 -3
View File
@@ -1,8 +1,221 @@
/*!
* artplayer-proxy-mediabunny.js v1.0.0
* artplayer-proxy-mediabunny.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,a,i){var s="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},n="function"==typeof s[a]&&s[a],o=n.i||{},l=n.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,r){if(!l[t]){if(!e[t]){if(i[t])return i[t];var o="function"==typeof s[a]&&s[a];if(!r&&o)return o(t,!0);if(n)return n(t,!0);if(c&&"string"==typeof t)return c(t);var u=Error("Cannot find module '"+t+"'");throw u.code="MODULE_NOT_FOUND",u}m.resolve=function(r){var a=e[t][1][r];return null!=a?a:r},m.cache={};var h=l[t]=new d.Module(t);e[t][0].call(h.exports,m,h,h.exports,s)}return l[t].exports;function m(e){var t=m.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],i=e[2]||e[0],s=d(a);"*"===t?Object.keys(s).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return s[e]}})}):"*"===i?Object.defineProperty(r,t,{enumerable:!0,value:s}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===i?s.__esModule?s.default:s:s[i]}})}),r}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=c,this.exports={}},d.modules=e,d.cache=l,d.parent=n,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=o,d.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(d,"root",{get:function(){return s[a]}}),s[a]=d;for(var u=0;u<t.length;u++)d(t[u]);if(r){var h=d(r);"object"==typeof exports&&"u">typeof module?module.exports=h:"function"==typeof define&&define.amd&&define(function(){return h})}}({"1qMFK":[function(e,t,r,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(r),i.export(r,"default",()=>o);var s=e("./VideoShim.js"),n=i.interopDefault(s);function o(e={}){return t=>{let{constructor:r}=t,{createElement:a}=r.utils,i=a("canvas"),s=i.getContext("2d"),o=new(0,n.default)({art:t,canvas:i,ctx:s,option:e}),l={};for(let e in i)"function"==typeof i[e]&&(l[e]=i[e].bind(i));for(let e of new Set([...Object.getOwnPropertyNames(o),...Object.getOwnPropertyNames(Object.getPrototypeOf(o))]))"constructor"!==e&&(e in i||Object.defineProperty(i,e,{get(){let t=o[e];return"function"==typeof t?t.bind(o):t},set(t){o[e]=t},configurable:!0,enumerable:!0}));for(let e in l)i[e]=(...t)=>l[e](...t);function c(){t.template?.$player&&!t.option.autoSize&&Object.assign(i.style,{width:"100%",height:"100%",objectFit:"contain"})}return t.on("resize",c),t.on("video:loadedmetadata",c),t.on("destroy",()=>{o.destroy()}),i}}"u">typeof window&&(window.artplayerProxyMediabunny=o)},{"./VideoShim.js":"asNFi","@parcel/transformer-js/src/esmodule-helpers.js":"6ykb1"}],asNFi:[function(e,t,r,a){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(r);var s=e("./EventTarget.js"),n=i.interopDefault(s),o=e("./MediaBunnyEngine.js"),l=i.interopDefault(o);r.default=class{constructor({art:e,canvas:t,ctx:r,option:a}){this.art=e,this.canvas=t,this.option=a,this.events=new(0,n.default),this.engine=new(0,l.default)({canvas:t,ctx:r,events:this.events,option:a}),this._src=null,this._volume=a.volume??.7,this._muted=!!a.muted,this._playbackRate=1,this.engine.setVolume(this._volume,this._muted),this.setupEventForwarding(),a.source?this.src=a.source:e.option?.url&&(this.src=e.option.url)}setupEventForwarding(){let{events:e}=this.art.constructor.config;e.forEach(e=>{this.events.addEventListener(e,e=>{this.art.emit(`video:${e.type}`,e)})})}addEventListener(e,t){this.events.addEventListener(e,t)}removeEventListener(e,t){this.events.removeEventListener(e,t)}get src(){return this._src}set src(e){this._src=e,e&&this.engine.load(e)}get currentSrc(){return this._src}get currentTime(){return this.engine.currentTime}set currentTime(e){this.engine.seek(Number(e)||0)}get duration(){return this.engine.duration}get buffered(){return this.createTimeRanges(0,this.engine.duration)}get played(){return this.createTimeRanges(0,this.engine.currentTime)}get seekable(){return this.createTimeRanges(0,this.engine.duration)}createTimeRanges(e,t){let r=this.engine.duration;return!r||Number.isNaN(r)||t<=0?{length:0,start:()=>0,end:()=>0}:{length:1,start:()=>e,end:()=>t}}get paused(){return this.engine.paused}get playing(){return!this.engine.paused&&!this.engine.ended}get ended(){return this.engine.ended}get seeking(){return this.engine.seeking}get readyState(){return this.engine.readyState}get networkState(){return this.engine.networkState}get error(){return this.engine.error}get playbackRate(){return this._playbackRate}set playbackRate(e){let t=Number(e);Number.isNaN(t)||t<=0||(this._playbackRate=t,this.engine.setPlaybackRate(t),this.events.emit("ratechange"))}get volume(){return this._volume}set volume(e){this._volume=Math.max(0,Math.min(1,Number(e)||0)),this._muted=!1,this.engine.setVolume(this._volume,this._muted),this.events.emit("voLine truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerProxyMediabunny=t(),define(function(){return t.ArtplayerProxyMediabunny})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerProxyMediabunny=t()}(this,function(){"use strict";class e{constructor(){this.listeners=new Map}addEventListener(e,t){this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t)}removeEventListener(e,t){const r=this.listeners.get(e);if(!r)return;const i=r.indexOf(t);i>=0&&r.splice(i,1)}emit(e,t){const r=new Event(e);r.detail=t;const i=this.listeners.get(e);i&&i.forEach(e=>e(r))}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/function t(e){if(!e)throw new Error("Assertion failed.")}const r=e=>{const t=(e%360+360)%360;if(0===t||90===t||180===t||270===t)return t;throw new Error(`Invalid rotation ${e}.`)},i=e=>e&&e[e.length-1];class a{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){const e=Math.floor(this.pos/8),t=this.bytes[e]??0,r=7-(7&this.pos),i=(t&1<<r)>>r;return this.pos++,i}readBits(e){if(1===e)return this.readBit();let t=0;for(let r=0;r<e;r++)t<<=1,t|=this.readBit();return t}writeBits(e,t){const r=this.pos+e;for(let i=this.pos;i<r;i++){const e=Math.floor(i/8);let a=this.bytes[e];const s=7-(7&i);a&=~(1<<s),a|=(t&1<<r-i-1)>>r-i-1<<s,this.bytes[e]=a}this.pos=r}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");const e=this.pos/8,t=this.bytes[e]??0;return this.pos+=8,t}skipBits(e){this.pos+=e}getBitsLeft(){return 8*this.bytes.length-this.pos}clone(){const e=new a(this.bytes);return e.pos=this.pos,e}}const s=e=>{let t=0;for(;0===e.readBits(1)&&t<32;)t++;if(t>=32)throw new Error("Invalid exponential-Golomb code.");return(1<<t)-1+e.readBits(t)},n=e=>{const t=s(e);return 0===(1&t)?-(t>>1):t+1>>1},o=e=>e.constructor===Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),c=e=>e.constructor===DataView?e:ArrayBuffer.isView(e)?new DataView(e.buffer,e.byteOffset,e.byteLength):new DataView(e),l=new TextDecoder,d=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[t,e])),u={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},h=d(u),m={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18},f=d(m),p={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},g=d(p),k=e=>e instanceof ArrayBuffer||"undefined"!==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e);class b{constructor(){this.currentPromise=Promise.resolve()}async acquire(){let e;const t=new Promise(t=>{e=t}),r=this.currentPromise;return this.currentPromise=t,await r,e}}const T=e=>[...e].map(e=>e.toString(16).padStart(2,"0")).join(""),y=e=>(e=(e=(e=(e=(e=e>>1&1431655765|(1431655765&e)<<1)>>2&858993459|(858993459&e)<<2)>>4&252645135|(252645135&e)<<4)>>8&16711935|(16711935&e)<<8)>>16&65535|(65535&e)<<16)>>>0,w=(e,t,r)=>{let i=0,a=e.length-1,s=-1;for(;i<=a;){const n=i+a>>1,o=r(e[n]);o===t?(s=n,a=n-1):o<t?i=n+1:a=n-1}return s},S=(e,t,r)=>{let i=0,a=e.length-1,s=-1;for(;i<=a;){const n=i+(a-i+1)/2|0;r(e[n])<=t?(s=n,i=n+1):a=n-1}return s},I=(e,t,r)=>{const i=S(e,r(t),r);e.splice(i+1,0,t)},v=()=>{let e,t;return{promise:new Promise((r,i)=>{e=r,t=i}),resolve:e,reject:t}},P=(e,t)=>{for(let r=e.length-1;r>=0;r--)if(t(e[r]))return e[r]},x=(e,t)=>{for(let r=e.length-1;r>=0;r--)if(t(e[r]))return r;return-1},C=e=>{throw new Error(`Unexpected value: ${e}`)},_=(e,t,r)=>{const i=e.getUint8(t),a=e.getUint8(t+1),s=e.getUint8(t+2);return r?i|a<<8|s<<16:i<<16|a<<8|s},B=(e,t,r,i)=>{r>>>=0,r&=16777215,e.setUint8(t,r>>>16&255),e.setUint8(t+1,r>>>8&255),e.setUint8(t+2,255&r)},E=(e,t)=>({async next(){const r=await e.next();return r.done?{value:void 0,done:!0}:{value:t(r.value),done:!1}},return:()=>e.return(),throw:t=>e.throw(t),[Symbol.asyncIterator](){return this}}),F=(e,t,r)=>Math.max(t,Math.min(r,e)),D="und",A=e=>{const t=Math.round(e);return Math.abs(e/t-1)<10*Number.EPSILON?t:e},R=/^[a-z]{3}$/,M=e=>R.test(e),N=1e6*(1+Number.EPSILON),z=(e,t)=>{const r={...e,...t};if(e.headers||t.headers){const i=e.headers?O(e.headers):{},a=t.headers?O(t.headers):{},s={...i};Object.entries(a).forEach(([e,t])=>{const r=Object.keys(s).find(t=>t.toLowerCase()===e.toLowerCase());r&&delete s[r],s[e]=t}),r.headers=s}return r},O=e=>{if(e instanceof Headers){const t={};return e.forEach((e,r)=>{t[r]=e}),t}if(Array.isArray(e)){const t={};return e.forEach(([e,r])=>{t[e]=r}),t}return e},L=async(e,t,r,i,a)=>{let s=0;for(;;)try{return await e(t,r)}catch(n){if(a())throw n;s++;const e=i(s,n,t);if(null===e)throw n;if(console.error("Retrying failed fetch. Error:",n),!Number.isFinite(e)||e<0)throw new TypeError("Retry delay must be a non-negative finite number.");if(e>0&&await new Promise(t=>setTimeout(t,1e3*e)),a())throw n}};class U{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}}let V=null;const q=()=>null!==V?V:V=!("undefined"===typeof navigator||!(navigator.vendor?.match(/apple/i)||/AppleWebKit/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)||/\b(iPad|iPhone|iPod)\b/.test(navigator.userAgent)));let H=null;const W=()=>null!==H?H:H="undefined"!==typeof navigator&&navigator.userAgent?.includes("Firefox");let j=null;const K=()=>null!==j?j:j=!("undefined"===typeof navigator||!navigator.vendor?.includes("Google Inc")&&!/Chrome/.test(navigator.userAgent));let $=null;const Q=(e,t)=>-1!==e?e:t,G=(e,t,r,i)=>e<=i&&r<=t,X=e=>{const t=atob(e),r=new Uint8Array(t.length);for(let i=0;i<t.length;i++)r[i]=t.charCodeAt(i);return r},Y=()=>{Symbol.dispose??(Symbol.dispose=Symbol("Symbol.dispose"))},J=e=>"number"===typeof e&&!NumLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class Z{constructor(e,t){if(this.data=e,this.mimeType=t,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if("string"!==typeof t)throw new TypeError("mimeType must be a string.")}}class ee{constructor(e,t,r,i){if(this.data=e,this.mimeType=t,this.name=r,this.description=i,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(void 0!==t&&"string"!==typeof t)throw new TypeError("mimeType, when provided, must be a string.");if(void 0!==r&&"string"!==typeof r)throw new TypeError("name, when provided, must be a string.");if(void 0!==i&&"string"!==typeof i)throw new TypeError("description, when provided, must be a string.")}}const te={default:!0,forced:!1,original:!1,commentary:!1,hearingImpaired:!1,visuallyImpaired:!1},re=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],ie=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],ae=".01.01.01.01.00",se=".0.110.01.01.01.0",ne=e=>{const{codec:r,codecDescription:a,colorSpace:s,avcCodecInfo:n,hevcCodecInfo:o,vp9CodecInfo:l,av1CodecInfo:d}=e;if("avc"===r){if(t(null!==e.avcType),n){const t=new Uint8Array([n.avcProfileIndication,n.profileCompatibility,n.avcLevelIndication]);return`avc${e.avcType}.${T(t)}`}if(!a||a.byteLength<4)throw new TypeError("AVC decoder description is not provided or is not at least 4 bytes long.");return`avc${e.avcType}.${T(a.subarray(1,4))}`}if("hevc"===r){let e,t,r,i,s,n;if(o)e=o.generalProfileSpace,t=o.generalProfileIdc,r=y(o.generalProfileCompatibilityFlags),i=o.generalTierFlag,s=o.generalLevelIdc,n=[...o.generalConstraintIndicatorFlags];else{if(!a||a.byteLength<23)throw new TypeError("HEVC decoder description is not provided or is not at least 23 bytes long.");const o=c(a),l=o.getUint8(1);e=l>>6&3,t=31&l,r=y(o.getUint32(2)),i=l>>5&1,s=o.getUint8(12),n=[];for(let e=0;e<6;e++)n.push(o.getUint8(6+e))}let l="hev1.";for(l+=["","A","B","C"][e]+t,l+=".",l+=r.toString(16).toUpperCase(),l+=".",l+=0===i?"L":"H",l+=s;n.length>0&&0===n[n.length-1];)n.pop();return n.length>0&&(l+=".",l+=n.map(e=>e.toString(16).toUpperCase()).join(".")),l}if("vp8"===r)return"vp8";if("vp9"===r){if(!l){const t=e.width*e.height;let r=i(ie).level;for(const e of ie)if(t<=e.maxPictureSize){r=e.level;break}return`vp09.00.${r.toString().padStart(2,"0")}.08`}let t=`vp09.${l.profile.toString().padStart(2,"0")}.${l.level.toString().padStart(2,"0")}.${l.bitDepth.toString().padStart(2,"0")}.${l.chromaSubsampling.toString().padStart(2,"0")}`;return t+=`.${l.colourPrimaries.toString().padStart(2,"0")}.${l.transferCharacteristics.toString().padStart(2,"0")}.${l.matrixCoefficients.toString().padStart(2,"0")}.${l.videoFullRangeFlag.toString().padStart(2,"0")}`,t.endsWith(ae)&&(t=t.slice(0,-15)),t}if("av1"===r){if(!d){const t=e.width*e.height;let r=i(ie).level;for(const e of ie)if(t<=e.maxPictureSize){r=e.level;break}return`av01.0.${r.toString().padStart(2,"0")}M.08`}const t=d.profile,r=d.level.toString().padStart(2,"0"),a=d.tier?"H":"M",n=d.bitDepth.toString().padStart(2,"0"),o=d.monochrome?"1":"0",c=100*d.chromaSubsamplingX+10*d.chromaSubsamplingY+1*(d.chromaSubsamplingX&&d.chromaSubsamplingY?d.chromaSamplePosition:0),l=s?.primaries?u[s.primaries]:1,h=s?.transfer?m[s.transfer]:1,f=s?.matrix?p[s.matrix]:1,g=s?.fullRange?1:0;let k=`av01.${t}.${r}${a}.${n}`;return k+=`.${o}.${c.toString().padStart(3,"0")}`,k+=`.${l.toString().padStart(2,"0")}`,k+=`.${h.toString().padStart(2,"0")}`,k+=`.${f.toString().padStart(2,"0")}`,k+=`.${g}`,k.endsWith(se)&&(k=k.slice(0,-17)),k}throw new TypeError(`Unhandled codec '${r}'.`)},oe=e=>{const{codec:t,codecDescription:r,aacCodecInfo:i}=e;if("aac"===t){if(!i)throw new TypeError("AAC codec info must be provided.");if(i.isMpeg2)return"mp4a.67";return`mp4a.40.${de(r).objectType}`}if("mp3"===t)return"mp3";if("opus"===t)return"opus";if("vorbis"===t)return"vorbis";if("flac"===t)return"flac";if(t&&re.includes(t))return t;throw new TypeError(`Unhandled codec '${t}'.`)},ce=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],le=[-1,1,2,3,4,5,6,8],de=e=>{if(!e||e.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");const t=new a(e);let r=t.readBits(5);31===r&&(r=32+t.readBits(6));const i=t.readBits(4);let s=null;15===i?s=t.readBits(24):i<ce.length&&(s=ce[Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var fe,pe,ge,ke;(pe=fe||(fe={}))[pe.IDR=5]="IDR",pe[pe.SEI=6]="SEI",pe[pe.SPS=7]="SPS",pe[pe.PPS=8]="PPS",pe[pe.SPS_EXT=13]="SPS_EXT",(ke=ge||(ge={}))[ke.RASL_N=8]="RASL_N",ke[ke.RASL_R=9]="RASL_R",ke[ke.BLA_W_LP=16]="BLA_W_LP",ke[ke.RSV_IRAP_VCL23=23]="RSV_IRAP_VCL23",ke[ke.VPS_NUT=32]="VPS_NUT",ke[ke.SPS_NUT=33]="SPS_NUT",ke[ke.PPS_NUT=34]="PPS_NUT",ke[ke.PREFIX_SEI_NUT=39]="PREFIX_SEI_NUT",ke[ke.SUFFIX_SEI_NUT=40]="SUFFIX_SEI_NUT";const be=e=>{const t=[];let r=0;for(;r<e.length;){let i=-1,a=0;for(let t=r;t<e.length-3;t++){if(0===e[t]&&0===e[t+1]&&1===e[t+2]){i=t,a=3;break}if(t<e.length-4&&0===e[t]&&0===e[t+1]&&0===e[t+2]&&1===e[t+3]){i=t,a=4;break}}if(-1===i)break;if(r>0&&i>r){const a=e.subarray(r,i);a.length>0&&t.push(a)}r=i+a}if(r<e.length){const i=e.subarray(r);i.length>0&&t.push(i)}return t},Te=(e,r)=>{const i=[];let a=0;const s=new DataView(e.buffer,e.byteOffset,e.byteLength);for(;a+r<=e.length;){let n;1===r?n=s.getUint8(a):2===r?n=s.getUint16(a,!1):3===r?n=_(s,a,!1):4===r?n=s.getUint32(a,!1):(C(r),t(!1)),a+=r;const o=e.subarray(a,a+n);i.push(o),a+=n}return i},ye=e=>{const t=[],r=e.length;for(let i=0;i<r;i++)i+2<r&&0===e[i]&&0===e[i+1]&&3===e[i+2]?(t.push(0,0),i+=2):t.push(e[i]);return new Uint8Array(t)},we=new Uint8Array([0,0,0,1]),Se=(e,t)=>{if(t.description){const r=3&o(t.description)[4];return Te(e,r+1)}return be(e)},Ie=(e,t)=>{if(t.description){return((e,t)=>{const r=e.reduce((e,r)=>e+t+r.byteLength,0),i=new Uint8Array(r);let a=0;for(const s of e){const e=new DataView(i.buffer,i.byteOffset,i.byteLength);switch(t){case 1:e.setUint8(a,s.byteLength);break;case 2:e.setUint16(a,s.byteLength,!1);break;case 3:B(e,a,s.byteLength);break;case 4:e.setUint32(a,s.byteLength,!1)}a+=t,i.set(s,a),a+=s.byteLength}return i})(e,(3&o(t.description)[4])+1)}return(e=>{const t=e.reduce((e,t)=>e+we.byteLength+t.byteLength,0),r=new Uint8Array(t);let i=0;for(const a of e)r.set(we,i),i+=we.byteLength,r.set(a,i),i+=a.byteLength;return r})(e)},ve=e=>31&e[0],Pe=e=>{try{const r=be(e),i=r.filter(e=>ve(e)===fe.SPS),a=r.filter(e=>ve(e)===fe.PPS),s=r.filter(e=>ve(e)===fe.SPS_EXT);if(0===i.length)return null;if(0===a.length)return null;const n=i[0],o=xe(n);t(null!==o);const c=100===o.profileIdc||110===o.profileIdc||122===o.profileIdc||144===o.profileIdc;return{configurationVersion:1,avcProfileIndication:o.profileIdc,profileCompatibility:o.constraintFlags,avcLevelIndication:o.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:i,pictureParameterSets:a,chromaFormat:c?o.chromaFormatIdc:null,bitDepthLumaMinus8:c?o.bitDepthLumaMinus8:null,bitDepthChromaMinus8:c?o.bitDepthChromaMinus8:null,sequenceParameterSetExt:c?s:null}}catch(r){return console.error("Error building AVC Decoder Configuration Record:",r),null}},xe=e=>{try{const t=new a(ye(e));t.skipBits(1),t.skipBits(2);if(7!==t.readBits(5))return null;const r=t.readAlignedByte(),i=t.readAlignedByte(),o=t.readAlignedByte();s(t);let c=null,l=null,d=null;if(100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r){c=s(t),3===c&&t.skipBits(1),l=s(t),d=s(t),t.skipBits(1);if(t.readBits(1))for(let e=0;e<(3!==c?8:12);e++){if(t.readBits(1)){const r=e<6?16:64;let i=8,a=8;for(let e=0;e<r;e++){if(0!==a){a=(i+n(t)+256)%256}i=0===a?i:a}}}}s(t);const u=s(t);if(0===u)s(t);else if(1===u){t.skipBits(1),n(t),n(t);const e=s(t);for(let r=0;r<e;r++)n(t)}s(t),t.skipBits(1),s(t),s(t);return{profileIdc:r,constraintFlags:i,levelIdc:o,frameMbsOnlyFlag:t.readBits(1),chromaFormatIdc:c,bitDepthLumaMinus8:l,bitDepthChromaMinus8:d}}catch(t){return console.error("Error parsing AVC SPS:",t),null}},Ce=(e,t)=>{if(t.description){const r=3&o(t.description)[21];return Te(e,r+1)}return be(e)},_e=e=>e[0]>>1&63,Be=e=>{try{const t=be(e),r=t.filter(e=>_e(e)===ge.VPS_NUT),i=t.filter(e=>_e(e)===ge.SPS_NUT),o=t.filter(e=>_e(e)===ge.PPS_NUT),c=t.filter(e=>_e(e)===ge.PREFIX_SEI_NUT||_e(e)===ge.SUFFIX_SEI_NUT);if(0===i.length||0===o.length)return null;const l=i[0],d=new a(ye(l));d.skipBits(16),d.readBits(4);const u=d.readBits(3),h=d.readBits(1),{general_profile_space:m,general_tier_flag:f,general_profile_idc:p,general_profile_compatibility_flags:g,general_constraint_indicator_flags:k,general_level_idc:b}=Ee(d,u);s(d);const T=s(d);3===T&&d.skipBits(1),s(d),s(d),d.readBits(1)&&(s(d),s(d),s(d),s(d));const y=s(d),w=s(d);s(d);const S=d.readBits(1);for(let e=S?0:u;e<=u;e++)s(d),s(d),s(d);s(d),s(d),s(d),s(d),s(d),s(d),d.readBits(1)&&d.readBits(1)&&Fe(d),d.skipBits(1),d.skipBits(1),d.readBits(1)&&(d.skipBits(4),d.skipBits(4),s(d),s(d),d.skipBits(1));const I=s(d);if(De(d,I),d.readBits(1)){const e=s(d);for(let t=0;t<e;t++)s(d),d.skipBits(1)}d.skipBits(1),d.skipBits(1);let v=0;d.readBits(1)&&(v=Re(d,u));let P=0;if(o.length>0){const e=o[0],t=new a(ye(e));t.skipBits(16),s(t),s(t),t.skipBits(1),t.skipBits(1),t.skipBits(3),t.skipBits(1),t.skipBits(1),s(t),s(t),n(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&s(t),n(t),n(t),t.skipBits(1),t.skipBits(1),t.skipBits(1),t.skipBits(1);const r=t.readBits(1),i=t.readBits(1);P=r||i?r&&!iLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class Ke{constructor(e){this.input=e}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const $e=[],Qe=[],Ge=new Uint8Array(0);class Xe{constructor(e,t,r,i,a=-1,s,n){if(this.data=e,this.type=t,this.timestamp=r,this.duration=i,this.sequenceNumber=a,e===Ge&&void 0===s)throw new Error("Internal error: byteLength must be explicitly provided when constructing metadata-only packets.");if(void 0===s&&(s=e.byteLength),!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if("key"!==t&&"delta"!==t)throw new TypeError('type must be either "key" or "delta".');if(!Number.isFinite(r))throw new TypeError("timestamp must be a number.");if(!Number.isFinite(i)||i<0)throw new TypeError("duration must be a non-negative number.");if(!Number.isFinite(a))throw new TypeError("sequenceNumber must be a number.");if(!Number.isInteger(s)||s<0)throw new TypeError("byteLength must be a non-negative integer.");if(void 0!==n&&("object"!==typeof n||!n))throw new TypeError("sideData, when provided, must be an object.");if(void 0!==n?.alpha&&!(n.alpha instanceof Uint8Array))throw new TypeError("sideData.alpha, when provided, must be a Uint8Array.");if(void 0!==n?.alphaByteLength&&(!Number.isInteger(n.alphaByteLength)||n.alphaByteLength<0))throw new TypeError("sideData.alphaByteLength, when provided, must be a non-negative integer.");this.byteLength=s,this.sideData=n??{},this.sideData.alpha&&void 0===this.sideData.alphaByteLength&&(this.sideData.alphaByteLength=this.sideData.alpha.byteLength)}get isMetadataOnly(){return this.data===Ge}get microsecondTimestamp(){return Math.trunc(N*this.timestamp)}get microsecondDuration(){return Math.trunc(N*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if("undefined"===typeof EncodedVideoChunk)throw new Error("Your browser does not support EncodedVideoChunk.");return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}alphaToEncodedVideoChunk(e=this.type){if(!this.sideData.alpha)throw new TypeError("This packet does not contain alpha side data.");if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if("undefined"===typeof EncodedVideoChunk)throw new Error("Your browser does not support EncodedVideoChunk.");return new EncodedVideoChunk({data:this.sideData.alpha,type:e,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to an audio chunk.");if("undefined"===typeof EncodedAudioChunk)throw new Error("Your browser does not support EncodedAudioChunk.");return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(e,t){if(!(e instanceof EncodedVideoChunk||e instanceof EncodedAudioChunk))throw new TypeError("chunk must be an EncodedVideoChunk or EncodedAudioChunk.");const r=new Uint8Array(e.byteLength);return e.copyTo(r),new Xe(r,e.type,e.timestamp/1e6,(e.duration??0)/1e6,void 0,void 0,t)}clone(e){if(void 0!==e&&("object"!==typeof e||null===e))throw new TypeError("options, when provided, must be an object.");if(void 0!==e?.timestamp&&!Number.isFinite(e.timestamp))throw new TypeError("options.timestamp, when provided, must be a number.");if(void 0!==e?.duration&&!Number.isFinite(e.duration))throw new TypeError("options.duration, when provided, must be a number.");return new Xe(this.data,this.type,e?.timestamp??this.timestamp,e?.duration??this.duration,this.sequenceNumber,this.byteLength)}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
Y();let Ye=-1/0,Je=-1/0,Ze=null;"undefined"!==typeof FinalizationRegistry&&(Ze=new FinalizationRegistry(e=>{const t=Date.now();"video"===e.type?(t-Ye>=1e3&&(console.error("A VideoSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your VideoSamples as soon as you're done using them."),Ye=t),"undefined"!==typeof VideoFrame&&e.data instanceof VideoFrame&&e.data.close()):(t-Je>=1e3&&(console.error("An AudioSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your AudioSamples as soon as you're done using them."),Je=t),"undefined"!==typeof AudioData&&e.data instanceof AudioData&&e.data.close())}));const et=["I420","I420P10","I420P12","I420A","I420AP10","I420AP12","I422","I422P10","I422P12","I422A","I422AP10","I422AP12","I444","I444P10","I444P12","I444A","I444AP10","I444AP12","NV12","RGBA","RGBX","BGRA","BGRX"],tt=new Set(et);class rt{get displayWidth(){return this.rotation%180===0?this.codedWidth:this.codedHeight}get displayHeight(){return this.rotation%180===0?this.codedHeight:this.codedWidth}get microsecondTimestamp(){return Math.trunc(N*this.timestamp)}get microsecondDuration(){return Math.trunc(N*this.duration)}get hasAlpha(){return this.format&&this.format.includes("A")}constructor(e,r){if(this._closed=!1,e instanceof ArrayBuffer||"undefined"!==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e)){if(!r||"object"!==typeof r)throw new TypeError("init must be an object.");if(void 0===r.format||!tt.has(r.format))throw new TypeError("init.format must be one of: "+et.join(", "));if(!Number.isInteger(r.codedWidth)||r.codedWidth<=0)throw new TypeError("init.codedWidth must be a positive integer.");if(!Number.isInteger(r.codedHeight)||r.codedHeight<=0)throw new TypeError("init.codedHeight must be a positive integer.");if(void 0!==r.rotation&&![0,90,180,270].includes(r.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(r.timestamp))throw new TypeError("init.timestamp must be a number.");if(void 0!==r.duration&&(!Number.isFinite(r.duration)||r.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=o(e).slice(),this._layout=r.layout??ct(r.format,r.codedWidth,r.codedHeight),this.format=r.format,this.codedWidth=r.codedWidth,this.codedHeight=r.codedHeight,this.rotation=r.rotation??0,this.timestamp=r.timestamp,this.duration=r.duration??0,this.colorSpace=new it(r.colorSpace)}else if("undefined"!==typeof VideoFrame&&e instanceof VideoFrame){if(void 0!==r?.rotation&&![0,90,180,270].includes(r.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(void 0!==r?.timestamp&&!Number.isFinite(r?.timestamp))throw new TypeError("init.timestamp, when provided, must be a number.");if(void 0!==r?.duration&&(!Number.isFinite(r.duration)||r.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=e,this._layout=null,this.format=e.format,this.codedWidth=e.displayWidth,this.codedHeight=e.displayHeight,this.rotation=r?.rotation??0,this.timestamp=r?.timestamp??e.timestamp/1e6,this.duration=r?.duration??(e.duration??0)/1e6,this.colorSpace=new it(e.colorSpace)}else{if(!("undefined"!==typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!==typeof SVGImageElement&&e instanceof SVGImageElement||"undefined"!==typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!==typeof HTMLVideoElement&&e instanceof HTMLVideoElement||"undefined"!==typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!==typeof OffscreenCanvas&&e instanceof OffscreenCanvas))throw new TypeError("Invalid data type: Must be a BufferSource or CanvasImageSource.");{if(!r||"object"!==typeof r)throw new TypeError("init must be an object.");if(void 0!==r.rotation&&![0,90,180,270].includes(r.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(r.timestamp))throw new TypeError("init.timestamp must be a number.");if(void 0!==r.duration&&(!Number.isFinite(r.duration)||r.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if("undefined"!==typeof VideoFrame)return new rt(new VideoFrame(e,{timestamp:Math.trunc(r.timestamp*N),duration:Math.trunc((r.duration??0)*N)||void 0}),r);let i=0,a=0;if("naturalWidth"in e?(i=e.naturalWidth,a=e.naturalHeight):"videoWidth"in e?(i=e.videoWidth,a=e.videoHeight):"width"in e&&(i=Number(e.width),a=Number(e.height)),!i||!a)throw new TypeError("Could not determine dimensions.");const s=new OffscreenCanvas(i,a),n=s.getContext("2d",{alpha:W(),willReadFrequently:!0});t(n),n.drawImage(e,0,0),this._data=s,this._layout=null,this.format="RGBX",this.codedWidth=i,this.codedHeight=a,this.rotation=r.rotation??0,this.timestamp=r.timestamp,this.duration=r.duration??0,this.colorSpace=neLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class At{constructor(e,t){this.input=e,this._backing=t}isVideoTrack(){return this instanceof Rt}isAudioTrack(){return this instanceof Mt}get id(){return this._backing.getId()}get internalCodecId(){return this._backing.getInternalCodecId()}get languageCode(){return this._backing.getLanguageCode()}get name(){return this._backing.getName()}get timeResolution(){return this._backing.getTimeResolution()}get disposition(){return this._backing.getDisposition()}getFirstTimestamp(){return this._backing.getFirstTimestamp()}computeDuration(){return this._backing.computeDuration()}async computePacketStats(e=1/0){const t=new wt(this);let r=1/0,i=-1/0,a=0,s=0;for await(const n of t.packets(void 0,void 0,{metadataOnly:!0})){if(a>=e&&n.timestamp>=i)break;r=Math.min(r,n.timestamp),i=Math.max(i,n.timestamp+n.duration),a++,s+=n.byteLength}return{packetCount:a,averagePacketRate:a?Number((a/(i-r)).toPrecision(16)):0,averageBitrate:a?Number((8*s/(i-r)).toPrecision(16)):0}}}class Rt extends At{constructor(e,t){super(e,t),this._backing=t}get type(){return"video"}get codec(){return this._backing.getCodec()}get codedWidth(){return this._backing.getCodedWidth()}get codedHeight(){return this._backing.getCodedHeight()}get rotation(){return this._backing.getRotation()}get displayWidth(){return this._backing.getRotation()%180===0?this._backing.getCodedWidth():this._backing.getCodedHeight()}get displayHeight(){return this._backing.getRotation()%180===0?this._backing.getCodedHeight():this._backing.getCodedWidth()}getColorSpace(){return this._backing.getColorSpace()}async hasHighDynamicRange(){const e=await this._backing.getColorSpace();return"bt2020"===e.primaries||"smpte432"===e.primaries||"pg"===e.transfer||"hlg"===e.transfer||"bt2020-ncl"===e.matrix}canBeTransparent(){return this._backing.canBeTransparent()}getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){const e=await this._backing.getDecoderConfig();return e?.codec??null}async canDecode(){try{const e=await this._backing.getDecoderConfig();if(!e)return!1;const r=this._backing.getCodec();if(t(null!==r),$e.some(t=>t.supports(r,e)))return!0;if("undefined"===typeof VideoDecoder)return!1;return!0===(await VideoDecoder.isConfigSupported(e)).supported}catch(e){return console.error("Error during decodability check:",e),!1}}async determinePacketType(e){if(!(e instanceof Xe))throw new TypeError("packet must be an EncodedPacket.");if(e.isMetadataOnly)throw new TypeError("packet must not be metadata-only to determine its type.");if(null===this.codec)return null;const r=await this.getDecoderConfig();return t(r),qe(this.codec,r,e.data)}}class Mt extends At{constructor(e,t){super(e,t),this._backing=t}get type(){return"audio"}get codec(){return this._backing.getCodec()}get numberOfChannels(){return this._backing.getNumberOfChannels()}get sampleRate(){return this._backing.getSampleRate()}getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){const e=await this._backing.getDecoderConfig();return e?.codec??null}async canDecode(){try{const e=await this._backing.getDecoderConfig();if(!e)return!1;const r=this._backing.getCodec();if(t(null!==r),Qe.some(t=>t.supports(r,e)))return!0;if(e.codec.startsWith("pcm-"))return!0;if("undefined"===typeof AudioDecoder)return!1;return!0===(await AudioDecoder.isConfigSupported(e)).supported}catch(e){return console.error("Error during decodability check:",e),!1}}async determinePacketType(e){if(!(e instanceof Xe))throw new TypeError("packet must be an EncodedPacket.");return null===this.codec?null:"key"}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const Nt=e=>{let t=ua(e);const r=ya(e,4);let i=8;1===t&&(t=pa(e),i=16);const a=t-i;return a<0?null:{name:r,totalSize:t,headerSize:i,contentSize:a}},zt=e=>ma(e)/65536,Ot=e=>ma(e)/1073741824,Lt=e=>{let t=0;for(let r=0;r<4;r++){t<<=7;const r=sa(e);if(t|=127&r,0===(128&r))break}return t},Ut=e=>{let t=oa(e);return e.skip(2),t=Math.min(t,e.remainingLength),l.decode(aa(e,t))},Vt=e=>{const t=Nt(e);if(!t||"data"!==t.name)return null;if(e.remainingLength<8)return null;const r=ua(e);e.skip(4);const i=aa(e,t.contentSize-8);switch(r){case 1:return l.decode(i);case 2:return new TextDecoder("utf-16be").decode(i);case 13:return new Z(i,"image/jpeg");case 14:return new Z(i,"image/png");case 27:return new Z(i,"image/bmp");default:return i}};
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class qt extends Ke{constructor(e){super(e),this.moovSlice=null,this.currentTrack=null,this.tracks=[],this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.isQuickTime=!1,this.metadataTags={},this.currentMetadataKeys=null,this.isFragmented=!1,this.fragmentTrackDefaults=[],this.currentFragment=null,this.lastReadFragment=null,this.reader=e._reader}async computeDuration(){const e=await this.getTracks(),t=await Promise.all(e.map(e=>e.computeDuration()));return Math.max(0,...t)}async getTracks(){return await this.readMetadata(),this.tracks.map(e=>e.inputTrack)}async getMimeType(){await this.readMetadata();const e=await Promise.all(this.tracks.map(e=>e.inputTrack.getCodecParameterString()));return(e=>{let t=(e.hasVideo?"video/":e.hasAudio?"audio/":"application/")+(e.isQuickTime?"quicktime":"mp4");e.codecStrings.length>0&&(t+=`; codecs="${[...new Set(e.codecStrings)].join(", ")}"`);return t})({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(e=>"video"===e.info?.type),hasAudio:this.tracks.some(e=>"audio"===e.info?.type),codecStrings:e.filter(Boolean)})}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}readMetadata(){return this.metadataPromise??(this.metadataPromise=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,8,16);if(t instanceof Promise&&(t=await t),!t)break;const r=e,i=Nt(t);if(!i)break;if("ftyp"===i.name){const e=ya(t,4);this.isQuickTime="qt "===e}else if("moov"===i.name){let e=this.reader.requestSlice(t.filePos,i.contentSize);if(e instanceof Promise&&(e=await e),!e)break;this.moovSlice=e,this.readContiguousBoxes(this.moovSlice),this.tracks.sort((e,t)=>Number(t.disposition.default)-Number(e.disposition.default));for(const t of this.tracks){const e=t.editListPreviousSegmentDurations/this.movieTimescale;t.editListOffset-=Math.round(e*t.timescale)}break}e=r+i.totalSize}if(this.isFragmented&&null!==this.reader.fileSize){let e=this.reader.requestSlice(this.reader.fileSize-4,4);e instanceof Promise&&(e=await e),t(e);const r=ua(e),i=this.reader.fileSize-r;if(i>=0&&i<=this.reader.fileSize-16){let e=this.reader.requestSliceRange(i,8,16);if(e instanceof Promise&&(e=await e),e){const t=Nt(e);if(t&&"mfra"===t.name){let r=this.reader.requestSlice(e.filePos,t.contentSize);r instanceof Promise&&(r=await r),r&&this.readContiguousBoxes(r)}}}}})())}getSampleTableForTrack(e){if(e.sampleTable)return e.sampleTable;const r={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],presentationTimestamps:null,presentationTimestampIndexMap:null};e.sampleTable=r,t(this.moovSlice);const a=this.moovSlice.slice(e.sampleTableByteOffset);this.currentTrack=e,this.traverseBox(a),this.currentTrack=null;if("audio"===e.info?.type&&e.info.codec&&re.includes(e.info.codec)&&0===r.sampleCompositionTimeOffsets.length){t("audio"===e.info?.type);const a=me(e.info.codec),s=[],n=[];for(let t=0;t<r.sampleToChunk.length;t++){const o=r.sampleToChunk[t],c=r.sampleToChunk[t+1],l=(c?c.startChunkIndex:r.chunkOffsets.length)-o.startChunkIndex;for(let t=0;t<l;t++){const c=o.startSampleIndex+t*o.samplesPerChunk,l=c+o.samplesPerChunk,d=S(r.sampleTimingEntries,c,e=>e.startIndex),u=r.sampleTimingEntries[d],h=S(r.sampleTimingEntries,l,e=>e.startIndex),m=r.sampleTimingEntries[h],f=u.startDecodeTimestamp+(c-u.startIndex)*u.delta,p=m.startDecodeTimestamp+(l-m.startIndex)*m.delta-f,g=i(s);g&&g.delta===p?g.count++:s.push({startIndex:o.startChunkIndex+t,startDecodeTimestamp:f,count:1,delta:p});const k=o.samplesPerChunk*a.sampleSize*e.info.numberOfChannels;n.push(k)}o.startSampleIndex=o.startChunkIndex,o.samplesPerChunk=1}r.sampleTimingEntries=s,r.sampleSizes=n}if(r.sampleCompositionTimeOffsets.length>0){r.presentationTimestamps=[];for(const e of r.sampleTimingEntries)for(let t=0;t<e.count;t++)r.presentationTimestamps.push({presentationTimestamp:e.startDecodeTimestamp+t*e.delta,sampleIndex:e.startIndex+t});for(const e of r.sampleCompositionTimeOffsets)for(let t=0;t<e.count;t++){const i=e.startIndex+t,a=r.presentationTimestamps[i];a&&(a.presentationTimestamp+=e.offset)}r.presentationTimestamps.sort((e,t)=>e.presentationTimestamp-t.presentationTimestamp),r.presentationTimestampIndexMap=Array(r.presentationTimestamps.length).fill(-1);for(let e=0;e<r.presentationTimestamps.length;e++)r.presentationTimestampIndexMap[r.presentationTimestamps[e].sampleIndex]=e}return r}async readFragment(e){if(this.lastReadFragment?.moofOffset===e)return this.lastReadFragment;let r=this.reader.requestSliceRange(e,8,16);r instanceof Promise&&(r=await r),t(r);const i=Nt(r);t("moof"===i?.name);let a=this.reader.requestSlice(e,i.totalSize);a instanceof Promise&&(a=await a),t(a),this.traverseBox(a);const s=this.lastReadFragment;t(s&&s.moofOffset===e);for(const[,t]of s.trackData){const e=t.track,{fragmentPositionCache:r}=e;if(!t.startTimestampIsFinal){const i=e.fragmentLookupTable.find(e=>e.moofOffset===s.moofOffset);if(i)Xt(t,i.timestamp);else{const eLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var Zt,er;(er=Zt||(Zt={}))[er.EBML=440786851]="EBML",er[er.EBMLVersion=17030]="EBMLVersion",er[er.EBMLReadVersion=17143]="EBMLReadVersion",er[er.EBMLMaxIDLength=17138]="EBMLMaxIDLength",er[er.EBMLMaxSizeLength=17139]="EBMLMaxSizeLength",er[er.DocType=17026]="DocType",er[er.DocTypeVersion=17031]="DocTypeVersion",er[er.DocTypeReadVersion=17029]="DocTypeReadVersion",er[er.Void=236]="Void",er[er.Segment=408125543]="Segment",er[er.SeekHead=290298740]="SeekHead",er[er.Seek=19899]="Seek",er[er.SeekID=21419]="SeekID",er[er.SeekPosition=21420]="SeekPosition",er[er.Duration=17545]="Duration",er[er.Info=357149030]="Info",er[er.TimestampScale=2807729]="TimestampScale",er[er.MuxingApp=19840]="MuxingApp",er[er.WritingApp=22337]="WritingApp",er[er.Tracks=374648427]="Tracks",er[er.TrackEntry=174]="TrackEntry",er[er.TrackNumber=215]="TrackNumber",er[er.TrackUID=29637]="TrackUID",er[er.TrackType=131]="TrackType",er[er.FlagEnabled=185]="FlagEnabled",er[er.FlagDefault=136]="FlagDefault",er[er.FlagForced=21930]="FlagForced",er[er.FlagOriginal=21934]="FlagOriginal",er[er.FlagHearingImpaired=21931]="FlagHearingImpaired",er[er.FlagVisualImpaired=21932]="FlagVisualImpaired",er[er.FlagCommentary=21935]="FlagCommentary",er[er.FlagLacing=156]="FlagLacing",er[er.Name=21358]="Name",er[er.Language=2274716]="Language",er[er.LanguageBCP47=2274717]="LanguageBCP47",er[er.CodecID=134]="CodecID",er[er.CodecPrivate=25506]="CodecPrivate",er[er.CodecDelay=22186]="CodecDelay",er[er.SeekPreRoll=22203]="SeekPreRoll",er[er.DefaultDuration=2352003]="DefaultDuration",er[er.Video=224]="Video",er[er.PixelWidth=176]="PixelWidth",er[er.PixelHeight=186]="PixelHeight",er[er.AlphaMode=21440]="AlphaMode",er[er.Audio=225]="Audio",er[er.SamplingFrequency=181]="SamplingFrequency",er[er.Channels=159]="Channels",er[er.BitDepth=25188]="BitDepth",er[er.SimpleBlock=163]="SimpleBlock",er[er.BlockGroup=160]="BlockGroup",er[er.Block=161]="Block",er[er.BlockAdditions=30113]="BlockAdditions",er[er.BlockMore=166]="BlockMore",er[er.BlockAdditional=165]="BlockAdditional",er[er.BlockAddID=238]="BlockAddID",er[er.BlockDuration=155]="BlockDuration",er[er.ReferenceBlock=251]="ReferenceBlock",er[er.Cluster=524531317]="Cluster",er[er.Timestamp=231]="Timestamp",er[er.Cues=475249515]="Cues",er[er.CuePoint=187]="CuePoint",er[er.CueTime=179]="CueTime",er[er.CueTrackPositions=183]="CueTrackPositions",er[er.CueTrack=247]="CueTrack",er[er.CueClusterPosition=241]="CueClusterPosition",er[er.Colour=21936]="Colour",er[er.MatrixCoefficients=21937]="MatrixCoefficients",er[er.TransferCharacteristics=21946]="TransferCharacteristics",er[er.Primaries=21947]="Primaries",er[er.Range=21945]="Range",er[er.Projection=30320]="Projection",er[er.ProjectionType=30321]="ProjectionType",er[er.ProjectionPoseRoll=30325]="ProjectionPoseRoll",er[er.Attachments=423732329]="Attachments",er[er.AttachedFile=24999]="AttachedFile",er[er.FileDescription=18046]="FileDescription",er[er.FileName=18030]="FileName",er[er.FileMediaType=18016]="FileMediaType",er[er.FileData=18012]="FileData",er[er.FileUID=18094]="FileUID",er[er.Chapters=272869232]="Chapters",er[er.Tags=307544935]="Tags",er[er.Tag=29555]="Tag",er[er.Targets=25536]="Targets",er[er.TargetTypeValue=26826]="TargetTypeValue",er[er.TargetType=25546]="TargetType",er[er.TagTrackUID=25541]="TagTrackUID",er[er.TagEditionUID=25545]="TagEditionUID",er[er.TagChapterUID=25540]="TagChapterUID",er[er.TagAttachmentUID=25542]="TagAttachmentUID",er[er.SimpleTag=26568]="SimpleTag",er[er.TagName=17827]="TagName",er[er.TagLanguage=17530]="TagLanguage",er[er.TagString=17543]="TagString",er[er.TagBinary=17541]="TagBinary",er[er.ContentEncodings=28032]="ContentEncodings",er[er.ContentEncoding=25152]="ContentEncoding",er[er.ContentEncodingOrder=20529]="ContentEncodingOrder",er[er.ContentEncodingScope=20530]="ContentEncodingScope",er[er.ContentCompression=20532]="ContentCompression",er[er.ContentCompAlgo=16980]="ContentCompAlgo",er[er.ContentCompSettings=16981]="ContentCompSettings",er[er.ContentEncryption=20533]="ContentEncryption";const tr=[Zt.EBML,Zt.Segment],rr=[Zt.SeekHead,Zt.Info,Zt.Cluster,Zt.Tracks,Zt.Cues,Zt.Attachments,Zt.Chapters,Zt.Tags],ir=[...tr,...rr],ar=16,sr=e=>{if(e.remainingLength<1)return null;const t=sa(e);if(e.skip(-1),0===t)return null;let r=1,i=128;for(;0===(t&i);)r++,i>>=1;return e.remainingLength<r?null:r},nr=e=>{if(e.remainingLength<1)return null;const t=sa(e);if(0===t)return null;let r=1,i=128;for(;0===(t&i);)r++,i>>=1;if(e.remainingLength<r-1)return null;let a=t&i-1;for(let s=1;s<r;s++)a*=256,a+=sa(e);return a},or=(e,t)=>{if(t<1||t>8)throw new Error("Bad unsigned int size "+t);let r=0;for(let i=0;i<t;i++)r*=256,r+=sa(e);return r},cr=e=>{const t=sr(e);if(null===t)return null;if(e.remainingLength<t)return null;return or(e,t)},lr=e=>{if(e.remainingLength<1)return null;if(255===sa(e))return;e.skip(-1);const t=nr(e);return null===t?null:72057594037927940!==t?t:void 0},dr=e=>{t(e.remainingLength>=2);const r=cr(e);if(null===r)return null;const i=lr(e);return null==Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var Cr,_r,Br,Er,Fr,Dr;(_r=Cr||(Cr={}))[_r.None=0]="None",_r[_r.Xiph=1]="Xiph",_r[_r.FixedSize=2]="FixedSize",_r[_r.Ebml=3]="Ebml",(Er=Br||(Br={}))[Er.Block=1]="Block",Er[Er.Private=2]="Private",Er[Er.Next=4]="Next",(Dr=Fr||(Fr={}))[Dr.Zlib=0]="Zlib",Dr[Dr.Bzlib=1]="Bzlib",Dr[Dr.lzo1x=2]="lzo1x",Dr[Dr.HeaderStripping=3]="HeaderStripping";const Ar=[{id:Zt.SeekHead,flag:"seekHeadSeen"},{id:Zt.Info,flag:"infoSeen"},{id:Zt.Tracks,flag:"tracksSeen"},{id:Zt.Cues,flag:"cuesSeen"}],Rr=10485760;class Mr extends Ke{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentBlockAdditional=null,this.currentCueTime=null,this.currentDecodingInstruction=null,this.currentTagTargetIsMovie=!0,this.currentSimpleTagName=null,this.currentAttachedFile=null,this.isWebM=!1,this.reader=e._reader}async computeDuration(){const e=await this.getTracks(),t=await Promise.all(e.map(e=>e.computeDuration()));return Math.max(0,...t)}async getTracks(){return await this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(e=>e.inputTrack))}async getMimeType(){await this.readMetadata();const e=await this.getTracks(),t=await Promise.all(e.map(e=>e.getCodecParameterString()));return(e=>{let t=(e.hasVideo?"video/":e.hasAudio?"audio/":"application/")+(e.isWebM?"webm":"x-matroska");e.codecStrings.length>0&&(t+=`; codecs="${[...new Set(e.codecStrings.filter(Boolean))].join(", ")}"`);return t})({isWebM:this.isWebM,hasVideo:this.segments.some(e=>e.tracks.some(e=>"video"===e.info?.type)),hasAudio:this.segments.some(e=>e.tracks.some(e=>"audio"===e.info?.type)),codecStrings:t.filter(Boolean)})}async getMetadataTags(){await this.readMetadata();for(const t of this.segments)t.metadataTagsCollected||(null!==this.reader.fileSize&&await this.loadSegmentMetadata(t),t.metadataTagsCollected=!0);let e={};for(const t of this.segments)e={...e,...t.metadataTags};return e}readMetadata(){return this.readMetadataPromise??(this.readMetadataPromise=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,2,ar);if(t instanceof Promise&&(t=await t),!t)break;const r=dr(t);if(!r)break;const a=r.id;let s=r.size;const n=t.filePos;if(a===Zt.EBML){xr(s);let e=this.reader.requestSlice(n,s);if(e instanceof Promise&&(e=await e),!e)break;this.readContiguousElements(e)}else if(a===Zt.Segment){if(await this.readSegment(n,s),void 0===s)break;if(null===this.reader.fileSize)break}else if(a===Zt.Cluster){if(null===this.reader.fileSize)break;if(void 0===s){s=(await fr(this.reader,n,ir,this.reader.fileSize)).pos-n}const e=i(this.segments);e&&(e.elementEndPos=n+s)}xr(s),e=n+s}})())}async readSegment(e,t){this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,tagsSeen:!1,attachmentsSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],cuePoints:[],dataStartPos:e,elementEndPos:void 0===t?null:e+t,clusterSeekStartPos:e,lastReadCluster:null,metadataTags:{},metadataTagsCollected:!1},this.segments.push(this.currentSegment);let r=e;for(;null===this.currentSegment.elementEndPos||r<this.currentSegment.elementEndPos;){let e=this.reader.requestSliceRange(r,2,ar);if(e instanceof Promise&&(e=await e),!e)break;const t=r,i=dr(e);if(!i||!rr.includes(i.id)&&i.id!==Zt.Void){const e=await pr(this.reader,t,rr,Math.min(this.currentSegment.elementEndPos??1/0,t+Rr));if(e){r=e;continue}break}const{id:a,size:s}=i,n=e.filePos,o=Ar.findIndex(e=>e.id===a);if(-1!==o){const e=Ar[o].flag;this.currentSegment[e]=!0,xr(s);let t=this.reader.requestSlice(n,s);t instanceof Promise&&(t=await t),t&&this.readContiguousElements(t)}else if(a===Zt.Tags||a===Zt.Attachments){a===Zt.Tags?this.currentSegment.tagsSeen=!0:this.currentSegment.attachmentsSeen=!0,xr(s);let e=this.reader.requestSlice(n,s);e instanceof Promise&&(e=await e),e&&this.readContiguousElements(e)}else if(a===Zt.Cluster){this.currentSegment.clusterSeekStartPos=t;break}if(void 0===s)break;r=n+s}if(this.currentSegment.seekEntries.sort((e,t)=>e.segmentPosition-t.segmentPosition),null!==this.reader.fileSize)for(const n of this.currentSegment.seekEntries){const t=Ar.find(e=>e.id===n.id);if(!t)continue;if(this.currentSegment[t.flag])continue;let r=this.reader.requestSliceRange(e+n.segmentPosition,2,ar);if(r instanceof Promise&&(r=await r),!r)continue;const i=dr(r);if(!i)continue;const{id:a,size:s}=i;if(a!==t.id)continue;xr(s),this.currentSegment[t.flag]=!0;let o=this.reader.requestSlice(r.filePos,s);o instanceof Promise&&(o=await o),o&&this.readContiguousElements(o)}-1===this.currentSegment.timestampScale&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e3);for(const n of this.currentSegment.tracks)null!==n.defaultDurationNs&&(n.defaultDuration=this.currentSegment.timestampFactor*n.defaultDurationNs/1e9);this.currentSegment.tracks.sort((e,t)=>Number(t.disposition.default)-Number(e.disposition.default));const i=new Map(this.currentSegment.tracks.map(e=>[e.id,e]));for(const n Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const Lr=[44100,48e3,32e3],Ur=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1,-1,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1,-1,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1,-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1,-1,32,48,56,64,80,96,112,128,144,160,176,192,224,256,-1],Vr=(e,t)=>{const r=e>>>24,i=e>>>16&255,a=e>>>8&255,s=255&e;if(255!==r&&255!==i&&255!==a&&255!==s)return{header:null,bytesAdvanced:4};if(255!==r)return{header:null,bytesAdvanced:1};if(224!==(224&i))return{header:null,bytesAdvanced:1};let n=0,o=0;16&i?n=8&i?0:1:(n=1,o=1);const c=i>>3&3,l=i>>1&3,d=(a>>2&3)%3,u=s>>6&3,h=s>>4&3,m=s>>3&1,f=s>>2&1,p=3&s,g=Ur[16*n*4+16*l+(a>>4&15)];if(-1===g)return{header:null,bytesAdvanced:1};const k=1e3*g,b=Lr[d]>>n+o,T=((e,t,r,i,a)=>0===t?0:1===t?Math.floor(144*r/(i<<e))+a:2===t?Math.floor(144*r/i)+a:4*(Math.floor(12*r/i)+a))(n,l,k,b,a>>1&1);if(null!==t&&t<T)return{header:null,bytesAdvanced:1};let y;return y=3===c?3===l?384:1152:3===l?384:2===l?1152:576,{header:{totalSize:T,mpegVersionId:c,layer:l,bitrate:k,frequencyIndex:d,sampleRate:b,channel:u,modeExtension:h,copyright:m,original:f,emphasis:p,audioSamplesInFrame:y},bytesAdvanced:1}},qr=e=>{let t=2130706432,r=0;for(;0!==t;)r>>=1,r|=e&t,t>>=8;return r};
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var Hr,Wr,jr,Kr;(Wr=Hr||(Hr={}))[Wr.Unsynchronisation=128]="Unsynchronisation",Wr[Wr.ExtendedHeader=64]="ExtendedHeader",Wr[Wr.ExperimentalIndicator=32]="ExperimentalIndicator",Wr[Wr.Footer=16]="Footer",(Kr=jr||(jr={}))[Kr.ISO_8859_1=0]="ISO_8859_1",Kr[Kr.UTF_16_WITH_BOM=1]="UTF_16_WITH_BOM",Kr[Kr.UTF_16_BE_NO_BOM=2]="UTF_16_BE_NO_BOM",Kr[Kr.UTF_8=3]="UTF_8";const $r=128,Qr=["Blues","Classic rock","Country","Dance","Disco","Funk","Grunge","Hip-hop","Jazz","Metal","New age","Oldies","Other","Pop","Rhythm and blues","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death metal","Pranks","Soundtrack","Euro-techno","Ambient","Trip-hop","Vocal","Jazz & funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound clip","Gospel","Noise","Alternative rock","Bass","Soul","Punk","Space","Meditative","Instrumental pop","Instrumental rock","Ethnic","Gothic","Darkwave","Techno-industrial","Electronic","Pop-folk","Eurodance","Dream","Southern rock","Comedy","Cult","Gangsta","Top 40","Christian rap","Pop/funk","Jungle music","Native US","Cabaret","New wave","Psychedelic","Rave","Showtunes","Trailer","Lo-fi","Tribal","Acid punk","Acid jazz","Polka","Retro","Musical","Rock 'n' roll","Hard rock","Folk","Folk rock","National folk","Swing","Fast fusion","Bebop","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic rock","Progressive rock","Psychedelic rock","Symphonic rock","Slow rock","Big band","Chorus","Easy listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber music","Sonata","Symphony","Booty bass","Primus","Porn groove","Satire","Slow jam","Club","Tango","Samba","Folklore","Ballad","Power ballad","Rhythmic Soul","Freestyle","Duet","Punk rock","Drum solo","A cappella","Euro-house","Dance hall","Goa music","Drum & bass","Club-house","Hardcore techno","Terror","Indie","Britpop","Negerpunk","Polsk punk","Beat","Christian gangsta rap","Heavy metal","Black metal","Crossover","Contemporary Christian","Christian rock","Merengue","Salsa","Thrash metal","Anime","Jpop","Synthpop","Christmas","Art rock","Baroque","Bhangra","Big beat","Breakbeat","Chillout","Downtempo","Dub","EBM","Eclectic","Electro","Electroclash","Emo","Experimental","Garage","Global","IDM","Illbient","Industro-Goth","Jam Band","Krautrock","Leftfield","Lounge","Math rock","New romantic","Nu-breakz","Post-punk","Post-rock","Psytrance","Shoegaze","Space rock","Trop rock","World music","Neoclassical","Audiobook","Audio theatre","Neue Deutsche Welle","Podcast","Indie rock","G-Funk","Dubstep","Garage rock","Psybient"],Gr=(e,t)=>{const r=aa(e,t),i=Q(r.indexOf(0),r.length),a=r.subarray(0,i);let s="";for(let n=0;n<a.length;n++)s+=String.fromCharCode(a[n]);return s.trimEnd()},Xr=e=>{const t=e.filePos,r=ya(e,3),i=sa(e),a=sa(e),s=sa(e),n=ua(e);if("ID3"!==r||255===i||255===a||0!==(2155905152&n))return e.filePos=t,null;return{majorVersion:i,revision:a,flags:s,size:qr(n)}},Yr=(e,t,r)=>{var i,a,s,n;if(![2,3,4].includes(t.majorVersion))return void console.warn(`Unsupported ID3v2 major version: ${t.majorVersion}`);const o=aa(e,t.size),c=new Jr(t,o);if(t.flags&Hr.Footer&&c.removeFooter(),t.flags&Hr.Unsynchronisation&&3===t.majorVersion&&c.ununsynchronizeAll(),t.flags&Hr.ExtendedHeader){const e=c.readU32();3===t.majorVersion?c.pos+=e:c.pos+=e-4}for(;c.pos<=c.bytes.length-c.frameHeaderSize();){const e=c.readId3V2Frame();if(!e)break;const o=c.pos,l=c.pos+e.size;let d=!1,u=!1,h=!1;if(3===t.majorVersion?(d=!!(64&e.flags),u=!!(128&e.flags)):4===t.majorVersion&&(d=!!(4&e.flags),u=!!(8&e.flags),h=!!(2&e.flags)||!!(t.flags&Hr.Unsynchronisation)),d)console.warn(`Skipping encrypted ID3v2 frame ${e.id}`),c.pos=l;else if(u)console.warn(`Skipping compressed ID3v2 frame ${e.id}`),c.pos=l;else{switch(h&&c.ununsynchronizeRegion(c.pos,l),r.raw??(r.raw={}),"T"===e.id[0]?(i=r.raw)[a=e.id]??(i[a]=c.readId3V2EncodingAndText(l)):(s=r.raw)[n=e.id]??(s[n]=c.readBytes(e.size)),c.pos=o,e.id){case"TIT2":case"TT2":r.title??(r.title=c.readId3V2EncodingAndText(l));break;case"TIT3":case"TT3":r.description??(r.description=c.readId3V2EncodingAndText(l));break;case"TPE1":case"TP1":r.artist??(r.artist=c.readId3V2EncodingAndText(l));break;case"TALB":case"TAL":r.album??(r.album=c.readId3V2EncodingAndText(l));break;case"TPE2":case"TP2":r.albumArtist??(r.albumArtist=c.readId3V2EncodingAndText(l));break;case"TRCK":case"TRK":{const e=c.readId3V2EncodingAndText(l).split("/"),t=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(r.trackNumber??(r.trackNumber=t)),i&&Number.isInteger(i)&&i>0&&(r.tracksTotal??(r.tracksTotal=i))}break;case"TPOS":case"TPA":{const e=c.readId3V2EncodingAndText(l).split("/"),t=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(r.discNumber??(r.discNumber=t)),i&&Number.isInteger(i)&&i>0&&(r.discsTotal??(r.discsTotal=i))}break;case"TCON":case"TCO":{const e=c.readId3V2EncodingAndText(l);let t=/^\((\d+)\)/.exec(e);if(t){const e=Number.parseInt(t[1]);if(void 0!==Qr[e]){r.genre??(r.genrLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const Zr=async(e,t,r)=>{let i=t;for(;null===r||i<r;){let t=e.requestSlice(i,4);if(t instanceof Promise&&(t=await t),!t)break;const r=ua(t),a=Vr(r,null!==e.fileSize?e.fileSize-i:null);if(a.header)return{header:a.header,startPos:i};i+=a.bytesAdvanced}return null};
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class ei extends Ke{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.loadedSamples=[],this.metadataTags=null,this.tracks=[],this.readingMutex=new b,this.lastSampleLoaded=!1,this.lastLoadedPos=0,this.nextTimestampInSamples=0,this.reader=e._reader}async readMetadata(){return this.metadataPromise??(this.metadataPromise=(async()=>{for(;!this.firstFrameHeader&&!this.lastSampleLoaded;)await this.advanceReader();if(!this.firstFrameHeader)throw new Error("No valid MP3 frame found.");this.tracks=[new Mt(this.input,new ti(this))]})())}async advanceReader(){if(0===this.lastLoadedPos)for(;;){let e=this.reader.requestSlice(this.lastLoadedPos,10);if(e instanceof Promise&&(e=await e),!e)return void(this.lastSampleLoaded=!0);const t=Xr(e);if(!t)break;this.lastLoadedPos=e.filePos+t.size}const e=await Zr(this.reader,this.lastLoadedPos,this.reader.fileSize);if(!e)return void(this.lastSampleLoaded=!0);const t=e.header;this.lastLoadedPos=e.startPos+t.totalSize-1;const r=(i=t.mpegVersionId,a=t.channel,3===i?3===a?21:36:3===a?13:21);var i,a;let s=this.reader.requestSlice(e.startPos+r,4);if(s instanceof Promise&&(s=await s),s){const e=ua(s);if(1483304551===e||1231971951===e)return}this.firstFrameHeader||(this.firstFrameHeader=t),t.sampleRate!==this.firstFrameHeader.sampleRate&&console.warn(`MP3 changed sample rate mid-file: ${this.firstFrameHeader.sampleRate} Hz to ${t.sampleRate} Hz. Might be a bug, so please report this file.`);const n=t.audioSamplesInFrame/this.firstFrameHeader.sampleRate,o={timestamp:this.nextTimestampInSamples/this.firstFrameHeader.sampleRate,duration:n,dataStart:e.startPos,dataSize:t.totalSize};this.loadedSamples.push(o),this.nextTimestampInSamples+=t.audioSamplesInFrame}async getMimeType(){return"audio/mpeg"}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){await this.readMetadata();const e=this.tracks[0];return t(e),e.computeDuration()}async getMetadataTags(){const e=await this.readingMutex.acquire();try{if(await this.readMetadata(),this.metadataTags)return this.metadataTags;this.metadataTags={};let e=0,r=!1;for(;;){let t=this.reader.requestSlice(e,10);if(t instanceof Promise&&(t=await t),!t)break;const i=Xr(t);if(!i)break;r=!0;let a=this.reader.requestSlice(t.filePos,i.size);if(a instanceof Promise&&(a=await a),!a)break;Yr(a,i,this.metadataTags),e=t.filePos+i.size}if(!r&&null!==this.reader.fileSize&&this.reader.fileSize>=$r){let e=this.reader.requestSlice(this.reader.fileSize-$r,$r);e instanceof Promise&&(e=await e),t(e);"TAG"===ya(e,3)&&((e,t)=>{var r;const i=e.filePos;t.raw??(t.raw={}),(r=t.raw).TAG??(r.TAG=aa(e,125)),e.filePos=i;const a=Gr(e,30);a&&(t.title??(t.title=a));const s=Gr(e,30);s&&(t.artist??(t.artist=s));const n=Gr(e,30);n&&(t.album??(t.album=n));const o=Gr(e,4),c=Number.parseInt(o,10);Number.isInteger(c)&&c>0&&(t.date??(t.date=new Date(c,0,1)));const l=aa(e,30);let d;if(0===l[28]&&0!==l[29]){const r=l[29];r>0&&(t.trackNumber??(t.trackNumber=r)),e.skip(-30),d=Gr(e,28),e.skip(2)}else e.skip(-30),d=Gr(e,30);d&&(t.comment??(t.comment=d));const u=sa(e);u<Qr.length&&(t.genre??(t.genre=Qr[u]))})(e,this.metadataTags)}return this.metadataTags}finally{e()}}}class ti{constructor(e){this.demuxer=e}getId(){return 1}async getFirstTimestamp(){return 0}getTimeResolution(){return t(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate/this.demuxer.firstFrameHeader.audioSamplesInFrame}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getName(){return null}getLanguageCode(){return D}getCodec(){return"mp3"}getInternalCodecId(){return null}getNumberOfChannels(){return t(this.demuxer.firstFrameHeader),3===this.demuxer.firstFrameHeader.channel?1:2}getSampleRate(){return t(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate}getDisposition(){return{...te}}async getDecoderConfig(){return t(this.demuxer.firstFrameHeader),{codec:"mp3",numberOfChannels:3===this.demuxer.firstFrameHeader.channel?1:2,sampleRate:this.demuxer.firstFrameHeader.sampleRate}}async getPacketAtIndex(e,t){if(-1===e)return null;const r=this.demuxer.loadedSamples[e];if(!r)return null;let i;if(t.metadataOnly)i=Ge;else{let e=this.demuxer.reader.requestSlice(r.dataStart,r.dataSize);if(e instanceof Promise&&(e=await e),!e)return null;i=aa(e,r.dataSize)}return new Xe(i,"key",r.timestamp,r.duration,e,r.dataSize)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getNextPacket(e,t){const r=await this.demuxer.readingMutex.acquire();try{const r=w(this.demuxer.loadedSamples,e.timestamp,e=>e.timestamp);if(-1===r)throw new Error("Packet was not created from this track.");const i=r+1;for(;i>=this.demuxer.loadedSamples.length&&!this.demuxer.lastSampleLoaded;)await this.demuxer.advanceReader();return this.getPacketAtIndex(i,t)}finally{r()}}async getPacket(e,t){const r=await this.demuxer.readingMutex.acquire();try{for(;;){const r=S(this.demuxer.loadedSamples,e,e=>e.timestamp);if(-Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const ri=1399285583,ii=new Uint32Array(256);for(let xa=0;xa<256;xa++){let e=xa<<24;for(let t=0;t<8;t++)e=2147483648&e?e<<1^79764919:e<<1;ii[xa]=e>>>0&4294967295}const ai=e=>{const t=c(e),r=t.getUint32(22,!0);t.setUint32(22,0,!0);let i=0;for(let a=0;a<e.length;a++){const t=e[a];i=(i<<8^ii[i>>>24^t])>>>0}return t.setUint32(22,r,!0),i},si=(e,r,i)=>{let a=0,s=null;if(e.length>0)if("vorbis"===r.codec){t(r.vorbisInfo);const n=(1<<(e=>{let t=0;for(;e;)t++,e>>=1;return t})(r.vorbisInfo.modeBlockflags.length-1))-1<<1,o=(e[0]&n)>>1;if(o>=r.vorbisInfo.modeBlockflags.length)throw new Error("Invalid mode number.");let c=i;const l=r.vorbisInfo.modeBlockflags[o];if(s=r.vorbisInfo.blocksizes[l],1===l){const t=1+(1|n),i=e[0]&t?1:0;c=r.vorbisInfo.blocksizes[i]}a=null!==c?c+s>>2:0}else if("opus"===r.codec){a=(e=>{const t=e[0]>>3;return{durationInSamples:Ue[t]}})(e).durationInSamples}return{durationInSamples:a,vorbisBlockSize:s}},ni=27,oi=282,ci=e=>{const t=e.filePos;if(ha(e)!==ri)return null;e.skip(1);const r=sa(e),i=ka(e),a=ha(e),s=ha(e),n=ha(e),o=sa(e),c=new Uint8Array(o);for(let u=0;u<o;u++)c[u]=sa(e);const l=27+o,d=c.reduce((e,t)=>e+t,0);return{headerStartPos:t,totalSize:l+d,dataStartPos:t+l,dataSize:d,headerType:r,granulePosition:i,serialNumber:a,sequenceNumber:s,checksum:n,lacingValues:c}},li=(e,t)=>{for(;e.filePos<t-3;){const t=ha(e),r=79;if((255&t)===r||(t>>>8&255)===r||(t>>>16&255)===r||(t>>>24&255)===r){if(e.skip(-4),t===ri)return!0;e.skip(1)}}return!1};
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class di extends Ke{constructor(e){super(e),this.metadataPromise=null,this.bitstreams=[],this.tracks=[],this.metadataTags={},this.reader=e._reader}async readMetadata(){return this.metadataPromise??(this.metadataPromise=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,ni,oi);if(t instanceof Promise&&(t=await t),!t)break;const r=ci(t);if(!r)break;if(!!!(2&r.headerType))break;this.bitstreams.push({serialNumber:r.serialNumber,bosPage:r,description:null,numberOfChannels:-1,sampleRate:-1,codecInfo:{codec:null,vorbisInfo:null,opusInfo:null},lastMetadataPacket:null}),e=r.headerStartPos+r.totalSize}for(const t of this.bitstreams){const e=await this.readPacket(t.bosPage,0);e&&(e.data.byteLength>=7&&1===e.data[0]&&118===e.data[1]&&111===e.data[2]&&114===e.data[3]&&98===e.data[4]&&105===e.data[5]&&115===e.data[6]?await this.readVorbisMetadata(e,t):e.data.byteLength>=8&&79===e.data[0]&&112===e.data[1]&&117===e.data[2]&&115===e.data[3]&&72===e.data[4]&&101===e.data[5]&&97===e.data[6]&&100===e.data[7]&&await this.readOpusMetadata(e,t),null!==t.codecInfo.codec&&this.tracks.push(new Mt(this.input,new ui(t,this))))}})())}async readVorbisMetadata(e,t){let r=await this.findNextPacketStart(e);if(!r)return;const i=await this.readPacket(r.startPage,r.startSegmentIndex);if(!i)return;if(r=await this.findNextPacketStart(i),!r)return;const a=await this.readPacket(r.startPage,r.startSegmentIndex);if(!a)return;if(3!==i.data[0]||5!==a.data[0])return;const s=[],n=e=>{for(;s.push(Math.min(255,e)),!(e<255);)e-=255};n(e.data.length),n(i.data.length);const o=new Uint8Array(1+s.length+e.data.length+i.data.length+a.data.length);o[0]=2,o.set(s,1),o.set(e.data,1+s.length),o.set(i.data,1+s.length+e.data.length),o.set(a.data,1+s.length+e.data.length+i.data.length),t.codecInfo.codec="vorbis",t.description=o,t.lastMetadataPacket=a;const l=c(e.data);t.numberOfChannels=l.getUint8(11),t.sampleRate=l.getUint32(12,!0);const d=l.getUint8(28);t.codecInfo.vorbisInfo={blocksizes:[1<<(15&d),1<<(d>>4)],modeBlockflags:Ve(a.data).modeBlockflags},je(i.data.subarray(7),this.metadataTags)}async readOpusMetadata(e,t){const r=await this.findNextPacketStart(e);if(!r)return;const i=await this.readPacket(r.startPage,r.startSegmentIndex);if(!i)return;t.codecInfo.codec="opus",t.description=e.data,t.lastMetadataPacket=i;const a=(e=>{const t=c(e),r=t.getUint8(9),i=t.getUint16(10,!0),a=t.getUint32(12,!0),s=t.getInt16(16,!0),n=t.getUint8(18);let o=null;return n&&(o=e.subarray(19,21+r)),{outputChannelCount:r,preSkip:i,inputSampleRate:a,outputGain:s,channelMappingFamily:n,channelMappingTable:o}})(e.data);t.numberOfChannels=a.outputChannelCount,t.sampleRate=ue,t.codecInfo.opusInfo={preSkip:a.preSkip},je(i.data.subarray(8),this.metadataTags)}async readPacket(e,r){t(r<e.lacingValues.length);let i=0;for(let t=0;t<r;t++)i+=e.lacingValues[t];let a=e,s=i,n=r;const o=[];e:for(;;){let r=this.reader.requestSlice(a.dataStartPos,a.dataSize);r instanceof Promise&&(r=await r),t(r);const c=aa(r,a.dataSize);for(;;){if(n===a.lacingValues.length){o.push(c.subarray(i,s));break}const e=a.lacingValues[n];if(s+=e,e<255){o.push(c.subarray(i,s));break e}n++}let l=a.headerStartPos+a.totalSize;for(;;){let t=this.reader.requestSliceRange(l,ni,oi);if(t instanceof Promise&&(t=await t),!t)return null;const r=ci(t);if(!r)return null;if(a=r,a.serialNumber===e.serialNumber)break;l=a.headerStartPos+a.totalSize}i=0,s=0,n=0}const c=o.reduce((e,t)=>e+t.length,0);if(0===c)return null;const l=new Uint8Array(c);let d=0;for(let t=0;t<o.length;t++){const e=o[t];l.set(e,d),d+=e.length}return{data:l,endPage:a,endSegmentIndex:n}}async findNextPacketStart(e){if(e.endSegmentIndex<e.endPage.lacingValues.length-1)return{startPage:e.endPage,startSegmentIndex:e.endSegmentIndex+1};if(!!(4&e.endPage.headerType))return null;let t=e.endPage.headerStartPos+e.endPage.totalSize;for(;;){let r=this.reader.requestSliceRange(t,ni,oi);if(r instanceof Promise&&(r=await r),!r)return null;const i=ci(r);if(!i)return null;if(i.serialNumber===e.endPage.serialNumber)return{startPage:i,startSegmentIndex:0};t=i.headerStartPos+i.totalSize}}async getMimeType(){await this.readMetadata();return(e=>{let t="audio/ogg";e.codecStrings&&(t+=`; codecs="${[...new Set(e.codecStrings)].join(", ")}"`);return t})({codecStrings:(await Promise.all(this.tracks.map(e=>e.getCodecParameterString()))).filter(Boolean)})}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){const e=await this.getTracks(),t=await Promise.all(e.map(e=>e.computeDuration()));return Math.max(0,...t)}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}}class ui{constructor(e,t){this.bitstream=e,this.demuxer=t,this.encodedPacketToMetadata=new WeakMap,this.sequentialScanCache=[],this.sequentialScanMutex=new b,this.internalSampleRate="opus"===e.codecInfo.codec?ue:e.sampleRate}getId(){return this.bitstream.serialNumber}getNumberOfChannels(){return this.bitstream.numberOfChannels}getSampleRate(){return this.bitstream.sampleRateLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var fi,pi;(pi=fi||(fi={}))[pi.PCM=1]="PCM",pi[pi.IEEE_FLOAT=3]="IEEE_FLOAT",pi[pi.ALAW=6]="ALAW",pi[pi.MULAW=7]="MULAW",pi[pi.EXTENSIBLE=65534]="EXTENSIBLE";class gi extends Ke{constructor(e){super(e),this.metadataPromise=null,this.dataStart=-1,this.dataSize=-1,this.audioInfo=null,this.tracks=[],this.lastKnownPacketIndex=0,this.metadataTags={},this.reader=e._reader}async readMetadata(){return this.metadataPromise??(this.metadataPromise=(async()=>{let e=this.reader.requestSlice(0,12);e instanceof Promise&&(e=await e),t(e);const r=ya(e,4),i="RIFX"!==r,a="RF64"===r,s=da(e,i);let n=a?this.reader.fileSize:Math.min(s+8,this.reader.fileSize??1/0);if("WAVE"!==ya(e,4))throw new Error("Invalid WAVE file - wrong format");let o=0,c=null,l=e.filePos;for(;null===n||l<n;){let e=this.reader.requestSlice(l,8);if(e instanceof Promise&&(e=await e),!e)break;const t=ya(e,4),r=da(e,i),s=e.filePos;if(a&&0===o&&"ds64"!==t)throw new Error('Invalid RF64 file: First chunk must be "ds64".');if("fmt "===t)await this.parseFmtChunk(s,r,i);else if("data"===t){if(c??(c=r),this.dataStart=e.filePos,this.dataSize=Math.min(c,(n??1/0)-this.dataStart),null===this.reader.fileSize)break}else if("ds64"===t){let e=this.reader.requestSlice(s,r);if(e instanceof Promise&&(e=await e),!e)break;const t=fa(e,i);c=fa(e,i),n=Math.min(t+8,this.reader.fileSize??1/0)}else"LIST"===t?await this.parseListChunk(s,r,i):"ID3 "!==t&&"id3 "!==t||await this.parseId3Chunk(s,r);l=s+r+(1&r),o++}if(!this.audioInfo)throw new Error('Invalid WAVE file - missing "fmt " chunk');if(-1===this.dataStart)throw new Error('Invalid WAVE file - missing "data" chunk');const d=this.audioInfo.blockSizeInBytes;this.dataSize=Math.floor(this.dataSize/d)*d,this.tracks.push(new Mt(this.input,new bi(this)))})())}async parseFmtChunk(e,t,r){let i=this.reader.requestSlice(e,t);if(i instanceof Promise&&(i=await i),!i)return;let a=na(i,r);const s=na(i,r),n=da(i,r);i.skip(4);const o=na(i,r);let c;if(c=14===t?8:na(i,r),t>=18&&357!==a){const e=na(i,r),s=t-18;if(Math.min(s,e)>=22&&a===fi.EXTENSIBLE){i.skip(6);const e=aa(i,16);a=e[0]|e[1]<<8}}a!==fi.MULAW&&a!==fi.ALAW||(c=8),this.audioInfo={format:a,numberOfChannels:s,sampleRate:n,sampleSizeInBytes:Math.ceil(c/8),blockSizeInBytes:o}}async parseListChunk(e,t,r){var i,a,s,n,o,c,l,d,u,h,m;let f=this.reader.requestSlice(e,t);if(f instanceof Promise&&(f=await f),!f)return;const p=ya(f,4);if("INFO"!==p&&"INF0"!==p)return;let g=f.filePos;for(;g<=e+t-8;){f.filePos=g;const e=ya(f,4),t=da(f,r),p=aa(f,t);let k=0;for(let r=0;r<p.length&&0!==p[r];r++)k++;const b=String.fromCharCode(...p.subarray(0,k));switch((i=this.metadataTags).raw??(i.raw={}),this.metadataTags.raw[e]=b,e){case"INAM":case"TITL":(a=this.metadataTags).title??(a.title=b);break;case"TIT3":(s=this.metadataTags).description??(s.description=b);break;case"IART":(n=this.metadataTags).artist??(n.artist=b);break;case"IPRD":(o=this.metadataTags).album??(o.album=b);break;case"IPRT":case"ITRK":case"TRCK":{const e=b.split("/"),t=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&((c=this.metadataTags).trackNumber??(c.trackNumber=t)),r&&Number.isInteger(r)&&r>0&&((l=this.metadataTags).tracksTotal??(l.tracksTotal=r))}break;case"ICRD":case"IDIT":{const e=new Date(b);Number.isNaN(e.getTime())||((d=this.metadataTags).date??(d.date=e))}break;case"YEAR":{const e=Number.parseInt(b,10);Number.isInteger(e)&&e>0&&((u=this.metadataTags).date??(u.date=new Date(e,0,1)))}break;case"IGNR":case"GENR":(h=this.metadataTags).genre??(h.genre=b);break;case"ICMT":case"CMNT":case"COMM":(m=this.metadataTags).comment??(m.comment=b)}g+=8+t+(1&t)}}async parseId3Chunk(e,t){let r=this.reader.requestSlice(e,t);if(r instanceof Promise&&(r=await r),!r)return;const i=Xr(r);if(i){const t=r.slice(e+10,i.size);Yr(t,i,this.metadataTags)}}getCodec(){if(t(this.audioInfo),this.audioInfo.format===fi.MULAW)return"ulaw";if(this.audioInfo.format===fi.ALAW)return"alaw";if(this.audioInfo.format===fi.PCM){if(1===this.audioInfo.sampleSizeInBytes)return"pcm-u8";if(2===this.audioInfo.sampleSizeInBytes)return"pcm-s16";if(3===this.audioInfo.sampleSizeInBytes)return"pcm-s24";if(4===this.audioInfo.sampleSizeInBytes)return"pcm-s32"}return this.audioInfo.format===fi.IEEE_FLOAT&&4===this.audioInfo.sampleSizeInBytes?"pcm-f32":null}async getMimeType(){return"audio/wav"}async computeDuration(){await this.readMetadata();const e=this.tracks[0];return t(e),e.computeDuration()}async getTracks(){return await this.readMetadata(),this.tracks}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}}const ki=2048;class bi{constructor(e){this.demuxer=e}getId(){return 1}getCodec(){return this.demuxer.getCodec()}getInternalCodecId(){return t(this.demuxer.audioInfo),this.demuxer.audioInfo.format}async getDecoderConfig(){const e=this.demuxer.getCodec();return e?(t(this.demuxer.audioInfo),{codec:e,numberOfChannels:this.demuxer.audioInfo.numberOfChannels,sampleRate:this.demuxer.audioInfo.sampleRate}):null}async computeDuration(){const e=Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const Ti=e=>{const t=e.filePos,r=aa(e,9),i=new a(r);if(4095!==i.readBits(12))return null;i.skipBits(1);if(0!==i.readBits(2))return null;const s=i.readBits(1),n=i.readBits(2)+1,o=i.readBits(4);if(15===o)return null;i.skipBits(1);const c=i.readBits(3);if(0===c)throw new Error("ADTS frames with channel configuration 0 are not supported.");i.skipBits(1),i.skipBits(1),i.skipBits(1),i.skipBits(1);const l=i.readBits(13);i.skipBits(11);const d=i.readBits(2)+1;if(1!==d)throw new Error("ADTS frames with more than one AAC frame are not supported.");let u=null;return 1===s?e.filePos-=2:u=i.readBits(16),{objectType:n,samplingFrequencyIndex:o,channelConfiguration:c,frameLength:l,numberOfAacFrames:d,crcCheck:u,startPos:t}},yi=1024;class wi extends Ke{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.loadedSamples=[],this.tracks=[],this.readingMutex=new b,this.lastSampleLoaded=!1,this.lastLoadedPos=0,this.nextTimestampInSamples=0,this.reader=e._reader}async readMetadata(){return this.metadataPromise??(this.metadataPromise=(async()=>{for(;!this.firstFrameHeader&&!this.lastSampleLoaded;)await this.advanceReader();t(this.firstFrameHeader),this.tracks=[new Mt(this.input,new Si(this))]})())}async advanceReader(){let e=this.reader.requestSliceRange(this.lastLoadedPos,7,9);if(e instanceof Promise&&(e=await e),!e)return void(this.lastSampleLoaded=!0);const r=Ti(e);if(!r)return void(this.lastSampleLoaded=!0);if(null!==this.reader.fileSize&&r.startPos+r.frameLength>this.reader.fileSize)return void(this.lastSampleLoaded=!0);this.firstFrameHeader||(this.firstFrameHeader=r);const i=ce[r.samplingFrequencyIndex];t(void 0!==i);const a=yi/i,s=r.crcCheck?9:7,n={timestamp:this.nextTimestampInSamples/i,duration:a,dataStart:r.startPos+s,dataSize:r.frameLength-s};this.loadedSamples.push(n),this.nextTimestampInSamples+=yi,this.lastLoadedPos=r.startPos+r.frameLength}async getMimeType(){return"audio/aac"}async getTracks(){return await this.readMetadata(),this.tracks}async computeDuration(){await this.readMetadata();const e=this.tracks[0];return t(e),e.computeDuration()}async getMetadataTags(){return{}}}class Si{constructor(e){this.demuxer=e}getId(){return 1}async getFirstTimestamp(){return 0}getTimeResolution(){return this.getSampleRate()/yi}async computeDuration(){const e=await this.getPacket(1/0,{metadataOnly:!0});return(e?.timestamp??0)+(e?.duration??0)}getName(){return null}getLanguageCode(){return D}getCodec(){return"aac"}getInternalCodecId(){return t(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.objectType}getNumberOfChannels(){t(this.demuxer.firstFrameHeader);const e=le[this.demuxer.firstFrameHeader.channelConfiguration];return t(void 0!==e),e}getSampleRate(){t(this.demuxer.firstFrameHeader);const e=ce[this.demuxer.firstFrameHeader.samplingFrequencyIndex];return t(void 0!==e),e}getDisposition(){return{...te}}async getDecoderConfig(){t(this.demuxer.firstFrameHeader);const e=new Uint8Array(3),r=new a(e),{objectType:i,samplingFrequencyIndex:s,channelConfiguration:n}=this.demuxer.firstFrameHeader;return i>31?(r.writeBits(5,31),r.writeBits(6,i-32)):r.writeBits(5,i),r.writeBits(4,s),r.writeBits(4,n),{codec:`mp4a.40.${this.demuxer.firstFrameHeader.objectType}`,numberOfChannels:this.getNumberOfChannels(),sampleRate:this.getSampleRate(),description:e.subarray(0,Math.ceil((r.pos-1)/8))}}async getPacketAtIndex(e,t){if(-1===e)return null;const r=this.demuxer.loadedSamples[e];if(!r)return null;let i;if(t.metadataOnly)i=Ge;else{let e=this.demuxer.reader.requestSlice(r.dataStart,r.dataSize);if(e instanceof Promise&&(e=await e),!e)return null;i=aa(e,r.dataSize)}return new Xe(i,"key",r.timestamp,r.duration,e,r.dataSize)}getFirstPacket(e){return this.getPacketAtIndex(0,e)}async getNextPacket(e,t){const r=await this.demuxer.readingMutex.acquire();try{const r=w(this.demuxer.loadedSamples,e.timestamp,e=>e.timestamp);if(-1===r)throw new Error("Packet was not created from this track.");const i=r+1;for(;i>=this.demuxer.loadedSamples.length&&!this.demuxer.lastSampleLoaded;)await this.demuxer.advanceReader();return this.getPacketAtIndex(i,t)}finally{r()}}async getPacket(e,t){const r=await this.demuxer.readingMutex.acquire();try{for(;;){const r=S(this.demuxer.loadedSamples,e,e=>e.timestamp);if(-1===r&&this.demuxer.loadedSamples.length>0)return null;if(this.demuxer.lastSampleLoaded)return this.getPacketAtIndex(r,t);if(r>=0&&r+1<this.demuxer.loadedSamples.length)return this.getPacketAtIndex(r,t);await this.demuxer.advanceReader()}}finally{r()}}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,t){return this.getNextPacket(e,t)}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class Ii extends Ke{constructor(e){super(e),this.loadedSamples=[],this.metadataPromise=null,this.track=null,this.metadataTags={},this.audioInfo=null,this.lastLoadedPos=null,this.blockingBit=null,this.readingMutex=new b,this.lastSampleLoaded=!1,this.reader=e._reader}async computeDuration(){return await this.readMetadata(),t(this.track),this.track.computeDuration()}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}async getTracks(){return await this.readMetadata(),t(this.track),[this.track]}async getMimeType(){return"audio/flac"}async readMetadata(){let e=4;return this.metadataPromise??(this.metadataPromise=(async()=>{for(var r;null===this.reader.fileSize||e<this.reader.fileSize;){let i=this.reader.requestSlice(e,4);if(i instanceof Promise&&(i=await i),e+=4,null===i)throw new Error(`Metadata block at position ${e} is too small! Corrupted file.`);t(i);const s=sa(i),n=ca(i),o=0!==(128&s);switch(127&s){case He.STREAMINFO:{let r=this.reader.requestSlice(e,n);if(r instanceof Promise&&(r=await r),t(r),null===r)throw new Error(`StreamInfo block at position ${e} is too small! Corrupted file.`);const i=aa(r,34),s=new a(i),o=s.readBits(16),c=s.readBits(16),l=s.readBits(24),d=s.readBits(24),u=s.readBits(20),h=s.readBits(3)+1;s.readBits(5);const m=s.readBits(36);s.skipBits(128);const f=new Uint8Array(42);f.set(new Uint8Array([102,76,97,67]),0),f.set(new Uint8Array([128,0,0,34]),4),f.set(i,8),this.audioInfo={numberOfChannels:h,sampleRate:u,totalSamples:m,minimumBlockSize:o,maximumBlockSize:c,minimumFrameSize:l,maximumFrameSize:d,description:f},this.track=new Mt(this.input,new vi(this));break}case He.VORBIS_COMMENT:{let r=this.reader.requestSlice(e,n);r instanceof Promise&&(r=await r),t(r),je(aa(r,n),this.metadataTags);break}case He.PICTURE:{let i=this.reader.requestSlice(e,n);i instanceof Promise&&(i=await i),t(i);const a=ua(i),s=ua(i),o=l.decode(aa(i,s)),c=ua(i),d=l.decode(aa(i,c));i.skip(16);const u=ua(i),h=aa(i,u);(r=this.metadataTags).images??(r.images=[]),this.metadataTags.images.push({data:h,mimeType:o,kind:3===a?"coverFront":4===a?"coverBack":"unknown",description:d});break}}if(e+=n,o){this.lastLoadedPos=e;break}}})())}async readNextFlacFrame({startPos:e,isFirstPacket:r}){t(this.audioInfo);const i=this.audioInfo.maximumFrameSize+16,a=await this.reader.requestSliceRange(e,this.audioInfo.minimumFrameSize,i);if(!a)return null;const s=this.readFlacFrameHeader({slice:a,isFirstPacket:r});if(!s)return null;for(a.filePos=e+this.audioInfo.minimumFrameSize;;){if(a.filePos>a.end-6)return{num:s.num,blockSize:s.blockSize,sampleRate:s.sampleRate,size:a.end-e,isLastFrame:!0};if(255===sa(a)){const t=a.filePos;if(sa(a)!==(1===this.blockingBit?249:248)){a.filePos=t;continue}a.skip(-2);const r=a.filePos-e,i=this.readFlacFrameHeader({slice:a,isFirstPacket:!1});if(!i){a.filePos=t;continue}if(0===this.blockingBit){if(i.num-s.num!==1){a.filePos=t;continue}}else if(i.num-s.num!==s.blockSize){a.filePos=t;continue}return{num:s.num,blockSize:s.blockSize,sampleRate:s.sampleRate,size:r,isLastFrame:!1}}}}readFlacFrameHeader({slice:e,isFirstPacket:r}){const i=e.filePos,s=aa(e,4),n=new a(s);if(32764!==n.readBits(15))return null;if(null===this.blockingBit){t(r);const e=n.readBits(1);this.blockingBit=e}else if(1===this.blockingBit){t(!r);if(1!==n.readBits(1))return null}else{if(0!==this.blockingBit)throw new Error("Invalid blocking bit");t(!r);if(0!==n.readBits(1))return null}const o=(e=>0===e?null:1===e?192:e>=2&&e<=5?144*2**e:6===e?"uncommon-u8":7===e?"uncommon-u16":e>=8&&e<=15?2**e:null)(n.readBits(4));if(!o)return null;t(this.audioInfo);const c=((e,t)=>{switch(e){case 0:return t;case 1:return 88200;case 2:return 176400;case 3:return 192e3;case 4:return 8e3;case 5:return 16e3;case 6:return 22050;case 7:return 24e3;case 8:return 32e3;case 9:return 44100;case 10:return 48e3;case 11:return 96e3;case 12:return"uncommon-u8";case 13:return"uncommon-u16";case 14:return"uncommon-u16-10";default:return null}})(n.readBits(4),this.audioInfo.sampleRate);if(!c)return null;n.readBits(4),n.readBits(3);if(0!==n.readBits(1))return null;const l=(e=>{let t=0;const r=new a(aa(e,1));for(;1===r.readBits(1);)t++;if(0===t)return r.readBits(7);const i=[],s=t-1,n=new a(aa(e,s)),o=8-t-1;for(let a=0;a<o;a++)i.unshift(r.readBits(1));for(let a=0;a<s;a++)for(let e=0;e<8;e++){const t=n.readBits(1);e<2||i.unshift(t)}return i.reduce((e,t,r)=>e|t<<r,0)})(e),d=((e,r)=>"uncommon-u16"===r?oa(e)+1:"uncommon-u8"===r?sa(e)+1:"number"===typeof r?r:(C(r),void t(!1)))(e,o),u=((e,t)=>"uncommon-u16"===t?oa(e):"uncommon-u16-10"===t?10*oa(e):"uncommon-u8"===t?sa(e):"number"===typeof t?t:null)(e,c);if(null===u)return null;if(u!==this.audioInfo.sampleRate)return null;const h=e.filePos-i,m=sa(e);e.skip(-h),e.skip(-1);const f=(e=>{let t=0;for(const r of e){t^=r;for(let e=0;e<8;e++)0!==(128&t)?t=t<<1^7:t<<=1,t&=255}return t})(aa(e,h));return m!==f?null:{num:l,blockSize:d,sampleRate:u}}async advanceReader(){await this.readMetadata(),t(null!==this.lastLoadedPos),t(this.audiLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class Pi{}class xi extends Pi{async _getMajorBrand(e){let t=e._reader.requestSlice(0,12);if(t instanceof Promise&&(t=await t),!t)return null;t.skip(4);return"ftyp"!==ya(t,4)?null:ya(t,4)}_createDemuxer(e){return new qt(e)}}class Ci extends xi{async _canReadInput(e){const t=await this._getMajorBrand(e);return!!t&&"qt "!==t}get name(){return"MP4"}get mimeType(){return"video/mp4"}}class _i extends xi{async _canReadInput(e){return"qt "===await this._getMajorBrand(e)}get name(){return"QuickTime File Format"}get mimeType(){return"video/quicktime"}}class Bi extends Pi{async isSupportedEBMLOfDocType(e,t){let r=e._reader.requestSlice(0,ar);if(r instanceof Promise&&(r=await r),!r)return!1;const i=sr(r);if(null===i)return!1;if(i<1||i>8)return!1;if(or(r,i)!==Zt.EBML)return!1;const a=lr(r);if("number"!==typeof a)return!1;let s=e._reader.requestSlice(r.filePos,a);if(s instanceof Promise&&(s=await s),!s)return!1;const n=r.filePos;for(;s.filePos<=n+a-2;){const e=dr(s);if(!e)break;const{id:r,size:i}=e,a=s.filePos;if(void 0===i)return!1;switch(r){case Zt.EBMLVersion:if(1!==or(s,i))return!1;break;case Zt.EBMLReadVersion:if(1!==or(s,i))return!1;break;case Zt.DocType:if(ur(s,i)!==t)return!1;break;case Zt.DocTypeVersion:if(or(s,i)>4)return!1}s.filePos=a+i}return!0}_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"matroska")}_createDemuxer(e){return new Mr(e)}get name(){return"Matroska"}get mimeType(){return"video/x-matroska"}}class Ei extends Bi{_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"webm")}get name(){return"WebM"}get mimeType(){return"video/webm"}}class Fi extends Pi{async _canReadInput(e){let t=e._reader.requestSlice(0,10);if(t instanceof Promise&&(t=await t),!t)return!1;let r=0,i=!1;for(;;){let t=e._reader.requestSlice(r,10);if(t instanceof Promise&&(t=await t),!t)break;const a=Xr(t);if(!a)break;i=!0,r=t.filePos+a.size}const a=await Zr(e._reader,r,r+4096);if(!a)return!1;if(i)return!0;r=a.startPos+a.header.totalSize;const s=await Zr(e._reader,r,r+4);if(!s)return!1;const n=a.header,o=s.header;return n.channel===o.channel&&n.sampleRate===o.sampleRate}_createDemuxer(e){return new ei(e)}get name(){return"MP3"}get mimeType(){return"audio/mpeg"}}class Di extends Pi{async _canReadInput(e){let t=e._reader.requestSlice(0,12);if(t instanceof Promise&&(t=await t),!t)return!1;const r=ya(t,4);if("RIFF"!==r&&"RIFX"!==r&&"RF64"!==r)return!1;t.skip(4);return"WAVE"===ya(t,4)}_createDemuxer(e){return new gi(e)}get name(){return"WAVE"}get mimeType(){return"audio/wav"}}class Ai extends Pi{async _canReadInput(e){let t=e._reader.requestSlice(0,4);return t instanceof Promise&&(t=await t),!!t&&"OggS"===ya(t,4)}_createDemuxer(e){return new di(e)}get name(){return"Ogg"}get mimeType(){return"application/ogg"}}class Ri extends Pi{async _canReadInput(e){let t=e._reader.requestSlice(0,4);return t instanceof Promise&&(t=await t),!!t&&"fLaC"===ya(t,4)}get name(){return"FLAC"}get mimeType(){return"audio/flac"}_createDemuxer(e){return new Ii(e)}}class Mi extends Pi{async _canReadInput(e){let t=e._reader.requestSliceRange(0,7,9);if(t instanceof Promise&&(t=await t),!t)return!1;const r=Ti(t);if(!r)return!1;if(t=e._reader.requestSliceRange(r.frameLength,7,9),t instanceof Promise&&(t=await t),!t)return!1;const i=Ti(t);return!!i&&(r.objectType===i.objectType&&r.samplingFrequencyIndex===i.samplingFrequencyIndex&&r.channelConfiguration===i.channelConfiguration)}_createDemuxer(e){return new wi(e)}get name(){return"ADTS"}get mimeType(){return"audio/aac"}}const Ni=new Ci,zi=new _i,Oi=new Bi,Li=new Ei,Ui=new Fi,Vi=new Di,qi=new Ai,Hi=new Mi,Wi=[Ni,zi,Oi,Li,Vi,qi,new Ri,Ui,Hi];
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class ji{constructor(){this._disposed=!1,this._sizePromise=null,this.onread=null}async getSizeOrNull(){if(this._disposed)throw new ea;return this._sizePromise??(this._sizePromise=Promise.resolve(this._retrieveSize()))}async getSize(){if(this._disposed)throw new ea;const e=await this.getSizeOrNull();if(null===e)throw new Error("Cannot determine the size of an unsized source.");return e}}class Ki extends ji{constructor(e,t={}){if(!(e instanceof Blob))throw new TypeError("blob must be a Blob.");if(!t||"object"!==typeof t)throw new TypeError("options must be an object.");if(void 0!==t.maxCacheSize&&(!J(t.maxCacheSize)||t.maxCacheSize<0))throw new TypeError("options.maxCacheSize, when provided, must be a non-negative number.");super(),this._readers=new WeakMap,this._blob=e,this._orchestrator=new Ji({maxCacheSize:t.maxCacheSize??8388608,maxWorkerCount:4,runWorker:this._runWorker.bind(this),prefetchProfile:Yi.fileSystem})}_retrieveSize(){const e=this._blob.size;return this._orchestrator.fileSize=e,e}_read(e,t){return this._orchestrator.read(e,t)}async _runWorker(e){let t=this._readers.get(e);if(void 0===t){if("stream"in this._blob&&!q()){t=this._blob.slice(e.currentPos).stream().getReader()}else t=null;this._readers.set(e,t)}for(;e.currentPos<e.targetPos&&!e.aborted;)if(t){const{done:r,value:i}=await t.read();if(r)throw this._orchestrator.forgetWorker(e),new Error("Blob reader stopped unexpectedly before all requested data was read.");if(e.aborted)break;this.onread?.(e.currentPos,e.currentPos+i.length),this._orchestrator.supplyWorkerData(e,i)}else{const t=await this._blob.slice(e.currentPos,e.targetPos).arrayBuffer();if(e.aborted)break;this.onread?.(e.currentPos,e.currentPos+t.byteLength),this._orchestrator.supplyWorkerData(e,new Uint8Array(t))}e.running=!1,e.aborted&&await(t?.cancel())}_dispose(){this._orchestrator.dispose()}}const $i=524288,Qi=(e,t,r)=>{if(t instanceof Error&&(t.message.includes("Failed to fetch")||t.message.includes("Load failed")||t.message.includes("NetworkError when attempting to fetch resource"))){let e=null;try{"undefined"!==typeof window&&"undefined"!==typeof window.location&&(e=new URL(r instanceof Request?r.url:r,window.location.href).origin)}catch{}if(("undefined"===typeof navigator||"boolean"!==typeof navigator.onLine||navigator.onLine)&&null!==e&&e!==window.location.origin)return console.warn("Request will not be retried because a CORS error was suspected due to different origins. You can modify this behavior by providing your own function for the 'getRetryDelay' option."),null}return Math.min(2**(e-2),16)};class Gi extends ji{constructor(e,t={}){if("string"!==typeof e&&!(e instanceof URL)&&!("undefined"!==typeof Request&&e instanceof Request))throw new TypeError("url must be a string, URL or Request.");if(!t||"object"!==typeof t)throw new TypeError("options must be an object.");if(void 0!==t.requestInit&&(!t.requestInit||"object"!==typeof t.requestInit))throw new TypeError("options.requestInit, when provided, must be an object.");if(void 0!==t.getRetryDelay&&"function"!==typeof t.getRetryDelay)throw new TypeError("options.getRetryDelay, when provided, must be a function.");if(void 0!==t.maxCacheSize&&(!J(t.maxCacheSize)||t.maxCacheSize<0))throw new TypeError("options.maxCacheSize, when provided, must be a non-negative number.");if(void 0!==t.fetchFn&&"function"!==typeof t.fetchFn)throw new TypeError("options.fetchFn, when provided, must be a function.");super(),this._existingResponses=new WeakMap,this._url=e,this._options=t,this._getRetryDelay=t.getRetryDelay??Qi,this._orchestrator=new Ji({maxCacheSize:t.maxCacheSize??67108864,maxWorkerCount:2,runWorker:this._runWorker.bind(this),prefetchProfile:Yi.network})}async _retrieveSize(){const e=new AbortController,t=await L(this._options.fetchFn??fetch,this._url,z(this._options.requestInit??{},{headers:{Range:"bytes=0-"},signal:e.signal}),this._getRetryDelay,()=>this._disposed);if(!t.ok)throw new Error(`Error fetching ${String(this._url)}: ${t.status} ${t.statusText}`);let r,i;if(206===t.status)i=this._getTotalLengthFromRangeResponse(t),r=this._orchestrator.createWorker(0,Math.min(i,$i));else{const e=t.headers.get("Content-Length");if(!e)throw new Error(`HTTP response (status ${t.status}) must surface Content-Length header.`);i=Number(e),r=this._orchestrator.createWorker(0,i),this._orchestrator.options.maxCacheSize=1/0,console.warn("HTTP server did not respond with 206 Partial Content, meaning the entire remote resource now has to be downloaded. For efficient media file streaming across a network, please make sure your server supports range requests.")}return this._orchestrator.fileSize=i,this._existingResponses.set(r,{response:t,abortController:e}),this._orchestrator.runWorker(r),i}_read(e,t){return this._orchestrator.read(e,t)}async _runWorker(e){for(;;){const i=this._existingResponses.get(e);this._existingResponses.delete(e);let a=i?.abortController,s=i?.response;if(a||(a=new AbortController,s=await L(this._options.fetchFn??fetch,this.Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/Y();class Zi{get disposed(){return this._disposed}constructor(e){if(this._demuxerPromise=null,this._format=null,this._disposed=!1,!e||"object"!==typeof e)throw new TypeError("options must be an object.");if(!Array.isArray(e.formats)||e.formats.some(e=>!(e instanceof Pi)))throw new TypeError("options.formats must be an array of InputFormat.");if(!(e.source instanceof ji))throw new TypeError("options.source must be a Source.");if(e.source._disposed)throw new Error("options.source must not be disposed.");this._formats=e.formats,this._source=e.source,this._reader=new ta(e.source)}_getDemuxer(){return this._demuxerPromise??(this._demuxerPromise=(async()=>{this._reader.fileSize=await this._source.getSizeOrNull();for(const e of this._formats){if(await e._canReadInput(this))return this._format=e,e._createDemuxer(this)}throw new Error("Input has an unsupported or unrecognizable format.")})())}get source(){return this._source}async getFormat(){return await this._getDemuxer(),t(this._format),this._format}async computeDuration(){return(await this._getDemuxer()).computeDuration()}async getTracks(){return(await this._getDemuxer()).getTracks()}async getVideoTracks(){return(await this.getTracks()).filter(e=>e.isVideoTrack())}async getAudioTracks(){return(await this.getTracks()).filter(e=>e.isAudioTrack())}async getPrimaryVideoTrack(){return(await this.getTracks()).find(e=>e.isVideoTrack())??null}async getPrimaryAudioTrack(){return(await this.getTracks()).find(e=>e.isAudioTrack())??null}async getMimeType(){return(await this._getDemuxer()).getMimeType()}async getMetadataTags(){return(await this._getDemuxer()).getMetadataTags()}dispose(){this._disposed||(this._disposed=!0,this._source._disposed=!0,this._source._dispose())}[Symbol.dispose](){this.dispose()}}class ea extends Error{constructor(e="Input has been disposed."){super(e),this.name="InputDisposedError"}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class ta{constructor(e){this.source=e}requestSlice(e,t){if(this.source._disposed)throw new ea;if(null!==this.fileSize&&e+t>this.fileSize)return null;const r=e+t,i=this.source._read(e,r);return i instanceof Promise?i.then(t=>t?new ra(t.bytes,t.view,t.offset,e,r):null):i?new ra(i.bytes,i.view,i.offset,e,r):null}requestSliceRange(e,r,i){if(this.source._disposed)throw new ea;if(null!==this.fileSize)return this.requestSlice(e,F(this.fileSize-e,r,i));{const a=this.requestSlice(e,i),s=a=>{if(a)return a;const s=a=>(t(null!==a),this.requestSlice(e,F(a-e,r,i))),n=this.source._retrieveSize();return n instanceof Promise?n.then(s):s(n)};return a instanceof Promise?a.then(s):s(a)}}}class ra{constructor(e,t,r,i,a){this.bytes=e,this.view=t,this.offset=r,this.start=i,this.end=a,this.bufferPos=i-r}static tempFromBytes(e){return new ra(e,c(e),0,0,e.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(e){this.bufferPos=e-this.offset}get remainingLength(){return Math.max(this.end-this.filePos,0)}skip(e){this.bufferPos+=e}slice(e,t=this.end-e){if(e<this.start||e+t>this.end)throw new RangeError("Slicing outside of original slice.");return new ra(this.bytes,this.view,this.offset,e,e+t)}}const ia=(e,t)=>{if(e.filePos<e.start||e.filePos+t>e.end)throw new RangeError(`Tried reading [${e.filePos}, ${e.filePos+t}), but slice is [${e.start}, ${e.end}). This is likely an internal error, please report it alongside the file that caused it.`)},aa=(e,t)=>{ia(e,t);const r=e.bytes.subarray(e.bufferPos,e.bufferPos+t);return e.bufferPos+=t,r},sa=e=>(ia(e,1),e.view.getUint8(e.bufferPos++)),na=(e,t)=>{ia(e,2);const r=e.view.getUint16(e.bufferPos,t);return e.bufferPos+=2,r},oa=e=>{ia(e,2);const t=e.view.getUint16(e.bufferPos,!1);return e.bufferPos+=2,t},ca=e=>{ia(e,3);const t=_(e.view,e.bufferPos,!1);return e.bufferPos+=3,t},la=e=>{ia(e,2);const t=e.view.getInt16(e.bufferPos,!1);return e.bufferPos+=2,t},da=(e,t)=>{ia(e,4);const r=e.view.getUint32(e.bufferPos,t);return e.bufferPos+=4,r},ua=e=>{ia(e,4);const t=e.view.getUint32(e.bufferPos,!1);return e.bufferPos+=4,t},ha=e=>{ia(e,4);const t=e.view.getUint32(e.bufferPos,!0);return e.bufferPos+=4,t},ma=e=>{ia(e,4);const t=e.view.getInt32(e.bufferPos,!1);return e.bufferPos+=4,t},fa=(e,t)=>{let r,i;return t?(r=da(e,!0),i=da(e,!0)):(i=da(e,!1),r=da(e,!1)),4294967296*i+r},pa=e=>4294967296*ua(e)+ua(e),ga=e=>4294967296*ma(e)+ua(e),ka=e=>{const t=ha(e),r=(e=>{ia(e,4);const t=e.view.getInt32(e.bufferPos,!0);return e.bufferPos+=4,t})(e);return 4294967296*r+t},ba=e=>{ia(e,4);const t=e.view.getFloat32(e.bufferPos,!1);return e.bufferPos+=4,t},Ta=e=>{ia(e,8);const t=e.view.getFloat64(e.bufferPos,!1);return e.bufferPos+=8,t},ya=(e,t)=>{ia(e,t);let r="";for(let i=0;i<t;i++)r+=String.fromCharCode(e.bytes[e.bufferPos++]);return r};class wa{constructor(e){this.events=e,this.input=null,this.audioSink=null,this.audioIterator=null,this.audioContext=null,this.gainNode=null,this.audioContextStartTime=0,this.playbackTimeAtStart=0,this.latestScheduledEndTime=0,this.duration=Number.NaN,this.paused=!0,this.volume=.7,this.muted=!1,this.playbackRate=1,this.asyncId=0,this.queuedNodes=new Set}get currentTime(){return this.paused?this.playbackTimeAtStart:(this.audioContext.currentTime-this.audioContextStartTime)*this.playbackRate+this.playbackTimeAtStart}normalizeSource(e){return"string"===typeof e?new Gi(e):e instanceof Blob?new Ki(e):"undefined"!==typeof ReadableStream&&e instanceof ReadableStream?new Xi(e):e}ensureAudioContext(e){if(this.audioContext)return;const t=window.AudioContext||window.webkitAudioContext;try{this.audioContext=new t({sampleRate:e})}catch{this.audioContext=new t}this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination),this.updateGain()}updateGain(){if(!this.gainNode)return;const e=this.muted?0:this.volume;this.gainNode.gain.value=e*e}stopQueuedNodes(){this.queuedNodes.forEach(e=>e.stop()),this.queuedNodes.clear()}async stopIterator(){await(this.audioIterator?.return()),this.audioIterator=null}async load(e,t){const r=++this.asyncId;await this.stopIterator(),this.stopQueuedNodes(),this.paused=!0,this.playbackTimeAtStart=0,this.audioContextStartTime=0;const i=this.normalizeSource(e);if(!i)return;if(this.input=new Zi({source:i,formats:Wi}),this.duration=await this.input.computeDuration(),r!==this.asyncId)return;const a=await this.input.getPrimaryAudioTrack();return a&&null!==a.codec&&await a.canDecode()?(this.ensureAudioContext(a.sampleRate),this.audioSink=new Dt(a),void t?.()):(this.audioSink=null,this.ensureAudioContext(),void t?.())}async runIterator(e){if(this.audioSink)for(await this.stopIterator(),this.audioIterator=this.audioSink.buffers(this.currentTime);;){if(e!==this.asyncId||this.paused)return;const r=this.audioIterator.next(),i=setInterval(()=>{e!==this.asyncId||this.paused?clearInterval(i):"running"===this.audioContext.state&&this.audioContext.currentTime>=this.latestScheduledEndTime-.2&&(this.audioConLine truncated
@@ -1,8 +1,221 @@
/*!
* artplayer-proxy-mediabunny.js v1.0.0
* artplayer-proxy-mediabunny.js v1.0.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,a){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof i[n]&&i[n],o=s.i||{},c=s.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,r){if(!c[t]){if(!e[t]){if(a[t])return a[t];var o="function"==typeof i[n]&&i[n];if(!r&&o)return o(t,!0);if(s)return s(t,!0);if(u&&"string"==typeof t)return u(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}h.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},h.cache={};var f=c[t]=new l.Module(t);e[t][0].call(f.exports,h,f,f.exports,i)}return c[t].exports;function h(e){var t=h.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],a=e[2]||e[0],i=l(n);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===a?Object.defineProperty(r,t,{enumerable:!0,value:i}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===a?i.__esModule?i.default:i:i[a]}})}),r}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=u,this.exports={}},l.modules=e,l.cache=c,l.parent=s,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=o,l.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(l,"root",{get:function(){return i[n]}}),i[n]=l;for(var d=0;d<t.length;d++)l(t[d]);if(r){var f=l(r);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({OIaIB:[function(e,t,r,n){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(r),a.export(r,"default",function(){return c});var i=e("@swc/helpers/cjs/_to_consumable_array.cjs"),s=e("./VideoShim.js"),o=a.interopDefault(s);function c(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t){var r=function(e){n[e]=function(){for(var t=arguments.length,r=Array(t),n=0;n<t;n++)r[n]=arguments[n];return c[e].apply(c,(0,i._)(r))}},n=(0,t.constructor.utils.createElement)("canvas"),a=n.getContext("2d"),s=new(0,o.default)({art:t,canvas:n,ctx:a,option:e}),c={};for(var u in n)"function"==typeof n[u]&&(c[u]=n[u].bind(n));var l=new Set((0,i._)(Object.getOwnPropertyNames(s)).concat((0,i._)(Object.getOwnPropertyNames(Object.getPrototypeOf(s))))),d=!0,f=!1,h=void 0;try{for(var p,m=l[Symbol.iterator]();!(d=(p=m.next()).done);d=!0)!function(){var e=p.value;"constructor"===e||e in n||Object.defineProperty(n,e,{get:function(){var t=s[e];return"function"==typeof t?t.bind(s):t},set:function(t){s[e]=t},configurable:!0,enumerable:!0})}()}catch(e){f=!0,h=e}finally{try{d||null==m.return||m.return()}finally{if(f)throw h}}for(var g in c)r(g);function v(){var e;(null==(e=t.template)?void 0:e.$player)&&!t.option.autoSize&&Object.assign(n.style,{width:"100%",height:"100%",objectFit:"contain"})}return t.on("resize",v),t.on("video:loadedmetadata",v),t.on("destroy",function(){s.destroy()}),n}}"u">typeof window&&(window.artplayerProxyMediabunny=c)},{"@swc/helpers/cjs/_to_consumable_array.cjs":"i81N6","./VideoShim.js":"45n2R","@parcel/transformer-js/src/esmodule-helpers.js":"qpMMf"}],i81N6:[function(e,t,r,n){"use strict";var a=e("d402183024004bc7"),i=e("3209e2b12672cd18"),s=e("fc58adb8f1bff142"),o=e("5e213dc122a10171");r._=function(e){return a._(e)||i._(e)||o._(e)||s._()}},{d402183024004bc7:"hfQG0","3209e2b12672cd18":"fQrlQ",fc58adb8f1bff142:"fWabh","5e213dc122a10171":"fh7mx"}],hfQG0:[function(e,t,r,n){"use strict";var a=e("5bd5b10bf87fc8e");r._=function(e){if(Array.isArray(e))return a._(e)}},{"5bd5b10bf87fc8e":"1WOAB"}],"1WOAB":[function(e,t,r,n){"use strict";r._=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}},{}],fQrlQ:[function(e,t,r,n){"use strict";r._=function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}},{}],fWabh:[function(e,t,r,n){"use strict";r._=function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],fh7mx:[function(e,t,r,n){"use strict";var a=e("3ee51b7dc02d0c44");r._=function(e,t){if(e){if("string"==typeof e)return a._(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a._(e,t)}}},{"3ee51b7dc02d0c44":"1WOAB"}],"45n2R":[function(e,t,r,n){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(r),a.export(r,"default",function(){return d});var i=e("@swc/helpers/cjs/_class_call_check.cjs"),s=e("@swc/helpers/cjs/_create_class.cjs"),o=e("./EventTarget.js"),c=a.interopDefault(o),u=e(Line truncated
!function(e,t){"object"===typeof exports&&"undefined"!==typeof module?module.exports=t():"function"==typeof define&&define.amd?(t.ArtplayerProxyMediabunny=t(),define(function(){return t.ArtplayerProxyMediabunny})):(e="undefined"!==typeof globalThis?globalThis:e||self).ArtplayerProxyMediabunny=t()}(this,function(){"use strict";var e=Object.defineProperty,t=Object.defineProperties,r=Object.getOwnPropertyDescriptors,i=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,a=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e),o=Math.pow,l=(t,r,i)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[r]=i,c=(e,t)=>{for(var r in t||(t={}))n.call(t,r)&&l(e,r,t[r]);if(i)for(var r of i(t))s.call(t,r)&&l(e,r,t[r]);return e},u=(e,t,r)=>new Promise((i,n)=>{var s=e=>{try{o(r.next(e))}catch(t){n(t)}},a=e=>{try{o(r.throw(e))}catch(t){n(t)}},o=e=>e.done?i(e.value):Promise.resolve(e.value).then(s,a);o((r=r.apply(e,t)).next())}),d=function(e,t){this[0]=e,this[1]=t},h=e=>{var t,r=e[a("asyncIterator")],i=!1,n={};return null==r?(r=e[a("iterator")](),t=e=>n[e]=t=>r[e](t)):(r=r.call(e),t=e=>n[e]=t=>{if(i){if(i=!1,"throw"===e)throw t;return t}return i=!0,{done:!1,value:new d(new Promise(i=>{var n=r[e](t);n instanceof Object||(e=>{throw TypeError(e)})("Object expected"),i(n)}),1)}}),n[a("iterator")]=()=>n,t("next"),"throw"in r?t("throw"):n.throw=e=>{throw e},"return"in r&&t("return"),n},m=(e,t,r)=>(t=e[a("asyncIterator")])?t.call(e):(e=e[a("iterator")](),t={},(r=(r,i)=>(i=e[r])&&(t[r]=t=>new Promise((r,n,s)=>(t=i.call(e,t),s=t.done,Promise.resolve(t.value).then(e=>r({value:e,done:s}),n)))))("next"),r("return"),t);class f{constructor(){this.listeners=new Map}addEventListener(e,t){this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t)}removeEventListener(e,t){const r=this.listeners.get(e);if(!r)return;const i=r.indexOf(t);i>=0&&r.splice(i,1)}emit(e,t){const r=new Event(e);r.detail=t;const i=this.listeners.get(e);i&&i.forEach(e=>e(r))}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/function p(e){if(!e)throw new Error("Assertion failed.")}const g=e=>{const t=(e%360+360)%360;if(0===t||90===t||180===t||270===t)return t;throw new Error(`Invalid rotation ${e}.`)},k=e=>e&&e[e.length-1];class b{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){var e;const t=Math.floor(this.pos/8),r=null!=(e=this.bytes[t])?e:0,i=7-(7&this.pos),n=(r&1<<i)>>i;return this.pos++,n}readBits(e){if(1===e)return this.readBit();let t=0;for(let r=0;r<e;r++)t<<=1,t|=this.readBit();return t}writeBits(e,t){const r=this.pos+e;for(let i=this.pos;i<r;i++){const e=Math.floor(i/8);let n=this.bytes[e];const s=7-(7&i);n&=~(1<<s),n|=(t&1<<r-i-1)>>r-i-1<<s,this.bytes[e]=n}this.pos=r}readAlignedByte(){var e;if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");const t=this.pos/8,r=null!=(e=this.bytes[t])?e:0;return this.pos+=8,r}skipBits(e){this.pos+=e}getBitsLeft(){return 8*this.bytes.length-this.pos}clone(){const e=new b(this.bytes);return e.pos=this.pos,e}}const y=e=>{let t=0;for(;0===e.readBits(1)&&t<32;)t++;if(t>=32)throw new Error("Invalid exponential-Golomb code.");return(1<<t)-1+e.readBits(t)},T=e=>{const t=y(e);return 0===(1&t)?-(t>>1):t+1>>1},S=e=>e.constructor===Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),v=e=>e.constructor===DataView?e:ArrayBuffer.isView(e)?new DataView(e.buffer,e.byteOffset,e.byteLength):new DataView(e),w=new TextDecoder,I=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[t,e])),P={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},x=I(P),C={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18},_=I(C),B={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},E=I(B),F=e=>e instanceof ArrayBuffer||"undefined"!==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e);class D{constructor(){this.currentPromise=Promise.resolve()}acquire(){return u(this,null,function*(){let e;const t=new Promise(t=>{e=t}),r=this.currentPromise;return this.currentPromise=t,yield r,e})}}const A=e=>[...e].map(e=>e.toString(16).padStart(2,"0")).join(""),R=e=>(e=(e=(e=(e=(e=e>>1&1431655765|(1431655765&e)<<1)>>2&858993459|(858993459&e)<<2)>>4&252645135|(252645135&e)<<4)>>8&16711935|(16711935&e)<<8)>>16&65535|(65535&e)<<16)>>>0,M=(e,t,r)=>{let i=0,n=e.length-1,s=-1;for(;i<=n;){const a=i+n>>1,o=r(e[a]);o===t?(s=a,n=a-1):o<t?i=a+1:n=a-1}return s},N=(e,t,r)=>{let i=0,n=e.length-1,s=-1;for(;i<=n;){const a=i+(n-i+1)/2|0;r(e[a])<=t?(s=a,i=a+1):n=a-1}return s},z=(e,t,r)=>{const i=N(e,r(t),r);e.splice(i+1,0,t)},O=()=>{let e,t;return{promise:new Promise((r,i)=>{e=r,t=i}),resolve:e,reject:t}},L=(e,t)=>{for(let r=e.length-1;r>=0;r--)if(t(e[r]))return e[r]},U=(e,t)=>{for(let r=e.length-1;r>=0;r--)if(t(e[r]))return r;return-1},V=function(e){return((e,t,r)=>{var i=(e,t,n,s)=>{try{var a=r[e](t),o=(t=a.value)instanceof d,l=a.done;Promise.resolve(o?t[0]:t).then(r=>o?i("return"===e?e:"next",t[1]?{done:r.done,value:r.value}:r,n,s):n({value:r,done:l})).catch(e=>i("throw",e,n,s))}catch(c){s(c)}},n=e=>s[e]=t=>new Promise((r,n)=>i(e,t,r,n)),s={};return r=r.apply(e,t),s[a("asyncIterator")]=()=>s,n("next"),n("throw"),n("return"),s})(this,null,function*(){Symbol.iterator in e?yield*h(e[Symbol.iterator]()):yield*h(e[Symbol.asyncIterator]())})},q=e=>{throw new Error(`Unexpected value: ${e}`)},H=(e,t,r)=>{const i=e.getUint8(t),n=e.getUint8(t+1),s=e.getUint8(t+2);return r?i|n<<8|s<<16:i<<16|n<<8|s},W=(e,t,r,i)=>{r>>>=0,r&=16777215,e.setUint8(t,r>>>16&255),e.setUint8(t+1,r>>>8&255),e.setUint8(t+2,255&r)},j=(e,t)=>({next(){return u(this,null,function*(){const r=yield e.next();return r.done?{value:void 0,done:!0}:{value:t(r.value),done:!1}})},return:()=>e.return(),throw:t=>e.throw(t),[Symbol.asyncIterator](){return this}}),K=(e,t,r)=>Math.max(t,Math.min(r,e)),$="und",Q=e=>{const t=Math.round(e);return Math.abs(e/t-1)<10*Number.EPSILON?t:e},G=/^[a-z]{3}$/,X=e=>G.test(e),Y=1e6*(1+Number.EPSILON),J=(e,t)=>{const r=c(c({},e),t);if(e.headers||t.headers){const i=e.headers?Z(e.headers):{},n=t.headers?Z(t.headers):{},s=c({},i);Object.entries(n).forEach(([e,t])=>{const r=Object.keys(s).find(t=>t.toLowerCase()===e.toLowerCase());r&&delete s[r],s[e]=t}),r.headers=s}return r},Z=e=>{if(e instanceof Headers){const t={};return e.forEach((e,r)=>{t[r]=e}),t}if(Array.isArray(e)){const t={};return e.forEach(([e,r])=>{t[e]=r}),t}return e},ee=(e,t,r,i,n)=>u(null,null,function*(){let s=0;for(;;)try{return yield e(t,r)}catch(a){if(n())throw a;s++;const e=i(s,a,t);if(null===e)throw a;if(console.error("Retrying failed fetch. Error:",a),!Number.isFinite(e)||e<0)throw new TypeError("Retry delay must be a non-negative finite number.");if(e>0&&(yield new Promise(t=>setTimeout(t,1e3*e))),n())throw a}});class te{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}}let re=null;const ie=()=>{var e;return null!==re?re:re=!("undefined"===typeof navigator||!((null==(e=navigator.vendor)?void 0:e.match(/Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class fe{constructor(e,t){if(this.data=e,this.mimeType=t,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if("string"!==typeof t)throw new TypeError("mimeType must be a string.")}}class pe{constructor(e,t,r,i){if(this.data=e,this.mimeType=t,this.name=r,this.description=i,!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if(void 0!==t&&"string"!==typeof t)throw new TypeError("mimeType, when provided, must be a string.");if(void 0!==r&&"string"!==typeof r)throw new TypeError("name, when provided, must be a string.");if(void 0!==i&&"string"!==typeof i)throw new TypeError("description, when provided, must be a string.")}}const ge={default:!0,forced:!1,original:!1,commentary:!1,hearingImpaired:!1,visuallyImpaired:!1},ke=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],be=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],ye=".01.01.01.01.00",Te=".0.110.01.01.01.0",Se=e=>{const{codec:t,codecDescription:r,colorSpace:i,avcCodecInfo:n,hevcCodecInfo:s,vp9CodecInfo:a,av1CodecInfo:o}=e;if("avc"===t){if(p(null!==e.avcType),n){const t=new Uint8Array([n.avcProfileIndication,n.profileCompatibility,n.avcLevelIndication]);return`avc${e.avcType}.${A(t)}`}if(!r||r.byteLength<4)throw new TypeError("AVC decoder description is not provided or is not at least 4 bytes long.");return`avc${e.avcType}.${A(r.subarray(1,4))}`}if("hevc"===t){let e,t,i,n,a,o;if(s)e=s.generalProfileSpace,t=s.generalProfileIdc,i=R(s.generalProfileCompatibilityFlags),n=s.generalTierFlag,a=s.generalLevelIdc,o=[...s.generalConstraintIndicatorFlags];else{if(!r||r.byteLength<23)throw new TypeError("HEVC decoder description is not provided or is not at least 23 bytes long.");const s=v(r),l=s.getUint8(1);e=l>>6&3,t=31&l,i=R(s.getUint32(2)),n=l>>5&1,a=s.getUint8(12),o=[];for(let e=0;e<6;e++)o.push(s.getUint8(6+e))}let l="hev1.";for(l+=["","A","B","C"][e]+t,l+=".",l+=i.toString(16).toUpperCase(),l+=".",l+=0===n?"L":"H",l+=a;o.length>0&&0===o[o.length-1];)o.pop();return o.length>0&&(l+=".",l+=o.map(e=>e.toString(16).toUpperCase()).join(".")),l}if("vp8"===t)return"vp8";if("vp9"===t){if(!a){const t=e.width*e.height;let r=k(be).level;for(const e of be)if(t<=e.maxPictureSize){r=e.level;break}return`vp09.00.${r.toString().padStart(2,"0")}.08`}let t=`vp09.${a.profile.toString().padStart(2,"0")}.${a.level.toString().padStart(2,"0")}.${a.bitDepth.toString().padStart(2,"0")}.${a.chromaSubsampling.toString().padStart(2,"0")}`;return t+=`.${a.colourPrimaries.toString().padStart(2,"0")}.${a.transferCharacteristics.toString().padStart(2,"0")}.${a.matrixCoefficients.toString().padStart(2,"0")}.${a.videoFullRangeFlag.toString().padStart(2,"0")}`,t.endsWith(ye)&&(t=t.slice(0,-15)),t}if("av1"===t){if(!o){const t=e.width*e.height;let r=k(be).level;for(const e of be)if(t<=e.maxPictureSize){r=e.level;break}return`av01.0.${r.toString().padStart(2,"0")}M.08`}const t=o.profile,r=o.level.toString().padStart(2,"0"),n=o.tier?"H":"M",s=o.bitDepth.toString().padStart(2,"0"),a=o.monochrome?"1":"0",l=100*o.chromaSubsamplingX+10*o.chromaSubsamplingY+1*(o.chromaSubsamplingX&&o.chromaSubsamplingY?o.chromaSamplePosition:0),c=(null==i?void 0:i.primaries)?P[i.primaries]:1,u=(null==i?void 0:i.transfer)?C[i.transfer]:1,d=(null==i?void 0:i.matrix)?B[i.matrix]:1,h=(null==i?void 0:i.fullRange)?1:0;let m=`av01.${t}.${r}${n}.${s}`;return m+=`.${a}.${l.toString().padStart(3,"0")}`,m+=`.${c.toString().padStart(2,"0")}`,m+=`.${u.toString().padStart(2,"0")}`,m+=`.${d.toString().padStart(2,"0")}`,m+=`.${h}`,m.endsWith(Te)&&(m=m.slice(0,-17)),m}throw new TypeError(`Unhandled codec '${t}'.`)},ve=e=>{const{codec:t,codecDescription:r,aacCodecInfo:i}=e;if("aac"===t){if(!i)throw new TypeError("AAC codec info must be provided.");if(i.isMpeg2)return"mp4a.67";return`mp4a.40.${Pe(r).objectType}`}if("mp3"===t)return"mp3";if("opus"===t)return"opus";if("vorbis"===t)return"vorbis";if("flac"===t)return"flac";if(t&&ke.includes(t))return t;throw new TypeError(`Unhandled codec '${t}'.`)},we=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Ie=[-1,1,2,3,4,5,6,8],Pe=e=>{if(!e||e.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");const t=new b(e);let r=t.readBits(5);31===r&&(r=32+t.readBits(6));const i=t.rLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var Be,Ee,Fe,De;(Ee=Be||(Be={}))[Ee.IDR=5]="IDR",Ee[Ee.SEI=6]="SEI",Ee[Ee.SPS=7]="SPS",Ee[Ee.PPS=8]="PPS",Ee[Ee.SPS_EXT=13]="SPS_EXT",(De=Fe||(Fe={}))[De.RASL_N=8]="RASL_N",De[De.RASL_R=9]="RASL_R",De[De.BLA_W_LP=16]="BLA_W_LP",De[De.RSV_IRAP_VCL23=23]="RSV_IRAP_VCL23",De[De.VPS_NUT=32]="VPS_NUT",De[De.SPS_NUT=33]="SPS_NUT",De[De.PPS_NUT=34]="PPS_NUT",De[De.PREFIX_SEI_NUT=39]="PREFIX_SEI_NUT",De[De.SUFFIX_SEI_NUT=40]="SUFFIX_SEI_NUT";const Ae=e=>{const t=[];let r=0;for(;r<e.length;){let i=-1,n=0;for(let t=r;t<e.length-3;t++){if(0===e[t]&&0===e[t+1]&&1===e[t+2]){i=t,n=3;break}if(t<e.length-4&&0===e[t]&&0===e[t+1]&&0===e[t+2]&&1===e[t+3]){i=t,n=4;break}}if(-1===i)break;if(r>0&&i>r){const n=e.subarray(r,i);n.length>0&&t.push(n)}r=i+n}if(r<e.length){const i=e.subarray(r);i.length>0&&t.push(i)}return t},Re=(e,t)=>{const r=[];let i=0;const n=new DataView(e.buffer,e.byteOffset,e.byteLength);for(;i+t<=e.length;){let s;1===t?s=n.getUint8(i):2===t?s=n.getUint16(i,!1):3===t?s=H(n,i,!1):4===t?s=n.getUint32(i,!1):(q(t),p(!1)),i+=t;const a=e.subarray(i,i+s);r.push(a),i+=s}return r},Me=e=>{const t=[],r=e.length;for(let i=0;i<r;i++)i+2<r&&0===e[i]&&0===e[i+1]&&3===e[i+2]?(t.push(0,0),i+=2):t.push(e[i]);return new Uint8Array(t)},Ne=new Uint8Array([0,0,0,1]),ze=(e,t)=>{if(t.description){const r=3&S(t.description)[4];return Re(e,r+1)}return Ae(e)},Oe=(e,t)=>{if(t.description){return((e,t)=>{const r=e.reduce((e,r)=>e+t+r.byteLength,0),i=new Uint8Array(r);let n=0;for(const s of e){const e=new DataView(i.buffer,i.byteOffset,i.byteLength);switch(t){case 1:e.setUint8(n,s.byteLength);break;case 2:e.setUint16(n,s.byteLength,!1);break;case 3:W(e,n,s.byteLength);break;case 4:e.setUint32(n,s.byteLength,!1)}n+=t,i.set(s,n),n+=s.byteLength}return i})(e,(3&S(t.description)[4])+1)}return(e=>{const t=e.reduce((e,t)=>e+Ne.byteLength+t.byteLength,0),r=new Uint8Array(t);let i=0;for(const n of e)r.set(Ne,i),i+=Ne.byteLength,r.set(n,i),i+=n.byteLength;return r})(e)},Le=e=>31&e[0],Ue=e=>{try{const t=Ae(e),r=t.filter(e=>Le(e)===Be.SPS),i=t.filter(e=>Le(e)===Be.PPS),n=t.filter(e=>Le(e)===Be.SPS_EXT);if(0===r.length)return null;if(0===i.length)return null;const s=r[0],a=Ve(s);p(null!==a);const o=100===a.profileIdc||110===a.profileIdc||122===a.profileIdc||144===a.profileIdc;return{configurationVersion:1,avcProfileIndication:a.profileIdc,profileCompatibility:a.constraintFlags,avcLevelIndication:a.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:r,pictureParameterSets:i,chromaFormat:o?a.chromaFormatIdc:null,bitDepthLumaMinus8:o?a.bitDepthLumaMinus8:null,bitDepthChromaMinus8:o?a.bitDepthChromaMinus8:null,sequenceParameterSetExt:o?n:null}}catch(t){return console.error("Error building AVC Decoder Configuration Record:",t),null}},Ve=e=>{try{const t=new b(Me(e));t.skipBits(1),t.skipBits(2);if(7!==t.readBits(5))return null;const r=t.readAlignedByte(),i=t.readAlignedByte(),n=t.readAlignedByte();y(t);let s=null,a=null,o=null;if(100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r){s=y(t),3===s&&t.skipBits(1),a=y(t),o=y(t),t.skipBits(1);if(t.readBits(1))for(let e=0;e<(3!==s?8:12);e++){if(t.readBits(1)){const r=e<6?16:64;let i=8,n=8;for(let e=0;e<r;e++){if(0!==n){n=(i+T(t)+256)%256}i=0===n?i:n}}}}y(t);const l=y(t);if(0===l)y(t);else if(1===l){t.skipBits(1),T(t),T(t);const e=y(t);for(let r=0;r<e;r++)T(t)}y(t),t.skipBits(1),y(t),y(t);return{profileIdc:r,constraintFlags:i,levelIdc:n,frameMbsOnlyFlag:t.readBits(1),chromaFormatIdc:s,bitDepthLumaMinus8:a,bitDepthChromaMinus8:o}}catch(t){return console.error("Error parsing AVC SPS:",t),null}},qe=(e,t)=>{if(t.description){const r=3&S(t.description)[21];return Re(e,r+1)}return Ae(e)},He=e=>e[0]>>1&63,We=e=>{try{const t=Ae(e),r=t.filter(e=>He(e)===Fe.VPS_NUT),i=t.filter(e=>He(e)===Fe.SPS_NUT),n=t.filter(e=>He(e)===Fe.PPS_NUT),s=t.filter(e=>He(e)===Fe.PREFIX_SEI_NUT||He(e)===Fe.SUFFIX_SEI_NUT);if(0===i.length||0===n.length)return null;const a=i[0],o=new b(Me(a));o.skipBits(16),o.readBits(4);const l=o.readBits(3),c=o.readBits(1),{general_profile_space:u,general_tier_flag:d,general_profile_idc:h,general_profile_compatibility_flags:m,general_constraint_indicator_flags:f,general_level_idc:p}=je(o,l);y(o);const g=y(o);3===g&&o.skipBits(1),y(o),y(o),o.readBits(1)&&(y(o),y(o),y(o),y(o));const k=y(o),S=y(o);y(o);const v=o.readBits(1);for(let e=v?0:l;e<=l;e++)y(o),y(o),y(o);y(o),y(o),y(o),y(o),y(o),y(o),o.readBits(1)&&o.readBits(1)&&Ke(o),o.skipBits(1),o.skipBits(1),o.readBits(1)&&(o.skipBits(4),o.skipBits(4),y(o),y(o),o.skipBits(1));const w=y(o);if($e(o,w),o.readBits(1)){const e=y(o);for(let t=0;t<e;t++)y(o),o.skipBits(1)}o.skipBits(1),o.skipBits(1);let I=0;o.readBits(1)&&(I=Ge(o,l));let P=0;if(n.length>0){const e=n[0],t=new b(Me(e));t.skipBits(16),y(t),y(t),t.skipBits(1),t.skipBits(1),t.skipBits(3),t.skipBits(1),t.skipBits(1),y(t),y(t),T(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&y(t),T(t),T(t),t.skipBits(1),t.skipBits(1),t.skipBits(1),t.skipBits(1);const r=t.readBits(1),i=t.readBits(1);P=r||i?r&&!iLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class ot{constructor(e){this.input=e}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const lt=[],ct=[],ut=new Uint8Array(0);class dt{constructor(e,t,r,i,n=-1,s,a){if(this.data=e,this.type=t,this.timestamp=r,this.duration=i,this.sequenceNumber=n,e===ut&&void 0===s)throw new Error("Internal error: byteLength must be explicitly provided when constructing metadata-only packets.");if(void 0===s&&(s=e.byteLength),!(e instanceof Uint8Array))throw new TypeError("data must be a Uint8Array.");if("key"!==t&&"delta"!==t)throw new TypeError('type must be either "key" or "delta".');if(!Number.isFinite(r))throw new TypeError("timestamp must be a number.");if(!Number.isFinite(i)||i<0)throw new TypeError("duration must be a non-negative number.");if(!Number.isFinite(n))throw new TypeError("sequenceNumber must be a number.");if(!Number.isInteger(s)||s<0)throw new TypeError("byteLength must be a non-negative integer.");if(void 0!==a&&("object"!==typeof a||!a))throw new TypeError("sideData, when provided, must be an object.");if(void 0!==(null==a?void 0:a.alpha)&&!(a.alpha instanceof Uint8Array))throw new TypeError("sideData.alpha, when provided, must be a Uint8Array.");if(void 0!==(null==a?void 0:a.alphaByteLength)&&(!Number.isInteger(a.alphaByteLength)||a.alphaByteLength<0))throw new TypeError("sideData.alphaByteLength, when provided, must be a non-negative integer.");this.byteLength=s,this.sideData=null!=a?a:{},this.sideData.alpha&&void 0===this.sideData.alphaByteLength&&(this.sideData.alphaByteLength=this.sideData.alpha.byteLength)}get isMetadataOnly(){return this.data===ut}get microsecondTimestamp(){return Math.trunc(Y*this.timestamp)}get microsecondDuration(){return Math.trunc(Y*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if("undefined"===typeof EncodedVideoChunk)throw new Error("Your browser does not support EncodedVideoChunk.");return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}alphaToEncodedVideoChunk(e=this.type){if(!this.sideData.alpha)throw new TypeError("This packet does not contain alpha side data.");if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to a video chunk.");if("undefined"===typeof EncodedVideoChunk)throw new Error("Your browser does not support EncodedVideoChunk.");return new EncodedVideoChunk({data:this.sideData.alpha,type:e,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw new TypeError("Metadata-only packets cannot be converted to an audio chunk.");if("undefined"===typeof EncodedAudioChunk)throw new Error("Your browser does not support EncodedAudioChunk.");return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(e,t){var r;if(!(e instanceof EncodedVideoChunk||e instanceof EncodedAudioChunk))throw new TypeError("chunk must be an EncodedVideoChunk or EncodedAudioChunk.");const i=new Uint8Array(e.byteLength);return e.copyTo(i),new dt(i,e.type,e.timestamp/1e6,(null!=(r=e.duration)?r:0)/1e6,void 0,void 0,t)}clone(e){var t,r;if(void 0!==e&&("object"!==typeof e||null===e))throw new TypeError("options, when provided, must be an object.");if(void 0!==(null==e?void 0:e.timestamp)&&!Number.isFinite(e.timestamp))throw new TypeError("options.timestamp, when provided, must be a number.");if(void 0!==(null==e?void 0:e.duration)&&!Number.isFinite(e.duration))throw new TypeError("options.duration, when provided, must be a number.");return new dt(this.data,this.type,null!=(t=null==e?void 0:e.timestamp)?t:this.timestamp,null!=(r=null==e?void 0:e.duration)?r:this.duration,this.sequenceNumber,this.byteLength)}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
he();let ht=-1/0,mt=-1/0,ft=null;"undefined"!==typeof FinalizationRegistry&&(ft=new FinalizationRegistry(e=>{const t=Date.now();"video"===e.type?(t-ht>=1e3&&(console.error("A VideoSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your VideoSamples as soon as you're done using them."),ht=t),"undefined"!==typeof VideoFrame&&e.data instanceof VideoFrame&&e.data.close()):(t-mt>=1e3&&(console.error("An AudioSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your AudioSamples as soon as you're done using them."),mt=t),"undefined"!==typeof AudioData&&e.data instanceof AudioData&&e.data.close())}));const pt=["I420","I420P10","I420P12","I420A","I420AP10","I420AP12","I422","I422P10","I422P12","I422A","I422AP10","I422AP12","I444","I444P10","I444P12","I444A","I444AP10","I444AP12","NV12","RGBA","RGBX","BGRA","BGRX"],gt=new Set(pt);class kt{get displayWidth(){return this.rotation%180===0?this.codedWidth:this.codedHeight}get displayHeight(){return this.rotation%180===0?this.codedHeight:this.codedWidth}get microsecondTimestamp(){return Math.trunc(Y*this.timestamp)}get microsecondDuration(){return Math.trunc(Y*this.duration)}get hasAlpha(){return this.format&&this.format.includes("A")}constructor(e,t){var r,i,n,s,a,o,l,c,u,d;if(this._closed=!1,e instanceof ArrayBuffer||"undefined"!==typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e)){if(!t||"object"!==typeof t)throw new TypeError("init must be an object.");if(void 0===t.format||!gt.has(t.format))throw new TypeError("init.format must be one of: "+pt.join(", "));if(!Number.isInteger(t.codedWidth)||t.codedWidth<=0)throw new TypeError("init.codedWidth must be a positive integer.");if(!Number.isInteger(t.codedHeight)||t.codedHeight<=0)throw new TypeError("init.codedHeight must be a positive integer.");if(void 0!==t.rotation&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(t.timestamp))throw new TypeError("init.timestamp must be a number.");if(void 0!==t.duration&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=S(e).slice(),this._layout=null!=(r=t.layout)?r:wt(t.format,t.codedWidth,t.codedHeight),this.format=t.format,this.codedWidth=t.codedWidth,this.codedHeight=t.codedHeight,this.rotation=null!=(i=t.rotation)?i:0,this.timestamp=t.timestamp,this.duration=null!=(n=t.duration)?n:0,this.colorSpace=new bt(t.colorSpace)}else if("undefined"!==typeof VideoFrame&&e instanceof VideoFrame){if(void 0!==(null==t?void 0:t.rotation)&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(void 0!==(null==t?void 0:t.timestamp)&&!Number.isFinite(null==t?void 0:t.timestamp))throw new TypeError("init.timestamp, when provided, must be a number.");if(void 0!==(null==t?void 0:t.duration)&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");this._data=e,this._layout=null,this.format=e.format,this.codedWidth=e.displayWidth,this.codedHeight=e.displayHeight,this.rotation=null!=(s=null==t?void 0:t.rotation)?s:0,this.timestamp=null!=(a=null==t?void 0:t.timestamp)?a:e.timestamp/1e6,this.duration=null!=(l=null==t?void 0:t.duration)?l:(null!=(o=e.duration)?o:0)/1e6,this.colorSpace=new bt(e.colorSpace)}else{if(!("undefined"!==typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!==typeof SVGImageElement&&e instanceof SVGImageElement||"undefined"!==typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!==typeof HTMLVideoElement&&e instanceof HTMLVideoElement||"undefined"!==typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!==typeof OffscreenCanvas&&e instanceof OffscreenCanvas))throw new TypeError("Invalid data type: Must be a BufferSource or CanvasImageSource.");{if(!t||"object"!==typeof t)throw new TypeError("init must be an object.");if(void 0!==t.rotation&&![0,90,180,270].includes(t.rotation))throw new TypeError("init.rotation, when provided, must be 0, 90, 180, or 270.");if(!Number.isFinite(t.timestamp))throw new TypeError("init.timestamp must be a number.");if(void 0!==t.duration&&(!Number.isFinite(t.duration)||t.duration<0))throw new TypeError("init.duration, when provided, must be a non-negative number.");if("undefined"!==typeof VideoFrame)return new kt(new VideoFrame(e,{timestamp:Math.trunc(t.timestamp*Y),duration:Math.trunc((null!=(c=t.duration)?c:0)*Y)||void 0}),t);let r=0,i=0;if("naturalWidth"in e?(r=e.naturalWidth,i=e.naturalHeight):"videoWidth"in e?(r=e.videoWidth,i=e.videoHeight):"width"in e&&(r=Number(e.width),i=Number(e.height)),!r||!i)throw new TypeError("Could not determine dimensions.");const n=new OffscreenCanvas(r,i),s=n.getContext("2d",{alpha:se(),willReadFrequentlyLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class Qt{constructor(e,t){this.input=e,this._backing=t}isVideoTrack(){return this instanceof Gt}isAudioTrack(){return this instanceof Xt}get id(){return this._backing.getId()}get internalCodecId(){return this._backing.getInternalCodecId()}get languageCode(){return this._backing.getLanguageCode()}get name(){return this._backing.getName()}get timeResolution(){return this._backing.getTimeResolution()}get disposition(){return this._backing.getDisposition()}getFirstTimestamp(){return this._backing.getFirstTimestamp()}computeDuration(){return this._backing.computeDuration()}computePacketStats(e=1/0){return u(this,null,function*(){const t=new Nt(this);let r=1/0,i=-1/0,n=0,s=0;try{for(var a,o,l,c=m(t.packets(void 0,void 0,{metadataOnly:!0}));a=!(o=yield c.next()).done;a=!1){const t=o.value;if(n>=e&&t.timestamp>=i)break;r=Math.min(r,t.timestamp),i=Math.max(i,t.timestamp+t.duration),n++,s+=t.byteLength}}catch(o){l=[o]}finally{try{a&&(o=c.return)&&(yield o.call(c))}finally{if(l)throw l[0]}}return{packetCount:n,averagePacketRate:n?Number((n/(i-r)).toPrecision(16)):0,averageBitrate:n?Number((8*s/(i-r)).toPrecision(16)):0}})}}class Gt extends Qt{constructor(e,t){super(e,t),this._backing=t}get type(){return"video"}get codec(){return this._backing.getCodec()}get codedWidth(){return this._backing.getCodedWidth()}get codedHeight(){return this._backing.getCodedHeight()}get rotation(){return this._backing.getRotation()}get displayWidth(){return this._backing.getRotation()%180===0?this._backing.getCodedWidth():this._backing.getCodedHeight()}get displayHeight(){return this._backing.getRotation()%180===0?this._backing.getCodedHeight():this._backing.getCodedWidth()}getColorSpace(){return this._backing.getColorSpace()}hasHighDynamicRange(){return u(this,null,function*(){const e=yield this._backing.getColorSpace();return"bt2020"===e.primaries||"smpte432"===e.primaries||"pg"===e.transfer||"hlg"===e.transfer||"bt2020-ncl"===e.matrix})}canBeTransparent(){return this._backing.canBeTransparent()}getDecoderConfig(){return this._backing.getDecoderConfig()}getCodecParameterString(){return u(this,null,function*(){var e;const t=yield this._backing.getDecoderConfig();return null!=(e=null==t?void 0:t.codec)?e:null})}canDecode(){return u(this,null,function*(){try{const e=yield this._backing.getDecoderConfig();if(!e)return!1;const t=this._backing.getCodec();if(p(null!==t),lt.some(r=>r.supports(t,e)))return!0;if("undefined"===typeof VideoDecoder)return!1;return!0===(yield VideoDecoder.isConfigSupported(e)).supported}catch(e){return console.error("Error during decodability check:",e),!1}})}determinePacketType(e){return u(this,null,function*(){if(!(e instanceof dt))throw new TypeError("packet must be an EncodedPacket.");if(e.isMetadataOnly)throw new TypeError("packet must not be metadata-only to determine its type.");if(null===this.codec)return null;const t=yield this.getDecoderConfig();return p(t),it(this.codec,t,e.data)})}}class Xt extends Qt{constructor(e,t){super(e,t),this._backing=t}get type(){return"audio"}get codec(){return this._backing.getCodec()}get numberOfChannels(){return this._backing.getNumberOfChannels()}get sampleRate(){return this._backing.getSampleRate()}getDecoderConfig(){return this._backing.getDecoderConfig()}getCodecParameterString(){return u(this,null,function*(){var e;const t=yield this._backing.getDecoderConfig();return null!=(e=null==t?void 0:t.codec)?e:null})}canDecode(){return u(this,null,function*(){try{const e=yield this._backing.getDecoderConfig();if(!e)return!1;const t=this._backing.getCodec();if(p(null!==t),ct.some(r=>r.supports(t,e)))return!0;if(e.codec.startsWith("pcm-"))return!0;if("undefined"===typeof AudioDecoder)return!1;return!0===(yield AudioDecoder.isConfigSupported(e)).supported}catch(e){return console.error("Error during decodability check:",e),!1}})}determinePacketType(e){return u(this,null,function*(){if(!(e instanceof dt))throw new TypeError("packet must be an EncodedPacket.");return null===this.codec?null:"key"})}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const Yt=e=>{let t=Cn(e);const r=Nn(e,4);let i=8;1===t&&(t=Fn(e),i=16);const n=t-i;return n<0?null:{name:r,totalSize:t,headerSize:i,contentSize:n}},Jt=e=>Bn(e)/65536,Zt=e=>Bn(e)/1073741824,er=e=>{let t=0;for(let r=0;r<4;r++){t<<=7;const r=Sn(e);if(t|=127&r,0===(128&r))break}return t},tr=e=>{let t=wn(e);return e.skip(2),t=Math.min(t,e.remainingLength),w.decode(Tn(e,t))},rr=e=>{const t=Yt(e);if(!t||"data"!==t.name)return null;if(e.remainingLength<8)return null;const r=Cn(e);e.skip(4);const i=Tn(e,t.contentSize-8);switch(r){case 1:return w.decode(i);case 2:return new TextDecoder("utf-16be").decode(i);case 13:return new fe(i,"image/jpeg");case 14:return new fe(i,"image/png");case 27:return new fe(i,"image/bmp");default:return i}};
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class ir extends ot{constructor(e){super(e),this.moovSlice=null,this.currentTrack=null,this.tracks=[],this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.isQuickTime=!1,this.metadataTags={},this.currentMetadataKeys=null,this.isFragmented=!1,this.fragmentTrackDefaults=[],this.currentFragment=null,this.lastReadFragment=null,this.reader=e._reader}computeDuration(){return u(this,null,function*(){const e=yield this.getTracks(),t=yield Promise.all(e.map(e=>e.computeDuration()));return Math.max(0,...t)})}getTracks(){return u(this,null,function*(){return yield this.readMetadata(),this.tracks.map(e=>e.inputTrack)})}getMimeType(){return u(this,null,function*(){yield this.readMetadata();const e=yield Promise.all(this.tracks.map(e=>e.inputTrack.getCodecParameterString()));return(e=>{let t=(e.hasVideo?"video/":e.hasAudio?"audio/":"application/")+(e.isQuickTime?"quicktime":"mp4");e.codecStrings.length>0&&(t+=`; codecs="${[...new Set(e.codecStrings)].join(", ")}"`);return t})({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(e=>{var t;return"video"===(null==(t=e.info)?void 0:t.type)}),hasAudio:this.tracks.some(e=>{var t;return"audio"===(null==(t=e.info)?void 0:t.type)}),codecStrings:e.filter(Boolean)})})}getMetadataTags(){return u(this,null,function*(){return yield this.readMetadata(),this.metadataTags})}readMetadata(){var e;return null!=(e=this.metadataPromise)?e:this.metadataPromise=(()=>u(this,null,function*(){let e=0;for(;;){let t=this.reader.requestSliceRange(e,8,16);if(t instanceof Promise&&(t=yield t),!t)break;const r=e,i=Yt(t);if(!i)break;if("ftyp"===i.name){const e=Nn(t,4);this.isQuickTime="qt "===e}else if("moov"===i.name){let e=this.reader.requestSlice(t.filePos,i.contentSize);if(e instanceof Promise&&(e=yield e),!e)break;this.moovSlice=e,this.readContiguousBoxes(this.moovSlice),this.tracks.sort((e,t)=>Number(t.disposition.default)-Number(e.disposition.default));for(const t of this.tracks){const e=t.editListPreviousSegmentDurations/this.movieTimescale;t.editListOffset-=Math.round(e*t.timescale)}break}e=r+i.totalSize}if(this.isFragmented&&null!==this.reader.fileSize){let e=this.reader.requestSlice(this.reader.fileSize-4,4);e instanceof Promise&&(e=yield e),p(e);const t=Cn(e),r=this.reader.fileSize-t;if(r>=0&&r<=this.reader.fileSize-16){let e=this.reader.requestSliceRange(r,8,16);if(e instanceof Promise&&(e=yield e),e){const t=Yt(e);if(t&&"mfra"===t.name){let r=this.reader.requestSlice(e.filePos,t.contentSize);r instanceof Promise&&(r=yield r),r&&this.readContiguousBoxes(r)}}}}}))()}getSampleTableForTrack(e){var t,r;if(e.sampleTable)return e.sampleTable;const i={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],presentationTimestamps:null,presentationTimestampIndexMap:null};e.sampleTable=i,p(this.moovSlice);const n=this.moovSlice.slice(e.sampleTableByteOffset);this.currentTrack=e,this.traverseBox(n),this.currentTrack=null;if("audio"===(null==(t=e.info)?void 0:t.type)&&e.info.codec&&ke.includes(e.info.codec)&&0===i.sampleCompositionTimeOffsets.length){p("audio"===(null==(r=e.info)?void 0:r.type));const t=_e(e.info.codec),n=[],s=[];for(let r=0;r<i.sampleToChunk.length;r++){const a=i.sampleToChunk[r],o=i.sampleToChunk[r+1],l=(o?o.startChunkIndex:i.chunkOffsets.length)-a.startChunkIndex;for(let r=0;r<l;r++){const o=a.startSampleIndex+r*a.samplesPerChunk,l=o+a.samplesPerChunk,c=N(i.sampleTimingEntries,o,e=>e.startIndex),u=i.sampleTimingEntries[c],d=N(i.sampleTimingEntries,l,e=>e.startIndex),h=i.sampleTimingEntries[d],m=u.startDecodeTimestamp+(o-u.startIndex)*u.delta,f=h.startDecodeTimestamp+(l-h.startIndex)*h.delta-m,p=k(n);p&&p.delta===f?p.count++:n.push({startIndex:a.startChunkIndex+r,startDecodeTimestamp:m,count:1,delta:f});const g=a.samplesPerChunk*t.sampleSize*e.info.numberOfChannels;s.push(g)}a.startSampleIndex=a.startChunkIndex,a.samplesPerChunk=1}i.sampleTimingEntries=n,i.sampleSizes=s}if(i.sampleCompositionTimeOffsets.length>0){i.presentationTimestamps=[];for(const e of i.sampleTimingEntries)for(let t=0;t<e.count;t++)i.presentationTimestamps.push({presentationTimestamp:e.startDecodeTimestamp+t*e.delta,sampleIndex:e.startIndex+t});for(const e of i.sampleCompositionTimeOffsets)for(let t=0;t<e.count;t++){const r=e.startIndex+t,n=i.presentationTimestamps[r];n&&(n.presentationTimestamp+=e.offset)}i.presentationTimestamps.sort((e,t)=>e.presentationTimestamp-t.presentationTimestamp),i.presentationTimestampIndexMap=Array(i.presentationTimestamps.length).fill(-1);for(let e=0;e<i.presentationTimestamps.length;e++)i.presentationTimestampIndexMap[i.presentationTimestamps[e].sampleIndex]=e}return i}readFragment(e){return u(this,null,function*(){var t;if((null==(t=this.lastReadFragment)?void 0:t.moofOffset)===e)return this.lastReadFragment;let r=this.reader.requestSliceRange(e,8,16);r instanceof Promise&&(r=yield r),p(r);const i=Yt(r);p("moof"===(null==i?void 0:i.name));let n=this.reader.requestSlice(e,i.toLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var fr,pr;(pr=fr||(fr={}))[pr.EBML=440786851]="EBML",pr[pr.EBMLVersion=17030]="EBMLVersion",pr[pr.EBMLReadVersion=17143]="EBMLReadVersion",pr[pr.EBMLMaxIDLength=17138]="EBMLMaxIDLength",pr[pr.EBMLMaxSizeLength=17139]="EBMLMaxSizeLength",pr[pr.DocType=17026]="DocType",pr[pr.DocTypeVersion=17031]="DocTypeVersion",pr[pr.DocTypeReadVersion=17029]="DocTypeReadVersion",pr[pr.Void=236]="Void",pr[pr.Segment=408125543]="Segment",pr[pr.SeekHead=290298740]="SeekHead",pr[pr.Seek=19899]="Seek",pr[pr.SeekID=21419]="SeekID",pr[pr.SeekPosition=21420]="SeekPosition",pr[pr.Duration=17545]="Duration",pr[pr.Info=357149030]="Info",pr[pr.TimestampScale=2807729]="TimestampScale",pr[pr.MuxingApp=19840]="MuxingApp",pr[pr.WritingApp=22337]="WritingApp",pr[pr.Tracks=374648427]="Tracks",pr[pr.TrackEntry=174]="TrackEntry",pr[pr.TrackNumber=215]="TrackNumber",pr[pr.TrackUID=29637]="TrackUID",pr[pr.TrackType=131]="TrackType",pr[pr.FlagEnabled=185]="FlagEnabled",pr[pr.FlagDefault=136]="FlagDefault",pr[pr.FlagForced=21930]="FlagForced",pr[pr.FlagOriginal=21934]="FlagOriginal",pr[pr.FlagHearingImpaired=21931]="FlagHearingImpaired",pr[pr.FlagVisualImpaired=21932]="FlagVisualImpaired",pr[pr.FlagCommentary=21935]="FlagCommentary",pr[pr.FlagLacing=156]="FlagLacing",pr[pr.Name=21358]="Name",pr[pr.Language=2274716]="Language",pr[pr.LanguageBCP47=2274717]="LanguageBCP47",pr[pr.CodecID=134]="CodecID",pr[pr.CodecPrivate=25506]="CodecPrivate",pr[pr.CodecDelay=22186]="CodecDelay",pr[pr.SeekPreRoll=22203]="SeekPreRoll",pr[pr.DefaultDuration=2352003]="DefaultDuration",pr[pr.Video=224]="Video",pr[pr.PixelWidth=176]="PixelWidth",pr[pr.PixelHeight=186]="PixelHeight",pr[pr.AlphaMode=21440]="AlphaMode",pr[pr.Audio=225]="Audio",pr[pr.SamplingFrequency=181]="SamplingFrequency",pr[pr.Channels=159]="Channels",pr[pr.BitDepth=25188]="BitDepth",pr[pr.SimpleBlock=163]="SimpleBlock",pr[pr.BlockGroup=160]="BlockGroup",pr[pr.Block=161]="Block",pr[pr.BlockAdditions=30113]="BlockAdditions",pr[pr.BlockMore=166]="BlockMore",pr[pr.BlockAdditional=165]="BlockAdditional",pr[pr.BlockAddID=238]="BlockAddID",pr[pr.BlockDuration=155]="BlockDuration",pr[pr.ReferenceBlock=251]="ReferenceBlock",pr[pr.Cluster=524531317]="Cluster",pr[pr.Timestamp=231]="Timestamp",pr[pr.Cues=475249515]="Cues",pr[pr.CuePoint=187]="CuePoint",pr[pr.CueTime=179]="CueTime",pr[pr.CueTrackPositions=183]="CueTrackPositions",pr[pr.CueTrack=247]="CueTrack",pr[pr.CueClusterPosition=241]="CueClusterPosition",pr[pr.Colour=21936]="Colour",pr[pr.MatrixCoefficients=21937]="MatrixCoefficients",pr[pr.TransferCharacteristics=21946]="TransferCharacteristics",pr[pr.Primaries=21947]="Primaries",pr[pr.Range=21945]="Range",pr[pr.Projection=30320]="Projection",pr[pr.ProjectionType=30321]="ProjectionType",pr[pr.ProjectionPoseRoll=30325]="ProjectionPoseRoll",pr[pr.Attachments=423732329]="Attachments",pr[pr.AttachedFile=24999]="AttachedFile",pr[pr.FileDescription=18046]="FileDescription",pr[pr.FileName=18030]="FileName",pr[pr.FileMediaType=18016]="FileMediaType",pr[pr.FileData=18012]="FileData",pr[pr.FileUID=18094]="FileUID",pr[pr.Chapters=272869232]="Chapters",pr[pr.Tags=307544935]="Tags",pr[pr.Tag=29555]="Tag",pr[pr.Targets=25536]="Targets",pr[pr.TargetTypeValue=26826]="TargetTypeValue",pr[pr.TargetType=25546]="TargetType",pr[pr.TagTrackUID=25541]="TagTrackUID",pr[pr.TagEditionUID=25545]="TagEditionUID",pr[pr.TagChapterUID=25540]="TagChapterUID",pr[pr.TagAttachmentUID=25542]="TagAttachmentUID",pr[pr.SimpleTag=26568]="SimpleTag",pr[pr.TagName=17827]="TagName",pr[pr.TagLanguage=17530]="TagLanguage",pr[pr.TagString=17543]="TagString",pr[pr.TagBinary=17541]="TagBinary",pr[pr.ContentEncodings=28032]="ContentEncodings",pr[pr.ContentEncoding=25152]="ContentEncoding",pr[pr.ContentEncodingOrder=20529]="ContentEncodingOrder",pr[pr.ContentEncodingScope=20530]="ContentEncodingScope",pr[pr.ContentCompression=20532]="ContentCompression",pr[pr.ContentCompAlgo=16980]="ContentCompAlgo",pr[pr.ContentCompSettings=16981]="ContentCompSettings",pr[pr.ContentEncryption=20533]="ContentEncryption";const gr=[fr.EBML,fr.Segment],kr=[fr.SeekHead,fr.Info,fr.Cluster,fr.Tracks,fr.Cues,fr.Attachments,fr.Chapters,fr.Tags],br=[...gr,...kr],yr=16,Tr=e=>{if(e.remainingLength<1)return null;const t=Sn(e);if(e.skip(-1),0===t)return null;let r=1,i=128;for(;0===(t&i);)r++,i>>=1;return e.remainingLength<r?null:r},Sr=e=>{if(e.remainingLength<1)return null;const t=Sn(e);if(0===t)return null;let r=1,i=128;for(;0===(t&i);)r++,i>>=1;if(e.remainingLength<r-1)return null;let n=t&i-1;for(let s=1;s<r;s++)n*=256,n+=Sn(e);return n},vr=(e,t)=>{if(t<1||t>8)throw new Error("Bad unsigned int size "+t);let r=0;for(let i=0;i<t;i++)r*=256,r+=Sn(e);return r},wr=e=>{const t=Tr(e);if(null===t)return null;if(e.remainingLength<t)return null;return vr(e,t)},Ir=e=>{if(e.remainingLength<1)return null;if(255===Sn(e))return;e.skip(-1);const t=Sr(e);return null===t?null:72057594037927940!==t?t:void 0},Pr=e=>{p(e.remainingLength>=2);const t=wr(e);if(null===t)return null;const r=Ir(e);return null==Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var qr,Hr,Wr,jr,Kr,$r;(Hr=qr||(qr={}))[Hr.None=0]="None",Hr[Hr.Xiph=1]="Xiph",Hr[Hr.FixedSize=2]="FixedSize",Hr[Hr.Ebml=3]="Ebml",(jr=Wr||(Wr={}))[jr.Block=1]="Block",jr[jr.Private=2]="Private",jr[jr.Next=4]="Next",($r=Kr||(Kr={}))[$r.Zlib=0]="Zlib",$r[$r.Bzlib=1]="Bzlib",$r[$r.lzo1x=2]="lzo1x",$r[$r.HeaderStripping=3]="HeaderStripping";const Qr=[{id:fr.SeekHead,flag:"seekHeadSeen"},{id:fr.Info,flag:"infoSeen"},{id:fr.Tracks,flag:"tracksSeen"},{id:fr.Cues,flag:"cuesSeen"}],Gr=10*o(2,20);class Xr extends ot{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentBlockAdditional=null,this.currentCueTime=null,this.currentDecodingInstruction=null,this.currentTagTargetIsMovie=!0,this.currentSimpleTagName=null,this.currentAttachedFile=null,this.isWebM=!1,this.reader=e._reader}computeDuration(){return u(this,null,function*(){const e=yield this.getTracks(),t=yield Promise.all(e.map(e=>e.computeDuration()));return Math.max(0,...t)})}getTracks(){return u(this,null,function*(){return yield this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(e=>e.inputTrack))})}getMimeType(){return u(this,null,function*(){yield this.readMetadata();const e=yield this.getTracks(),t=yield Promise.all(e.map(e=>e.getCodecParameterString()));return(e=>{let t=(e.hasVideo?"video/":e.hasAudio?"audio/":"application/")+(e.isWebM?"webm":"x-matroska");e.codecStrings.length>0&&(t+=`; codecs="${[...new Set(e.codecStrings.filter(Boolean))].join(", ")}"`);return t})({isWebM:this.isWebM,hasVideo:this.segments.some(e=>e.tracks.some(e=>{var t;return"video"===(null==(t=e.info)?void 0:t.type)})),hasAudio:this.segments.some(e=>e.tracks.some(e=>{var t;return"audio"===(null==(t=e.info)?void 0:t.type)})),codecStrings:t.filter(Boolean)})})}getMetadataTags(){return u(this,null,function*(){yield this.readMetadata();for(const t of this.segments)t.metadataTagsCollected||(null!==this.reader.fileSize&&(yield this.loadSegmentMetadata(t)),t.metadataTagsCollected=!0);let e={};for(const t of this.segments)e=c(c({},e),t.metadataTags);return e})}readMetadata(){var e;return null!=(e=this.readMetadataPromise)?e:this.readMetadataPromise=(()=>u(this,null,function*(){let e=0;for(;;){let t=this.reader.requestSliceRange(e,2,yr);if(t instanceof Promise&&(t=yield t),!t)break;const r=Pr(t);if(!r)break;const i=r.id;let n=r.size;const s=t.filePos;if(i===fr.EBML){Vr(n);let e=this.reader.requestSlice(s,n);if(e instanceof Promise&&(e=yield e),!e)break;this.readContiguousElements(e)}else if(i===fr.Segment){if(yield this.readSegment(s,n),void 0===n)break;if(null===this.reader.fileSize)break}else if(i===fr.Cluster){if(null===this.reader.fileSize)break;if(void 0===n){n=(yield Br(this.reader,s,br,this.reader.fileSize)).pos-s}const e=k(this.segments);e&&(e.elementEndPos=s+n)}Vr(n),e=s+n}}))()}readSegment(e,t){return u(this,null,function*(){var r;this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,tagsSeen:!1,attachmentsSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],cuePoints:[],dataStartPos:e,elementEndPos:void 0===t?null:e+t,clusterSeekStartPos:e,lastReadCluster:null,metadataTags:{},metadataTagsCollected:!1},this.segments.push(this.currentSegment);let i=e;for(;null===this.currentSegment.elementEndPos||i<this.currentSegment.elementEndPos;){let e=this.reader.requestSliceRange(i,2,yr);if(e instanceof Promise&&(e=yield e),!e)break;const t=i,n=Pr(e);if(!n||!kr.includes(n.id)&&n.id!==fr.Void){const e=yield Er(this.reader,t,kr,Math.min(null!=(r=this.currentSegment.elementEndPos)?r:1/0,t+Gr));if(e){i=e;continue}break}const{id:s,size:a}=n,o=e.filePos,l=Qr.findIndex(e=>e.id===s);if(-1!==l){const e=Qr[l].flag;this.currentSegment[e]=!0,Vr(a);let t=this.reader.requestSlice(o,a);t instanceof Promise&&(t=yield t),t&&this.readContiguousElements(t)}else if(s===fr.Tags||s===fr.Attachments){s===fr.Tags?this.currentSegment.tagsSeen=!0:this.currentSegment.attachmentsSeen=!0,Vr(a);let e=this.reader.requestSlice(o,a);e instanceof Promise&&(e=yield e),e&&this.readContiguousElements(e)}else if(s===fr.Cluster){this.currentSegment.clusterSeekStartPos=t;break}if(void 0===a)break;i=o+a}if(this.currentSegment.seekEntries.sort((e,t)=>e.segmentPosition-t.segmentPosition),null!==this.reader.fileSize)for(const t of this.currentSegment.seekEntries){const r=Qr.find(e=>e.id===t.id);if(!r)continue;if(this.currentSegment[r.flag])continue;let i=this.reader.requestSliceRange(e+t.segmentPosition,2,yr);if(i instanceof Promise&&(i=yield i),!i)continue;const n=Pr(i);if(!n)continue;const{id:s,size:a}=n;if(s!==r.id)continue;Vr(a),this.currentSegment[r.flag]=!0;let o=this.reader.requestSlice(i.filePos,a);o instanceof Promise&&(o=yield o),o&&this.readContiguousElements(o)}-1===this.currentSegment.timestampScale&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e3);for(const e of this.currentSegment.tracks)null!==e.defaultDurationLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const ei=[44100,48e3,32e3],ti=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1,-1,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1,-1,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1,-1,8,16,24,32,40,48,56,64,80,96,112,128,144,160,-1,-1,32,48,56,64,80,96,112,128,144,160,176,192,224,256,-1],ri=(e,t)=>{const r=e>>>24,i=e>>>16&255,n=e>>>8&255,s=255&e;if(255!==r&&255!==i&&255!==n&&255!==s)return{header:null,bytesAdvanced:4};if(255!==r)return{header:null,bytesAdvanced:1};if(224!==(224&i))return{header:null,bytesAdvanced:1};let a=0,o=0;16&i?a=8&i?0:1:(a=1,o=1);const l=i>>3&3,c=i>>1&3,u=(n>>2&3)%3,d=s>>6&3,h=s>>4&3,m=s>>3&1,f=s>>2&1,p=3&s,g=ti[16*a*4+16*c+(n>>4&15)];if(-1===g)return{header:null,bytesAdvanced:1};const k=1e3*g,b=ei[u]>>a+o,y=((e,t,r,i,n)=>0===t?0:1===t?Math.floor(144*r/(i<<e))+n:2===t?Math.floor(144*r/i)+n:4*(Math.floor(12*r/i)+n))(a,c,k,b,n>>1&1);if(null!==t&&t<y)return{header:null,bytesAdvanced:1};let T;return T=3===l?3===c?384:1152:3===c?384:2===c?1152:576,{header:{totalSize:y,mpegVersionId:l,layer:c,bitrate:k,frequencyIndex:u,sampleRate:b,channel:d,modeExtension:h,copyright:m,original:f,emphasis:p,audioSamplesInFrame:T},bytesAdvanced:1}},ii=e=>{let t=2130706432,r=0;for(;0!==t;)r>>=1,r|=e&t,t>>=8;return r};
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var ni,si,ai,oi;(si=ni||(ni={}))[si.Unsynchronisation=128]="Unsynchronisation",si[si.ExtendedHeader=64]="ExtendedHeader",si[si.ExperimentalIndicator=32]="ExperimentalIndicator",si[si.Footer=16]="Footer",(oi=ai||(ai={}))[oi.ISO_8859_1=0]="ISO_8859_1",oi[oi.UTF_16_WITH_BOM=1]="UTF_16_WITH_BOM",oi[oi.UTF_16_BE_NO_BOM=2]="UTF_16_BE_NO_BOM",oi[oi.UTF_8=3]="UTF_8";const li=128,ci=["Blues","Classic rock","Country","Dance","Disco","Funk","Grunge","Hip-hop","Jazz","Metal","New age","Oldies","Other","Pop","Rhythm and blues","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death metal","Pranks","Soundtrack","Euro-techno","Ambient","Trip-hop","Vocal","Jazz & funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound clip","Gospel","Noise","Alternative rock","Bass","Soul","Punk","Space","Meditative","Instrumental pop","Instrumental rock","Ethnic","Gothic","Darkwave","Techno-industrial","Electronic","Pop-folk","Eurodance","Dream","Southern rock","Comedy","Cult","Gangsta","Top 40","Christian rap","Pop/funk","Jungle music","Native US","Cabaret","New wave","Psychedelic","Rave","Showtunes","Trailer","Lo-fi","Tribal","Acid punk","Acid jazz","Polka","Retro","Musical","Rock 'n' roll","Hard rock","Folk","Folk rock","National folk","Swing","Fast fusion","Bebop","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic rock","Progressive rock","Psychedelic rock","Symphonic rock","Slow rock","Big band","Chorus","Easy listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber music","Sonata","Symphony","Booty bass","Primus","Porn groove","Satire","Slow jam","Club","Tango","Samba","Folklore","Ballad","Power ballad","Rhythmic Soul","Freestyle","Duet","Punk rock","Drum solo","A cappella","Euro-house","Dance hall","Goa music","Drum & bass","Club-house","Hardcore techno","Terror","Indie","Britpop","Negerpunk","Polsk punk","Beat","Christian gangsta rap","Heavy metal","Black metal","Crossover","Contemporary Christian","Christian rock","Merengue","Salsa","Thrash metal","Anime","Jpop","Synthpop","Christmas","Art rock","Baroque","Bhangra","Big beat","Breakbeat","Chillout","Downtempo","Dub","EBM","Eclectic","Electro","Electroclash","Emo","Experimental","Garage","Global","IDM","Illbient","Industro-Goth","Jam Band","Krautrock","Leftfield","Lounge","Math rock","New romantic","Nu-breakz","Post-punk","Post-rock","Psytrance","Shoegaze","Space rock","Trop rock","World music","Neoclassical","Audiobook","Audio theatre","Neue Deutsche Welle","Podcast","Indie rock","G-Funk","Dubstep","Garage rock","Psybient"],ui=(e,t)=>{const r=Tn(e,t),i=ce(r.indexOf(0),r.length),n=r.subarray(0,i);let s="";for(let a=0;a<n.length;a++)s+=String.fromCharCode(n[a]);return s.trimEnd()},di=e=>{const t=e.filePos,r=Nn(e,3),i=Sn(e),n=Sn(e),s=Sn(e),a=Cn(e);if("ID3"!==r||255===i||255===n||0!==(2155905152&a))return e.filePos=t,null;return{majorVersion:i,revision:n,flags:s,size:ii(a)}},hi=(e,t,r)=>{var i,n,s,a;if(![2,3,4].includes(t.majorVersion))return void console.warn(`Unsupported ID3v2 major version: ${t.majorVersion}`);const o=Tn(e,t.size),l=new mi(t,o);if(t.flags&ni.Footer&&l.removeFooter(),t.flags&ni.Unsynchronisation&&3===t.majorVersion&&l.ununsynchronizeAll(),t.flags&ni.ExtendedHeader){const e=l.readU32();3===t.majorVersion?l.pos+=e:l.pos+=e-4}for(;l.pos<=l.bytes.length-l.frameHeaderSize();){const e=l.readId3V2Frame();if(!e)break;const o=l.pos,c=l.pos+e.size;let u=!1,d=!1,h=!1;if(3===t.majorVersion?(u=!!(64&e.flags),d=!!(128&e.flags)):4===t.majorVersion&&(u=!!(4&e.flags),d=!!(8&e.flags),h=!!(2&e.flags)||!!(t.flags&ni.Unsynchronisation)),u)console.warn(`Skipping encrypted ID3v2 frame ${e.id}`),l.pos=c;else if(d)console.warn(`Skipping compressed ID3v2 frame ${e.id}`),l.pos=c;else{switch(h&&l.ununsynchronizeRegion(l.pos,c),null!=r.raw||(r.raw={}),"T"===e.id[0]?null!=(i=r.raw)[n=e.id]||(i[n]=l.readId3V2EncodingAndText(c)):null!=(s=r.raw)[a=e.id]||(s[a]=l.readBytes(e.size)),l.pos=o,e.id){case"TIT2":case"TT2":null!=r.title||(r.title=l.readId3V2EncodingAndText(c));break;case"TIT3":case"TT3":null!=r.description||(r.description=l.readId3V2EncodingAndText(c));break;case"TPE1":case"TP1":null!=r.artist||(r.artist=l.readId3V2EncodingAndText(c));break;case"TALB":case"TAL":null!=r.album||(r.album=l.readId3V2EncodingAndText(c));break;case"TPE2":case"TP2":null!=r.albumArtist||(r.albumArtist=l.readId3V2EncodingAndText(c));break;case"TRCK":case"TRK":{const e=l.readId3V2EncodingAndText(c).split("/"),t=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(null!=r.trackNumber||(r.trackNumber=t)),i&&Number.isInteger(i)&&i>0&&(null!=r.tracksTotal||(r.tracksTotal=i))}break;case"TPOS":case"TPA":{const e=l.readId3V2EncodingAndText(c).split("/"),t=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(null!=r.discNumber||(r.discNumber=t)),i&&Number.isInteger(i)&&i>0&&(null!=r.discsTotal||(r.discsTotal=i))}break;case"TCON":case"TCO":{const e=l.readId3V2EncodingAndText(c);let t=/^\((\d+)\)/.exec(eLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const fi=(e,t,r)=>u(null,null,function*(){let i=t;for(;null===r||i<r;){let t=e.requestSlice(i,4);if(t instanceof Promise&&(t=yield t),!t)break;const r=Cn(t),n=ri(r,null!==e.fileSize?e.fileSize-i:null);if(n.header)return{header:n.header,startPos:i};i+=n.bytesAdvanced}return null});
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class pi extends ot{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.loadedSamples=[],this.metadataTags=null,this.tracks=[],this.readingMutex=new D,this.lastSampleLoaded=!1,this.lastLoadedPos=0,this.nextTimestampInSamples=0,this.reader=e._reader}readMetadata(){return u(this,null,function*(){var e;return null!=(e=this.metadataPromise)?e:this.metadataPromise=(()=>u(this,null,function*(){for(;!this.firstFrameHeader&&!this.lastSampleLoaded;)yield this.advanceReader();if(!this.firstFrameHeader)throw new Error("No valid MP3 frame found.");this.tracks=[new Xt(this.input,new gi(this))]}))()})}advanceReader(){return u(this,null,function*(){if(0===this.lastLoadedPos)for(;;){let e=this.reader.requestSlice(this.lastLoadedPos,10);if(e instanceof Promise&&(e=yield e),!e)return void(this.lastSampleLoaded=!0);const t=di(e);if(!t)break;this.lastLoadedPos=e.filePos+t.size}const e=yield fi(this.reader,this.lastLoadedPos,this.reader.fileSize);if(!e)return void(this.lastSampleLoaded=!0);const t=e.header;this.lastLoadedPos=e.startPos+t.totalSize-1;const r=(i=t.mpegVersionId,n=t.channel,3===i?3===n?21:36:3===n?13:21);var i,n;let s=this.reader.requestSlice(e.startPos+r,4);if(s instanceof Promise&&(s=yield s),s){const e=Cn(s);if(1483304551===e||1231971951===e)return}this.firstFrameHeader||(this.firstFrameHeader=t),t.sampleRate!==this.firstFrameHeader.sampleRate&&console.warn(`MP3 changed sample rate mid-file: ${this.firstFrameHeader.sampleRate} Hz to ${t.sampleRate} Hz. Might be a bug, so please report this file.`);const a=t.audioSamplesInFrame/this.firstFrameHeader.sampleRate,o={timestamp:this.nextTimestampInSamples/this.firstFrameHeader.sampleRate,duration:a,dataStart:e.startPos,dataSize:t.totalSize};this.loadedSamples.push(o),this.nextTimestampInSamples+=t.audioSamplesInFrame})}getMimeType(){return u(this,null,function*(){return"audio/mpeg"})}getTracks(){return u(this,null,function*(){return yield this.readMetadata(),this.tracks})}computeDuration(){return u(this,null,function*(){yield this.readMetadata();const e=this.tracks[0];return p(e),e.computeDuration()})}getMetadataTags(){return u(this,null,function*(){const e=yield this.readingMutex.acquire();try{if(yield this.readMetadata(),this.metadataTags)return this.metadataTags;this.metadataTags={};let e=0,t=!1;for(;;){let r=this.reader.requestSlice(e,10);if(r instanceof Promise&&(r=yield r),!r)break;const i=di(r);if(!i)break;t=!0;let n=this.reader.requestSlice(r.filePos,i.size);if(n instanceof Promise&&(n=yield n),!n)break;hi(n,i,this.metadataTags),e=r.filePos+i.size}if(!t&&null!==this.reader.fileSize&&this.reader.fileSize>=li){let e=this.reader.requestSlice(this.reader.fileSize-li,li);e instanceof Promise&&(e=yield e),p(e);"TAG"===Nn(e,3)&&((e,t)=>{var r;const i=e.filePos;null!=t.raw||(t.raw={}),null!=(r=t.raw).TAG||(r.TAG=Tn(e,125)),e.filePos=i;const n=ui(e,30);n&&(null!=t.title||(t.title=n));const s=ui(e,30);s&&(null!=t.artist||(t.artist=s));const a=ui(e,30);a&&(null!=t.album||(t.album=a));const o=ui(e,4),l=Number.parseInt(o,10);Number.isInteger(l)&&l>0&&(null!=t.date||(t.date=new Date(l,0,1)));const c=Tn(e,30);let u;if(0===c[28]&&0!==c[29]){const r=c[29];r>0&&(null!=t.trackNumber||(t.trackNumber=r)),e.skip(-30),u=ui(e,28),e.skip(2)}else e.skip(-30),u=ui(e,30);u&&(null!=t.comment||(t.comment=u));const d=Sn(e);d<ci.length&&(null!=t.genre||(t.genre=ci[d]))})(e,this.metadataTags)}return this.metadataTags}finally{e()}})}}class gi{constructor(e){this.demuxer=e}getId(){return 1}getFirstTimestamp(){return u(this,null,function*(){return 0})}getTimeResolution(){return p(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate/this.demuxer.firstFrameHeader.audioSamplesInFrame}computeDuration(){return u(this,null,function*(){var e,t;const r=yield this.getPacket(1/0,{metadataOnly:!0});return(null!=(e=null==r?void 0:r.timestamp)?e:0)+(null!=(t=null==r?void 0:r.duration)?t:0)})}getName(){return null}getLanguageCode(){return $}getCodec(){return"mp3"}getInternalCodecId(){return null}getNumberOfChannels(){return p(this.demuxer.firstFrameHeader),3===this.demuxer.firstFrameHeader.channel?1:2}getSampleRate(){return p(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.sampleRate}getDisposition(){return c({},ge)}getDecoderConfig(){return u(this,null,function*(){return p(this.demuxer.firstFrameHeader),{codec:"mp3",numberOfChannels:3===this.demuxer.firstFrameHeader.channel?1:2,sampleRate:this.demuxer.firstFrameHeader.sampleRate}})}getPacketAtIndex(e,t){return u(this,null,function*(){if(-1===e)return null;const r=this.demuxer.loadedSamples[e];if(!r)return null;let i;if(t.metadataOnly)i=ut;else{let e=this.demuxer.reader.requestSlice(r.dataStart,r.dataSize);if(e instanceof Promise&&(e=yield e),!e)return null;i=Tn(e,r.dataSize)}return new dt(i,"key",r.timestamp,r.duration,e,r.dataSize)})}getFirstPacket(e){return this.getPacketAtIndex(0,e)}getNextPacket(e,t){return u(this,null,function*(){const r=yield this.demuxer.readingMutex.acquire();try{coLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const ki=1399285583,bi=new Uint32Array(256);for(let qn=0;qn<256;qn++){let e=qn<<24;for(let t=0;t<8;t++)e=2147483648&e?e<<1^79764919:e<<1;bi[qn]=e>>>0&4294967295}const yi=e=>{const t=v(e),r=t.getUint32(22,!0);t.setUint32(22,0,!0);let i=0;for(let n=0;n<e.length;n++){const t=e[n];i=(i<<8^bi[i>>>24^t])>>>0}return t.setUint32(22,r,!0),i},Ti=(e,t,r)=>{let i=0,n=null;if(e.length>0)if("vorbis"===t.codec){p(t.vorbisInfo);const s=(1<<(e=>{let t=0;for(;e;)t++,e>>=1;return t})(t.vorbisInfo.modeBlockflags.length-1))-1<<1,a=(e[0]&s)>>1;if(a>=t.vorbisInfo.modeBlockflags.length)throw new Error("Invalid mode number.");let o=r;const l=t.vorbisInfo.modeBlockflags[a];if(n=t.vorbisInfo.blocksizes[l],1===l){const r=1+(1|s),i=e[0]&r?1:0;o=t.vorbisInfo.blocksizes[i]}i=null!==o?o+n>>2:0}else if("opus"===t.codec){i=(e=>{const t=e[0]>>3;return{durationInSamples:tt[t]}})(e).durationInSamples}return{durationInSamples:i,vorbisBlockSize:n}},Si=27,vi=282,wi=e=>{const t=e.filePos;if(_n(e)!==ki)return null;e.skip(1);const r=Sn(e),i=An(e),n=_n(e),s=_n(e),a=_n(e),o=Sn(e),l=new Uint8Array(o);for(let d=0;d<o;d++)l[d]=Sn(e);const c=27+o,u=l.reduce((e,t)=>e+t,0);return{headerStartPos:t,totalSize:c+u,dataStartPos:t+c,dataSize:u,headerType:r,granulePosition:i,serialNumber:n,sequenceNumber:s,checksum:a,lacingValues:l}},Ii=(e,t)=>{for(;e.filePos<t-3;){const t=_n(e),r=79;if((255&t)===r||(t>>>8&255)===r||(t>>>16&255)===r||(t>>>24&255)===r){if(e.skip(-4),t===ki)return!0;e.skip(1)}}return!1};
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class Pi extends ot{constructor(e){super(e),this.metadataPromise=null,this.bitstreams=[],this.tracks=[],this.metadataTags={},this.reader=e._reader}readMetadata(){return u(this,null,function*(){var e;return null!=(e=this.metadataPromise)?e:this.metadataPromise=(()=>u(this,null,function*(){let e=0;for(;;){let t=this.reader.requestSliceRange(e,Si,vi);if(t instanceof Promise&&(t=yield t),!t)break;const r=wi(t);if(!r)break;if(!!!(2&r.headerType))break;this.bitstreams.push({serialNumber:r.serialNumber,bosPage:r,description:null,numberOfChannels:-1,sampleRate:-1,codecInfo:{codec:null,vorbisInfo:null,opusInfo:null},lastMetadataPacket:null}),e=r.headerStartPos+r.totalSize}for(const t of this.bitstreams){const e=yield this.readPacket(t.bosPage,0);e&&(e.data.byteLength>=7&&1===e.data[0]&&118===e.data[1]&&111===e.data[2]&&114===e.data[3]&&98===e.data[4]&&105===e.data[5]&&115===e.data[6]?yield this.readVorbisMetadata(e,t):e.data.byteLength>=8&&79===e.data[0]&&112===e.data[1]&&117===e.data[2]&&115===e.data[3]&&72===e.data[4]&&101===e.data[5]&&97===e.data[6]&&100===e.data[7]&&(yield this.readOpusMetadata(e,t)),null!==t.codecInfo.codec&&this.tracks.push(new Xt(this.input,new xi(t,this))))}}))()})}readVorbisMetadata(e,t){return u(this,null,function*(){let r=yield this.findNextPacketStart(e);if(!r)return;const i=yield this.readPacket(r.startPage,r.startSegmentIndex);if(!i)return;if(r=yield this.findNextPacketStart(i),!r)return;const n=yield this.readPacket(r.startPage,r.startSegmentIndex);if(!n)return;if(3!==i.data[0]||5!==n.data[0])return;const s=[],a=e=>{for(;s.push(Math.min(255,e)),!(e<255);)e-=255};a(e.data.length),a(i.data.length);const o=new Uint8Array(1+s.length+e.data.length+i.data.length+n.data.length);o[0]=2,o.set(s,1),o.set(e.data,1+s.length),o.set(i.data,1+s.length+e.data.length),o.set(n.data,1+s.length+e.data.length+i.data.length),t.codecInfo.codec="vorbis",t.description=o,t.lastMetadataPacket=n;const l=v(e.data);t.numberOfChannels=l.getUint8(11),t.sampleRate=l.getUint32(12,!0);const c=l.getUint8(28);t.codecInfo.vorbisInfo={blocksizes:[1<<(15&c),1<<(c>>4)],modeBlockflags:rt(n.data).modeBlockflags},at(i.data.subarray(7),this.metadataTags)})}readOpusMetadata(e,t){return u(this,null,function*(){const r=yield this.findNextPacketStart(e);if(!r)return;const i=yield this.readPacket(r.startPage,r.startSegmentIndex);if(!i)return;t.codecInfo.codec="opus",t.description=e.data,t.lastMetadataPacket=i;const n=(e=>{const t=v(e),r=t.getUint8(9),i=t.getUint16(10,!0),n=t.getUint32(12,!0),s=t.getInt16(16,!0),a=t.getUint8(18);let o=null;return a&&(o=e.subarray(19,21+r)),{outputChannelCount:r,preSkip:i,inputSampleRate:n,outputGain:s,channelMappingFamily:a,channelMappingTable:o}})(e.data);t.numberOfChannels=n.outputChannelCount,t.sampleRate=xe,t.codecInfo.opusInfo={preSkip:n.preSkip},at(i.data.subarray(8),this.metadataTags)})}readPacket(e,t){return u(this,null,function*(){p(t<e.lacingValues.length);let r=0;for(let u=0;u<t;u++)r+=e.lacingValues[u];let i=e,n=r,s=t;const a=[];e:for(;;){let t=this.reader.requestSlice(i.dataStartPos,i.dataSize);t instanceof Promise&&(t=yield t),p(t);const o=Tn(t,i.dataSize);for(;;){if(s===i.lacingValues.length){a.push(o.subarray(r,n));break}const e=i.lacingValues[s];if(n+=e,e<255){a.push(o.subarray(r,n));break e}s++}let l=i.headerStartPos+i.totalSize;for(;;){let t=this.reader.requestSliceRange(l,Si,vi);if(t instanceof Promise&&(t=yield t),!t)return null;const r=wi(t);if(!r)return null;if(i=r,i.serialNumber===e.serialNumber)break;l=i.headerStartPos+i.totalSize}r=0,n=0,s=0}const o=a.reduce((e,t)=>e+t.length,0);if(0===o)return null;const l=new Uint8Array(o);let c=0;for(let e=0;e<a.length;e++){const t=a[e];l.set(t,c),c+=t.length}return{data:l,endPage:i,endSegmentIndex:s}})}findNextPacketStart(e){return u(this,null,function*(){if(e.endSegmentIndex<e.endPage.lacingValues.length-1)return{startPage:e.endPage,startSegmentIndex:e.endSegmentIndex+1};if(!!(4&e.endPage.headerType))return null;let t=e.endPage.headerStartPos+e.endPage.totalSize;for(;;){let r=this.reader.requestSliceRange(t,Si,vi);if(r instanceof Promise&&(r=yield r),!r)return null;const i=wi(r);if(!i)return null;if(i.serialNumber===e.endPage.serialNumber)return{startPage:i,startSegmentIndex:0};t=i.headerStartPos+i.totalSize}})}getMimeType(){return u(this,null,function*(){yield this.readMetadata();return(e=>{let t="audio/ogg";e.codecStrings&&(t+=`; codecs="${[...new Set(e.codecStrings)].join(", ")}"`);return t})({codecStrings:(yield Promise.all(this.tracks.map(e=>e.getCodecParameterString()))).filter(Boolean)})})}getTracks(){return u(this,null,function*(){return yield this.readMetadata(),this.tracks})}computeDuration(){return u(this,null,function*(){const e=yield this.getTracks(),t=yield Promise.all(e.map(e=>e.computeDuration()));return Math.max(0,...t)})}getMetadataTags(){return u(this,null,function*(){return yield this.readMetadata(),this.metadataTags})}}class xi{constructor(e,t){this.bitstream=e,this.demuxer=t,this.encodedPacketToMetadata=new WeakMapLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
var Bi,Ei;(Ei=Bi||(Bi={}))[Ei.PCM=1]="PCM",Ei[Ei.IEEE_FLOAT=3]="IEEE_FLOAT",Ei[Ei.ALAW=6]="ALAW",Ei[Ei.MULAW=7]="MULAW",Ei[Ei.EXTENSIBLE=65534]="EXTENSIBLE";class Fi extends ot{constructor(e){super(e),this.metadataPromise=null,this.dataStart=-1,this.dataSize=-1,this.audioInfo=null,this.tracks=[],this.lastKnownPacketIndex=0,this.metadataTags={},this.reader=e._reader}readMetadata(){return u(this,null,function*(){var e;return null!=(e=this.metadataPromise)?e:this.metadataPromise=(()=>u(this,null,function*(){var e,t;let r=this.reader.requestSlice(0,12);r instanceof Promise&&(r=yield r),p(r);const i=Nn(r,4),n="RIFX"!==i,s="RF64"===i,a=xn(r,n);let o=s?this.reader.fileSize:Math.min(a+8,null!=(e=this.reader.fileSize)?e:1/0);if("WAVE"!==Nn(r,4))throw new Error("Invalid WAVE file - wrong format");let l=0,c=null,u=r.filePos;for(;null===o||u<o;){let e=this.reader.requestSlice(u,8);if(e instanceof Promise&&(e=yield e),!e)break;const r=Nn(e,4),i=xn(e,n),a=e.filePos;if(s&&0===l&&"ds64"!==r)throw new Error('Invalid RF64 file: First chunk must be "ds64".');if("fmt "===r)yield this.parseFmtChunk(a,i,n);else if("data"===r){if(null!=c||(c=i),this.dataStart=e.filePos,this.dataSize=Math.min(c,(null!=o?o:1/0)-this.dataStart),null===this.reader.fileSize)break}else if("ds64"===r){let e=this.reader.requestSlice(a,i);if(e instanceof Promise&&(e=yield e),!e)break;const r=En(e,n);c=En(e,n),o=Math.min(r+8,null!=(t=this.reader.fileSize)?t:1/0)}else"LIST"===r?yield this.parseListChunk(a,i,n):"ID3 "!==r&&"id3 "!==r||(yield this.parseId3Chunk(a,i));u=a+i+(1&i),l++}if(!this.audioInfo)throw new Error('Invalid WAVE file - missing "fmt " chunk');if(-1===this.dataStart)throw new Error('Invalid WAVE file - missing "data" chunk');const d=this.audioInfo.blockSizeInBytes;this.dataSize=Math.floor(this.dataSize/d)*d,this.tracks.push(new Xt(this.input,new Ai(this)))}))()})}parseFmtChunk(e,t,r){return u(this,null,function*(){let i=this.reader.requestSlice(e,t);if(i instanceof Promise&&(i=yield i),!i)return;let n=vn(i,r);const s=vn(i,r),a=xn(i,r);i.skip(4);const o=vn(i,r);let l;if(l=14===t?8:vn(i,r),t>=18&&357!==n){const e=vn(i,r),s=t-18;if(Math.min(s,e)>=22&&n===Bi.EXTENSIBLE){i.skip(6);const e=Tn(i,16);n=e[0]|e[1]<<8}}n!==Bi.MULAW&&n!==Bi.ALAW||(l=8),this.audioInfo={format:n,numberOfChannels:s,sampleRate:a,sampleSizeInBytes:Math.ceil(l/8),blockSizeInBytes:o}})}parseListChunk(e,t,r){return u(this,null,function*(){var i,n,s,a,o,l,c,u,d,h,m;let f=this.reader.requestSlice(e,t);if(f instanceof Promise&&(f=yield f),!f)return;const p=Nn(f,4);if("INFO"!==p&&"INF0"!==p)return;let g=f.filePos;for(;g<=e+t-8;){f.filePos=g;const e=Nn(f,4),t=xn(f,r),p=Tn(f,t);let k=0;for(let r=0;r<p.length&&0!==p[r];r++)k++;const b=String.fromCharCode(...p.subarray(0,k));switch(null!=(i=this.metadataTags).raw||(i.raw={}),this.metadataTags.raw[e]=b,e){case"INAM":case"TITL":null!=(n=this.metadataTags).title||(n.title=b);break;case"TIT3":null!=(s=this.metadataTags).description||(s.description=b);break;case"IART":null!=(a=this.metadataTags).artist||(a.artist=b);break;case"IPRD":null!=(o=this.metadataTags).album||(o.album=b);break;case"IPRT":case"ITRK":case"TRCK":{const e=b.split("/"),t=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(null!=(l=this.metadataTags).trackNumber||(l.trackNumber=t)),r&&Number.isInteger(r)&&r>0&&(null!=(c=this.metadataTags).tracksTotal||(c.tracksTotal=r))}break;case"ICRD":case"IDIT":{const e=new Date(b);Number.isNaN(e.getTime())||null!=(u=this.metadataTags).date||(u.date=e)}break;case"YEAR":{const e=Number.parseInt(b,10);Number.isInteger(e)&&e>0&&(null!=(d=this.metadataTags).date||(d.date=new Date(e,0,1)))}break;case"IGNR":case"GENR":null!=(h=this.metadataTags).genre||(h.genre=b);break;case"ICMT":case"CMNT":case"COMM":null!=(m=this.metadataTags).comment||(m.comment=b)}g+=8+t+(1&t)}})}parseId3Chunk(e,t){return u(this,null,function*(){let r=this.reader.requestSlice(e,t);if(r instanceof Promise&&(r=yield r),!r)return;const i=di(r);if(i){const t=r.slice(e+10,i.size);hi(t,i,this.metadataTags)}})}getCodec(){if(p(this.audioInfo),this.audioInfo.format===Bi.MULAW)return"ulaw";if(this.audioInfo.format===Bi.ALAW)return"alaw";if(this.audioInfo.format===Bi.PCM){if(1===this.audioInfo.sampleSizeInBytes)return"pcm-u8";if(2===this.audioInfo.sampleSizeInBytes)return"pcm-s16";if(3===this.audioInfo.sampleSizeInBytes)return"pcm-s24";if(4===this.audioInfo.sampleSizeInBytes)return"pcm-s32"}return this.audioInfo.format===Bi.IEEE_FLOAT&&4===this.audioInfo.sampleSizeInBytes?"pcm-f32":null}getMimeType(){return u(this,null,function*(){return"audio/wav"})}computeDuration(){return u(this,null,function*(){yield this.readMetadata();const e=this.tracks[0];return p(e),e.computeDuration()})}getTracks(){return u(this,null,function*(){return yield this.readMetadata(),this.tracks})}getMetadataTags(){return u(this,null,function*(){return yield this.readMetadata(),this.metadataTags})}}const Di=2048;class Ai{constructor(e){this.demuxer=e}getId(){return 1}getCodec()Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/const Ri=e=>{const t=e.filePos,r=Tn(e,9),i=new b(r);if(4095!==i.readBits(12))return null;i.skipBits(1);if(0!==i.readBits(2))return null;const n=i.readBits(1),s=i.readBits(2)+1,a=i.readBits(4);if(15===a)return null;i.skipBits(1);const o=i.readBits(3);if(0===o)throw new Error("ADTS frames with channel configuration 0 are not supported.");i.skipBits(1),i.skipBits(1),i.skipBits(1),i.skipBits(1);const l=i.readBits(13);i.skipBits(11);const c=i.readBits(2)+1;if(1!==c)throw new Error("ADTS frames with more than one AAC frame are not supported.");let u=null;return 1===n?e.filePos-=2:u=i.readBits(16),{objectType:s,samplingFrequencyIndex:a,channelConfiguration:o,frameLength:l,numberOfAacFrames:c,crcCheck:u,startPos:t}},Mi=1024;class Ni extends ot{constructor(e){super(e),this.metadataPromise=null,this.firstFrameHeader=null,this.loadedSamples=[],this.tracks=[],this.readingMutex=new D,this.lastSampleLoaded=!1,this.lastLoadedPos=0,this.nextTimestampInSamples=0,this.reader=e._reader}readMetadata(){return u(this,null,function*(){var e;return null!=(e=this.metadataPromise)?e:this.metadataPromise=(()=>u(this,null,function*(){for(;!this.firstFrameHeader&&!this.lastSampleLoaded;)yield this.advanceReader();p(this.firstFrameHeader),this.tracks=[new Xt(this.input,new zi(this))]}))()})}advanceReader(){return u(this,null,function*(){let e=this.reader.requestSliceRange(this.lastLoadedPos,7,9);if(e instanceof Promise&&(e=yield e),!e)return void(this.lastSampleLoaded=!0);const t=Ri(e);if(!t)return void(this.lastSampleLoaded=!0);if(null!==this.reader.fileSize&&t.startPos+t.frameLength>this.reader.fileSize)return void(this.lastSampleLoaded=!0);this.firstFrameHeader||(this.firstFrameHeader=t);const r=we[t.samplingFrequencyIndex];p(void 0!==r);const i=Mi/r,n=t.crcCheck?9:7,s={timestamp:this.nextTimestampInSamples/r,duration:i,dataStart:t.startPos+n,dataSize:t.frameLength-n};this.loadedSamples.push(s),this.nextTimestampInSamples+=Mi,this.lastLoadedPos=t.startPos+t.frameLength})}getMimeType(){return u(this,null,function*(){return"audio/aac"})}getTracks(){return u(this,null,function*(){return yield this.readMetadata(),this.tracks})}computeDuration(){return u(this,null,function*(){yield this.readMetadata();const e=this.tracks[0];return p(e),e.computeDuration()})}getMetadataTags(){return u(this,null,function*(){return{}})}}class zi{constructor(e){this.demuxer=e}getId(){return 1}getFirstTimestamp(){return u(this,null,function*(){return 0})}getTimeResolution(){return this.getSampleRate()/Mi}computeDuration(){return u(this,null,function*(){var e,t;const r=yield this.getPacket(1/0,{metadataOnly:!0});return(null!=(e=null==r?void 0:r.timestamp)?e:0)+(null!=(t=null==r?void 0:r.duration)?t:0)})}getName(){return null}getLanguageCode(){return $}getCodec(){return"aac"}getInternalCodecId(){return p(this.demuxer.firstFrameHeader),this.demuxer.firstFrameHeader.objectType}getNumberOfChannels(){p(this.demuxer.firstFrameHeader);const e=Ie[this.demuxer.firstFrameHeader.channelConfiguration];return p(void 0!==e),e}getSampleRate(){p(this.demuxer.firstFrameHeader);const e=we[this.demuxer.firstFrameHeader.samplingFrequencyIndex];return p(void 0!==e),e}getDisposition(){return c({},ge)}getDecoderConfig(){return u(this,null,function*(){p(this.demuxer.firstFrameHeader);const e=new Uint8Array(3),t=new b(e),{objectType:r,samplingFrequencyIndex:i,channelConfiguration:n}=this.demuxer.firstFrameHeader;return r>31?(t.writeBits(5,31),t.writeBits(6,r-32)):t.writeBits(5,r),t.writeBits(4,i),t.writeBits(4,n),{codec:`mp4a.40.${this.demuxer.firstFrameHeader.objectType}`,numberOfChannels:this.getNumberOfChannels(),sampleRate:this.getSampleRate(),description:e.subarray(0,Math.ceil((t.pos-1)/8))}})}getPacketAtIndex(e,t){return u(this,null,function*(){if(-1===e)return null;const r=this.demuxer.loadedSamples[e];if(!r)return null;let i;if(t.metadataOnly)i=ut;else{let e=this.demuxer.reader.requestSlice(r.dataStart,r.dataSize);if(e instanceof Promise&&(e=yield e),!e)return null;i=Tn(e,r.dataSize)}return new dt(i,"key",r.timestamp,r.duration,e,r.dataSize)})}getFirstPacket(e){return this.getPacketAtIndex(0,e)}getNextPacket(e,t){return u(this,null,function*(){const r=yield this.demuxer.readingMutex.acquire();try{const r=M(this.demuxer.loadedSamples,e.timestamp,e=>e.timestamp);if(-1===r)throw new Error("Packet was not created from this track.");const i=r+1;for(;i>=this.demuxer.loadedSamples.length&&!this.demuxer.lastSampleLoaded;)yield this.demuxer.advanceReader();return this.getPacketAtIndex(i,t)}finally{r()}})}getPacket(e,t){return u(this,null,function*(){const r=yield this.demuxer.readingMutex.acquire();try{for(;;){const r=N(this.demuxer.loadedSamples,e,e=>e.timestamp);if(-1===r&&this.demuxer.loadedSamples.length>0)return null;if(this.demuxer.lastSampleLoaded)return this.getPacketAtIndex(r,t);if(r>=0&&r+1<this.demuxer.loadedSamples.length)return this.getPacketAtIndex(r,t);yield this.demuxer.advanceReader()}}finally{r()}})}getKeyPacket(e,t){return this.getPacket(e,t)}getNextKeyPacket(e,Line truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class Oi extends ot{constructor(e){super(e),this.loadedSamples=[],this.metadataPromise=null,this.track=null,this.metadataTags={},this.audioInfo=null,this.lastLoadedPos=null,this.blockingBit=null,this.readingMutex=new D,this.lastSampleLoaded=!1,this.reader=e._reader}computeDuration(){return u(this,null,function*(){return yield this.readMetadata(),p(this.track),this.track.computeDuration()})}getMetadataTags(){return u(this,null,function*(){return yield this.readMetadata(),this.metadataTags})}getTracks(){return u(this,null,function*(){return yield this.readMetadata(),p(this.track),[this.track]})}getMimeType(){return u(this,null,function*(){return"audio/flac"})}readMetadata(){return u(this,null,function*(){var e;let t=4;return null!=(e=this.metadataPromise)?e:this.metadataPromise=(()=>u(this,null,function*(){for(var e;null===this.reader.fileSize||t<this.reader.fileSize;){let r=this.reader.requestSlice(t,4);if(r instanceof Promise&&(r=yield r),t+=4,null===r)throw new Error(`Metadata block at position ${t} is too small! Corrupted file.`);p(r);const i=Sn(r),n=In(r),s=0!==(128&i);switch(127&i){case nt.STREAMINFO:{let e=this.reader.requestSlice(t,n);if(e instanceof Promise&&(e=yield e),p(e),null===e)throw new Error(`StreamInfo block at position ${t} is too small! Corrupted file.`);const r=Tn(e,34),i=new b(r),s=i.readBits(16),a=i.readBits(16),o=i.readBits(24),l=i.readBits(24),c=i.readBits(20),u=i.readBits(3)+1;i.readBits(5);const d=i.readBits(36);i.skipBits(128);const h=new Uint8Array(42);h.set(new Uint8Array([102,76,97,67]),0),h.set(new Uint8Array([128,0,0,34]),4),h.set(r,8),this.audioInfo={numberOfChannels:u,sampleRate:c,totalSamples:d,minimumBlockSize:s,maximumBlockSize:a,minimumFrameSize:o,maximumFrameSize:l,description:h},this.track=new Xt(this.input,new Li(this));break}case nt.VORBIS_COMMENT:{let e=this.reader.requestSlice(t,n);e instanceof Promise&&(e=yield e),p(e),at(Tn(e,n),this.metadataTags);break}case nt.PICTURE:{let r=this.reader.requestSlice(t,n);r instanceof Promise&&(r=yield r),p(r);const i=Cn(r),s=Cn(r),a=w.decode(Tn(r,s)),o=Cn(r),l=w.decode(Tn(r,o));r.skip(16);const c=Cn(r),u=Tn(r,c);null!=(e=this.metadataTags).images||(e.images=[]),this.metadataTags.images.push({data:u,mimeType:a,kind:3===i?"coverFront":4===i?"coverBack":"unknown",description:l});break}}if(t+=n,s){this.lastLoadedPos=t;break}}}))()})}readNextFlacFrame(e){return u(this,arguments,function*({startPos:e,isFirstPacket:t}){p(this.audioInfo);const r=this.audioInfo.maximumFrameSize+16,i=yield this.reader.requestSliceRange(e,this.audioInfo.minimumFrameSize,r);if(!i)return null;const n=this.readFlacFrameHeader({slice:i,isFirstPacket:t});if(!n)return null;for(i.filePos=e+this.audioInfo.minimumFrameSize;;){if(i.filePos>i.end-6)return{num:n.num,blockSize:n.blockSize,sampleRate:n.sampleRate,size:i.end-e,isLastFrame:!0};if(255===Sn(i)){const t=i.filePos;if(Sn(i)!==(1===this.blockingBit?249:248)){i.filePos=t;continue}i.skip(-2);const r=i.filePos-e,s=this.readFlacFrameHeader({slice:i,isFirstPacket:!1});if(!s){i.filePos=t;continue}if(0===this.blockingBit){if(s.num-n.num!==1){i.filePos=t;continue}}else if(s.num-n.num!==n.blockSize){i.filePos=t;continue}return{num:n.num,blockSize:n.blockSize,sampleRate:n.sampleRate,size:r,isLastFrame:!1}}}})}readFlacFrameHeader({slice:e,isFirstPacket:t}){const r=e.filePos,i=Tn(e,4),n=new b(i);if(32764!==n.readBits(15))return null;if(null===this.blockingBit){p(t);const e=n.readBits(1);this.blockingBit=e}else if(1===this.blockingBit){p(!t);if(1!==n.readBits(1))return null}else{if(0!==this.blockingBit)throw new Error("Invalid blocking bit");p(!t);if(0!==n.readBits(1))return null}const s=(e=>0===e?null:1===e?192:e>=2&&e<=5?144*o(2,e):6===e?"uncommon-u8":7===e?"uncommon-u16":e>=8&&e<=15?o(2,e):null)(n.readBits(4));if(!s)return null;p(this.audioInfo);const a=((e,t)=>{switch(e){case 0:return t;case 1:return 88200;case 2:return 176400;case 3:return 192e3;case 4:return 8e3;case 5:return 16e3;case 6:return 22050;case 7:return 24e3;case 8:return 32e3;case 9:return 44100;case 10:return 48e3;case 11:return 96e3;case 12:return"uncommon-u8";case 13:return"uncommon-u16";case 14:return"uncommon-u16-10";default:return null}})(n.readBits(4),this.audioInfo.sampleRate);if(!a)return null;n.readBits(4),n.readBits(3);if(0!==n.readBits(1))return null;const l=(e=>{let t=0;const r=new b(Tn(e,1));for(;1===r.readBits(1);)t++;if(0===t)return r.readBits(7);const i=[],n=t-1,s=new b(Tn(e,n)),a=8-t-1;for(let o=0;o<a;o++)i.unshift(r.readBits(1));for(let o=0;o<n;o++)for(let e=0;e<8;e++){const t=s.readBits(1);e<2||i.unshift(t)}return i.reduce((e,t,r)=>e|t<<r,0)})(e),c=((e,t)=>"uncommon-u16"===t?wn(e)+1:"uncommon-u8"===t?Sn(e)+1:"number"===typeof t?t:(q(t),void p(!1)))(e,s),u=((e,t)=>"uncommon-u16"===t?wn(e):"uncommon-u16-10"===t?10*wn(e):"uncommon-u8"===t?Sn(e):"number"===typeof t?t:null)(e,a);if(null===u)return null;if(u!==this.audioInfo.sampleRate)return null;const d=e.filePos-r,h=Sn(e);e.skip(-d),e.skip(-1);const m=(e=>{let t=0;for(const r of e){t^=r;fLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class Ui{}class Vi extends Ui{_getMajorBrand(e){return u(this,null,function*(){let t=e._reader.requestSlice(0,12);if(t instanceof Promise&&(t=yield t),!t)return null;t.skip(4);return"ftyp"!==Nn(t,4)?null:Nn(t,4)})}_createDemuxer(e){return new ir(e)}}class qi extends Vi{_canReadInput(e){return u(this,null,function*(){const t=yield this._getMajorBrand(e);return!!t&&"qt "!==t})}get name(){return"MP4"}get mimeType(){return"video/mp4"}}class Hi extends Vi{_canReadInput(e){return u(this,null,function*(){return"qt "===(yield this._getMajorBrand(e))})}get name(){return"QuickTime File Format"}get mimeType(){return"video/quicktime"}}class Wi extends Ui{isSupportedEBMLOfDocType(e,t){return u(this,null,function*(){let r=e._reader.requestSlice(0,yr);if(r instanceof Promise&&(r=yield r),!r)return!1;const i=Tr(r);if(null===i)return!1;if(i<1||i>8)return!1;if(vr(r,i)!==fr.EBML)return!1;const n=Ir(r);if("number"!==typeof n)return!1;let s=e._reader.requestSlice(r.filePos,n);if(s instanceof Promise&&(s=yield s),!s)return!1;const a=r.filePos;for(;s.filePos<=a+n-2;){const e=Pr(s);if(!e)break;const{id:r,size:i}=e,n=s.filePos;if(void 0===i)return!1;switch(r){case fr.EBMLVersion:if(1!==vr(s,i))return!1;break;case fr.EBMLReadVersion:if(1!==vr(s,i))return!1;break;case fr.DocType:if(xr(s,i)!==t)return!1;break;case fr.DocTypeVersion:if(vr(s,i)>4)return!1}s.filePos=n+i}return!0})}_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"matroska")}_createDemuxer(e){return new Xr(e)}get name(){return"Matroska"}get mimeType(){return"video/x-matroska"}}class ji extends Wi{_canReadInput(e){return this.isSupportedEBMLOfDocType(e,"webm")}get name(){return"WebM"}get mimeType(){return"video/webm"}}class Ki extends Ui{_canReadInput(e){return u(this,null,function*(){let t=e._reader.requestSlice(0,10);if(t instanceof Promise&&(t=yield t),!t)return!1;let r=0,i=!1;for(;;){let t=e._reader.requestSlice(r,10);if(t instanceof Promise&&(t=yield t),!t)break;const n=di(t);if(!n)break;i=!0,r=t.filePos+n.size}const n=yield fi(e._reader,r,r+4096);if(!n)return!1;if(i)return!0;r=n.startPos+n.header.totalSize;const s=yield fi(e._reader,r,r+4);if(!s)return!1;const a=n.header,o=s.header;return a.channel===o.channel&&a.sampleRate===o.sampleRate})}_createDemuxer(e){return new pi(e)}get name(){return"MP3"}get mimeType(){return"audio/mpeg"}}class $i extends Ui{_canReadInput(e){return u(this,null,function*(){let t=e._reader.requestSlice(0,12);if(t instanceof Promise&&(t=yield t),!t)return!1;const r=Nn(t,4);if("RIFF"!==r&&"RIFX"!==r&&"RF64"!==r)return!1;t.skip(4);return"WAVE"===Nn(t,4)})}_createDemuxer(e){return new Fi(e)}get name(){return"WAVE"}get mimeType(){return"audio/wav"}}class Qi extends Ui{_canReadInput(e){return u(this,null,function*(){let t=e._reader.requestSlice(0,4);return t instanceof Promise&&(t=yield t),!!t&&"OggS"===Nn(t,4)})}_createDemuxer(e){return new Pi(e)}get name(){return"Ogg"}get mimeType(){return"application/ogg"}}class Gi extends Ui{_canReadInput(e){return u(this,null,function*(){let t=e._reader.requestSlice(0,4);return t instanceof Promise&&(t=yield t),!!t&&"fLaC"===Nn(t,4)})}get name(){return"FLAC"}get mimeType(){return"audio/flac"}_createDemuxer(e){return new Oi(e)}}class Xi extends Ui{_canReadInput(e){return u(this,null,function*(){let t=e._reader.requestSliceRange(0,7,9);if(t instanceof Promise&&(t=yield t),!t)return!1;const r=Ri(t);if(!r)return!1;if(t=e._reader.requestSliceRange(r.frameLength,7,9),t instanceof Promise&&(t=yield t),!t)return!1;const i=Ri(t);return!!i&&(r.objectType===i.objectType&&r.samplingFrequencyIndex===i.samplingFrequencyIndex&&r.channelConfiguration===i.channelConfiguration)})}_createDemuxer(e){return new Ni(e)}get name(){return"ADTS"}get mimeType(){return"audio/aac"}}const Yi=new qi,Ji=new Hi,Zi=new Wi,en=new ji,tn=new Ki,rn=new $i,nn=new Qi,sn=new Xi,an=[Yi,Ji,Zi,en,rn,nn,new Gi,tn,sn];
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
class on{constructor(){this._disposed=!1,this._sizePromise=null,this.onread=null}getSizeOrNull(){return u(this,null,function*(){var e;if(this._disposed)throw new gn;return null!=(e=this._sizePromise)?e:this._sizePromise=Promise.resolve(this._retrieveSize())})}getSize(){return u(this,null,function*(){if(this._disposed)throw new gn;const e=yield this.getSizeOrNull();if(null===e)throw new Error("Cannot determine the size of an unsized source.");return e})}}class ln extends on{constructor(e,t={}){var r;if(!(e instanceof Blob))throw new TypeError("blob must be a Blob.");if(!t||"object"!==typeof t)throw new TypeError("options must be an object.");if(void 0!==t.maxCacheSize&&(!me(t.maxCacheSize)||t.maxCacheSize<0))throw new TypeError("options.maxCacheSize, when provided, must be a non-negative number.");super(),this._readers=new WeakMap,this._blob=e,this._orchestrator=new fn({maxCacheSize:null!=(r=t.maxCacheSize)?r:8*o(2,20),maxWorkerCount:4,runWorker:this._runWorker.bind(this),prefetchProfile:mn.fileSystem})}_retrieveSize(){const e=this._blob.size;return this._orchestrator.fileSize=e,e}_read(e,t){return this._orchestrator.read(e,t)}_runWorker(e){return u(this,null,function*(){var t,r;let i=this._readers.get(e);if(void 0===i){if("stream"in this._blob&&!ie()){i=this._blob.slice(e.currentPos).stream().getReader()}else i=null;this._readers.set(e,i)}for(;e.currentPos<e.targetPos&&!e.aborted;)if(i){const{done:r,value:n}=yield i.read();if(r)throw this._orchestrator.forgetWorker(e),new Error("Blob reader stopped unexpectedly before all requested data was read.");if(e.aborted)break;null==(t=this.onread)||t.call(this,e.currentPos,e.currentPos+n.length),this._orchestrator.supplyWorkerData(e,n)}else{const t=yield this._blob.slice(e.currentPos,e.targetPos).arrayBuffer();if(e.aborted)break;null==(r=this.onread)||r.call(this,e.currentPos,e.currentPos+t.byteLength),this._orchestrator.supplyWorkerData(e,new Uint8Array(t))}e.running=!1,e.aborted&&(yield null==i?void 0:i.cancel())})}_dispose(){this._orchestrator.dispose()}}const cn=.5*o(2,20),un=(e,t,r)=>{if(t instanceof Error&&(t.message.includes("Failed to fetch")||t.message.includes("Load failed")||t.message.includes("NetworkError when attempting to fetch resource"))){let e=null;try{"undefined"!==typeof window&&"undefined"!==typeof window.location&&(e=new URL(r instanceof Request?r.url:r,window.location.href).origin)}catch(i){}if(("undefined"===typeof navigator||"boolean"!==typeof navigator.onLine||navigator.onLine)&&null!==e&&e!==window.location.origin)return console.warn("Request will not be retried because a CORS error was suspected due to different origins. You can modify this behavior by providing your own function for the 'getRetryDelay' option."),null}return Math.min(o(2,e-2),16)};class dn extends on{constructor(e,t={}){var r,i;if("string"!==typeof e&&!(e instanceof URL)&&!("undefined"!==typeof Request&&e instanceof Request))throw new TypeError("url must be a string, URL or Request.");if(!t||"object"!==typeof t)throw new TypeError("options must be an object.");if(void 0!==t.requestInit&&(!t.requestInit||"object"!==typeof t.requestInit))throw new TypeError("options.requestInit, when provided, must be an object.");if(void 0!==t.getRetryDelay&&"function"!==typeof t.getRetryDelay)throw new TypeError("options.getRetryDelay, when provided, must be a function.");if(void 0!==t.maxCacheSize&&(!me(t.maxCacheSize)||t.maxCacheSize<0))throw new TypeError("options.maxCacheSize, when provided, must be a non-negative number.");if(void 0!==t.fetchFn&&"function"!==typeof t.fetchFn)throw new TypeError("options.fetchFn, when provided, must be a function.");super(),this._existingResponses=new WeakMap,this._url=e,this._options=t,this._getRetryDelay=null!=(r=t.getRetryDelay)?r:un,this._orchestrator=new fn({maxCacheSize:null!=(i=t.maxCacheSize)?i:64*o(2,20),maxWorkerCount:2,runWorker:this._runWorker.bind(this),prefetchProfile:mn.network})}_retrieveSize(){return u(this,null,function*(){var e,t;const r=new AbortController,i=yield ee(null!=(e=this._options.fetchFn)?e:fetch,this._url,J(null!=(t=this._options.requestInit)?t:{},{headers:{Range:"bytes=0-"},signal:r.signal}),this._getRetryDelay,()=>this._disposed);if(!i.ok)throw new Error(`Error fetching ${String(this._url)}: ${i.status} ${i.statusText}`);let n,s;if(206===i.status)s=this._getTotalLengthFromRangeResponse(i),n=this._orchestrator.createWorker(0,Math.min(s,cn));else{const e=i.headers.get("Content-Length");if(!e)throw new Error(`HTTP response (status ${i.status}) must surface Content-Length header.`);s=Number(e),n=this._orchestrator.createWorker(0,s),this._orchestrator.options.maxCacheSize=1/0,console.warn("HTTP server did not respond with 206 Partial Content, meaning the entire remote resource now has to be downloaded. For efficient media file streaming across a network, please make sure your server supports range requests.")}return this._orchestrator.fileSize=s,this._existingResponses.set(n,{response:i,abortController:r}),this._orchestratLine truncated
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/he();class pn{get disposed(){return this._disposed}constructor(e){if(this._demuxerPromise=null,this._format=null,this._disposed=!1,!e||"object"!==typeof e)throw new TypeError("options must be an object.");if(!Array.isArray(e.formats)||e.formats.some(e=>!(e instanceof Ui)))throw new TypeError("options.formats must be an array of InputFormat.");if(!(e.source instanceof on))throw new TypeError("options.source must be a Source.");if(e.source._disposed)throw new Error("options.source must not be disposed.");this._formats=e.formats,this._source=e.source,this._reader=new kn(e.source)}_getDemuxer(){var e;return null!=(e=this._demuxerPromise)?e:this._demuxerPromise=(()=>u(this,null,function*(){this._reader.fileSize=yield this._source.getSizeOrNull();for(const e of this._formats){if(yield e._canReadInput(this))return this._format=e,e._createDemuxer(this)}throw new Error("Input has an unsupported or unrecognizable format.")}))()}get source(){return this._source}getFormat(){return u(this,null,function*(){return yield this._getDemuxer(),p(this._format),this._format})}computeDuration(){return u(this,null,function*(){return(yield this._getDemuxer()).computeDuration()})}getTracks(){return u(this,null,function*(){return(yield this._getDemuxer()).getTracks()})}getVideoTracks(){return u(this,null,function*(){return(yield this.getTracks()).filter(e=>e.isVideoTrack())})}getAudioTracks(){return u(this,null,function*(){return(yield this.getTracks()).filter(e=>e.isAudioTrack())})}getPrimaryVideoTrack(){return u(this,null,function*(){var e;return null!=(e=(yield this.getTracks()).find(e=>e.isVideoTrack()))?e:null})}getPrimaryAudioTrack(){return u(this,null,function*(){var e;return null!=(e=(yield this.getTracks()).find(e=>e.isAudioTrack()))?e:null})}getMimeType(){return u(this,null,function*(){return(yield this._getDemuxer()).getMimeType()})}getMetadataTags(){return u(this,null,function*(){return(yield this._getDemuxer()).getMetadataTags()})}dispose(){this._disposed||(this._disposed=!0,this._source._disposed=!0,this._source._dispose())}[Symbol.dispose](){this.dispose()}}class gn extends Error{constructor(e="Input has been disposed."){super(e),this.name="InputDisposedError"}}
/*!
* Copyright (c) 2025-present, Vanilagy and contributors
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/class kn{constructor(e){this.source=e}requestSlice(e,t){if(this.source._disposed)throw new gn;if(null!==this.fileSize&&e+t>this.fileSize)return null;const r=e+t,i=this.source._read(e,r);return i instanceof Promise?i.then(t=>t?new bn(t.bytes,t.view,t.offset,e,r):null):i?new bn(i.bytes,i.view,i.offset,e,r):null}requestSliceRange(e,t,r){if(this.source._disposed)throw new gn;if(null!==this.fileSize)return this.requestSlice(e,K(this.fileSize-e,t,r));{const i=this.requestSlice(e,r),n=i=>{if(i)return i;const n=i=>(p(null!==i),this.requestSlice(e,K(i-e,t,r))),s=this.source._retrieveSize();return s instanceof Promise?s.then(n):n(s)};return i instanceof Promise?i.then(n):n(i)}}}class bn{constructor(e,t,r,i,n){this.bytes=e,this.view=t,this.offset=r,this.start=i,this.end=n,this.bufferPos=i-r}static tempFromBytes(e){return new bn(e,v(e),0,0,e.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(e){this.bufferPos=e-this.offset}get remainingLength(){return Math.max(this.end-this.filePos,0)}skip(e){this.bufferPos+=e}slice(e,t=this.end-e){if(e<this.start||e+t>this.end)throw new RangeError("Slicing outside of original slice.");return new bn(this.bytes,this.view,this.offset,e,e+t)}}const yn=(e,t)=>{if(e.filePos<e.start||e.filePos+t>e.end)throw new RangeError(`Tried reading [${e.filePos}, ${e.filePos+t}), but slice is [${e.start}, ${e.end}). This is likely an internal error, please report it alongside the file that caused it.`)},Tn=(e,t)=>{yn(e,t);const r=e.bytes.subarray(e.bufferPos,e.bufferPos+t);return e.bufferPos+=t,r},Sn=e=>(yn(e,1),e.view.getUint8(e.bufferPos++)),vn=(e,t)=>{yn(e,2);const r=e.view.getUint16(e.bufferPos,t);return e.bufferPos+=2,r},wn=e=>{yn(e,2);const t=e.view.getUint16(e.bufferPos,!1);return e.bufferPos+=2,t},In=e=>{yn(e,3);const t=H(e.view,e.bufferPos,!1);return e.bufferPos+=3,t},Pn=e=>{yn(e,2);const t=e.view.getInt16(e.bufferPos,!1);return e.bufferPos+=2,t},xn=(e,t)=>{yn(e,4);const r=e.view.getUint32(e.bufferPos,t);return e.bufferPos+=4,r},Cn=e=>{yn(e,4);const t=e.view.getUint32(e.bufferPos,!1);return e.bufferPos+=4,t},_n=e=>{yn(e,4);const t=e.view.getUint32(e.bufferPos,!0);return e.bufferPos+=4,t},Bn=e=>{yn(e,4);const t=e.view.getInt32(e.bufferPos,!1);return e.bufferPos+=4,t},En=(e,t)=>{let r,i;return t?(r=xn(e,!0),i=xn(e,!0)):(i=xn(e,!1),r=xn(e,!1)),4294967296*i+r},Fn=e=>4294967296*Cn(e)+Cn(e),Dn=e=>4294967296*Bn(e)+Cn(e),An=e=>{const t=_n(e),r=(e=>{yn(e,4);const t=e.view.getInt32(e.bufferPos,!0);return e.bufferPos+=4,t})(e);return 4294967296*r+t},Rn=e=>{yn(e,4);const t=e.view.getFloat32(e.bufferPos,!1);return e.bufferPos+=4,t},Mn=e=>{yn(e,8);const t=e.view.getFloat64(e.bufferPos,!1);return e.bufferPos+=8,t},Nn=(e,t)=>{yn(e,t);let r="";for(let i=0;i<t;i++)r+=String.fromCharCode(e.bytes[e.bufferPos++]);return r};class zn{constructor(e){this.events=e,this.input=null,this.audioSink=null,this.audioIterator=null,this.audioContext=null,this.gainNode=null,this.audioContextStartTime=0,this.playbackTimeAtStart=0,this.latestScheduledEndTime=0,this.duration=Number.NaN,this.paused=!0,this.volume=.7,this.muted=!1,this.playbackRate=1,this.asyncId=0,this.queuedNodes=new Set}get currentTime(){return this.paused?this.playbackTimeAtStart:(this.audioContext.currentTime-this.audioContextStartTime)*this.playbackRate+this.playbackTimeAtStart}normalizeSource(e){return"string"===typeof e?new dn(e):e instanceof Blob?new ln(e):"undefined"!==typeof ReadableStream&&e instanceof ReadableStream?new hn(e):e}ensureAudioContext(e){if(this.audioContext)return;const t=window.AudioContext||window.webkitAudioContext;try{this.audioContext=new t({sampleRate:e})}catch(r){this.audioContext=new t}this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination),this.updateGain()}updateGain(){if(!this.gainNode)return;const e=this.muted?0:this.volume;this.gainNode.gain.value=e*e}stopQueuedNodes(){this.queuedNodes.forEach(e=>e.stop()),this.queuedNodes.clear()}stopIterator(){return u(this,null,function*(){var e;yield null==(e=this.audioIterator)?void 0:e.return(),this.audioIterator=null})}load(e,t){return u(this,null,function*(){const r=++this.asyncId;yield this.stopIterator(),this.stopQueuedNodes(),this.paused=!0,this.playbackTimeAtStart=0,this.audioContextStartTime=0;const i=this.normalizeSource(e);if(!i)return;if(this.input=new pn({source:i,formats:an}),this.duration=yield this.input.computeDuration(),r!==this.asyncId)return;const n=yield this.input.getPrimaryAudioTrack();return n&&null!==n.codec&&(yield n.canDecode())?(this.ensureAudioContext(n.sampleRate),this.audioSink=new $t(n),void(null==t||t())):(this.audioSink=null,this.ensureAudioContext(),void(null==t||t()))})}runIterator(e){return u(this,null,function*(){if(this.audioSink)for(yield this.stopIterator(),this.audioIterator=this.audioSink.buffers(this.currentTime);;){if(e!==this.asyncId||this.paused)return;const r=this.audioIterator.next(),i=setInterval(()=>{e!==this.asyncId||this.paused?clearIntLine truncated
File diff suppressed because it is too large. Load diff
+1 -2
View File
@@ -1,8 +1,7 @@
/*!
* artplayer-tool-thumbnail.js v4.3.12
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,i,r,o){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof n[r]&&n[r],l=s.i||{},a=s.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,i){if(!a[t]){if(!e[t]){if(o[t])return o[t];var l="function"==typeof n[r]&&n[r];if(!i&&l)return l(t,!0);if(s)return s(t,!0);if(h&&"string"==typeof t)return h(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}c.resolve=function(i){var r=e[t][1][i];return null!=r?r:i},c.cache={};var p=a[t]=new u.Module(t);e[t][0].call(p.exports,c,p,p.exports,n)}return a[t].exports;function c(e){var t=c.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],o=e[2]||e[0],n=u(r);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===o?Object.defineProperty(i,t,{enumerable:!0,value:n}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===o?n.__esModule?n.default:n:n[o]}})}),i}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=h,this.exports={}},u.modules=e,u.cache=a,u.parent=s,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=l,u.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(u,"root",{get:function(){return n[r]}}),n[r]=u;for(var d=0;d<t.length;d++)u(t[d]);if(i){var p=u(i);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({c0Aef:[function(e,t,i,r){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("./emitter"),s=o.interopDefault(n),l=e("./utils");class a extends s.default{constructor(e={}){super(),this.processing=!1,this.option={},this.setup(Object.assign({},a.DEFAULTS,e)),this.video=a.creatVideo(),this.duration=0,this.inputChange=this.inputChange.bind(this),this.ondrop=this.ondrop.bind(this),this.option.fileInput.addEventListener("change",this.inputChange),this.option.fileInput.addEventListener("dragover",a.ondragover),this.option.fileInput.addEventListener("drop",a.ondrop)}static get DEFAULTS(){return{number:60,width:160,height:90,column:10,begin:0,end:NaN}}static ondragover(e){e.preventDefault()}ondrop(e){e.preventDefault();let t=e.dataTransfer.files[0];this.loadVideo(t)}setup(e={}){this.option=Object.assign({},this.option,e);let{fileInput:t,number:i,width:r,column:o}=this.option;if(this.errorHandle(t instanceof Element,"The 'fileInput' is not a Element"),"INPUT"!==t.tagName||"file"!==t.type){t.style.position="relative";let e=document.createElement("input");e.type="file",e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.left="0",e.style.top="0",e.style.right="0",e.style.bottom="0",e.style.opacity="0",t.appendChild(e),this.option.fileInput=e}return["number","width","column","begin","end"].forEach(e=>{this.errorHandle("number"==typeof this.option[e],`The '${e}' is not a number`)}),this.option.number=(0,l.clamp)(i,10,1e3),this.option.width=(0,l.clamp)(r,10,1e3),this.option.column=(0,l.clamp)(o,1,1e3),this}static creatVideo(){let e=document.createElement("video");return e.style.position="absolute",e.style.top="-9999px",e.style.left="-9999px",e.muted=!0,e.controls=!0,document.body.appendChild(e),e}inputChange(e){let t=this.option.fileInput.files[0];this.loadVideo(t),e.target.value=""}loadVideo(e){if(e){let t=this.video.canPlayType(e.type);this.errorHandle("maybe"===t||"probably"===t,`Playback of this file format is not supported: ${e.type}`);let i=URL.createObjectURL(e);this.videoUrl=i,this.file=e,this.emit("file",this.file),this.video.src=i,this.emit("video",this.video)}}start(){if(!this.video.duration)return(0,l.sleep)(1e3).then(()=>this.start());let{width:e,number:t,begin:i,end:r}=this.option,o=this.video.videoHeight/this.video.videoWidth*e;this.option.height=o,this.option.begin=(0,l.clamp)(i,0,this.video.duration),this.option.end=(0,l.clamp)(r||this.video.duration,i,this.video.duration),this.errorHandle(this.option.end>this.option.begin,"End time must be greater than the start time"),this.duration=this.option.end-this.option.begin,this.density=t/this.duration,this.errorHandle(this.file&&this.video,"Please select the video file first"),this.errorHandle(!this.processing,"There is currently a task in progress, please wait a moment..."),this.errorHandle(this.density<=1,`The preview density cannot be greater than 1, but got ${this.density}`);let n=this.creatScreenshotDate(),s=this.creatCanvas(),a=s.getContext("2d");this.emit("canvas",s);let h=n.map((i,r)=>()=>new Promise(n=>{this.video.oncanplay=()=>{a.drawImage(this.video,i.x,i.y,e,o),s.toBlob(e=>{this.thumbnailUrl&&URL.revokeObjectURL(this.thumbnailUrl),this.thumbnailUrl=URL.createObjectURL(e),this.emit("update",thisLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerToolThumbnail=e(),define(function(){return t.ArtplayerToolThumbnail})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerToolThumbnail=e()}(this,function(){"use strict";class t{on(t,e,i){const n=this.e||(this.e={});return(n[t]||(n[t]=[])).push({fn:e,ctx:i}),this}once(t,e,i){const n=this;function o(...s){n.off(t,o),e.apply(i,s)}return o._=e,this.on(t,o,i)}emit(t,...e){const i=((this.e||(this.e={}))[t]||[]).slice();for(let n=0;n<i.length;n+=1)i[n].fn.apply(i[n].ctx,e);return this}off(t,e){const i=this.e||(this.e={}),n=i[t],o=[];if(n&&e)for(let s=0,r=n.length;s<r;s+=1)n[s].fn!==e&&n[s].fn._!==e&&o.push(n[s]);return o.length?i[t]=o:delete i[t],this}}function e(t,e,i){return Math.max(Math.min(t,Math.max(e,i)),Math.min(e,i))}class i extends t{constructor(t={}){super(),this.processing=!1,this.option={},this.setup(Object.assign({},i.DEFAULTS,t)),this.video=i.creatVideo(),this.duration=0,this.inputChange=this.inputChange.bind(this),this.ondrop=this.ondrop.bind(this),this.option.fileInput.addEventListener("change",this.inputChange),this.option.fileInput.addEventListener("dragover",i.ondragover),this.option.fileInput.addEventListener("drop",i.ondrop)}static get DEFAULTS(){return{number:60,width:160,height:90,column:10,begin:0,end:Number.NaN}}static ondragover(t){t.preventDefault()}ondrop(t){t.preventDefault();const e=t.dataTransfer.files[0];this.loadVideo(e)}setup(t={}){this.option=Object.assign({},this.option,t);const{fileInput:i,number:n,width:o,column:s}=this.option;if(this.errorHandle(i instanceof Element,"The 'fileInput' is not a Element"),"INPUT"!==i.tagName||"file"!==i.type){i.style.position="relative";const t=document.createElement("input");t.type="file",t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.right="0",t.style.bottom="0",t.style.opacity="0",i.appendChild(t),this.option.fileInput=t}return["number","width","column","begin","end"].forEach(t=>{this.errorHandle("number"===typeof this.option[t],`The '${t}' is not a number`)}),this.option.number=e(n,10,1e3),this.option.width=e(o,10,1e3),this.option.column=e(s,1,1e3),this}static creatVideo(){const t=document.createElement("video");return t.style.position="absolute",t.style.top="-9999px",t.style.left="-9999px",t.muted=!0,t.controls=!0,document.body.appendChild(t),t}inputChange(t){const e=this.option.fileInput.files[0];this.loadVideo(e),t.target.value=""}loadVideo(t){if(t){const e=this.video.canPlayType(t.type);this.errorHandle("maybe"===e||"probably"===e,`Playback of this file format is not supported: ${t.type}`);const i=URL.createObjectURL(t);this.videoUrl=i,this.file=t,this.emit("file",this.file),this.video.src=i,this.emit("video",this.video)}}start(){if(!this.video.duration)return(t=1e3,new Promise(e=>setTimeout(e,t))).then(()=>this.start());var t;const{width:i,number:n,begin:o,end:s}=this.option,r=this.video.videoHeight/this.video.videoWidth*i;this.option.height=r,this.option.begin=e(o,0,this.video.duration),this.option.end=e(s||this.video.duration,o,this.video.duration),this.errorHandle(this.option.end>this.option.begin,"End time must be greater than the start time"),this.duration=this.option.end-this.option.begin,this.density=n/this.duration,this.errorHandle(this.file&&this.video,"Please select the video file first"),this.errorHandle(!this.processing,"There is currently a task in progress, please wait a moment..."),this.errorHandle(this.density<=1,`The preview density cannot be greater than 1, but got ${this.density}`);const h=this.creatScreenshotDate(),a=this.creatCanvas(),l=a.getContext("2d");this.emit("canvas",a);const d=h.map((t,e)=>()=>new Promise(o=>{this.video.oncanplay=()=>{l.drawImage(this.video,t.x,t.y,i,r),a.toBlob(t=>{this.thumbnailUrl&&URL.revokeObjectURL(this.thumbnailUrl),this.thumbnailUrl=URL.createObjectURL(t),this.emit("update",this.thumbnailUrl,(e+1)/n),this.video.oncanplay=null,o()})},this.video.currentTime=t.time}));return this.processing=!0,(p=d,p.reduce((t,e)=>t.then(e),Promise.resolve())).then(()=>{this.processing=!1,this.emit("done")}).catch(t=>{throw this.processing=!1,this.emit("error",t.message),t});var p}creatScreenshotDate(){const{number:t,width:e,height:i,column:n,begin:o}=this.option,s=this.duration/t,r=[o+s];for(;r.length<t;){const t=r[r.length-1];r.push(t+s)}return r.map((t,o)=>({time:t-s/2,x:o%n*e,y:Math.floor(o/n)*i}))}creatCanvas(){const{number:t,width:e,height:i,column:n}=this.option,o=document.createElement("canvas"),s=o.getContext("2d");return o.width=e*n,o.height=Math.ceil(t/n)*i+30,s.fillStyle="black",s.fillRect(0,0,o.width,o.height),s.font="14px Georgia",s.fillStyle="#fff",s.fillText(`From: https://artplayer.org/, Number: ${t}, Width: ${e}, Height: ${i}, Column: ${n}`,10,o.height-11),o}download(){this.errorHandle(this.file&&this.thumbnailUrl,"Download does not seem to be ready, please create previeLine truncated
@@ -1,8 +1,7 @@
/*!
* artplayer-tool-thumbnail.js v4.3.12
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,n,r,i){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof o[r]&&o[r],a=s.i||{},c=s.cache||{},u="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function l(t,n){if(!c[t]){if(!e[t]){if(i[t])return i[t];var a="function"==typeof o[r]&&o[r];if(!n&&a)return a(t,!0);if(s)return s(t,!0);if(u&&"string"==typeof t)return u(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}p.resolve=function(n){var r=e[t][1][n];return null!=r?r:n},p.cache={};var h=c[t]=new l.Module(t);e[t][0].call(h.exports,p,h,h.exports,o)}return c[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var n={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],i=e[2]||e[0],o=l(r);"*"===t?Object.keys(o).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:function(){return o[e]}})}):"*"===i?Object.defineProperty(n,t,{enumerable:!0,value:o}):Object.defineProperty(n,t,{enumerable:!0,get:function(){return"default"===i?o.__esModule?o.default:o:o[i]}})}),n}return l(t)}}l.isParcelRequire=!0,l.Module=function(e){this.id=e,this.bundle=l,this.require=u,this.exports={}},l.modules=e,l.cache=c,l.parent=s,l.distDir=void 0,l.publicUrl=void 0,l.devServer=void 0,l.i=a,l.register=function(t,n){e[t]=[function(e,t){t.exports=n},{}]},Object.defineProperty(l,"root",{get:function(){return o[r]}}),o[r]=l;for(var f=0;f<t.length;f++)l(t[f]);if(n){var h=l(n);"object"==typeof exports&&"u">typeof module?module.exports=h:"function"==typeof define&&define.amd&&define(function(){return h})}}({a05wP:[function(e,t,n,r){var i=e("@parcel/transformer-js/src/esmodule-helpers.js");i.defineInteropFlag(n),i.export(n,"default",function(){return h});var o=e("@swc/helpers/cjs/_call_super.cjs"),s=e("@swc/helpers/cjs/_class_call_check.cjs"),a=e("@swc/helpers/cjs/_create_class.cjs"),c=e("@swc/helpers/cjs/_inherits.cjs"),u=e("./emitter"),l=i.interopDefault(u),f=e("./utils"),h=function(e){"use strict";function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,s._)(this,t),(e=(0,o._)(this,t)).processing=!1,e.option={},e.setup(Object.assign({},t.DEFAULTS,n)),e.video=t.creatVideo(),e.duration=0,e.inputChange=e.inputChange.bind(e),e.ondrop=e.ondrop.bind(e),e.option.fileInput.addEventListener("change",e.inputChange),e.option.fileInput.addEventListener("dragover",t.ondragover),e.option.fileInput.addEventListener("drop",t.ondrop),e}return(0,c._)(t,e),(0,a._)(t,[{key:"ondrop",value:function(e){e.preventDefault();var t=e.dataTransfer.files[0];this.loadVideo(t)}},{key:"setup",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.option=Object.assign({},this.option,t);var n=this.option,r=n.fileInput,i=n.number,o=n.width,s=n.column;if(this.errorHandle(r instanceof Element,"The 'fileInput' is not a Element"),"INPUT"!==r.tagName||"file"!==r.type){r.style.position="relative";var a=document.createElement("input");a.type="file",a.style.position="absolute",a.style.width="100%",a.style.height="100%",a.style.left="0",a.style.top="0",a.style.right="0",a.style.bottom="0",a.style.opacity="0",r.appendChild(a),this.option.fileInput=a}return["number","width","column","begin","end"].forEach(function(t){e.errorHandle("number"==typeof e.option[t],"The '".concat(t,"' is not a number"))}),this.option.number=(0,f.clamp)(i,10,1e3),this.option.width=(0,f.clamp)(o,10,1e3),this.option.column=(0,f.clamp)(s,1,1e3),this}},{key:"inputChange",value:function(e){var t=this.option.fileInput.files[0];this.loadVideo(t),e.target.value=""}},{key:"loadVideo",value:function(e){if(e){var t=this.video.canPlayType(e.type);this.errorHandle("maybe"===t||"probably"===t,"Playback of this file format is not supported: ".concat(e.type));var n=URL.createObjectURL(e);this.videoUrl=n,this.file=e,this.emit("file",this.file),this.video.src=n,this.emit("video",this.video)}}},{key:"start",value:function(){var e=this;if(!this.video.duration)return(0,f.sleep)(1e3).then(function(){return e.start()});var t=this.option,n=t.width,r=t.number,i=t.begin,o=t.end,s=this.video.videoHeight/this.video.videoWidth*n;this.option.height=s,this.option.begin=(0,f.clamp)(i,0,this.video.duration),this.option.end=(0,f.clamp)(o||this.video.duration,i,this.video.duration),this.errorHandle(this.option.end>this.option.begin,"End time must be greater than the start time"),this.duration=this.option.end-this.option.begin,this.density=r/this.duration,this.errorHandle(this.file&&this.video,"Please select the video file first"),this.errorHandle(!this.processing,"There is currently a task in progress, please wait a moment..."),this.errorHandle(this.density<=1,"The preview density cannot be greater than 1, but got ".concat(this.density));var a=this.creatScreenshotDate(),c=this.creatCanvas(),u=c.getContext("2d");this.emit("canvas",c);var l=a.map(functLine truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.ArtplayerToolThumbnail=e(),define(function(){return t.ArtplayerToolThumbnail})):(t="undefined"!==typeof globalThis?globalThis:t||self).ArtplayerToolThumbnail=e()}(this,function(){"use strict";class t{on(t,e,i){const n=this.e||(this.e={});return(n[t]||(n[t]=[])).push({fn:e,ctx:i}),this}once(t,e,i){const n=this;function o(...s){n.off(t,o),e.apply(i,s)}return o._=e,this.on(t,o,i)}emit(t,...e){const i=((this.e||(this.e={}))[t]||[]).slice();for(let n=0;n<i.length;n+=1)i[n].fn.apply(i[n].ctx,e);return this}off(t,e){const i=this.e||(this.e={}),n=i[t],o=[];if(n&&e)for(let s=0,r=n.length;s<r;s+=1)n[s].fn!==e&&n[s].fn._!==e&&o.push(n[s]);return o.length?i[t]=o:delete i[t],this}}function e(t,e,i){return Math.max(Math.min(t,Math.max(e,i)),Math.min(e,i))}class i extends t{constructor(t={}){super(),this.processing=!1,this.option={},this.setup(Object.assign({},i.DEFAULTS,t)),this.video=i.creatVideo(),this.duration=0,this.inputChange=this.inputChange.bind(this),this.ondrop=this.ondrop.bind(this),this.option.fileInput.addEventListener("change",this.inputChange),this.option.fileInput.addEventListener("dragover",i.ondragover),this.option.fileInput.addEventListener("drop",i.ondrop)}static get DEFAULTS(){return{number:60,width:160,height:90,column:10,begin:0,end:Number.NaN}}static ondragover(t){t.preventDefault()}ondrop(t){t.preventDefault();const e=t.dataTransfer.files[0];this.loadVideo(e)}setup(t={}){this.option=Object.assign({},this.option,t);const{fileInput:i,number:n,width:o,column:s}=this.option;if(this.errorHandle(i instanceof Element,"The 'fileInput' is not a Element"),"INPUT"!==i.tagName||"file"!==i.type){i.style.position="relative";const t=document.createElement("input");t.type="file",t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.style.left="0",t.style.top="0",t.style.right="0",t.style.bottom="0",t.style.opacity="0",i.appendChild(t),this.option.fileInput=t}return["number","width","column","begin","end"].forEach(t=>{this.errorHandle("number"===typeof this.option[t],`The '${t}' is not a number`)}),this.option.number=e(n,10,1e3),this.option.width=e(o,10,1e3),this.option.column=e(s,1,1e3),this}static creatVideo(){const t=document.createElement("video");return t.style.position="absolute",t.style.top="-9999px",t.style.left="-9999px",t.muted=!0,t.controls=!0,document.body.appendChild(t),t}inputChange(t){const e=this.option.fileInput.files[0];this.loadVideo(e),t.target.value=""}loadVideo(t){if(t){const e=this.video.canPlayType(t.type);this.errorHandle("maybe"===e||"probably"===e,`Playback of this file format is not supported: ${t.type}`);const i=URL.createObjectURL(t);this.videoUrl=i,this.file=t,this.emit("file",this.file),this.video.src=i,this.emit("video",this.video)}}start(){if(!this.video.duration)return(t=1e3,new Promise(e=>setTimeout(e,t))).then(()=>this.start());var t;const{width:i,number:n,begin:o,end:s}=this.option,r=this.video.videoHeight/this.video.videoWidth*i;this.option.height=r,this.option.begin=e(o,0,this.video.duration),this.option.end=e(s||this.video.duration,o,this.video.duration),this.errorHandle(this.option.end>this.option.begin,"End time must be greater than the start time"),this.duration=this.option.end-this.option.begin,this.density=n/this.duration,this.errorHandle(this.file&&this.video,"Please select the video file first"),this.errorHandle(!this.processing,"There is currently a task in progress, please wait a moment..."),this.errorHandle(this.density<=1,`The preview density cannot be greater than 1, but got ${this.density}`);const h=this.creatScreenshotDate(),a=this.creatCanvas(),l=a.getContext("2d");this.emit("canvas",a);const d=h.map((t,e)=>()=>new Promise(o=>{this.video.oncanplay=()=>{l.drawImage(this.video,t.x,t.y,i,r),a.toBlob(t=>{this.thumbnailUrl&&URL.revokeObjectURL(this.thumbnailUrl),this.thumbnailUrl=URL.createObjectURL(t),this.emit("update",this.thumbnailUrl,(e+1)/n),this.video.oncanplay=null,o()})},this.video.currentTime=t.time}));return this.processing=!0,(p=d,p.reduce((t,e)=>t.then(e),Promise.resolve())).then(()=>{this.processing=!1,this.emit("done")}).catch(t=>{throw this.processing=!1,this.emit("error",t.message),t});var p}creatScreenshotDate(){const{number:t,width:e,height:i,column:n,begin:o}=this.option,s=this.duration/t,r=[o+s];for(;r.length<t;){const t=r[r.length-1];r.push(t+s)}return r.map((t,o)=>({time:t-s/2,x:o%n*e,y:Math.floor(o/n)*i}))}creatCanvas(){const{number:t,width:e,height:i,column:n}=this.option,o=document.createElement("canvas"),s=o.getContext("2d");return o.width=e*n,o.height=Math.ceil(t/n)*i+30,s.fillStyle="black",s.fillRect(0,0,o.width,o.height),s.font="14px Georgia",s.fillStyle="#fff",s.fillText(`From: https://artplayer.org/, Number: ${t}, Width: ${e}, Height: ${i}, Column: ${n}`,10,o.height-11),o}download(){this.errorHandle(this.file&&this.thumbnailUrl,"Download does not seem to be ready, please create previeLine truncated
+259 -2
View File
@@ -1,8 +1,265 @@
/*!
* artplayer-tool-thumbnail.js v4.3.12
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,i,r,o){var n="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof n[r]&&n[r],l=s.i||{},a=s.cache||{},h="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,i){if(!a[t]){if(!e[t]){if(o[t])return o[t];var l="function"==typeof n[r]&&n[r];if(!i&&l)return l(t,!0);if(s)return s(t,!0);if(h&&"string"==typeof t)return h(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}c.resolve=function(i){var r=e[t][1][i];return null!=r?r:i},c.cache={};var p=a[t]=new u.Module(t);e[t][0].call(p.exports,c,p,p.exports,n)}return a[t].exports;function c(e){var t=c.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var i={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],o=e[2]||e[0],n=u(r);"*"===t?Object.keys(n).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(i,e)||Object.defineProperty(i,e,{enumerable:!0,get:function(){return n[e]}})}):"*"===o?Object.defineProperty(i,t,{enumerable:!0,value:n}):Object.defineProperty(i,t,{enumerable:!0,get:function(){return"default"===o?n.__esModule?n.default:n:n[o]}})}),i}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=h,this.exports={}},u.modules=e,u.cache=a,u.parent=s,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=l,u.register=function(t,i){e[t]=[function(e,t){t.exports=i},{}]},Object.defineProperty(u,"root",{get:function(){return n[r]}}),n[r]=u;for(var d=0;d<t.length;d++)u(t[d]);if(i){var p=u(i);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"81Ebp":[function(e,t,i,r){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(i);var n=e("./emitter"),s=o.interopDefault(n),l=e("./utils");class a extends s.default{constructor(e={}){super(),this.processing=!1,this.option={},this.setup(Object.assign({},a.DEFAULTS,e)),this.video=a.creatVideo(),this.duration=0,this.inputChange=this.inputChange.bind(this),this.ondrop=this.ondrop.bind(this),this.option.fileInput.addEventListener("change",this.inputChange),this.option.fileInput.addEventListener("dragover",a.ondragover),this.option.fileInput.addEventListener("drop",a.ondrop)}static get DEFAULTS(){return{number:60,width:160,height:90,column:10,begin:0,end:NaN}}static ondragover(e){e.preventDefault()}ondrop(e){e.preventDefault();let t=e.dataTransfer.files[0];this.loadVideo(t)}setup(e={}){this.option=Object.assign({},this.option,e);let{fileInput:t,number:i,width:r,column:o}=this.option;if(this.errorHandle(t instanceof Element,"The 'fileInput' is not a Element"),"INPUT"!==t.tagName||"file"!==t.type){t.style.position="relative";let e=document.createElement("input");e.type="file",e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.left="0",e.style.top="0",e.style.right="0",e.style.bottom="0",e.style.opacity="0",t.appendChild(e),this.option.fileInput=e}return["number","width","column","begin","end"].forEach(e=>{this.errorHandle("number"==typeof this.option[e],`The '${e}' is not a number`)}),this.option.number=(0,l.clamp)(i,10,1e3),this.option.width=(0,l.clamp)(r,10,1e3),this.option.column=(0,l.clamp)(o,1,1e3),this}static creatVideo(){let e=document.createElement("video");return e.style.position="absolute",e.style.top="-9999px",e.style.left="-9999px",e.muted=!0,e.controls=!0,document.body.appendChild(e),e}inputChange(e){let t=this.option.fileInput.files[0];this.loadVideo(t),e.target.value=""}loadVideo(e){if(e){let t=this.video.canPlayType(e.type);this.errorHandle("maybe"===t||"probably"===t,`Playback of this file format is not supported: ${e.type}`);let i=URL.createObjectURL(e);this.videoUrl=i,this.file=e,this.emit("file",this.file),this.video.src=i,this.emit("video",this.video)}}start(){if(!this.video.duration)return(0,l.sleep)(1e3).then(()=>this.start());let{width:e,number:t,begin:i,end:r}=this.option,o=this.video.videoHeight/this.video.videoWidth*e;this.option.height=o,this.option.begin=(0,l.clamp)(i,0,this.video.duration),this.option.end=(0,l.clamp)(r||this.video.duration,i,this.video.duration),this.errorHandle(this.option.end>this.option.begin,"End time must be greater than the start time"),this.duration=this.option.end-this.option.begin,this.density=t/this.duration,this.errorHandle(this.file&&this.video,"Please select the video file first"),this.errorHandle(!this.processing,"There is currently a task in progress, please wait a moment..."),this.errorHandle(this.density<=1,`The preview density cannot be greater than 1, but got ${this.density}`);let n=this.creatScreenshotDate(),s=this.creatCanvas(),a=s.getContext("2d");this.emit("canvas",s);let h=n.map((i,r)=>()=>new Promise(n=>{this.video.oncanplay=()=>{a.drawImage(this.video,i.x,i.y,e,o),s.toBlob(e=>{this.thumbnailUrl&&URL.revokeObjectURL(this.thumbnailUrl),this.thumbnailUrl=URL.createObjectURL(e),this.emit("update",thLine truncated
class Emitter {
on(name, fn, ctx) {
const e = this.e || (this.e = {});
(e[name] || (e[name] = [])).push({ fn, ctx });
return this;
}
once(name, fn, ctx) {
const self = this;
function listener(...args) {
self.off(name, listener);
fn.apply(ctx, args);
}
listener._ = fn;
return this.on(name, listener, ctx);
}
emit(name, ...data) {
const evtArr = ((this.e || (this.e = {}))[name] || []).slice();
for (let i = 0; i < evtArr.length; i += 1) {
evtArr[i].fn.apply(evtArr[i].ctx, data);
}
return this;
}
off(name, callback) {
const e = this.e || (this.e = {});
const evts = e[name];
const liveEvents = [];
if (evts && callback) {
for (let i = 0, len = evts.length; i < len; i += 1) {
if (evts[i].fn !== callback && evts[i].fn._ !== callback)
liveEvents.push(evts[i]);
}
}
if (liveEvents.length) {
e[name] = liveEvents;
} else {
delete e[name];
}
return this;
}
}
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function runPromisesInSeries(ps) {
return ps.reduce((p, next) => p.then(next), Promise.resolve());
}
function getFileName(name) {
const nameArray = name.split(".");
nameArray.pop();
return nameArray.join(".");
}
function clamp(num, a, b) {
return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));
}
class ArtplayerToolThumbnail extends Emitter {
constructor(option = {}) {
super();
this.processing = false;
this.option = {};
this.setup(Object.assign({}, ArtplayerToolThumbnail.DEFAULTS, option));
this.video = ArtplayerToolThumbnail.creatVideo();
this.duration = 0;
this.inputChange = this.inputChange.bind(this);
this.ondrop = this.ondrop.bind(this);
this.option.fileInput.addEventListener("change", this.inputChange);
this.option.fileInput.addEventListener("dragover", ArtplayerToolThumbnail.ondragover);
this.option.fileInput.addEventListener("drop", ArtplayerToolThumbnail.ondrop);
}
static get DEFAULTS() {
return {
number: 60,
width: 160,
height: 90,
column: 10,
begin: 0,
end: Number.NaN
};
}
static ondragover(event) {
event.preventDefault();
}
ondrop(event) {
event.preventDefault();
const file = event.dataTransfer.files[0];
this.loadVideo(file);
}
setup(option = {}) {
this.option = Object.assign({}, this.option, option);
const { fileInput, number, width, column } = this.option;
this.errorHandle(fileInput instanceof Element, "The 'fileInput' is not a Element");
if (!(fileInput.tagName === "INPUT" && fileInput.type === "file")) {
fileInput.style.position = "relative";
const newFileInput = document.createElement("input");
newFileInput.type = "file";
newFileInput.style.position = "absolute";
newFileInput.style.width = "100%";
newFileInput.style.height = "100%";
newFileInput.style.left = "0";
newFileInput.style.top = "0";
newFileInput.style.right = "0";
newFileInput.style.bottom = "0";
newFileInput.style.opacity = "0";
fileInput.appendChild(newFileInput);
this.option.fileInput = newFileInput;
}
["number", "width", "column", "begin", "end"].forEach((item) => {
this.errorHandle(typeof this.option[item] === "number", `The '${item}' is not a number`);
});
this.option.number = clamp(number, 10, 1e3);
this.option.width = clamp(width, 10, 1e3);
this.option.column = clamp(column, 1, 1e3);
return this;
}
static creatVideo() {
const video = document.createElement("video");
video.style.position = "absolute";
video.style.top = "-9999px";
video.style.left = "-9999px";
video.muted = true;
video.controls = true;
document.body.appendChild(video);
return video;
}
inputChange(event) {
const file = this.option.fileInput.files[0];
this.loadVideo(file);
event.target.value = "";
}
loadVideo(file) {
if (file) {
const canPlayType = this.video.canPlayType(file.type);
this.errorHandle(
canPlayType === "maybe" || canPlayType === "probably",
`Playback of this file format is not supported: ${file.type}`
);
const videoUrl = URL.createObjectURL(file);
this.videoUrl = videoUrl;
this.file = file;
this.emit("file", this.file);
this.video.src = videoUrl;
this.emit("video", this.video);
}
}
start() {
if (!this.video.duration)
return sleep(1e3).then(() => this.start());
const { width, number, begin, end } = this.option;
const height = this.video.videoHeight / this.video.videoWidth * width;
this.option.height = height;
this.option.begin = clamp(begin, 0, this.video.duration);
this.option.end = clamp(end || this.video.duration, begin, this.video.duration);
this.errorHandle(this.option.end > this.option.begin, `End time must be greater than the start time`);
this.duration = this.option.end - this.option.begin;
this.density = number / this.duration;
this.errorHandle(this.file && this.video, "Please select the video file first");
this.errorHandle(!this.processing, "There is currently a task in progress, please wait a moment...");
this.errorHandle(this.density <= 1, `The preview density cannot be greater than 1, but got ${this.density}`);
const screenshotDate = this.creatScreenshotDate();
const canvas = this.creatCanvas();
const context2D = canvas.getContext("2d");
this.emit("canvas", canvas);
const promiseList = screenshotDate.map((item, index) => () => {
return new Promise((resolve) => {
this.video.oncanplay = () => {
context2D.drawImage(this.video, item.x, item.y, width, height);
canvas.toBlob((blob) => {
if (this.thumbnailUrl) {
URL.revokeObjectURL(this.thumbnailUrl);
}
this.thumbnailUrl = URL.createObjectURL(blob);
this.emit("update", this.thumbnailUrl, (index + 1) / number);
this.video.oncanplay = null;
resolve();
});
};
this.video.currentTime = item.time;
});
});
this.processing = true;
return runPromisesInSeries(promiseList).then(() => {
this.processing = false;
this.emit("done");
}).catch((err) => {
this.processing = false;
this.emit("error", err.message);
throw err;
});
}
creatScreenshotDate() {
const { number, width, height, column, begin } = this.option;
const timeGap = this.duration / number;
const timePoints = [begin + timeGap];
while (timePoints.length < number) {
const last = timePoints[timePoints.length - 1];
timePoints.push(last + timeGap);
}
return timePoints.map((item, index) => ({
time: item - timeGap / 2,
x: index % column * width,
y: Math.floor(index / column) * height
}));
}
creatCanvas() {
const { number, width, height, column } = this.option;
const canvas = document.createElement("canvas");
const context2D = canvas.getContext("2d");
canvas.width = width * column;
canvas.height = Math.ceil(number / column) * height + 30;
context2D.fillStyle = "black";
context2D.fillRect(0, 0, canvas.width, canvas.height);
context2D.font = "14px Georgia";
context2D.fillStyle = "#fff";
context2D.fillText(
`From: https://artplayer.org/, Number: ${number}, Width: ${width}, Height: ${height}, Column: ${column}`,
10,
canvas.height - 11
);
return canvas;
}
download() {
this.errorHandle(
this.file && this.thumbnailUrl,
"Download does not seem to be ready, please create preview first"
);
this.errorHandle(!this.processing, "There is currently a task in progress, please wait a moment...");
const elink = document.createElement("a");
const name = `${getFileName(this.file.name)}.png`;
elink.download = name;
elink.href = this.thumbnailUrl;
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
this.emit("download", name);
return this;
}
errorHandle(condition, msg) {
if (!condition) {
this.emit("error", msg);
throw new Error(msg);
}
}
destroy() {
this.option.fileInput.removeEventListener("change", this.inputChange);
this.option.fileInput.removeEventListener("dragover", ArtplayerToolThumbnail.ondragover);
this.option.fileInput.removeEventListener("drop", ArtplayerToolThumbnail.ondrop);
document.body.removeChild(this.video);
if (this.videoUrl) {
URL.revokeObjectURL(this.videoUrl);
}
if (this.thumbnailUrl) {
URL.revokeObjectURL(this.thumbnailUrl);
}
this.emit("destroy");
}
}
window.ArtplayerToolThumbnail = ArtplayerToolThumbnail;
export {
ArtplayerToolThumbnail as default
};
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer.js v5.3.1-beta.1
* artplayer.js v5.3.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,a,o){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},n="function"==typeof i[a]&&i[a],s=n.i||{},l=n.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(t,r){if(!l[t]){if(!e[t]){if(o[t])return o[t];var s="function"==typeof i[a]&&i[a];if(!r&&s)return s(t,!0);if(n)return n(t,!0);if(c&&"string"==typeof t)return c(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}f.resolve=function(r){var a=e[t][1][r];return null!=a?a:r},f.cache={};var u=l[t]=new p.Module(t);e[t][0].call(u.exports,f,u,u.exports,i)}return l[t].exports;function f(e){var t=f.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],a=e[1],o=e[2]||e[0],i=p(a);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:i}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?i.__esModule?i.default:i:i[o]}})}),r}return p(t)}}p.isParcelRequire=!0,p.Module=function(e){this.id=e,this.bundle=p,this.require=c,this.exports={}},p.modules=e,p.cache=l,p.parent=n,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=s,p.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(p,"root",{get:function(){return i[a]}}),i[a]=p;for(var d=0;d<t.length;d++)p(t[d]);if(r){var u=p(r);"object"==typeof exports&&"u">typeof module?module.exports=u:"function"==typeof define&&define.amd&&define(function(){return u})}}({"9IAQF":[function(e,t,r,a){var o=e("@parcel/transformer-js/src/esmodule-helpers.js");o.defineInteropFlag(r);var i=e("bundle-text:./style/index.less"),n=o.interopDefault(i),s=e("option-validator"),l=o.interopDefault(s),c=e("../package.json"),p=e("./config"),d=o.interopDefault(p),u=e("./contextmenu"),f=o.interopDefault(u),h=e("./control"),m=o.interopDefault(h),g=e("./events"),v=o.interopDefault(g),y=e("./hotkey"),b=o.interopDefault(y),x=e("./i18n"),w=o.interopDefault(x),k=e("./icons"),j=o.interopDefault(k),$=e("./info"),S=o.interopDefault($),E=e("./layer"),I=o.interopDefault(E),M=e("./loading"),T=o.interopDefault(M),C=e("./mask"),F=o.interopDefault(C),D=e("./notice"),A=o.interopDefault(D),R=e("./player"),O=o.interopDefault(R),L=e("./plugins"),P=o.interopDefault(L),Y=e("./scheme"),z=o.interopDefault(Y),_=e("./setting"),H=o.interopDefault(_),V=e("./storage"),N=o.interopDefault(V),q=e("./subtitle"),B=o.interopDefault(q),U=e("./template"),W=o.interopDefault(U),Z=e("./utils"),K=e("./utils/emitter"),G=o.interopDefault(K);let X=0,J=[];class Q extends G.default{constructor(e,t){if(super(),!Z.isBrowser)throw Error("Artplayer can only be used in the browser environment");this.id=++X;const r=Z.mergeDeep(Q.option,e);if(r.container=e.container,this.option=(0,l.default)(r,z.default),this.isLock=!1,this.isReady=!1,this.isFocus=!1,this.isInput=!1,this.isRotate=!1,this.isDestroy=!1,this.template=new(0,W.default)(this),this.events=new(0,v.default)(this),this.storage=new(0,N.default)(this),this.icons=new(0,j.default)(this),this.i18n=new(0,w.default)(this),this.notice=new(0,A.default)(this),this.player=new(0,O.default)(this),this.layers=new(0,I.default)(this),this.controls=new(0,m.default)(this),this.contextmenu=new(0,f.default)(this),this.subtitle=new(0,B.default)(this),this.info=new(0,S.default)(this),this.loading=new(0,T.default)(this),this.hotkey=new(0,b.default)(this),this.mask=new(0,F.default)(this),this.setting=new(0,H.default)(this),this.plugins=new(0,P.default)(this),"function"==typeof t&&this.on("ready",()=>t.call(this,this)),Q.DEBUG){const e=e=>console.log(`[ART.${this.id}] -> ${e}`);e(`Version@${Q.version}`);for(let t=0;t<d.default.events.length;t++)this.on(`video:${d.default.events[t]}`,t=>e(`Event@${t.type}`))}J.push(this)}static get instances(){return J}static get version(){return c.version}static get config(){return d.default}static get utils(){return Z}static get scheme(){return z.default}static get Emitter(){return G.default}static get validator(){return l.default}static get kindOf(){return l.default.kindOf}static get html(){return W.default.html}static get option(){return{id:"",container:"#artplayer",url:"",poster:"",type:"",theme:"#f00",volume:.7,isLive:!1,muted:!1,autoplay:!1,autoSize:!1,autoMini:!1,loop:!1,flip:!1,playbackRate:!1,aspectRatio:!1,screenshot:!1,setting:!1,hotkey:!0,pip:!1,mutex:!0,backdrop:!0,fullscreen:!1,fullscreenWeb:!1,subtitleOffset:!1,miniProgressBar:!1,useSSR:!1,playsInline:!0,lock:!1,gesture:!0,fastForward:!1,autoPlayback:!1,autoOrientation:!1,airplay:!1,proxy:void 0,layers:[],contextmenu:[],controls:[],settings:[],quality:[],highlight:[],plugins:[],thumbnails:{url:"",number:60,column:10,width:0,height:0,scale:1},subtitle:{url:"",type:"",style:{},name:"",escape:!0,encoding:"utf-8",onVttLoad:Line truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e,r={exports:{}};var a=(e||(e=1,r.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var o=t(r);if("boolean"===o)return"boolean";if("string"===o)return"string";if("number"===o)return"number";if("symbol"===o)return"symbol";if("function"===o)return"GeneratorFunction"===a(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(a(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(o=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return o.slice(8,-1).toLowerCase().replace(/\s/g,"")};function a(t){return t.constructor?t.constructor.name:null}function o(t,e){var a=2<arguments.length&&void 0!==arguments[2]?arguments[2]:["option"];return n(t,e,a),i(t,e,a),function(t,e,a){var s=r(e),l=r(t);if("object"===s){if("object"!==l)throw new Error("[Type Error]: '".concat(a.join("."),"' require 'object' type, but got '").concat(l,"'"));Object.keys(e).forEach(function(r){var s=t[r],l=e[r],c=a.slice();c.push(r),n(s,l,c),i(s,l,c),o(s,l,c)})}if("array"===s){if("array"!==l)throw new Error("[Type Error]: '".concat(a.join("."),"' require 'array' type, but got '").concat(l,"'"));t.forEach(function(r,s){var l=t[s],c=e[s]||e[0],d=a.slice();d.push(s),n(l,c,d),i(l,c,d),o(l,c,d)})}}(t,e,a),t}function n(t,e,a){if("string"===r(e)){var o=r(t);if("?"===e[0]&&(e=e.slice(1)+"|undefined"),!(-1<e.indexOf("|")?e.split("|").map(function(t){return t.toLowerCase().trim()}).filter(Boolean).some(function(t){return o===t}):e.toLowerCase().trim()===o))throw new Error("[Type Error]: '".concat(a.join("."),"' require '").concat(e,"' type, but got '").concat(o,"'"))}}function i(t,e,a){if("function"===r(e)){var o=e(t,r(t),a);if(!0!==o){var n=r(o);throw"string"===n?new Error(o):"error"===n?o:new Error("[Validator Error]: The scheme for '".concat(a.join("."),"' validator require return true, but got '").concat(o,"'"))}}}return o.kindOf=r,o}()),r.exports);const o=t(a),n="5.3.1",i={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"],prototypes:["width","height","videoWidth","videoHeight","poster","webkitDecodedFrameCount","webkitDroppedFrameCount","playsInline","webLine truncated
+2 -3
View File
@@ -1,8 +1,7 @@
/*!
* artplayer.js v5.3.1-beta.1
* artplayer.js v5.3.1
* Github: https://github.com/zhw2590582/ArtPlayer
* (c) 2017-2026 Harvey Zhao
* Released under the MIT License.
*/
!function(e,t,r,n,a){var o="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},s="function"==typeof o[n]&&o[n],i=s.i||{},l=s.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function u(t,r){if(!l[t]){if(!e[t]){if(a[t])return a[t];var i="function"==typeof o[n]&&o[n];if(!r&&i)return i(t,!0);if(s)return s(t,!0);if(c&&"string"==typeof t)return c(t);var p=Error("Cannot find module '"+t+"'");throw p.code="MODULE_NOT_FOUND",p}d.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},d.cache={};var f=l[t]=new u.Module(t);e[t][0].call(f.exports,d,f,f.exports,o)}return l[t].exports;function d(e){var t=d.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],a=e[2]||e[0],o=u(n);"*"===t?Object.keys(o).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return o[e]}})}):"*"===a?Object.defineProperty(r,t,{enumerable:!0,value:o}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===a?o.__esModule?o.default:o:o[a]}})}),r}return u(t)}}u.isParcelRequire=!0,u.Module=function(e){this.id=e,this.bundle=u,this.require=c,this.exports={}},u.modules=e,u.cache=l,u.parent=s,u.distDir=void 0,u.publicUrl=void 0,u.devServer=void 0,u.i=i,u.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(u,"root",{get:function(){return o[n]}}),o[n]=u;for(var p=0;p<t.length;p++)u(t[p]);if(r){var f=u(r);"object"==typeof exports&&"u">typeof module?module.exports=f:"function"==typeof define&&define.amd&&define(function(){return f})}}({ee4D8:[function(e,t,r,n){var a=e("@parcel/transformer-js/src/esmodule-helpers.js");a.defineInteropFlag(r),a.export(r,"default",function(){return en});var o=e("@swc/helpers/cjs/_call_super.cjs"),s=e("@swc/helpers/cjs/_class_call_check.cjs"),i=e("@swc/helpers/cjs/_create_class.cjs"),l=e("@swc/helpers/cjs/_inherits.cjs"),c=e("bundle-text:./style/index.less"),u=a.interopDefault(c),p=e("option-validator"),f=a.interopDefault(p),d=e("../package.json"),h=e("./config"),m=a.interopDefault(h),v=e("./contextmenu"),g=a.interopDefault(v),y=e("./control"),b=a.interopDefault(y),j=e("./events"),w=a.interopDefault(j),_=e("./hotkey"),x=a.interopDefault(_),k=e("./i18n"),M=a.interopDefault(k),S=e("./icons"),E=a.interopDefault(S),I=e("./info"),T=a.interopDefault(I),C=e("./layer"),L=a.interopDefault(C),F=e("./loading"),D=a.interopDefault(F),O=e("./mask"),A=a.interopDefault(O),q=e("./notice"),$=a.interopDefault(q),R=e("./player"),P=a.interopDefault(R),H=e("./plugins"),z=a.interopDefault(H),V=e("./scheme"),N=a.interopDefault(V),U=e("./setting"),B=a.interopDefault(U),W=e("./storage"),Q=a.interopDefault(W),Y=e("./subtitle"),G=a.interopDefault(Y),Z=e("./template"),X=a.interopDefault(Z),K=e("./utils"),J=e("./utils/emitter"),ee=a.interopDefault(J),et=0,er=[],en=function(e){"use strict";function t(e,r){if((0,s._)(this,t),n=(0,o._)(this,t),!K.isBrowser)throw Error("Artplayer can only be used in the browser environment");n.id=++et;var n,a=K.mergeDeep(t.option,e);if(a.container=e.container,n.option=(0,f.default)(a,N.default),n.isLock=!1,n.isReady=!1,n.isFocus=!1,n.isInput=!1,n.isRotate=!1,n.isDestroy=!1,n.template=new(0,X.default)(n),n.events=new(0,w.default)(n),n.storage=new(0,Q.default)(n),n.icons=new(0,E.default)(n),n.i18n=new(0,M.default)(n),n.notice=new(0,$.default)(n),n.player=new(0,P.default)(n),n.layers=new(0,L.default)(n),n.controls=new(0,b.default)(n),n.contextmenu=new(0,g.default)(n),n.subtitle=new(0,G.default)(n),n.info=new(0,T.default)(n),n.loading=new(0,D.default)(n),n.hotkey=new(0,x.default)(n),n.mask=new(0,A.default)(n),n.setting=new(0,B.default)(n),n.plugins=new(0,z.default)(n),"function"==typeof r&&n.on("ready",function(){return r.call(n,n)}),t.DEBUG){var i=function(e){return console.log("[ART.".concat(n.id,"] -> ").concat(e))};i("Version@".concat(t.version));for(var l=0;l<m.default.events.length;l++)n.on("video:".concat(m.default.events[l]),function(e){return i("Event@".concat(e.type))})}return er.push(n),n}return(0,l._)(t,e),(0,i._)(t,[{key:"proxy",get:function(){return this.events.proxy}},{key:"query",get:function(){return this.template.query}},{key:"video",get:function(){return this.template.$video}},{key:"reset",value:function(){this.video.removeAttribute("src"),this.video.load()}},{key:"destroy",value:function(){var e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];t.REMOVE_SRC_WHEN_DESTROY&&this.reset(),this.events.destroy(),this.template.destroy(e),er.splice(er.indexOf(this),1),this.isDestroy=!0,this.emit("destroy")}}],[{key:"instances",get:function(){return er}},{key:"version",get:function(){return d.version}},{key:"config",get:function(){return m.default}},{key:"utils",get:function(){return K}},{key:"scheme",get:function(){return N.default}},{key:"Emitter",get:function(){return ee.default}},{key:"validator",Line truncated
!function(t,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"==typeof define&&define.amd?(t.Artplayer=e(),define(function(){return t.Artplayer})):(t="undefined"!==typeof globalThis?globalThis:t||self).Artplayer=e()}(this,function(){"use strict";var t,e=Object.defineProperty,r=Object.defineProperties,o=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable,s=(t,r,o)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[r]=o,l=(t,e)=>{for(var r in e||(e={}))n.call(e,r)&&s(t,r,e[r]);if(a)for(var r of a(e))i.call(e,r)&&s(t,r,e[r]);return t},c=(t,e)=>r(t,o(e)),d=(t,e,r)=>new Promise((o,a)=>{var n=t=>{try{s(r.next(t))}catch(e){a(e)}},i=t=>{try{s(r.throw(t))}catch(e){a(e)}},s=t=>t.done?o(t.value):Promise.resolve(t.value).then(n,i);s((r=r.apply(t,e)).next())});function p(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var h,u={exports:{}};var m=(h||(h=1,u.exports=function(){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}var e=Object.prototype.toString,r=function(r){if(void 0===r)return"undefined";if(null===r)return"null";var a=t(r);if("boolean"===a)return"boolean";if("string"===a)return"string";if("number"===a)return"number";if("symbol"===a)return"symbol";if("function"===a)return"GeneratorFunction"===o(r)?"generatorfunction":"function";if(function(t){return Array.isArray?Array.isArray(t):t instanceof Array}(r))return"array";if(function(t){return!(!t.constructor||"function"!=typeof t.constructor.isBuffer)&&t.constructor.isBuffer(t)}(r))return"buffer";if(function(t){try{if("number"==typeof t.length&&"function"==typeof t.callee)return!0}catch(e){if(-1!==e.message.indexOf("callee"))return!0}return!1}(r))return"arguments";if(function(t){return t instanceof Date||"function"==typeof t.toDateString&&"function"==typeof t.getDate&&"function"==typeof t.setDate}(r))return"date";if(function(t){return t instanceof Error||"string"==typeof t.message&&t.constructor&&"number"==typeof t.constructor.stackTraceLimit}(r))return"error";if(function(t){return t instanceof RegExp||"string"==typeof t.flags&&"boolean"==typeof t.ignoreCase&&"boolean"==typeof t.multiline&&"boolean"==typeof t.global}(r))return"regexp";switch(o(r)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(t){return"function"==typeof t.throw&&"function"==typeof t.return&&"function"==typeof t.next}(r))return"generator";switch(a=e.call(r)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return a.slice(8,-1).toLowerCase().replace(/\s/g,"")};function o(t){return t.constructor?t.constructor.name:null}function a(t,e){var o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:["option"];return n(t,e,o),i(t,e,o),function(t,e,o){var s=r(e),l=r(t);if("object"===s){if("object"!==l)throw new Error("[Type Error]: '".concat(o.join("."),"' require 'object' type, but got '").concat(l,"'"));Object.keys(e).forEach(function(r){var s=t[r],l=e[r],c=o.slice();c.push(r),n(s,l,c),i(s,l,c),a(s,l,c)})}if("array"===s){if("array"!==l)throw new Error("[Type Error]: '".concat(o.join("."),"' require 'array' type, but got '").concat(l,"'"));t.forEach(function(r,s){var l=t[s],c=e[s]||e[0],d=o.slice();d.push(s),n(l,c,d),i(l,c,d),a(l,c,d)})}}(t,e,o),t}function n(t,e,o){if("string"===r(e)){var a=r(t);if("?"===e[0]&&(e=e.slice(1)+"|undefined"),!(-1<e.indexOf("|")?e.split("|").map(function(t){return t.toLowerCase().trim()}).filter(Boolean).some(function(t){return a===t}):e.toLowerCase().trim()===a))throw new Error("[Type Error]: '".concat(o.join("."),"' require '").concat(e,"' type, but got '").concat(a,"'"))}}function i(t,e,o){if("function"===r(e)){var a=e(t,r(t),o);if(!0!==a){var n=r(a);throw"string"===n?new Error(a):"error"===n?a:new Error("[Validator Error]: The scheme for '".concat(o.join("."),"' validator require return true, but got '").concat(a,"'"))}}}return a.kindOf=r,a}()),u.exports);const f=p(m),g="5.3.1",v={properties:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","meLine truncated
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -1 +1 @@
!function(e,t,r,o,n){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},u="function"==typeof i[o]&&i[o],l=u.i||{},f=u.cache||{},a="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!f[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof i[o]&&i[o];if(!r&&l)return l(t,!0);if(u)return u(t,!0);if(a&&"string"==typeof t)return a(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},p.cache={};var s=f[t]=new c.Module(t);e[t][0].call(s.exports,p,s,s.exports,i)}return f[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],i=c(o);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:i}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?i.__esModule?i.default:i:i[n]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=a,this.exports={}},c.modules=e,c.cache=f,c.parent=u,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return i[o]}}),i[o]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var s=c(r);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({kSJYW:[function(e,t,r,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let n={"Video Info":"معلومات الفيديو",Close:"إغلاق","Video Load Failed":"فشل تحميل الفيديو",Volume:"الصوت",Play:"تشغيل",Pause:"إيقاف مؤقت",Rate:"السرعة",Mute:"كتم الصوت","Video Flip":"تدوير الفيديو",Horizontal:"أفقي",Vertical:"عمودي",Reconnect:"إعادة الاتصال","Show Setting":"إظهار الإعدادات","Hide Setting":"إخفاء الإعدادات",Screenshot:"لقطة شاشة","Play Speed":"سرعة التشغيل","Aspect Ratio":"نسبة العرض إلى الارتفاع",Default:"افتراضي",Normal:"عادي",Open:"فتح","Switch Video":"تبديل الفيديو","Switch Subtitle":"تبديل الترجمة",Fullscreen:"وضع ملء الشاشة","Exit Fullscreen":"الخروج من وضع ملء الشاشة","Web Fullscreen":"وضع ملء الشاشة في المتصفح","Exit Web Fullscreen":"الخروج من وضع ملء الشاشة في المتصفح","Mini Player":"مشغل صغير","PIP Mode":"الوضع العائم","Exit PIP Mode":"الخروج من الوضع العائم","PIP Not Supported":"الوضع العائم غير مدعوم","Fullscreen Not Supported":"وضع ملء الشاشة غير مدعوم","Subtitle Offset":"إزاحة الترجمة","Last Seen":"آخر مشاهدة","Jump Play":"التشغيل القافز",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay غير متاح"};r.default=n,"u">typeof window&&(window["artplayer-i18n-ar"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"8BZVg"}],"8BZVg":[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["kSJYW"],"kSJYW","parcelRequire4dc0",{});
(function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nAr=t())})(this,(function(){"use strict";const e={"Video Info":"معلومات الفيديو",Close:"إغلاق","Video Load Failed":"فشل تحميل الفيديو",Volume:"الصوت",Play:"تشغيل",Pause:"إيقاف مؤقت",Rate:"السرعة",Mute:"كتم الصوت","Video Flip":"تدوير الفيديو",Horizontal:"أفقي",Vertical:"عمودي",Reconnect:"إعادة الاتصال","Show Setting":"إظهار الإعدادات","Hide Setting":"إخفاء الإعدادات",Screenshot:"لقطة شاشة","Play Speed":"سرعة التشغيل","Aspect Ratio":"نسبة العرض إلى الارتفاع",Default:"افتراضي",Normal:"عادي",Open:"فتح","Switch Video":"تبديل الفيديو","Switch Subtitle":"تبديل الترجمة",Fullscreen:"وضع ملء الشاشة","Exit Fullscreen":"الخروج من وضع ملء الشاشة","Web Fullscreen":"وضع ملء الشاشة في المتصفح","Exit Web Fullscreen":"الخروج من وضع ملء الشاشة في المتصفح","Mini Player":"مشغل صغير","PIP Mode":"الوضع العائم","Exit PIP Mode":"الخروج من الوضع العائم","PIP Not Supported":"الوضع العائم غير مدعوم","Fullscreen Not Supported":"وضع ملء الشاشة غير مدعوم","Subtitle Offset":"إزاحة الترجمة","Last Seen":"آخر مشاهدة","Jump Play":"التشغيل القافز",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay غير متاح"};return typeof window<"u"&&(window["artplayer-i18n-ar"]=e),e}));
+42 -1
View File
@@ -1 +1,42 @@
!function(e,t,r,o,n){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[o]&&u[o],l=i.i||{},f=i.cache||{},a="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!f[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof u[o]&&u[o];if(!r&&l)return l(t,!0);if(i)return i(t,!0);if(a&&"string"==typeof t)return a(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},s.cache={};var p=f[t]=new c.Module(t);e[t][0].call(p.exports,s,p,p.exports,u)}return f[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],u=c(o);"*"===t?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:u}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?u.__esModule?u.default:u:u[n]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=a,this.exports={}},c.modules=e,c.cache=f,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return u[o]}}),u[o]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var p=c(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"4MZIb":[function(e,t,r,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let n={"Video Info":"معلومات الفيديو",Close:"إغلاق","Video Load Failed":"فشل تحميل الفيديو",Volume:"الصوت",Play:"تشغيل",Pause:"إيقاف مؤقت",Rate:"السرعة",Mute:"كتم الصوت","Video Flip":"تدوير الفيديو",Horizontal:"أفقي",Vertical:"عمودي",Reconnect:"إعادة الاتصال","Show Setting":"إظهار الإعدادات","Hide Setting":"إخفاء الإعدادات",Screenshot:"لقطة شاشة","Play Speed":"سرعة التشغيل","Aspect Ratio":"نسبة العرض إلى الارتفاع",Default:"افتراضي",Normal:"عادي",Open:"فتح","Switch Video":"تبديل الفيديو","Switch Subtitle":"تبديل الترجمة",Fullscreen:"وضع ملء الشاشة","Exit Fullscreen":"الخروج من وضع ملء الشاشة","Web Fullscreen":"وضع ملء الشاشة في المتصفح","Exit Web Fullscreen":"الخروج من وضع ملء الشاشة في المتصفح","Mini Player":"مشغل صغير","PIP Mode":"الوضع العائم","Exit PIP Mode":"الخروج من الوضع العائم","PIP Not Supported":"الوضع العائم غير مدعوم","Fullscreen Not Supported":"وضع ملء الشاشة غير مدعوم","Subtitle Offset":"إزاحة الترجمة","Last Seen":"آخر مشاهدة","Jump Play":"التشغيل القافز",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay غير متاح"};r.default=n,"u">typeof window&&(window["artplayer-i18n-ar"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"60D0X"}],"60D0X":[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["4MZIb"],"4MZIb","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("4MZIb");export{e as default};
const e = {
"Video Info": "معلومات الفيديو",
Close: "إغلاق",
"Video Load Failed": "فشل تحميل الفيديو",
Volume: "الصوت",
Play: "تشغيل",
Pause: "إيقاف مؤقت",
Rate: "السرعة",
Mute: "كتم الصوت",
"Video Flip": "تدوير الفيديو",
Horizontal: "أفقي",
Vertical: "عمودي",
Reconnect: "إعادة الاتصال",
"Show Setting": "إظهار الإعدادات",
"Hide Setting": "إخفاء الإعدادات",
Screenshot: "لقطة شاشة",
"Play Speed": "سرعة التشغيل",
"Aspect Ratio": "نسبة العرض إلى الارتفاع",
Default: "افتراضي",
Normal: "عادي",
Open: "فتح",
"Switch Video": "تبديل الفيديو",
"Switch Subtitle": "تبديل الترجمة",
Fullscreen: "وضع ملء الشاشة",
"Exit Fullscreen": "الخروج من وضع ملء الشاشة",
"Web Fullscreen": "وضع ملء الشاشة في المتصفح",
"Exit Web Fullscreen": "الخروج من وضع ملء الشاشة في المتصفح",
"Mini Player": "مشغل صغير",
"PIP Mode": "الوضع العائم",
"Exit PIP Mode": "الخروج من الوضع العائم",
"PIP Not Supported": "الوضع العائم غير مدعوم",
"Fullscreen Not Supported": "وضع ملء الشاشة غير مدعوم",
"Subtitle Offset": "إزاحة الترجمة",
"Last Seen": "آخر مشاهدة",
"Jump Play": "التشغيل القافز",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay غير متاح"
};
typeof window < "u" && (window["artplayer-i18n-ar"] = e);
export {
e as default
};
+1 -1
View File
@@ -1 +1 @@
!function(e,t,o,r,n){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof i[r]&&i[r],u=l.i||{},a=l.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,o){if(!a[t]){if(!e[t]){if(n[t])return n[t];var u="function"==typeof i[r]&&i[r];if(!o&&u)return u(t,!0);if(l)return l(t,!0);if(f&&"string"==typeof t)return f(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(o){var r=e[t][1][o];return null!=r?r:o},s.cache={};var p=a[t]=new c.Module(t);e[t][0].call(p.exports,s,p,p.exports,i)}return a[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],n=e[2]||e[0],i=c(r);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===n?Object.defineProperty(o,t,{enumerable:!0,value:i}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===n?i.__esModule?i.default:i:i[n]}})}),o}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=a,c.parent=l,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=u,c.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(c,"root",{get:function(){return i[r]}}),i[r]=c;for(var d=0;d<t.length;d++)c(t[d]);if(o){var p=c(o);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"7tmdp":[function(e,t,o,r){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);let n={"Video Info":"Info o videu",Close:"Zavřít","Video Load Failed":"Nahrání videa selhalo",Volume:"Hlasitost",Play:"Přehrát",Pause:"Pozastavit",Rate:"Hodnocení",Mute:"Ztlumit","Video Flip":"Otočit video",Horizontal:"Horizontálně",Vertical:"Vertikálně",Reconnect:"Opětovné připojení","Show Setting":"Zobrazit nastavení","Hide Setting":"Skrýt nastavení",Screenshot:"Snímek obrazovky","Play Speed":"Rychlost přehrávání","Aspect Ratio":"Poměr stran",Default:"Výchozí",Normal:"Normální",Open:"Otevřít","Switch Video":"Přepnout video","Switch Subtitle":"Přepnout titulky",Fullscreen:"Celá obrazovka","Exit Fullscreen":"Opustit režim celé obrazovky","Web Fullscreen":"Celá stránka","Exit Web Fullscreen":"Zavřít režim celé stránky","Mini Player":"Mini přehrávač","PIP Mode":"Režim PIP","Exit PIP Mode":"Opustit režim PIP","PIP Not Supported":"Režim PIP není podporován","Fullscreen Not Supported":"Režim celé obrazovky není podporován","Subtitle Offset":"Posun titulků","Last Seen":"Naposledy viděn","Jump Play":"Hra na skok",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay není k dispozici"};o.default=n,"u">typeof window&&(window["artplayer-i18n-cs"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"8BZVg"}],"8BZVg":[function(e,t,o,r){o.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},o.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.exportAll=function(e,t){return Object.keys(e).forEach(function(o){"default"===o||"__esModule"===o||Object.prototype.hasOwnProperty.call(t,o)||Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[o]}})}),t},o.export=function(e,t,o){Object.defineProperty(e,t,{enumerable:!0,get:o})}},{}]},["7tmdp"],"7tmdp","parcelRequire4dc0",{});
(function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nCs=t())})(this,(function(){"use strict";const e={"Video Info":"Info o videu",Close:"Zavřít","Video Load Failed":"Nahrání videa selhalo",Volume:"Hlasitost",Play:"Přehrát",Pause:"Pozastavit",Rate:"Hodnocení",Mute:"Ztlumit","Video Flip":"Otočit video",Horizontal:"Horizontálně",Vertical:"Vertikálně",Reconnect:"Opětovné připojení","Show Setting":"Zobrazit nastavení","Hide Setting":"Skrýt nastavení",Screenshot:"Snímek obrazovky","Play Speed":"Rychlost přehrávání","Aspect Ratio":"Poměr stran",Default:"Výchozí",Normal:"Normální",Open:"Otevřít","Switch Video":"Přepnout video","Switch Subtitle":"Přepnout titulky",Fullscreen:"Celá obrazovka","Exit Fullscreen":"Opustit režim celé obrazovky","Web Fullscreen":"Celá stránka","Exit Web Fullscreen":"Zavřít režim celé stránky","Mini Player":"Mini přehrávač","PIP Mode":"Režim PIP","Exit PIP Mode":"Opustit režim PIP","PIP Not Supported":"Režim PIP není podporován","Fullscreen Not Supported":"Režim celé obrazovky není podporován","Subtitle Offset":"Posun titulků","Last Seen":"Naposledy viděn","Jump Play":"Hra na skok",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay není k dispozici"};return typeof window<"u"&&(window["artplayer-i18n-cs"]=e),e}));
+42 -1
View File
@@ -1 +1,42 @@
!function(e,t,o,r,n){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof i[r]&&i[r],u=l.i||{},a=l.cache||{},f="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,o){if(!a[t]){if(!e[t]){if(n[t])return n[t];var u="function"==typeof i[r]&&i[r];if(!o&&u)return u(t,!0);if(l)return l(t,!0);if(f&&"string"==typeof t)return f(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(o){var r=e[t][1][o];return null!=r?r:o},p.cache={};var s=a[t]=new c.Module(t);e[t][0].call(s.exports,p,s,s.exports,i)}return a[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],n=e[2]||e[0],i=c(r);"*"===t?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===n?Object.defineProperty(o,t,{enumerable:!0,value:i}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===n?i.__esModule?i.default:i:i[n]}})}),o}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=f,this.exports={}},c.modules=e,c.cache=a,c.parent=l,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=u,c.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(c,"root",{get:function(){return i[r]}}),i[r]=c;for(var d=0;d<t.length;d++)c(t[d]);if(o){var s=c(o);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({bIMxP:[function(e,t,o,r){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);let n={"Video Info":"Info o videu",Close:"Zavřít","Video Load Failed":"Nahrání videa selhalo",Volume:"Hlasitost",Play:"Přehrát",Pause:"Pozastavit",Rate:"Hodnocení",Mute:"Ztlumit","Video Flip":"Otočit video",Horizontal:"Horizontálně",Vertical:"Vertikálně",Reconnect:"Opětovné připojení","Show Setting":"Zobrazit nastavení","Hide Setting":"Skrýt nastavení",Screenshot:"Snímek obrazovky","Play Speed":"Rychlost přehrávání","Aspect Ratio":"Poměr stran",Default:"Výchozí",Normal:"Normální",Open:"Otevřít","Switch Video":"Přepnout video","Switch Subtitle":"Přepnout titulky",Fullscreen:"Celá obrazovka","Exit Fullscreen":"Opustit režim celé obrazovky","Web Fullscreen":"Celá stránka","Exit Web Fullscreen":"Zavřít režim celé stránky","Mini Player":"Mini přehrávač","PIP Mode":"Režim PIP","Exit PIP Mode":"Opustit režim PIP","PIP Not Supported":"Režim PIP není podporován","Fullscreen Not Supported":"Režim celé obrazovky není podporován","Subtitle Offset":"Posun titulků","Last Seen":"Naposledy viděn","Jump Play":"Hra na skok",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay není k dispozici"};o.default=n,"u">typeof window&&(window["artplayer-i18n-cs"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"60D0X"}],"60D0X":[function(e,t,o,r){o.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},o.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.exportAll=function(e,t){return Object.keys(e).forEach(function(o){"default"===o||"__esModule"===o||Object.prototype.hasOwnProperty.call(t,o)||Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[o]}})}),t},o.export=function(e,t,o){Object.defineProperty(e,t,{enumerable:!0,get:o})}},{}]},["bIMxP"],"bIMxP","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("bIMxP");export{e as default};
const e = {
"Video Info": "Info o videu",
Close: "Zavřít",
"Video Load Failed": "Nahrání videa selhalo",
Volume: "Hlasitost",
Play: "Přehrát",
Pause: "Pozastavit",
Rate: "Hodnocení",
Mute: "Ztlumit",
"Video Flip": "Otočit video",
Horizontal: "Horizontálně",
Vertical: "Vertikálně",
Reconnect: "Opětovné připojení",
"Show Setting": "Zobrazit nastavení",
"Hide Setting": "Skrýt nastavení",
Screenshot: "Snímek obrazovky",
"Play Speed": "Rychlost přehrávání",
"Aspect Ratio": "Poměr stran",
Default: "Výchozí",
Normal: "Normální",
Open: "Otevřít",
"Switch Video": "Přepnout video",
"Switch Subtitle": "Přepnout titulky",
Fullscreen: "Celá obrazovka",
"Exit Fullscreen": "Opustit režim celé obrazovky",
"Web Fullscreen": "Celá stránka",
"Exit Web Fullscreen": "Zavřít režim celé stránky",
"Mini Player": "Mini přehrávač",
"PIP Mode": "Režim PIP",
"Exit PIP Mode": "Opustit režim PIP",
"PIP Not Supported": "Režim PIP není podporován",
"Fullscreen Not Supported": "Režim celé obrazovky není podporován",
"Subtitle Offset": "Posun titulků",
"Last Seen": "Naposledy viděn",
"Jump Play": "Hra na skok",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay není k dispozici"
};
typeof window < "u" && (window["artplayer-i18n-cs"] = e);
export {
e as default
};
+1 -1
View File
@@ -1 +1 @@
!function(e,t,o,r,n){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof l[r]&&l[r],a=i.i||{},u=i.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,o){if(!u[t]){if(!e[t]){if(n[t])return n[t];var a="function"==typeof l[r]&&l[r];if(!o&&a)return a(t,!0);if(i)return i(t,!0);if(c&&"string"==typeof t)return c(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}p.resolve=function(o){var r=e[t][1][o];return null!=r?r:o},p.cache={};var s=u[t]=new d.Module(t);e[t][0].call(s.exports,p,s,s.exports,l)}return u[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var o={__esModule:!0};return t.forEach(function(e){var t=e[0],r=e[1],n=e[2]||e[0],l=d(r);"*"===t?Object.keys(l).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(o,e,{enumerable:!0,get:function(){return l[e]}})}):"*"===n?Object.defineProperty(o,t,{enumerable:!0,value:l}):Object.defineProperty(o,t,{enumerable:!0,get:function(){return"default"===n?l.__esModule?l.default:l:l[n]}})}),o}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=c,this.exports={}},d.modules=e,d.cache=u,d.parent=i,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=a,d.register=function(t,o){e[t]=[function(e,t){t.exports=o},{}]},Object.defineProperty(d,"root",{get:function(){return l[r]}}),l[r]=d;for(var f=0;f<t.length;f++)d(t[f]);if(o){var s=d(o);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({"4Z3J2":[function(e,t,o,r){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(o);let n={"Video Info":"Información del video",Close:"Cerrar","Video Load Failed":"Falló carga de video",Volume:"Volumen",Play:"Reproduciendo",Pause:"Pausa",Rate:"Velocidad",Mute:"Silencio","Video Flip":"Rotar video",Horizontal:"Horizontal",Vertical:"Vertical",Reconnect:"Reconectando","Show Setting":"Mostrar ajustes","Hide Setting":"Ocultar ajustes",Screenshot:"Captura de Pantalla","Play Speed":"Velocidad de reproducción","Aspect Ratio":"Relación de aspecto",Default:"Por defecto",Normal:"Normal",Open:"Abrir","Switch Video":"Cambiar video","Switch Subtitle":"Cambiar subtítulo",Fullscreen:"Pantalla completa","Exit Fullscreen":"Salir de Pantalla completa","Web Fullscreen":"Pantalla completa Web","Exit Web Fullscreen":"Salir de Pantalla completa","Mini Player":"Mini reproductor","PIP Mode":"Modo PiP","Exit PIP Mode":"Cerrar modo PiP","PIP Not Supported":"Modo PiP no compatible","Fullscreen Not Supported":"Pantalla completa no soportada","Subtitle Offset":"Ajuste subtítulo","Last Seen":"Visto última vez","Jump Play":"Saltar",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay no disponible"};o.default=n,"u">typeof window&&(window["artplayer-i18n-es"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"8BZVg"}],"8BZVg":[function(e,t,o,r){o.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},o.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},o.exportAll=function(e,t){return Object.keys(e).forEach(function(o){"default"===o||"__esModule"===o||Object.prototype.hasOwnProperty.call(t,o)||Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[o]}})}),t},o.export=function(e,t,o){Object.defineProperty(e,t,{enumerable:!0,get:o})}},{}]},["4Z3J2"],"4Z3J2","parcelRequire4dc0",{});
(function(e,a){typeof exports=="object"&&typeof module<"u"?module.exports=a():typeof define=="function"&&define.amd?define(a):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nEs=a())})(this,(function(){"use strict";const e={"Video Info":"Información del video",Close:"Cerrar","Video Load Failed":"Falló carga de video",Volume:"Volumen",Play:"Reproduciendo",Pause:"Pausa",Rate:"Velocidad",Mute:"Silencio","Video Flip":"Rotar video",Horizontal:"Horizontal",Vertical:"Vertical",Reconnect:"Reconectando","Show Setting":"Mostrar ajustes","Hide Setting":"Ocultar ajustes",Screenshot:"Captura de Pantalla","Play Speed":"Velocidad de reproducción","Aspect Ratio":"Relación de aspecto",Default:"Por defecto",Normal:"Normal",Open:"Abrir","Switch Video":"Cambiar video","Switch Subtitle":"Cambiar subtítulo",Fullscreen:"Pantalla completa","Exit Fullscreen":"Salir de Pantalla completa","Web Fullscreen":"Pantalla completa Web","Exit Web Fullscreen":"Salir de Pantalla completa","Mini Player":"Mini reproductor","PIP Mode":"Modo PiP","Exit PIP Mode":"Cerrar modo PiP","PIP Not Supported":"Modo PiP no compatible","Fullscreen Not Supported":"Pantalla completa no soportada","Subtitle Offset":"Ajuste subtítulo","Last Seen":"Visto última vez","Jump Play":"Saltar",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay no disponible"};return typeof window<"u"&&(window["artplayer-i18n-es"]=e),e}));
+42 -1
View File
@@ -1 +1,42 @@
!function(e,t,r,o,n){var l="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},a="function"==typeof l[o]&&l[o],i=a.i||{},u=a.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function d(t,r){if(!u[t]){if(!e[t]){if(n[t])return n[t];var i="function"==typeof l[o]&&l[o];if(!r&&i)return i(t,!0);if(a)return a(t,!0);if(c&&"string"==typeof t)return c(t);var f=Error("Cannot find module '"+t+"'");throw f.code="MODULE_NOT_FOUND",f}p.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},p.cache={};var s=u[t]=new d.Module(t);e[t][0].call(s.exports,p,s,s.exports,l)}return u[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],l=d(o);"*"===t?Object.keys(l).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return l[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:l}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?l.__esModule?l.default:l:l[n]}})}),r}return d(t)}}d.isParcelRequire=!0,d.Module=function(e){this.id=e,this.bundle=d,this.require=c,this.exports={}},d.modules=e,d.cache=u,d.parent=a,d.distDir=void 0,d.publicUrl=void 0,d.devServer=void 0,d.i=i,d.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(d,"root",{get:function(){return l[o]}}),l[o]=d;for(var f=0;f<t.length;f++)d(t[f]);if(r){var s=d(r);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({b07y8:[function(e,t,r,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let n={"Video Info":"Información del video",Close:"Cerrar","Video Load Failed":"Falló carga de video",Volume:"Volumen",Play:"Reproduciendo",Pause:"Pausa",Rate:"Velocidad",Mute:"Silencio","Video Flip":"Rotar video",Horizontal:"Horizontal",Vertical:"Vertical",Reconnect:"Reconectando","Show Setting":"Mostrar ajustes","Hide Setting":"Ocultar ajustes",Screenshot:"Captura de Pantalla","Play Speed":"Velocidad de reproducción","Aspect Ratio":"Relación de aspecto",Default:"Por defecto",Normal:"Normal",Open:"Abrir","Switch Video":"Cambiar video","Switch Subtitle":"Cambiar subtítulo",Fullscreen:"Pantalla completa","Exit Fullscreen":"Salir de Pantalla completa","Web Fullscreen":"Pantalla completa Web","Exit Web Fullscreen":"Salir de Pantalla completa","Mini Player":"Mini reproductor","PIP Mode":"Modo PiP","Exit PIP Mode":"Cerrar modo PiP","PIP Not Supported":"Modo PiP no compatible","Fullscreen Not Supported":"Pantalla completa no soportada","Subtitle Offset":"Ajuste subtítulo","Last Seen":"Visto última vez","Jump Play":"Saltar",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay no disponible"};r.default=n,"u">typeof window&&(window["artplayer-i18n-es"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"60D0X"}],"60D0X":[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["b07y8"],"b07y8","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("b07y8");export{e as default};
const e = {
"Video Info": "Información del video",
Close: "Cerrar",
"Video Load Failed": "Falló carga de video",
Volume: "Volumen",
Play: "Reproduciendo",
Pause: "Pausa",
Rate: "Velocidad",
Mute: "Silencio",
"Video Flip": "Rotar video",
Horizontal: "Horizontal",
Vertical: "Vertical",
Reconnect: "Reconectando",
"Show Setting": "Mostrar ajustes",
"Hide Setting": "Ocultar ajustes",
Screenshot: "Captura de Pantalla",
"Play Speed": "Velocidad de reproducción",
"Aspect Ratio": "Relación de aspecto",
Default: "Por defecto",
Normal: "Normal",
Open: "Abrir",
"Switch Video": "Cambiar video",
"Switch Subtitle": "Cambiar subtítulo",
Fullscreen: "Pantalla completa",
"Exit Fullscreen": "Salir de Pantalla completa",
"Web Fullscreen": "Pantalla completa Web",
"Exit Web Fullscreen": "Salir de Pantalla completa",
"Mini Player": "Mini reproductor",
"PIP Mode": "Modo PiP",
"Exit PIP Mode": "Cerrar modo PiP",
"PIP Not Supported": "Modo PiP no compatible",
"Fullscreen Not Supported": "Pantalla completa no soportada",
"Subtitle Offset": "Ajuste subtítulo",
"Last Seen": "Visto última vez",
"Jump Play": "Saltar",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay no disponible"
};
typeof window < "u" && (window["artplayer-i18n-es"] = e);
export {
e as default
};
+1 -1
View File
@@ -1 +1 @@
!function(e,t,r,o,n){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[o]&&u[o],l=i.i||{},f=i.cache||{},a="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!f[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof u[o]&&u[o];if(!r&&l)return l(t,!0);if(i)return i(t,!0);if(a&&"string"==typeof t)return a(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},p.cache={};var s=f[t]=new c.Module(t);e[t][0].call(s.exports,p,s,s.exports,u)}return f[t].exports;function p(e){var t=p.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],u=c(o);"*"===t?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:u}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?u.__esModule?u.default:u:u[n]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=a,this.exports={}},c.modules=e,c.cache=f,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return u[o]}}),u[o]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var s=c(r);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({"4dsu7":[function(e,t,r,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let n={"Video Info":"اطلاعات ویدیو",Close:"بستن","Video Load Failed":"بارگذاری ناموفق",Play:"پخش",Volume:"میزان صدا",Pause:"توقف",Rate:"نرخ",Mute:"سکوت","Video Flip":"چرخش تصویر",Horizontal:"افقی",Vertical:"عمودی",Reconnect:"اتصال مجدد","Show Setting":"تنظیمات","Hide Setting":"بستن تنظیمات",Screenshot:"عکس از صفحه","Play Speed":"سرعت پخش","Aspect Ratio":"نسبت تصویر",Default:"حالت پیشفرض",Normal:" حالت عادی",Open:"بازکردن","Switch Video":"تغییر ویدیو","Switch Subtitle":"نغییر زیرنویس",Fullscreen:"تمام صفحه","Exit Fullscreen":"کوچک کردن","Web Fullscreen":"حالت تئاتر","Exit Web Fullscreen":"خروج از حالت تئاتر","Mini Player":"حالت پخش کوچک","PIP Mode":" مینی پلیر","Exit PIP Mode":"خروج از مینی پلیر","PIP Not Supported":"عدم پشتیبانی از مینی پلیر","Fullscreen Not Supported":"عدم پشتیبانی از حالت تمام صفحه","Subtitle Offset":"افست زیرنویس","Last Seen":"آخرین بازدید","Jump Play":"جامپ پلی",AirPlay:"ایر پلی","AirPlay Not Available":"عدم پشتیبانی از ایرپلی"};r.default=n,"u">typeof window&&(window["artplayer-i18n-fa"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"8BZVg"}],"8BZVg":[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["4dsu7"],"4dsu7","parcelRequire4dc0",{});
(function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nFa=t())})(this,(function(){"use strict";const e={"Video Info":"اطلاعات ویدیو",Close:"بستن","Video Load Failed":"بارگذاری ناموفق",Play:"پخش",Volume:"میزان صدا",Pause:"توقف",Rate:"نرخ",Mute:"سکوت","Video Flip":"چرخش تصویر",Horizontal:"افقی",Vertical:"عمودی",Reconnect:"اتصال مجدد","Show Setting":"تنظیمات","Hide Setting":"بستن تنظیمات",Screenshot:"عکس از صفحه","Play Speed":"سرعت پخش","Aspect Ratio":"نسبت تصویر",Default:"حالت پیشفرض",Normal:" حالت عادی",Open:"بازکردن","Switch Video":"تغییر ویدیو","Switch Subtitle":"نغییر زیرنویس",Fullscreen:"تمام صفحه","Exit Fullscreen":"کوچک کردن","Web Fullscreen":"حالت تئاتر","Exit Web Fullscreen":"خروج از حالت تئاتر","Mini Player":"حالت پخش کوچک","PIP Mode":" مینی پلیر","Exit PIP Mode":"خروج از مینی پلیر","PIP Not Supported":"عدم پشتیبانی از مینی پلیر","Fullscreen Not Supported":"عدم پشتیبانی از حالت تمام صفحه","Subtitle Offset":"افست زیرنویس","Last Seen":"آخرین بازدید","Jump Play":"جامپ پلی",AirPlay:"ایر پلی","AirPlay Not Available":"عدم پشتیبانی از ایرپلی"};return typeof window<"u"&&(window["artplayer-i18n-fa"]=e),e}));
+42 -1
View File
@@ -1 +1,42 @@
!function(e,t,r,o,n){var u="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof u[o]&&u[o],l=i.i||{},f=i.cache||{},a="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function c(t,r){if(!f[t]){if(!e[t]){if(n[t])return n[t];var l="function"==typeof u[o]&&u[o];if(!r&&l)return l(t,!0);if(i)return i(t,!0);if(a&&"string"==typeof t)return a(t);var d=Error("Cannot find module '"+t+"'");throw d.code="MODULE_NOT_FOUND",d}s.resolve=function(r){var o=e[t][1][r];return null!=o?o:r},s.cache={};var p=f[t]=new c.Module(t);e[t][0].call(p.exports,s,p,p.exports,u)}return f[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],o=e[1],n=e[2]||e[0],u=c(o);"*"===t?Object.keys(u).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return u[e]}})}):"*"===n?Object.defineProperty(r,t,{enumerable:!0,value:u}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===n?u.__esModule?u.default:u:u[n]}})}),r}return c(t)}}c.isParcelRequire=!0,c.Module=function(e){this.id=e,this.bundle=c,this.require=a,this.exports={}},c.modules=e,c.cache=f,c.parent=i,c.distDir=void 0,c.publicUrl=void 0,c.devServer=void 0,c.i=l,c.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(c,"root",{get:function(){return u[o]}}),u[o]=c;for(var d=0;d<t.length;d++)c(t[d]);if(r){var p=c(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({bXIAh:[function(e,t,r,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let n={"Video Info":"اطلاعات ویدیو",Close:"بستن","Video Load Failed":"بارگذاری ناموفق",Play:"پخش",Volume:"میزان صدا",Pause:"توقف",Rate:"نرخ",Mute:"سکوت","Video Flip":"چرخش تصویر",Horizontal:"افقی",Vertical:"عمودی",Reconnect:"اتصال مجدد","Show Setting":"تنظیمات","Hide Setting":"بستن تنظیمات",Screenshot:"عکس از صفحه","Play Speed":"سرعت پخش","Aspect Ratio":"نسبت تصویر",Default:"حالت پیشفرض",Normal:" حالت عادی",Open:"بازکردن","Switch Video":"تغییر ویدیو","Switch Subtitle":"نغییر زیرنویس",Fullscreen:"تمام صفحه","Exit Fullscreen":"کوچک کردن","Web Fullscreen":"حالت تئاتر","Exit Web Fullscreen":"خروج از حالت تئاتر","Mini Player":"حالت پخش کوچک","PIP Mode":" مینی پلیر","Exit PIP Mode":"خروج از مینی پلیر","PIP Not Supported":"عدم پشتیبانی از مینی پلیر","Fullscreen Not Supported":"عدم پشتیبانی از حالت تمام صفحه","Subtitle Offset":"افست زیرنویس","Last Seen":"آخرین بازدید","Jump Play":"جامپ پلی",AirPlay:"ایر پلی","AirPlay Not Available":"عدم پشتیبانی از ایرپلی"};r.default=n,"u">typeof window&&(window["artplayer-i18n-fa"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"60D0X"}],"60D0X":[function(e,t,r,o){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["bXIAh"],"bXIAh","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("bXIAh");export{e as default};
const e = {
"Video Info": "اطلاعات ویدیو",
Close: "بستن",
"Video Load Failed": "بارگذاری ناموفق",
Play: "پخش",
Volume: "میزان صدا",
Pause: "توقف",
Rate: "نرخ",
Mute: "سکوت",
"Video Flip": "چرخش تصویر",
Horizontal: "افقی",
Vertical: "عمودی",
Reconnect: "اتصال مجدد",
"Show Setting": "تنظیمات",
"Hide Setting": "بستن تنظیمات",
Screenshot: "عکس از صفحه",
"Play Speed": "سرعت پخش",
"Aspect Ratio": "نسبت تصویر",
Default: "حالت پیشفرض",
Normal: " حالت عادی",
Open: "بازکردن",
"Switch Video": "تغییر ویدیو",
"Switch Subtitle": "نغییر زیرنویس",
Fullscreen: "تمام صفحه",
"Exit Fullscreen": "کوچک کردن",
"Web Fullscreen": "حالت تئاتر",
"Exit Web Fullscreen": "خروج از حالت تئاتر",
"Mini Player": "حالت پخش کوچک",
"PIP Mode": " مینی پلیر",
"Exit PIP Mode": "خروج از مینی پلیر",
"PIP Not Supported": "عدم پشتیبانی از مینی پلیر",
"Fullscreen Not Supported": "عدم پشتیبانی از حالت تمام صفحه",
"Subtitle Offset": "افست زیرنویس",
"Last Seen": "آخرین بازدید",
"Jump Play": "جامپ پلی",
AirPlay: "ایر پلی",
"AirPlay Not Available": "عدم پشتیبانی از ایرپلی"
};
typeof window < "u" && (window["artplayer-i18n-fa"] = e);
export {
e as default
};
+1 -1
View File
@@ -1 +1 @@
!function(e,r,t,o,n){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof i[o]&&i[o],u=l.i||{},a=l.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(r,t){if(!a[r]){if(!e[r]){if(n[r])return n[r];var u="function"==typeof i[o]&&i[o];if(!t&&u)return u(r,!0);if(l)return l(r,!0);if(c&&"string"==typeof r)return c(r);var d=Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(t){var o=e[r][1][t];return null!=o?o:t},p.cache={};var s=a[r]=new f.Module(r);e[r][0].call(s.exports,p,s,s.exports,i)}return a[r].exports;function p(e){var r=p.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],o=e[1],n=e[2]||e[0],i=f(o);"*"===r?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===n?Object.defineProperty(t,r,{enumerable:!0,value:i}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===n?i.__esModule?i.default:i:i[n]}})}),t}return f(r)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=c,this.exports={}},f.modules=e,f.cache=a,f.parent=l,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=u,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(f,"root",{get:function(){return i[o]}}),i[o]=f;for(var d=0;d<r.length;d++)f(r[d]);if(t){var s=f(t);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({jVhAR:[function(e,r,t,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(t);let n={"Video Info":"Informations de la vidéo",Close:"Fermer","Video Load Failed":"Téléchargement de la vidéo échoué",Volume:"Volume",Play:"Lire",Pause:"Pause",Rate:"Vitesse",Mute:"Muet","Video Flip":"Rotation de la vidéo",Horizontal:"Horizontal",Vertical:"Vertical",Reconnect:"Reconnexion","Show Setting":"Afficher les paramètres","Hide Setting":"Cacher les paramètres",Screenshot:"Capture d'écran","Play Speed":"Vitesse de lecture","Aspect Ratio":"Rapport d'aspect",Default:"Défaut",Normal:"Normal",Open:"Ouvrir","Switch Video":"Basculer la vidéo","Switch Subtitle":"Basculer le sous-titre",Fullscreen:"Plein écran","Exit Fullscreen":"Quitter le plein écran","Web Fullscreen":"Plein écran Web","Exit Web Fullscreen":"Quitter le plein écran Web","Mini Player":"Mini lecteur","PIP Mode":"Mode PiP","Exit PIP Mode":"Fermer le mode PiP","PIP Not Supported":"Mode PiP non supporté","Fullscreen Not Supported":"Plein écran non supporté","Subtitle Offset":"Réglage des sous-titres","Last Seen":"Dernière position","Jump Play":"Continuer",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay non disponible"};t.default=n,"u">typeof window&&(window["artplayer-i18n-fr"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"8BZVg"}],"8BZVg":[function(e,r,t,o){t.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},t.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.exportAll=function(e,r){return Object.keys(e).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r},t.export=function(e,r,t){Object.defineProperty(e,r,{enumerable:!0,get:t})}},{}]},["jVhAR"],"jVhAR","parcelRequire4dc0",{});
(function(e,i){typeof exports=="object"&&typeof module<"u"?module.exports=i():typeof define=="function"&&define.amd?define(i):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nFr=i())})(this,(function(){"use strict";const e={"Video Info":"Informations de la vidéo",Close:"Fermer","Video Load Failed":"Téléchargement de la vidéo échoué",Volume:"Volume",Play:"Lire",Pause:"Pause",Rate:"Vitesse",Mute:"Muet","Video Flip":"Rotation de la vidéo",Horizontal:"Horizontal",Vertical:"Vertical",Reconnect:"Reconnexion","Show Setting":"Afficher les paramètres","Hide Setting":"Cacher les paramètres",Screenshot:"Capture d'écran","Play Speed":"Vitesse de lecture","Aspect Ratio":"Rapport d'aspect",Default:"Défaut",Normal:"Normal",Open:"Ouvrir","Switch Video":"Basculer la vidéo","Switch Subtitle":"Basculer le sous-titre",Fullscreen:"Plein écran","Exit Fullscreen":"Quitter le plein écran","Web Fullscreen":"Plein écran Web","Exit Web Fullscreen":"Quitter le plein écran Web","Mini Player":"Mini lecteur","PIP Mode":"Mode PiP","Exit PIP Mode":"Fermer le mode PiP","PIP Not Supported":"Mode PiP non supporté","Fullscreen Not Supported":"Plein écran non supporté","Subtitle Offset":"Réglage des sous-titres","Last Seen":"Dernière position","Jump Play":"Continuer",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay non disponible"};return typeof window<"u"&&(window["artplayer-i18n-fr"]=e),e}));
+42 -1
View File
@@ -1 +1,42 @@
!function(e,r,t,o,n){var i="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},l="function"==typeof i[o]&&i[o],u=l.i||{},a=l.cache||{},c="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(r,t){if(!a[r]){if(!e[r]){if(n[r])return n[r];var u="function"==typeof i[o]&&i[o];if(!t&&u)return u(r,!0);if(l)return l(r,!0);if(c&&"string"==typeof r)return c(r);var d=Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}p.resolve=function(t){var o=e[r][1][t];return null!=o?o:t},p.cache={};var s=a[r]=new f.Module(r);e[r][0].call(s.exports,p,s,s.exports,i)}return a[r].exports;function p(e){var r=p.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],o=e[1],n=e[2]||e[0],i=f(o);"*"===r?Object.keys(i).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}):"*"===n?Object.defineProperty(t,r,{enumerable:!0,value:i}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===n?i.__esModule?i.default:i:i[n]}})}),t}return f(r)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=c,this.exports={}},f.modules=e,f.cache=a,f.parent=l,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=u,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(f,"root",{get:function(){return i[o]}}),i[o]=f;for(var d=0;d<r.length;d++)f(r[d]);if(t){var s=f(t);"object"==typeof exports&&"u">typeof module?module.exports=s:"function"==typeof define&&define.amd&&define(function(){return s})}}({"66gUr":[function(e,r,t,o){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(t);let n={"Video Info":"Informations de la vidéo",Close:"Fermer","Video Load Failed":"Téléchargement de la vidéo échoué",Volume:"Volume",Play:"Lire",Pause:"Pause",Rate:"Vitesse",Mute:"Muet","Video Flip":"Rotation de la vidéo",Horizontal:"Horizontal",Vertical:"Vertical",Reconnect:"Reconnexion","Show Setting":"Afficher les paramètres","Hide Setting":"Cacher les paramètres",Screenshot:"Capture d'écran","Play Speed":"Vitesse de lecture","Aspect Ratio":"Rapport d'aspect",Default:"Défaut",Normal:"Normal",Open:"Ouvrir","Switch Video":"Basculer la vidéo","Switch Subtitle":"Basculer le sous-titre",Fullscreen:"Plein écran","Exit Fullscreen":"Quitter le plein écran","Web Fullscreen":"Plein écran Web","Exit Web Fullscreen":"Quitter le plein écran Web","Mini Player":"Mini lecteur","PIP Mode":"Mode PiP","Exit PIP Mode":"Fermer le mode PiP","PIP Not Supported":"Mode PiP non supporté","Fullscreen Not Supported":"Plein écran non supporté","Subtitle Offset":"Réglage des sous-titres","Last Seen":"Dernière position","Jump Play":"Continuer",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay non disponible"};t.default=n,"u">typeof window&&(window["artplayer-i18n-fr"]=n)},{"@parcel/transformer-js/src/esmodule-helpers.js":"60D0X"}],"60D0X":[function(e,r,t,o){t.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},t.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.exportAll=function(e,r){return Object.keys(e).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r},t.export=function(e,r,t){Object.defineProperty(e,r,{enumerable:!0,get:t})}},{}]},["66gUr"],"66gUr","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("66gUr");export{e as default};
const e = {
"Video Info": "Informations de la vidéo",
Close: "Fermer",
"Video Load Failed": "Téléchargement de la vidéo échoué",
Volume: "Volume",
Play: "Lire",
Pause: "Pause",
Rate: "Vitesse",
Mute: "Muet",
"Video Flip": "Rotation de la vidéo",
Horizontal: "Horizontal",
Vertical: "Vertical",
Reconnect: "Reconnexion",
"Show Setting": "Afficher les paramètres",
"Hide Setting": "Cacher les paramètres",
Screenshot: "Capture d'écran",
"Play Speed": "Vitesse de lecture",
"Aspect Ratio": "Rapport d'aspect",
Default: "Défaut",
Normal: "Normal",
Open: "Ouvrir",
"Switch Video": "Basculer la vidéo",
"Switch Subtitle": "Basculer le sous-titre",
Fullscreen: "Plein écran",
"Exit Fullscreen": "Quitter le plein écran",
"Web Fullscreen": "Plein écran Web",
"Exit Web Fullscreen": "Quitter le plein écran Web",
"Mini Player": "Mini lecteur",
"PIP Mode": "Mode PiP",
"Exit PIP Mode": "Fermer le mode PiP",
"PIP Not Supported": "Mode PiP non supporté",
"Fullscreen Not Supported": "Plein écran non supporté",
"Subtitle Offset": "Réglage des sous-titres",
"Last Seen": "Dernière position",
"Jump Play": "Continuer",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay non disponible"
};
typeof window < "u" && (window["artplayer-i18n-fr"] = e);
export {
e as default
};
+1 -1
View File
@@ -1 +1 @@
!function(e,r,t,n,o){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof a[n]&&a[n],u=i.i||{},l=i.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(r,t){if(!l[r]){if(!e[r]){if(o[r])return o[r];var u="function"==typeof a[n]&&a[n];if(!t&&u)return u(r,!0);if(i)return i(r,!0);if(d&&"string"==typeof r)return d(r);var c=Error("Cannot find module '"+r+"'");throw c.code="MODULE_NOT_FOUND",c}s.resolve=function(t){var n=e[r][1][t];return null!=n?n:t},s.cache={};var p=l[r]=new f.Module(r);e[r][0].call(p.exports,s,p,p.exports,a)}return l[r].exports;function s(e){var r=s.resolve(e);if(!1===r)return{};if(Array.isArray(r)){var t={__esModule:!0};return r.forEach(function(e){var r=e[0],n=e[1],o=e[2]||e[0],a=f(n);"*"===r?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===o?Object.defineProperty(t,r,{enumerable:!0,value:a}):Object.defineProperty(t,r,{enumerable:!0,get:function(){return"default"===o?a.__esModule?a.default:a:a[o]}})}),t}return f(r)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=d,this.exports={}},f.modules=e,f.cache=l,f.parent=i,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=u,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]},Object.defineProperty(f,"root",{get:function(){return a[n]}}),a[n]=f;for(var c=0;c<r.length;c++)f(r[c]);if(t){var p=f(t);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"6bYmK":[function(e,r,t,n){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(t);let o={"Video Info":"Informasi Video",Close:"Tutup","Video Load Failed":"Gagal Memuat Video",Volume:"Volume",Play:"Putar",Pause:"Jeda",Rate:"Kecepatan",Mute:"Senyap","Video Flip":"Memutar Video",Horizontal:"Horizontal",Vertical:"Vertikal",Reconnect:"Menyambung Kembali","Show Setting":"Tampilkan Pengaturan","Hide Setting":"Sembunyikan Pengaturan",Screenshot:"Tangkapan Layar","Play Speed":"Kecepatan Putar","Aspect Ratio":"Rasio Aspek",Default:"Default",Normal:"Normal",Open:"Buka","Switch Video":"Ganti Video","Switch Subtitle":"Ganti Subtitle",Fullscreen:"Layar Penuh","Exit Fullscreen":"Keluar dari Layar Penuh","Web Fullscreen":"Layar Penuh Web","Exit Web Fullscreen":"Keluar dari Layar Penuh Web","Mini Player":"Pemutar Mini","PIP Mode":"Mode PIP","Exit PIP Mode":"Keluar dari Mode PIP","PIP Not Supported":"PIP Tidak Didukung","Fullscreen Not Supported":"Layar Penuh Tidak Didukung","Subtitle Offset":"Pergeseran Subtitle","Last Seen":"Terakhir Dilihat","Jump Play":"Lompat Putar",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay Tidak Tersedia"};t.default=o,"u">typeof window&&(window["artplayer-i18n-id"]=o)},{"@parcel/transformer-js/src/esmodule-helpers.js":"8BZVg"}],"8BZVg":[function(e,r,t,n){t.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},t.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},t.exportAll=function(e,r){return Object.keys(e).forEach(function(t){"default"===t||"__esModule"===t||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r},t.export=function(e,r,t){Object.defineProperty(e,r,{enumerable:!0,get:t})}},{}]},["6bYmK"],"6bYmK","parcelRequire4dc0",{});
(function(e,a){typeof exports=="object"&&typeof module<"u"?module.exports=a():typeof define=="function"&&define.amd?define(a):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nId=a())})(this,(function(){"use strict";const e={"Video Info":"Informasi Video",Close:"Tutup","Video Load Failed":"Gagal Memuat Video",Volume:"Volume",Play:"Putar",Pause:"Jeda",Rate:"Kecepatan",Mute:"Senyap","Video Flip":"Memutar Video",Horizontal:"Horizontal",Vertical:"Vertikal",Reconnect:"Menyambung Kembali","Show Setting":"Tampilkan Pengaturan","Hide Setting":"Sembunyikan Pengaturan",Screenshot:"Tangkapan Layar","Play Speed":"Kecepatan Putar","Aspect Ratio":"Rasio Aspek",Default:"Default",Normal:"Normal",Open:"Buka","Switch Video":"Ganti Video","Switch Subtitle":"Ganti Subtitle",Fullscreen:"Layar Penuh","Exit Fullscreen":"Keluar dari Layar Penuh","Web Fullscreen":"Layar Penuh Web","Exit Web Fullscreen":"Keluar dari Layar Penuh Web","Mini Player":"Pemutar Mini","PIP Mode":"Mode PIP","Exit PIP Mode":"Keluar dari Mode PIP","PIP Not Supported":"PIP Tidak Didukung","Fullscreen Not Supported":"Layar Penuh Tidak Didukung","Subtitle Offset":"Pergeseran Subtitle","Last Seen":"Terakhir Dilihat","Jump Play":"Lompat Putar",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay Tidak Tersedia"};return typeof window<"u"&&(window["artplayer-i18n-id"]=e),e}));
+42 -1
View File
@@ -1 +1,42 @@
!function(e,t,r,n,o){var a="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},i="function"==typeof a[n]&&a[n],u=i.i||{},l=i.cache||{},d="u">typeof module&&"function"==typeof module.require&&module.require.bind(module);function f(t,r){if(!l[t]){if(!e[t]){if(o[t])return o[t];var u="function"==typeof a[n]&&a[n];if(!r&&u)return u(t,!0);if(i)return i(t,!0);if(d&&"string"==typeof t)return d(t);var c=Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}s.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},s.cache={};var p=l[t]=new f.Module(t);e[t][0].call(p.exports,s,p,p.exports,a)}return l[t].exports;function s(e){var t=s.resolve(e);if(!1===t)return{};if(Array.isArray(t)){var r={__esModule:!0};return t.forEach(function(e){var t=e[0],n=e[1],o=e[2]||e[0],a=f(n);"*"===t?Object.keys(a).forEach(function(e){"default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return a[e]}})}):"*"===o?Object.defineProperty(r,t,{enumerable:!0,value:a}):Object.defineProperty(r,t,{enumerable:!0,get:function(){return"default"===o?a.__esModule?a.default:a:a[o]}})}),r}return f(t)}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.require=d,this.exports={}},f.modules=e,f.cache=l,f.parent=i,f.distDir=void 0,f.publicUrl=void 0,f.devServer=void 0,f.i=u,f.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(f,"root",{get:function(){return a[n]}}),a[n]=f;for(var c=0;c<t.length;c++)f(t[c]);if(r){var p=f(r);"object"==typeof exports&&"u">typeof module?module.exports=p:"function"==typeof define&&define.amd&&define(function(){return p})}}({"7sph3":[function(e,t,r,n){e("@parcel/transformer-js/src/esmodule-helpers.js").defineInteropFlag(r);let o={"Video Info":"Informasi Video",Close:"Tutup","Video Load Failed":"Gagal Memuat Video",Volume:"Volume",Play:"Putar",Pause:"Jeda",Rate:"Kecepatan",Mute:"Senyap","Video Flip":"Memutar Video",Horizontal:"Horizontal",Vertical:"Vertikal",Reconnect:"Menyambung Kembali","Show Setting":"Tampilkan Pengaturan","Hide Setting":"Sembunyikan Pengaturan",Screenshot:"Tangkapan Layar","Play Speed":"Kecepatan Putar","Aspect Ratio":"Rasio Aspek",Default:"Default",Normal:"Normal",Open:"Buka","Switch Video":"Ganti Video","Switch Subtitle":"Ganti Subtitle",Fullscreen:"Layar Penuh","Exit Fullscreen":"Keluar dari Layar Penuh","Web Fullscreen":"Layar Penuh Web","Exit Web Fullscreen":"Keluar dari Layar Penuh Web","Mini Player":"Pemutar Mini","PIP Mode":"Mode PIP","Exit PIP Mode":"Keluar dari Mode PIP","PIP Not Supported":"PIP Tidak Didukung","Fullscreen Not Supported":"Layar Penuh Tidak Didukung","Subtitle Offset":"Pergeseran Subtitle","Last Seen":"Terakhir Dilihat","Jump Play":"Lompat Putar",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay Tidak Tersedia"};r.default=o,"u">typeof window&&(window["artplayer-i18n-id"]=o)},{"@parcel/transformer-js/src/esmodule-helpers.js":"60D0X"}],"60D0X":[function(e,t,r,n){r.interopDefault=function(e){return e&&e.__esModule?e:{default:e}},r.defineInteropFlag=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.exportAll=function(e,t){return Object.keys(e).forEach(function(r){"default"===r||"__esModule"===r||Object.prototype.hasOwnProperty.call(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[r]}})}),t},r.export=function(e,t,r){Object.defineProperty(e,t,{enumerable:!0,get:r})}},{}]},["7sph3"],"7sph3","parcelRequire4dc0",{});let{default:e}=parcelRequire4dc0("7sph3");export{e as default};
const e = {
"Video Info": "Informasi Video",
Close: "Tutup",
"Video Load Failed": "Gagal Memuat Video",
Volume: "Volume",
Play: "Putar",
Pause: "Jeda",
Rate: "Kecepatan",
Mute: "Senyap",
"Video Flip": "Memutar Video",
Horizontal: "Horizontal",
Vertical: "Vertikal",
Reconnect: "Menyambung Kembali",
"Show Setting": "Tampilkan Pengaturan",
"Hide Setting": "Sembunyikan Pengaturan",
Screenshot: "Tangkapan Layar",
"Play Speed": "Kecepatan Putar",
"Aspect Ratio": "Rasio Aspek",
Default: "Default",
Normal: "Normal",
Open: "Buka",
"Switch Video": "Ganti Video",
"Switch Subtitle": "Ganti Subtitle",
Fullscreen: "Layar Penuh",
"Exit Fullscreen": "Keluar dari Layar Penuh",
"Web Fullscreen": "Layar Penuh Web",
"Exit Web Fullscreen": "Keluar dari Layar Penuh Web",
"Mini Player": "Pemutar Mini",
"PIP Mode": "Mode PIP",
"Exit PIP Mode": "Keluar dari Mode PIP",
"PIP Not Supported": "PIP Tidak Didukung",
"Fullscreen Not Supported": "Layar Penuh Tidak Didukung",
"Subtitle Offset": "Pergeseran Subtitle",
"Last Seen": "Terakhir Dilihat",
"Jump Play": "Lompat Putar",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay Tidak Tersedia"
};
typeof window < "u" && (window["artplayer-i18n-id"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nAr=t())})(this,(function(){"use strict";const e={"Video Info":"معلومات الفيديو",Close:"إغلاق","Video Load Failed":"فشل تحميل الفيديو",Volume:"الصوت",Play:"تشغيل",Pause:"إيقاف مؤقت",Rate:"السرعة",Mute:"كتم الصوت","Video Flip":"تدوير الفيديو",Horizontal:"أفقي",Vertical:"عمودي",Reconnect:"إعادة الاتصال","Show Setting":"إظهار الإعدادات","Hide Setting":"إخفاء الإعدادات",Screenshot:"لقطة شاشة","Play Speed":"سرعة التشغيل","Aspect Ratio":"نسبة العرض إلى الارتفاع",Default:"افتراضي",Normal:"عادي",Open:"فتح","Switch Video":"تبديل الفيديو","Switch Subtitle":"تبديل الترجمة",Fullscreen:"وضع ملء الشاشة","Exit Fullscreen":"الخروج من وضع ملء الشاشة","Web Fullscreen":"وضع ملء الشاشة في المتصفح","Exit Web Fullscreen":"الخروج من وضع ملء الشاشة في المتصفح","Mini Player":"مشغل صغير","PIP Mode":"الوضع العائم","Exit PIP Mode":"الخروج من الوضع العائم","PIP Not Supported":"الوضع العائم غير مدعوم","Fullscreen Not Supported":"وضع ملء الشاشة غير مدعوم","Subtitle Offset":"إزاحة الترجمة","Last Seen":"آخر مشاهدة","Jump Play":"التشغيل القافز",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay غير متاح"};return typeof window<"u"&&(window["artplayer-i18n-ar"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "معلومات الفيديو",
Close: "إغلاق",
"Video Load Failed": "فشل تحميل الفيديو",
Volume: "الصوت",
Play: "تشغيل",
Pause: "إيقاف مؤقت",
Rate: "السرعة",
Mute: "كتم الصوت",
"Video Flip": "تدوير الفيديو",
Horizontal: "أفقي",
Vertical: "عمودي",
Reconnect: "إعادة الاتصال",
"Show Setting": "إظهار الإعدادات",
"Hide Setting": "إخفاء الإعدادات",
Screenshot: "لقطة شاشة",
"Play Speed": "سرعة التشغيل",
"Aspect Ratio": "نسبة العرض إلى الارتفاع",
Default: "افتراضي",
Normal: "عادي",
Open: "فتح",
"Switch Video": "تبديل الفيديو",
"Switch Subtitle": "تبديل الترجمة",
Fullscreen: "وضع ملء الشاشة",
"Exit Fullscreen": "الخروج من وضع ملء الشاشة",
"Web Fullscreen": "وضع ملء الشاشة في المتصفح",
"Exit Web Fullscreen": "الخروج من وضع ملء الشاشة في المتصفح",
"Mini Player": "مشغل صغير",
"PIP Mode": "الوضع العائم",
"Exit PIP Mode": "الخروج من الوضع العائم",
"PIP Not Supported": "الوضع العائم غير مدعوم",
"Fullscreen Not Supported": "وضع ملء الشاشة غير مدعوم",
"Subtitle Offset": "إزاحة الترجمة",
"Last Seen": "آخر مشاهدة",
"Jump Play": "التشغيل القافز",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay غير متاح"
};
typeof window < "u" && (window["artplayer-i18n-ar"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nCs=t())})(this,(function(){"use strict";const e={"Video Info":"Info o videu",Close:"Zavřít","Video Load Failed":"Nahrání videa selhalo",Volume:"Hlasitost",Play:"Přehrát",Pause:"Pozastavit",Rate:"Hodnocení",Mute:"Ztlumit","Video Flip":"Otočit video",Horizontal:"Horizontálně",Vertical:"Vertikálně",Reconnect:"Opětovné připojení","Show Setting":"Zobrazit nastavení","Hide Setting":"Skrýt nastavení",Screenshot:"Snímek obrazovky","Play Speed":"Rychlost přehrávání","Aspect Ratio":"Poměr stran",Default:"Výchozí",Normal:"Normální",Open:"Otevřít","Switch Video":"Přepnout video","Switch Subtitle":"Přepnout titulky",Fullscreen:"Celá obrazovka","Exit Fullscreen":"Opustit režim celé obrazovky","Web Fullscreen":"Celá stránka","Exit Web Fullscreen":"Zavřít režim celé stránky","Mini Player":"Mini přehrávač","PIP Mode":"Režim PIP","Exit PIP Mode":"Opustit režim PIP","PIP Not Supported":"Režim PIP není podporován","Fullscreen Not Supported":"Režim celé obrazovky není podporován","Subtitle Offset":"Posun titulků","Last Seen":"Naposledy viděn","Jump Play":"Hra na skok",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay není k dispozici"};return typeof window<"u"&&(window["artplayer-i18n-cs"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "Info o videu",
Close: "Zavřít",
"Video Load Failed": "Nahrání videa selhalo",
Volume: "Hlasitost",
Play: "Přehrát",
Pause: "Pozastavit",
Rate: "Hodnocení",
Mute: "Ztlumit",
"Video Flip": "Otočit video",
Horizontal: "Horizontálně",
Vertical: "Vertikálně",
Reconnect: "Opětovné připojení",
"Show Setting": "Zobrazit nastavení",
"Hide Setting": "Skrýt nastavení",
Screenshot: "Snímek obrazovky",
"Play Speed": "Rychlost přehrávání",
"Aspect Ratio": "Poměr stran",
Default: "Výchozí",
Normal: "Normální",
Open: "Otevřít",
"Switch Video": "Přepnout video",
"Switch Subtitle": "Přepnout titulky",
Fullscreen: "Celá obrazovka",
"Exit Fullscreen": "Opustit režim celé obrazovky",
"Web Fullscreen": "Celá stránka",
"Exit Web Fullscreen": "Zavřít režim celé stránky",
"Mini Player": "Mini přehrávač",
"PIP Mode": "Režim PIP",
"Exit PIP Mode": "Opustit režim PIP",
"PIP Not Supported": "Režim PIP není podporován",
"Fullscreen Not Supported": "Režim celé obrazovky není podporován",
"Subtitle Offset": "Posun titulků",
"Last Seen": "Naposledy viděn",
"Jump Play": "Hra na skok",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay není k dispozici"
};
typeof window < "u" && (window["artplayer-i18n-cs"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,a){typeof exports=="object"&&typeof module<"u"?module.exports=a():typeof define=="function"&&define.amd?define(a):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nEs=a())})(this,(function(){"use strict";const e={"Video Info":"Información del video",Close:"Cerrar","Video Load Failed":"Falló carga de video",Volume:"Volumen",Play:"Reproduciendo",Pause:"Pausa",Rate:"Velocidad",Mute:"Silencio","Video Flip":"Rotar video",Horizontal:"Horizontal",Vertical:"Vertical",Reconnect:"Reconectando","Show Setting":"Mostrar ajustes","Hide Setting":"Ocultar ajustes",Screenshot:"Captura de Pantalla","Play Speed":"Velocidad de reproducción","Aspect Ratio":"Relación de aspecto",Default:"Por defecto",Normal:"Normal",Open:"Abrir","Switch Video":"Cambiar video","Switch Subtitle":"Cambiar subtítulo",Fullscreen:"Pantalla completa","Exit Fullscreen":"Salir de Pantalla completa","Web Fullscreen":"Pantalla completa Web","Exit Web Fullscreen":"Salir de Pantalla completa","Mini Player":"Mini reproductor","PIP Mode":"Modo PiP","Exit PIP Mode":"Cerrar modo PiP","PIP Not Supported":"Modo PiP no compatible","Fullscreen Not Supported":"Pantalla completa no soportada","Subtitle Offset":"Ajuste subtítulo","Last Seen":"Visto última vez","Jump Play":"Saltar",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay no disponible"};return typeof window<"u"&&(window["artplayer-i18n-es"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "Información del video",
Close: "Cerrar",
"Video Load Failed": "Falló carga de video",
Volume: "Volumen",
Play: "Reproduciendo",
Pause: "Pausa",
Rate: "Velocidad",
Mute: "Silencio",
"Video Flip": "Rotar video",
Horizontal: "Horizontal",
Vertical: "Vertical",
Reconnect: "Reconectando",
"Show Setting": "Mostrar ajustes",
"Hide Setting": "Ocultar ajustes",
Screenshot: "Captura de Pantalla",
"Play Speed": "Velocidad de reproducción",
"Aspect Ratio": "Relación de aspecto",
Default: "Por defecto",
Normal: "Normal",
Open: "Abrir",
"Switch Video": "Cambiar video",
"Switch Subtitle": "Cambiar subtítulo",
Fullscreen: "Pantalla completa",
"Exit Fullscreen": "Salir de Pantalla completa",
"Web Fullscreen": "Pantalla completa Web",
"Exit Web Fullscreen": "Salir de Pantalla completa",
"Mini Player": "Mini reproductor",
"PIP Mode": "Modo PiP",
"Exit PIP Mode": "Cerrar modo PiP",
"PIP Not Supported": "Modo PiP no compatible",
"Fullscreen Not Supported": "Pantalla completa no soportada",
"Subtitle Offset": "Ajuste subtítulo",
"Last Seen": "Visto última vez",
"Jump Play": "Saltar",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay no disponible"
};
typeof window < "u" && (window["artplayer-i18n-es"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nFa=t())})(this,(function(){"use strict";const e={"Video Info":"اطلاعات ویدیو",Close:"بستن","Video Load Failed":"بارگذاری ناموفق",Play:"پخش",Volume:"میزان صدا",Pause:"توقف",Rate:"نرخ",Mute:"سکوت","Video Flip":"چرخش تصویر",Horizontal:"افقی",Vertical:"عمودی",Reconnect:"اتصال مجدد","Show Setting":"تنظیمات","Hide Setting":"بستن تنظیمات",Screenshot:"عکس از صفحه","Play Speed":"سرعت پخش","Aspect Ratio":"نسبت تصویر",Default:"حالت پیشفرض",Normal:" حالت عادی",Open:"بازکردن","Switch Video":"تغییر ویدیو","Switch Subtitle":"نغییر زیرنویس",Fullscreen:"تمام صفحه","Exit Fullscreen":"کوچک کردن","Web Fullscreen":"حالت تئاتر","Exit Web Fullscreen":"خروج از حالت تئاتر","Mini Player":"حالت پخش کوچک","PIP Mode":" مینی پلیر","Exit PIP Mode":"خروج از مینی پلیر","PIP Not Supported":"عدم پشتیبانی از مینی پلیر","Fullscreen Not Supported":"عدم پشتیبانی از حالت تمام صفحه","Subtitle Offset":"افست زیرنویس","Last Seen":"آخرین بازدید","Jump Play":"جامپ پلی",AirPlay:"ایر پلی","AirPlay Not Available":"عدم پشتیبانی از ایرپلی"};return typeof window<"u"&&(window["artplayer-i18n-fa"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "اطلاعات ویدیو",
Close: "بستن",
"Video Load Failed": "بارگذاری ناموفق",
Play: "پخش",
Volume: "میزان صدا",
Pause: "توقف",
Rate: "نرخ",
Mute: "سکوت",
"Video Flip": "چرخش تصویر",
Horizontal: "افقی",
Vertical: "عمودی",
Reconnect: "اتصال مجدد",
"Show Setting": "تنظیمات",
"Hide Setting": "بستن تنظیمات",
Screenshot: "عکس از صفحه",
"Play Speed": "سرعت پخش",
"Aspect Ratio": "نسبت تصویر",
Default: "حالت پیشفرض",
Normal: " حالت عادی",
Open: "بازکردن",
"Switch Video": "تغییر ویدیو",
"Switch Subtitle": "نغییر زیرنویس",
Fullscreen: "تمام صفحه",
"Exit Fullscreen": "کوچک کردن",
"Web Fullscreen": "حالت تئاتر",
"Exit Web Fullscreen": "خروج از حالت تئاتر",
"Mini Player": "حالت پخش کوچک",
"PIP Mode": " مینی پلیر",
"Exit PIP Mode": "خروج از مینی پلیر",
"PIP Not Supported": "عدم پشتیبانی از مینی پلیر",
"Fullscreen Not Supported": "عدم پشتیبانی از حالت تمام صفحه",
"Subtitle Offset": "افست زیرنویس",
"Last Seen": "آخرین بازدید",
"Jump Play": "جامپ پلی",
AirPlay: "ایر پلی",
"AirPlay Not Available": "عدم پشتیبانی از ایرپلی"
};
typeof window < "u" && (window["artplayer-i18n-fa"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,i){typeof exports=="object"&&typeof module<"u"?module.exports=i():typeof define=="function"&&define.amd?define(i):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nFr=i())})(this,(function(){"use strict";const e={"Video Info":"Informations de la vidéo",Close:"Fermer","Video Load Failed":"Téléchargement de la vidéo échoué",Volume:"Volume",Play:"Lire",Pause:"Pause",Rate:"Vitesse",Mute:"Muet","Video Flip":"Rotation de la vidéo",Horizontal:"Horizontal",Vertical:"Vertical",Reconnect:"Reconnexion","Show Setting":"Afficher les paramètres","Hide Setting":"Cacher les paramètres",Screenshot:"Capture d'écran","Play Speed":"Vitesse de lecture","Aspect Ratio":"Rapport d'aspect",Default:"Défaut",Normal:"Normal",Open:"Ouvrir","Switch Video":"Basculer la vidéo","Switch Subtitle":"Basculer le sous-titre",Fullscreen:"Plein écran","Exit Fullscreen":"Quitter le plein écran","Web Fullscreen":"Plein écran Web","Exit Web Fullscreen":"Quitter le plein écran Web","Mini Player":"Mini lecteur","PIP Mode":"Mode PiP","Exit PIP Mode":"Fermer le mode PiP","PIP Not Supported":"Mode PiP non supporté","Fullscreen Not Supported":"Plein écran non supporté","Subtitle Offset":"Réglage des sous-titres","Last Seen":"Dernière position","Jump Play":"Continuer",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay non disponible"};return typeof window<"u"&&(window["artplayer-i18n-fr"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "Informations de la vidéo",
Close: "Fermer",
"Video Load Failed": "Téléchargement de la vidéo échoué",
Volume: "Volume",
Play: "Lire",
Pause: "Pause",
Rate: "Vitesse",
Mute: "Muet",
"Video Flip": "Rotation de la vidéo",
Horizontal: "Horizontal",
Vertical: "Vertical",
Reconnect: "Reconnexion",
"Show Setting": "Afficher les paramètres",
"Hide Setting": "Cacher les paramètres",
Screenshot: "Capture d'écran",
"Play Speed": "Vitesse de lecture",
"Aspect Ratio": "Rapport d'aspect",
Default: "Défaut",
Normal: "Normal",
Open: "Ouvrir",
"Switch Video": "Basculer la vidéo",
"Switch Subtitle": "Basculer le sous-titre",
Fullscreen: "Plein écran",
"Exit Fullscreen": "Quitter le plein écran",
"Web Fullscreen": "Plein écran Web",
"Exit Web Fullscreen": "Quitter le plein écran Web",
"Mini Player": "Mini lecteur",
"PIP Mode": "Mode PiP",
"Exit PIP Mode": "Fermer le mode PiP",
"PIP Not Supported": "Mode PiP non supporté",
"Fullscreen Not Supported": "Plein écran non supporté",
"Subtitle Offset": "Réglage des sous-titres",
"Last Seen": "Dernière position",
"Jump Play": "Continuer",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay non disponible"
};
typeof window < "u" && (window["artplayer-i18n-fr"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,a){typeof exports=="object"&&typeof module<"u"?module.exports=a():typeof define=="function"&&define.amd?define(a):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nId=a())})(this,(function(){"use strict";const e={"Video Info":"Informasi Video",Close:"Tutup","Video Load Failed":"Gagal Memuat Video",Volume:"Volume",Play:"Putar",Pause:"Jeda",Rate:"Kecepatan",Mute:"Senyap","Video Flip":"Memutar Video",Horizontal:"Horizontal",Vertical:"Vertikal",Reconnect:"Menyambung Kembali","Show Setting":"Tampilkan Pengaturan","Hide Setting":"Sembunyikan Pengaturan",Screenshot:"Tangkapan Layar","Play Speed":"Kecepatan Putar","Aspect Ratio":"Rasio Aspek",Default:"Default",Normal:"Normal",Open:"Buka","Switch Video":"Ganti Video","Switch Subtitle":"Ganti Subtitle",Fullscreen:"Layar Penuh","Exit Fullscreen":"Keluar dari Layar Penuh","Web Fullscreen":"Layar Penuh Web","Exit Web Fullscreen":"Keluar dari Layar Penuh Web","Mini Player":"Pemutar Mini","PIP Mode":"Mode PIP","Exit PIP Mode":"Keluar dari Mode PIP","PIP Not Supported":"PIP Tidak Didukung","Fullscreen Not Supported":"Layar Penuh Tidak Didukung","Subtitle Offset":"Pergeseran Subtitle","Last Seen":"Terakhir Dilihat","Jump Play":"Lompat Putar",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay Tidak Tersedia"};return typeof window<"u"&&(window["artplayer-i18n-id"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "Informasi Video",
Close: "Tutup",
"Video Load Failed": "Gagal Memuat Video",
Volume: "Volume",
Play: "Putar",
Pause: "Jeda",
Rate: "Kecepatan",
Mute: "Senyap",
"Video Flip": "Memutar Video",
Horizontal: "Horizontal",
Vertical: "Vertikal",
Reconnect: "Menyambung Kembali",
"Show Setting": "Tampilkan Pengaturan",
"Hide Setting": "Sembunyikan Pengaturan",
Screenshot: "Tangkapan Layar",
"Play Speed": "Kecepatan Putar",
"Aspect Ratio": "Rasio Aspek",
Default: "Default",
Normal: "Normal",
Open: "Buka",
"Switch Video": "Ganti Video",
"Switch Subtitle": "Ganti Subtitle",
Fullscreen: "Layar Penuh",
"Exit Fullscreen": "Keluar dari Layar Penuh",
"Web Fullscreen": "Layar Penuh Web",
"Exit Web Fullscreen": "Keluar dari Layar Penuh Web",
"Mini Player": "Pemutar Mini",
"PIP Mode": "Mode PIP",
"Exit PIP Mode": "Keluar dari Mode PIP",
"PIP Not Supported": "PIP Tidak Didukung",
"Fullscreen Not Supported": "Layar Penuh Tidak Didukung",
"Subtitle Offset": "Pergeseran Subtitle",
"Last Seen": "Terakhir Dilihat",
"Jump Play": "Lompat Putar",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay Tidak Tersedia"
};
typeof window < "u" && (window["artplayer-i18n-id"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,i){typeof exports=="object"&&typeof module<"u"?module.exports=i():typeof define=="function"&&define.amd?define(i):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nPl=i())})(this,(function(){"use strict";const e={"Video Info":"Informacje o wideo",Close:"Zamknij","Video Load Failed":"Błąd ładowania wideo",Volume:"Głośność",Play:"Odtwórz",Pause:"Wstrzymaj",Rate:"Oceń",Mute:"Wycisz","Video Flip":"Rotacja wideo",Horizontal:"Pozioma",Vertical:"Pionowa",Reconnect:"Połącz ponownie","Show Setting":"Pokaż ustawienia","Hide Setting":"Ukryj ustawienia",Screenshot:"Zrzut ekranu","Play Speed":"Prędkość odtwarzania","Aspect Ratio":"Współczynnik proporcji",Default:"Domyślny",Normal:"Normalny",Open:"Otwórz","Switch Video":"Przełącz wideo","Switch Subtitle":"Przełącz napisy",Fullscreen:"Pełny ekran","Exit Fullscreen":"Zamknij pełny ekran","Web Fullscreen":"Tryb pełnej strony","Exit Web Fullscreen":"Zamknij tryb pełnej strony","Mini Player":"Miniodtwarzacz","PIP Mode":"Tryb PiP","Exit PIP Mode":"Zamknij tryb PiP","PIP Not Supported":"Tryb PiP nieobsługiwany","Fullscreen Not Supported":"Pełny ekran nieobsługiwany","Subtitle Offset":"Przesunięcie napisów","Last Seen":"Ostatnio widziany","Jump Play":"Skocz do gry",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay nie jest dostępny"};return typeof window<"u"&&(window["artplayer-i18n-pl"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "Informacje o wideo",
Close: "Zamknij",
"Video Load Failed": "Błąd ładowania wideo",
Volume: "Głośność",
Play: "Odtwórz",
Pause: "Wstrzymaj",
Rate: "Oceń",
Mute: "Wycisz",
"Video Flip": "Rotacja wideo",
Horizontal: "Pozioma",
Vertical: "Pionowa",
Reconnect: "Połącz ponownie",
"Show Setting": "Pokaż ustawienia",
"Hide Setting": "Ukryj ustawienia",
Screenshot: "Zrzut ekranu",
"Play Speed": "Prędkość odtwarzania",
"Aspect Ratio": "Współczynnik proporcji",
Default: "Domyślny",
Normal: "Normalny",
Open: "Otwórz",
"Switch Video": "Przełącz wideo",
"Switch Subtitle": "Przełącz napisy",
Fullscreen: "Pełny ekran",
"Exit Fullscreen": "Zamknij pełny ekran",
"Web Fullscreen": "Tryb pełnej strony",
"Exit Web Fullscreen": "Zamknij tryb pełnej strony",
"Mini Player": "Miniodtwarzacz",
"PIP Mode": "Tryb PiP",
"Exit PIP Mode": "Zamknij tryb PiP",
"PIP Not Supported": "Tryb PiP nieobsługiwany",
"Fullscreen Not Supported": "Pełny ekran nieobsługiwany",
"Subtitle Offset": "Przesunięcie napisów",
"Last Seen": "Ostatnio widziany",
"Jump Play": "Skocz do gry",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay nie jest dostępny"
};
typeof window < "u" && (window["artplayer-i18n-pl"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nRu=t())})(this,(function(){"use strict";const e={"Video Info":"Информация",Close:"Закрыть","Video Load Failed":"Ошибка загрузки видео",Volume:"Громкость",Play:"Играть",Pause:"Пауза",Rate:"Скорость",Mute:"Заглушить","Video Flip":"Развернуть видео",Horizontal:"Горизонтально",Vertical:"Вертикально",Reconnect:"Переподключенине","Show Setting":"Показать настройки","Hide Setting":"Скрыть настройки",Screenshot:"Скриншот","Play Speed":"Скорость воспроизведения","Aspect Ratio":"Соотношение сторон",Default:"По-умолчанию",Normal:"Нормальный",Open:"Открыть","Switch Video":"Переключить видео","Switch Subtitle":"Переключить субтитры",Fullscreen:"Полноэкранный режим","Exit Fullscreen":"Выход из полноэкранного режима","Web Fullscreen":"На все окно браузера","Exit Web Fullscreen":"Выход из режима полного окна","Mini Player":"Мини проигрыватель","PIP Mode":"Картинка в картинке","Exit PIP Mode":"Закрыть картинку в картинке","PIP Not Supported":"Картинка в картинке не поддерживается","Fullscreen Not Supported":"Полноэкранный режим не поддерживается","Subtitle Offset":"Настройка субтитров","Last Seen":"Последнее просмотренное","Jump Play":"Перейти",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay недоступен"};return typeof window<"u"&&(window["artplayer-i18n-ru"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "Информация",
Close: "Закрыть",
"Video Load Failed": "Ошибка загрузки видео",
Volume: "Громкость",
Play: "Играть",
Pause: "Пауза",
Rate: "Скорость",
Mute: "Заглушить",
"Video Flip": "Развернуть видео",
Horizontal: "Горизонтально",
Vertical: "Вертикально",
Reconnect: "Переподключенине",
"Show Setting": "Показать настройки",
"Hide Setting": "Скрыть настройки",
Screenshot: "Скриншот",
"Play Speed": "Скорость воспроизведения",
"Aspect Ratio": "Соотношение сторон",
Default: "По-умолчанию",
Normal: "Нормальный",
Open: "Открыть",
"Switch Video": "Переключить видео",
"Switch Subtitle": "Переключить субтитры",
Fullscreen: "Полноэкранный режим",
"Exit Fullscreen": "Выход из полноэкранного режима",
"Web Fullscreen": "На все окно браузера",
"Exit Web Fullscreen": "Выход из режима полного окна",
"Mini Player": "Мини проигрыватель",
"PIP Mode": "Картинка в картинке",
"Exit PIP Mode": "Закрыть картинку в картинке",
"PIP Not Supported": "Картинка в картинке не поддерживается",
"Fullscreen Not Supported": "Полноэкранный режим не поддерживается",
"Subtitle Offset": "Настройка субтитров",
"Last Seen": "Последнее просмотренное",
"Jump Play": "Перейти",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay недоступен"
};
typeof window < "u" && (window["artplayer-i18n-ru"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(e,a){typeof exports=="object"&&typeof module<"u"?module.exports=a():typeof define=="function"&&define.amd?define(a):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nTr=a())})(this,(function(){"use strict";const e={"Video Info":"Video Bilgisi",Close:"Kapat","Video Load Failed":"Video Yüklenemedi",Volume:"Ses Seviyesi",Play:"Oynat",Pause:"Duraklat",Rate:"Hız",Mute:"Sessize Al","Video Flip":"Videoyu Çevir",Horizontal:"Yatay",Vertical:"Dikey",Reconnect:"Yeniden Bağlan","Show Setting":"Ayarları Göster","Hide Setting":"Ayarları Gizle",Screenshot:"Ekran Görüntüsü","Play Speed":"Oynatma Hızı","Aspect Ratio":"En Boy Oranı",Default:"Varsayılan",Normal:"Normal",Open:"Aç","Switch Video":"Video Değiştir","Switch Subtitle":"Altyazı Değiştir",Fullscreen:"Tam Ekran","Exit Fullscreen":"Tam Ekrandan Çık","Web Fullscreen":"Web Tam Ekran","Exit Web Fullscreen":"Web Tam Ekranından Çık","Mini Player":"Küçük Oynatıcı","PIP Mode":"PIP Modu","Exit PIP Mode":"PIP Modundan Çık","PIP Not Supported":"PIP Desteklenmiyor","Fullscreen Not Supported":"Tam Ekran Desteklenmiyor","Subtitle Offset":"Altyazı Kaydırma","Last Seen":"Son İzlenen","Jump Play":"Atla ve Oynat",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay Kullanılamıyor"};return typeof window<"u"&&(window["artplayer-i18n-tr"]=e),e}));
+42
View File
@@ -0,0 +1,42 @@
const e = {
"Video Info": "Video Bilgisi",
Close: "Kapat",
"Video Load Failed": "Video Yüklenemedi",
Volume: "Ses Seviyesi",
Play: "Oynat",
Pause: "Duraklat",
Rate: "Hız",
Mute: "Sessize Al",
"Video Flip": "Videoyu Çevir",
Horizontal: "Yatay",
Vertical: "Dikey",
Reconnect: "Yeniden Bağlan",
"Show Setting": "Ayarları Göster",
"Hide Setting": "Ayarları Gizle",
Screenshot: "Ekran Görüntüsü",
"Play Speed": "Oynatma Hızı",
"Aspect Ratio": "En Boy Oranı",
Default: "Varsayılan",
Normal: "Normal",
Open: "Aç",
"Switch Video": "Video Değiştir",
"Switch Subtitle": "Altyazı Değiştir",
Fullscreen: "Tam Ekran",
"Exit Fullscreen": "Tam Ekrandan Çık",
"Web Fullscreen": "Web Tam Ekran",
"Exit Web Fullscreen": "Web Tam Ekranından Çık",
"Mini Player": "Küçük Oynatıcı",
"PIP Mode": "PIP Modu",
"Exit PIP Mode": "PIP Modundan Çık",
"PIP Not Supported": "PIP Desteklenmiyor",
"Fullscreen Not Supported": "Tam Ekran Desteklenmiyor",
"Subtitle Offset": "Altyazı Kaydırma",
"Last Seen": "Son İzlenen",
"Jump Play": "Atla ve Oynat",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay Kullanılamıyor"
};
typeof window < "u" && (window["artplayer-i18n-tr"] = e);
export {
e as default
};
+1
View File
@@ -0,0 +1 @@
(function(n,e){typeof exports=="object"&&typeof module<"u"?module.exports=e():typeof define=="function"&&define.amd?define(e):(n=typeof globalThis<"u"?globalThis:n||self,n.artplayerI18nVi=e())})(this,(function(){"use strict";const n={"Video Info":"Thông tin video",Close:"Đóng","Video Load Failed":"Tải video thất bại",Volume:"Âm lượng",Play:"Phát",Pause:"Tạm dừng",Rate:"Tốc độ",Mute:"Tắt tiếng","Video Flip":"Lật video",Horizontal:"Ngang",Vertical:"Dọc",Reconnect:"Kết nối lại","Show Setting":"Cài đặt","Hide Setting":"Ẩn cài đặt",Screenshot:"Chụp màn hình","Play Speed":"Tốc độ phát","Aspect Ratio":"Tỷ lệ khung hình",Default:"Mặc định",Normal:"Bình thường",Open:"Mở","Switch Video":"Chuyển video","Switch Subtitle":"Chuyển phụ đề",Fullscreen:"Toàn màn hình","Exit Fullscreen":"Thoát toàn màn hình","Web Fullscreen":"Toàn màn hình trình duyệt","Exit Web Fullscreen":"Thoát toàn màn hình trình duyệt","Mini Player":"Trình phát mini","PIP Mode":"Phát trong hình","Exit PIP Mode":"Thoát phát trong hình","PIP Not Supported":"Không hỗ trợ phát trong hình","Fullscreen Not Supported":"Không hỗ trợ toàn màn hình","Subtitle Offset":"Độ trễ phụ đề","Last Seen":"Lần xem cuối","Jump Play":"Nhảy đến đoạn phát",AirPlay:"AirPlay","AirPlay Not Available":"AirPlay không khả dụng"};return typeof window<"u"&&(window["artplayer-i18n-vi"]=n),n}));
+42
View File
@@ -0,0 +1,42 @@
const n = {
"Video Info": "Thông tin video",
Close: "Đóng",
"Video Load Failed": "Tải video thất bại",
Volume: "Âm lượng",
Play: "Phát",
Pause: "Tạm dừng",
Rate: "Tốc độ",
Mute: "Tắt tiếng",
"Video Flip": "Lật video",
Horizontal: "Ngang",
Vertical: "Dọc",
Reconnect: "Kết nối lại",
"Show Setting": "Cài đặt",
"Hide Setting": "Ẩn cài đặt",
Screenshot: "Chụp màn hình",
"Play Speed": "Tốc độ phát",
"Aspect Ratio": "Tỷ lệ khung hình",
Default: "Mặc định",
Normal: "Bình thường",
Open: "Mở",
"Switch Video": "Chuyển video",
"Switch Subtitle": "Chuyển phụ đề",
Fullscreen: "Toàn màn hình",
"Exit Fullscreen": "Thoát toàn màn hình",
"Web Fullscreen": "Toàn màn hình trình duyệt",
"Exit Web Fullscreen": "Thoát toàn màn hình trình duyệt",
"Mini Player": "Trình phát mini",
"PIP Mode": "Phát trong hình",
"Exit PIP Mode": "Thoát phát trong hình",
"PIP Not Supported": "Không hỗ trợ phát trong hình",
"Fullscreen Not Supported": "Không hỗ trợ toàn màn hình",
"Subtitle Offset": "Độ trễ phụ đề",
"Last Seen": "Lần xem cuối",
"Jump Play": "Nhảy đến đoạn phát",
AirPlay: "AirPlay",
"AirPlay Not Available": "AirPlay không khả dụng"
};
typeof window < "u" && (window["artplayer-i18n-vi"] = n);
export {
n as default
};
@@ -0,0 +1 @@
(function(e,t){typeof exports=="object"&&typeof module<"u"?module.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self,e.artplayerI18nZhTw=t())})(this,(function(){"use strict";const e={"Video Info":"統計訊息",Close:"關閉","Video Load Failed":"載入失敗",Volume:"音量",Play:"播放",Pause:"暫停",Rate:"速度",Mute:"靜音","Video Flip":"畫面翻轉",Horizontal:"水平",Vertical:"垂直",Reconnect:"重新連接","Show Setting":"顯示设置","Hide Setting":"隱藏设置",Screenshot:"截圖","Play Speed":"播放速度","Aspect Ratio":"畫面比例",Default:"默認",Normal:"正常",Open:"打開","Switch Video":"切換","Switch Subtitle":"切換字幕",Fullscreen:"全屏","Exit Fullscreen":"退出全屏","Web Fullscreen":"網頁全屏","Exit Web Fullscreen":"退出網頁全屏","Mini Player":"迷你播放器","PIP Mode":"開啟畫中畫","Exit PIP Mode":"退出畫中畫","PIP Not Supported":"不支持畫中畫","Fullscreen Not Supported":"不支持全屏","Subtitle Offset":"字幕偏移","Last Seen":"上次看到","Jump Play":"跳轉播放",AirPlay:"隔空播放","AirPlay Not Available":"隔空播放不可用"};return typeof window<"u"&&(window["artplayer-i18n-zh-tw"]=e),e}));
Loaded 100 of 397 files, more files were not shown because too many files have changed in this diff. Show more