/*! * artplayer-plugin-libass.js v1.0.0 * Github: https://github.com/zhw2590582/ArtPlayer * (c) 2017-2025 Harvey Zack * Released under the MIT License. */ !function(e,t,r,n,o,s,i,a){var c="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},u="function"==typeof c[n]&&c[n],l=u.i||{},f=u.cache||{},d="undefined"!=typeof module&&"function"==typeof module.require&&module.require.bind(module);function p(t,r){if(!f[t]){if(!e[t]){if(o[t])return o[t];var s="function"==typeof c[n]&&c[n];if(!r&&s)return s(t,!0);if(u)return u(t,!0);if(d&&"string"==typeof t)return d(t);var i=Error("Cannot find module '"+t+"'");throw i.code="MODULE_NOT_FOUND",i}l.resolve=function(r){var n=e[t][1][r];return null!=n?n:r},l.cache={};var a=f[t]=new p.Module(t);e[t][0].call(a.exports,l,a,a.exports,c)}return f[t].exports;function l(e){var t=l.resolve(e);return!1===t?{}:p(t)}}p.isParcelRequire=!0,p.Module=function(e){this.id=e,this.bundle=p,this.require=d,this.exports={}},p.modules=e,p.cache=f,p.parent=u,p.distDir=void 0,p.publicUrl=void 0,p.devServer=void 0,p.i=l,p.register=function(t,r){e[t]=[function(e,t){t.exports=r},{}]},Object.defineProperty(p,"root",{get:function(){return c[n]}}),c[n]=p;for(var v=0;v0&&void 0!==c[0]?c[0]:{}).fallbackFont)return[2,this.utils.errorHandle(t.fallbackFont,"artplayerPluginLibass: fallbackFont is required")];return t.workerUrl||(t.workerUrl="https://cdnjs.cloudflare.com/ajax/libs/libass-wasm/4.1.0/js/subtitles-octopus-worker.js"),t.availableFonts&&(t.availableFonts=Object.entries(t.availableFonts).reduce(function(t,r){var n=(0,d._)(r,2),o=n[0],s=n[1];return t[o]=(0,a._)(e,_,M).call(e,s),t},{})),n=this,o=b.default.bind,s=[(0,l._)({subContent:"[Script Info]\nScriptType: v4.00+",video:this.$video},t)],i={},[4,(0,a._)(this,j,A).call(this,t)];case 1:return n.libass=new(o.apply(b.default,[void 0,f._.apply(void 0,s.concat([(i.workerUrl=u.sent(),i.fallbackFont=(0,a._)(this,_,M).call(this,t.fallbackFont),i.fonts=null==(r=t.fonts)?void 0:r.map(function(t){return(0,a._)(e,_,M).call(e,t)}),i)]))])),this.libass.canvasParent.className="artplayer-plugin-libass",this.libass.canvasParent.style.cssText="\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n user-select: none;\n pointer-events: none;\n z-index: 20;",[2]}})})).apply(this,arguments)}function L(){this.switchHandler=this.switch.bind(this),this.visibleHandler=this.setVisibility.bind(this),this.offsetHandler=this.setOffset.bind(this),this.art.on("subtitle",this.visibleHandler),this.art.on("subtitleLoad",this.switchHandler),this.art.on("subtitleOffset",this.offsetHandler),this.art.once("destroy",this.destroy.bind(this))}function T(){this.art.off("subtitle",this.visibleHandler),this.art.off("subtitleLoad",this.switchHandler),this.art.off("subtitleOffset",this.offsetHandler)}function S(e){this.$webvtt.style.visibility=e?"visible":"hidden"}function M(e){return(0,a._)(this,k,C).call(this,e)?e:new URL(e,document.baseURI).toString()}function C(e){return/^https?:\/\//.test(e)}function A(e){var t=this,r=e.workerUrl,n=e.wasmUrl;return new Promise(function(e){fetch(r).then(function(e){return e.text()}).then(function(o){var s=o,i=new Blob([s=s.replace(/wasmBinaryFile\s*=\s*"(subtitles-octopus-worker\.wasm)"/g,function(e,o){return n=n?(0,a._)(t,_,M).call(t,n):new URL(o,r).toString(),'wasmBinaryFile = "'.concat(n,'"')})],{type:"text/javascript"});e(URL.createObjectURL(i))})})}function F(){var e=!1;try{if(("undefined"==typeof WebAssembly?"undefined":(0,p._)(WebAssembly))==="object"&&"function"==typeof WebAssembly.instantiate){var t=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));t instanceof WebAssembly.Module&&(e=new WebAssembly.Instance(t)instanceof WebAssembly.Instance)}}catch(e){}this.utils.errorHandle(e,"Browser does not support WebAssembly")}},{"@swc/helpers/cjs/_async_to_generator.cjs":"4ElRo","@swc/helpers/cjs/_class_call_check.cjs":"5Lt2s","@swc/helpers/cjs/_class_private_method_get.cjs":"ed7qd","@swc/helpers/cjs/_class_private_method_init.cjs":"j9PUd","@swc/helpers/cjs/_create_class.cjs":"fExy2","@swc/helpers/cjs/_object_spread.cjs":"7vaqr","@swc/helpers/cjs/_object_spread_props.cjs":"iJXke","@swc/helpers/cjs/_sliced_to_array.cjs":"69dwW","@swc/helpers/cjs/_type_of.cjs":"9vrOw","@swc/helpers/cjs/_ts_generator.cjs":"a4h1C","libass-wasm":"5sqxg","@parcel/transformer-js/src/esmodule-helpers.js":"ihnSZ"}],"4ElRo":[function(e,t,r,n){"use strict";function o(e,t,r,n,o,s,i){try{var a=e[s](i),c=a.value}catch(e){r(e);return}a.done?t(c):Promise.resolve(c).then(n,o)}r._=function(e){return function(){var t=this,r=arguments;return new Promise(function(n,s){var i=e.apply(t,r);function a(e){o(i,n,s,a,c,"next",e)}function c(e){o(i,n,s,a,c,"throw",e)}a(void 0)})}}},{}],"5Lt2s":[function(e,t,r,n){"use strict";r._=function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}},{}],ed7qd:[function(e,t,r,n){"use strict";r._=function(e,t,r){if(!t.has(e))throw TypeError("attempted to get private field on non-instance");return r}},{}],j9PUd:[function(e,t,r,n){"use strict";var o=e("54129e33ca35eb56");r._=function(e,t){o._(e,t),t.add(e)}},{"54129e33ca35eb56":"3wPFD"}],"3wPFD":[function(e,t,r,n){"use strict";r._=function(e,t){if(t.has(e))throw TypeError("Cannot initialize the same private elements twice on an object")}},{}],fExy2:[function(e,t,r,n){"use strict";function o(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=Array(t);rt.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,n=Object.getOwnPropertySymbols(e);ot.indexOf(n[o])&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]]);return r}function l(e,t,r,n){var o,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(("undefined"==typeof Reflect?"undefined":(0,s._)(Reflect))==="object"&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a);return i>3&&a&&Object.defineProperty(t,r,a),a}function f(e,t){return function(r,n){t(r,n,e)}}function d(e,t,r,n,o,i){function a(e){if(void 0!==e&&"function"!=typeof e)throw TypeError("Function expected");return e}for(var c,u=n.kind,l="getter"===u?"get":"setter"===u?"set":"value",f=!t&&e?n.static?e:e.prototype:null,d=t||(f?Object.getOwnPropertyDescriptor(f,n.name):{}),p=!1,v=r.length-1;v>=0;v--){var h={};for(var b in n)h[b]="access"===b?{}:n[b];for(var b in n.access)h.access[b]=n.access[b];h.addInitializer=function(e){if(p)throw TypeError("Cannot add initializers after decoration has completed");i.push(a(e||null))};var y=(0,r[v])("accessor"===u?{get:d.get,set:d.set}:d[l],h);if("accessor"===u){if(void 0===y)continue;if(null===y||(void 0===y?"undefined":(0,s._)(y))!=="object")throw TypeError("Object expected");(c=a(y.get))&&(d.get=c),(c=a(y.set))&&(d.set=c),(c=a(y.init))&&o.unshift(c)}else(c=a(y))&&("field"===u?o.unshift(c):d[l]=c)}f&&Object.defineProperty(f,n.name,d),p=!0}function p(e,t,r){for(var n=arguments.length>2,o=0;o0&&o[o.length-1])&&(6===u[0]||2===u[0])){s=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function k(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,s=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)i.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=s.return)&&r.call(s)}finally{if(o)throw o.error}}return i}function j(){for(var e=[],t=0;t1||a(e,t)})},t&&(n[e]=t(n[e])))}function a(e,t){try{var r;(r=o[e](t)).value instanceof E?Promise.resolve(r.value.v).then(c,u):l(s[0][2],r)}catch(e){l(s[0][3],e)}}function c(e){a("next",e)}function u(e){a("throw",e)}function l(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function L(e){var t,r;return t={},n("next"),n("throw",function(e){throw e}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:E(e[n](t)),done:!1}:o?o(t):t}:o}}function T(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=_(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise(function(n,o){var s,i,a;s=n,i=o,a=(t=e[r](t)).done,Promise.resolve(t.value).then(function(e){s({value:e,done:a})},i)})}}}function S(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var M=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},C=function(e){return(C=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t})(e)};function A(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r=C(e),n=0;n=1?s[i]:1;var a=new ImageData(s,o.w,o.h);n.bufferCanvasCtx.putImageData(a,0,0),n.ctx.drawImage(n.bufferCanvas,o.x,o.y)}if(n.debug){var c=Math.round(performance.now()-t),u=e.blendTime;void 0!==u?console.log("render: "+Math.round(e.spentTime-u)+" ms, blend: "+Math.round(u)+" ms, draw: "+c+" ms; TOTAL="+Math.round(e.spentTime+c)+" ms"):console.log(Math.round(e.spentTime)+" ms (+ "+c+" ms draw)"),n.renderStart=performance.now()}}function v(){var e=n.renderFramesData,t=performance.now();n.ctx.clearRect(0,0,n.canvas.width,n.canvas.height);for(var r=0;r0?n.resize():n.video.addEventListener("loadedmetadata",d,!1))},n.getVideoPosition=function(){var e=n.video.videoWidth/n.video.videoHeight,t=n.video.offsetWidth,r=n.video.offsetHeight,o=t,s=r;t/r>e?o=Math.floor(r*e):s=Math.floor(t/e);var i=(t-o)/2,a=(r-s)/2;return{width:o,height:s,x:i,y:a}},n.setSubUrl=function(e){n.subUrl=e},n.renderFrameData=null,n.workerActive=!1,n.frameId=0,n.onWorkerMessage=function(e){!n.workerActive&&(n.workerActive=!0,n.onReadyEvent&&n.onReadyEvent());var t=e.data;switch(t.target){case"stdout":console.log(t.content);break;case"console-log":console.log.apply(console,JSON.parse(t.content));break;case"console-debug":console.debug.apply(console,JSON.parse(t.content));break;case"console-info":console.info.apply(console,JSON.parse(t.content));break;case"console-warn":console.warn.apply(console,JSON.parse(t.content));break;case"console-error":console.error.apply(console,JSON.parse(t.content));break;case"stderr":console.error(t.content);break;case"window":window[t.method]();break;case"canvas":switch(t.op){case"getContext":n.ctx=n.canvas.getContext(t.type,t.attributes);break;case"resize":n.resize(t.width,t.height);break;case"renderCanvas":n.lastRenderTime0&&s>n.maxRenderHeight&&(s=n.maxRenderHeight),e*=s/t,t=s}return{width:e,height:t}}((s=n.getVideoPosition()).width*n.pixelRatio,s.height*n.pixelRatio);e=i.width,t=i.height;var a=n.canvasParent.getBoundingClientRect().top-n.video.getBoundingClientRect().top;r=s.y-a,o=s.x}if(!e||!t){n.video||console.error("width or height is 0. You should specify width & height for resize.");return}(n.canvas.width!=e||n.canvas.height!=t||n.canvas.style.top!=r||n.canvas.style.left!=o)&&(n.canvas.width=e,n.canvas.height=t,null!=s&&(n.canvasParent.style.position="relative",n.canvas.style.display="block",n.canvas.style.position="absolute",n.canvas.style.width=s.width+"px",n.canvas.style.height=s.height+"px",n.canvas.style.top=r+"px",n.canvas.style.left=o+"px",n.canvas.style.pointerEvents="none"),n.worker.postMessage({target:"canvas",width:n.canvas.width,height:n.canvas.height}))},n.resizeWithTimeout=function(){n.resize(),setTimeout(n.resize,100)},n.runBenchmark=function(){n.worker.postMessage({target:"runBenchmark"})},n.customMessage=function(e,t){t=t||{},n.worker.postMessage({target:"custom",userData:e,preMain:t.preMain})},n.setCurrentTime=function(e){n.worker.postMessage({target:"video",currentTime:e})},n.setTrackByUrl=function(e){n.worker.postMessage({target:"set-track-by-url",url:e})},n.setTrack=function(e){n.worker.postMessage({target:"set-track",content:e})},n.freeTrack=function(e){n.worker.postMessage({target:"free-track"})},n.render=n.setCurrentTime,n.setIsPaused=function(e,t){n.worker.postMessage({target:"video",isPaused:e,currentTime:t})},n.setRate=function(e){n.worker.postMessage({target:"video",rate:e})},n.dispose=function(){n.worker.postMessage({target:"destroy"}),n.worker.terminate(),n.worker.removeEventListener("message",n.onWorkerMessage),n.worker.removeEventListener("error",n.workerError),n.workerActive=!1,n.worker=null,n.video&&(n.video.removeEventListener("timeupdate",s,!1),n.video.removeEventListener("playing",i,!1),n.video.removeEventListener("pause",a,!1),n.video.removeEventListener("seeking",c,!1),n.video.removeEventListener("seeked",u,!1),n.video.removeEventListener("ratechange",l,!1),n.video.removeEventListener("waiting",f,!1),n.video.removeEventListener("loadedmetadata",d,!1),document.removeEventListener("fullscreenchange",n.resizeWithTimeout,!1),document.removeEventListener("mozfullscreenchange",n.resizeWithTimeout,!1),document.removeEventListener("webkitfullscreenchange",n.resizeWithTimeout,!1),document.removeEventListener("msfullscreenchange",n.resizeWithTimeout,!1),window.removeEventListener("resize",n.resizeWithTimeout,!1),n.video.parentNode.removeChild(n.canvasParent),n.video=null),n.ro&&(n.ro.disconnect(),n.ro=null),n.onCustomMessage=null,n.onErrorEvent=null,n.onReadyEvent=null},n.fetchFromWorker=function(e,t,r){try{var o=e.target,s=setTimeout(function(){a(Error("Error: Timeout while try to fetch "+o))},5e3),i=function(e){e.data.target==o&&(t(e.data),n.worker.removeEventListener("message",i),n.worker.removeEventListener("error",a),clearTimeout(s))},a=function(e){r(e),n.worker.removeEventListener("message",i),n.worker.removeEventListener("error",a),clearTimeout(s)};n.worker.addEventListener("message",i),n.worker.addEventListener("error",a),n.worker.postMessage(e)}catch(e){r(e)}},n.createEvent=function(e){n.worker.postMessage({target:"create-event",event:e})},n.getEvents=function(e,t){n.fetchFromWorker({target:"get-events"},function(t){e(t.events)},t)},n.setEvent=function(e,t){n.worker.postMessage({target:"set-event",event:e,index:t})},n.removeEvent=function(e){n.worker.postMessage({target:"remove-event",index:e})},n.createStyle=function(e){n.worker.postMessage({target:"create-style",style:e})},n.getStyles=function(e,t){n.fetchFromWorker({target:"get-styles"},function(t){e(t.styles)},t)},n.setStyle=function(e,t){n.worker.postMessage({target:"set-style",style:e,index:t})},n.removeStyle=function(e){n.worker.postMessage({target:"remove-style",index:e})},n.init()})},{"@swc/helpers/cjs/_type_of.cjs":"9vrOw"}]},["bzF6W"],"bzF6W","parcelRequire03dd",{});