define(["exports"],function(_exports){"use strict";Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;_exports.default=function(options){var module,supportsWebAssembly=!1;try{!1!==options.supportsWebAssembly&&"object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate&&(module=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0)))instanceof WebAssembly.Module&&(supportsWebAssembly=new WebAssembly.Instance(module)instanceof WebAssembly.Instance)}catch(e){}console.log("WebAssembly support detected: "+(supportsWebAssembly?"yes":"no"));var self=this;function onTimeUpdate(){self.setCurrentTime(self.video.currentTime+self.timeOffset)}function onPlaying(){self.setIsPaused(!1,self.video.currentTime+self.timeOffset)}function onPause(){self.setIsPaused(!0,self.video.currentTime+self.timeOffset)}function onSeeking(){self._seeking=!0}function onSeeked(){self._seeking=!1;var currentTime=self.video.currentTime+self.timeOffset;self.setCurrentTime(currentTime)}function onRateChange(){self.setRate(self.video.playbackRate)}function onWaiting(){self.setIsPaused(!0,self.video.currentTime+self.timeOffset)}function onLoadedMetadata(e){e.target.removeEventListener(e.type,onLoadedMetadata,!1),self.resize()}function renderFrames(){var data=self.renderFramesData,beforeDrawTime=performance.now();self.ctx.clearRect(0,0,self.canvas.width,self.canvas.height);for(var blendTime,i=0;iself.maxRenderHeight?self.maxRenderHeight:newH)/height,newH),{width:width,height:height}}((videoSize=self.getVideoPosition()).width*self.pixelRatio,videoSize.height*self.pixelRatio)).width,height=newSize.height,newSize=self.canvasParent.getBoundingClientRect().top-self.video.getBoundingClientRect().top,top=videoSize.y-newSize,left=videoSize.x),width&&height?self.canvas.width===width&&self.canvas.height===height&&self.canvas.style.top===top&&self.canvas.style.left===left||(self.canvas.width=width,self.canvas.height=height,null!=videoSize&&(self.canvasParent.style.position="relative",self.canvas.style.display="block",self.canvas.style.position="absolute",self.canvas.style.width=videoSize.width+"px",self.canvas.style.height=videoSize.height+"px",videoSize.height&&(self.canvas.style.aspectRatio=videoSize.width/videoSize.height),self.canvas.style.top=top+"px",self.canvas.style.left=left+"px",self.canvas.style.pointerEvents="none"),self.worker.postMessage({target:"canvas",width:self.canvas.width,height:self.canvas.height})):self.video||console.error("width or height is 0. You should specify width & height for resize.")},self.resizeWithTimeout=function(){self.resize(),setTimeout(self.resize,100)},self.runBenchmark=function(){self.worker.postMessage({target:"runBenchmark"})},self.customMessage=function(data,options){self.worker.postMessage({target:"custom",userData:data,preMain:(options=options||{}).preMain})},self.setCurrentTime=function(currentTime){self.worker.postMessage({target:"video",currentTime:currentTime})},self.setTrackByUrl=function(url){self.worker.postMessage({target:"set-track-by-url",url:url})},self.setTrack=function(content){self.worker.postMessage({target:"set-track",content:content})},self.freeTrack=function(content){self.worker.postMessage({target:"free-track"})},self.render=self.setCurrentTime,self.setIsPaused=function(isPaused,currentTime){self.worker.postMessage({target:"video",isPaused:isPaused,currentTime:currentTime})},self.setRate=function(rate){self.worker.postMessage({target:"video",rate:rate})},self.dispose=function(){self.worker.postMessage({target:"destroy"}),self.worker.terminate(),self.worker.removeEventListener("message",self.onWorkerMessage),self.worker.removeEventListener("error",self.workerError),self.workerActive=!1,self.worker=null,self.video&&(self.video.removeEventListener("timeupdate",onTimeUpdate,!1),self.video.removeEventListener("playing",onPlaying,!1),self.video.removeEventListener("pause",onPause,!1),self.video.removeEventListener("seeking",onSeeking,!1),self.video.removeEventListener("seeked",onSeeked,!1),self.video.removeEventListener("ratechange",onRateChange,!1),self.video.removeEventListener("waiting",onWaiting,!1),self.video.removeEventListener("loadedmetadata",onLoadedMetadata,!1),document.removeEventListener("fullscreenchange",self.resizeWithTimeout,!1),document.removeEventListener("mozfullscreenchange",self.resizeWithTimeout,!1),document.removeEventListener("webkitfullscreenchange",self.resizeWithTimeout,!1),document.removeEventListener("msfullscreenchange",self.resizeWithTimeout,!1),window.removeEventListener("resize",self.resizeWithTimeout,!1),self.canvasParent.remove(),self.video=null),self.ro&&(self.ro.disconnect(),self.ro=null),self.onCustomMessage=null,self.onErrorEvent=null,self.onReadyEvent=null},self.fetchFromWorker=function(workerOptions,onSuccess,onError){try{var target=workerOptions.target,timeout=setTimeout(function(){reject(Error("Error: Timeout while try to fetch "+target))},5e3),resolve=function(event){event.data.target===target&&(onSuccess(event.data),self.worker.removeEventListener("message",resolve),self.worker.removeEventListener("error",reject),clearTimeout(timeout))},reject=function(event){onError(event),self.worker.removeEventListener("message",resolve),self.worker.removeEventListener("error",reject),clearTimeout(timeout)};self.worker.addEventListener("message",resolve),self.worker.addEventListener("error",reject),self.worker.postMessage(workerOptions)}catch(error){onError(error)}},self.createEvent=function(event){self.worker.postMessage({target:"create-event",event:event})},self.getEvents=function(onSuccess,onError){self.fetchFromWorker({target:"get-events"},function(data){onSuccess(data.events)},onError)},self.setEvent=function(event,index){self.worker.postMessage({target:"set-event",event:event,index:index})},self.removeEvent=function(index){self.worker.postMessage({target:"remove-event",index:index})},self.createStyle=function(style){self.worker.postMessage({target:"create-style",style:style})},self.getStyles=function(onSuccess,onError){self.fetchFromWorker({target:"get-styles"},function(data){onSuccess(data.styles)},onError)},self.setStyle=function(style,index){self.worker.postMessage({target:"set-style",style:style,index:index})},self.removeStyle=function(index){self.worker.postMessage({target:"remove-style",index:index})},self.init()}});