UNPKG

pag-player

Version:

pag预览插件

1 lines 61.6 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).libpag={})}(this,(function(t){"use strict";let e;try{e=performance.now.bind(performance)}catch(t){e=Date.now}class i{constructor(){this.startTime=e(),this.markers={}}reset(){this.startTime=e(),this.markers={}}mark(t){t?Object.keys(this.markers).find((e=>e===t))?console.log(`Clock.mark(): The specified marker name '${t}' already exists!`):this.markers[t]=e():console.log("Clock.mark(): An empty marker name was specified!")}measure(t,i){let r,s;if(t){if(!Object.keys(this.markers).find((e=>e===t)))return console.log(`Clock.measure(): The specified makerFrom '${t}' does not exist!`),0;r=this.markers[t]}else r=this.startTime;if(i){if(!Object.keys(this.markers).find((t=>t===i)))return console.log(`Clock.measure(): The specified makerTo '${i}' does not exist!`),0;s=this.markers[i]}else s=e();return s-r}}var r=(t=>(t[t.Unknown=0]="Unknown",t[t.Vector=1]="Vector",t[t.Bitmap=2]="Bitmap",t[t.Video=3]="Video",t))(r||{}),s=(t=>(t[t.End=0]="End",t[t.FontTables=1]="FontTables",t[t.VectorCompositionBlock=2]="VectorCompositionBlock",t[t.CompositionAttributes=3]="CompositionAttributes",t[t.ImageTables=4]="ImageTables",t[t.LayerBlock=5]="LayerBlock",t[t.LayerAttributes=6]="LayerAttributes",t[t.SolidColor=7]="SolidColor",t[t.TextSource=8]="TextSource",t[t.TextPathOption=9]="TextPathOption",t[t.TextMoreOption=10]="TextMoreOption",t[t.ImageReference=11]="ImageReference",t[t.CompositionReference=12]="CompositionReference",t[t.Transform2D=13]="Transform2D",t[t.MaskBlock=14]="MaskBlock",t[t.ShapeGroup=15]="ShapeGroup",t[t.Rectangle=16]="Rectangle",t[t.Ellipse=17]="Ellipse",t[t.PolyStar=18]="PolyStar",t[t.ShapePath=19]="ShapePath",t[t.Fill=20]="Fill",t[t.Stroke=21]="Stroke",t[t.GradientFill=22]="GradientFill",t[t.GradientStroke=23]="GradientStroke",t[t.MergePaths=24]="MergePaths",t[t.TrimPaths=25]="TrimPaths",t[t.Repeater=26]="Repeater",t[t.RoundCorners=27]="RoundCorners",t[t.Performance=28]="Performance",t[t.DropShadowStyle=29]="DropShadowStyle",t[t.InnerShadowStyle=30]="InnerShadowStyle",t[t.OuterGlowStyle=31]="OuterGlowStyle",t[t.InnerGlowStyle=32]="InnerGlowStyle",t[t.BevelAndEmbossStyle=33]="BevelAndEmbossStyle",t[t.SatinStyle=34]="SatinStyle",t[t.ColorOverlayStyle=35]="ColorOverlayStyle",t[t.GradientOverlayStyle=36]="GradientOverlayStyle",t[t.StrokeStyle=37]="StrokeStyle",t[t.TintEffect=38]="TintEffect",t[t.FillEffect=39]="FillEffect",t[t.StrokeEffect=40]="StrokeEffect",t[t.TritoneEffect=41]="TritoneEffect",t[t.DropShadowEffect=42]="DropShadowEffect",t[t.RadialWipeEffect=43]="RadialWipeEffect",t[t.DisplacementMapEffect=44]="DisplacementMapEffect",t[t.BitmapCompositionBlock=45]="BitmapCompositionBlock",t[t.BitmapSequence=46]="BitmapSequence",t[t.ImageBytes=47]="ImageBytes",t[t.ImageBytes2=48]="ImageBytes2",t[t.ImageBytes3=49]="ImageBytes3",t[t.VideoCompositionBlock=50]="VideoCompositionBlock",t[t.VideoSequence=51]="VideoSequence",t[t.LayerAttributesV2=52]="LayerAttributesV2",t[t.Count=53]="Count",t))(s||{});const n=t=>{const e=t.readUint16();let i=(63&e)>>>0;const r=e>>6;return 63===i&&(i=t.readUint32()),t.context.tagLevel<r&&(t.context.tagLevel=r),{code:r,length:i}};function a(t,e,i){let r=n(t);for(;r.code!==s.End;){const s=t.readBytes(r.length);i(s,r.code,e),t.context.tagLevel<s.context.tagLevel&&(t.context.tagLevel=s.context.tagLevel),r=n(t)}}const o={alpha:!0,depth:!1,stencil:!1,antialias:!0};var h=(t=>(t[t.Normal=0]="Normal",t[t.Multiply=1]="Multiply",t[t.Screen=2]="Screen",t[t.Overlay=3]="Overlay",t[t.Darken=4]="Darken",t[t.Lighten=5]="Lighten",t[t.ColorDodge=6]="ColorDodge",t[t.ColorBurn=7]="ColorBurn",t[t.HardLight=8]="HardLight",t[t.SoftLight=9]="SoftLight",t[t.Difference=10]="Difference",t[t.Exclusion=11]="Exclusion",t[t.Hue=12]="Hue",t[t.Saturation=13]="Saturation",t[t.Color=14]="Color",t[t.Luminosity=15]="Luminosity",t[t.DestinationIn=21]="DestinationIn",t[t.DestinationOut=22]="DestinationOut",t[t.DestinationATop=23]="DestinationATop",t[t.SourceIn=24]="SourceIn",t[t.SourceOut=25]="SourceOut",t[t.Xor=26]="Xor",t))(h||{}),l=(t=>(t[t.None=0]="None",t[t.Linear=1]="Linear",t[t.Bezier=2]="Bezier",t[t.Hold=3]="Hold",t))(l||{});const d=navigator&&/(ios|ipad|iphone)/.test(navigator.userAgent.toLowerCase()),c={red:0,green:0,blue:0},u={red:255,green:255,blue:255},m=()=>{console.error("PAG Verify Failed!")},p=t=>!!t||(console.error("PAG Verify Failed!"),!1),f=class{constructor(){this.id=0,this.width=0,this.height=0,this.duration=0,this.frameRate=30,this.backgroundColor=u,this.cacheID=0,this.cacheID=f.cacheIDCount,f.cacheIDCount+=1}type(){return r.Unknown}getStaticTimeRanges(){return[]}verify(){return p(this.width>0&&this.height>0&&this.duration>0&&this.frameRate>0)}};let g=f;g.cacheIDCount=1;class y extends g{constructor(){super(...arguments),this.hasAlpha=!1,this.sequences=[],this.staticTimeRanges=[],this.staticTimeRangeUpdated=!1}type(){return r.Video}getStaticTimeRanges(){return this.staticTimeRangeUpdated||(this.staticTimeRangeUpdated=!0,this.updateStaticTimeRanges()),this.staticTimeRanges}updateStaticTimeRanges(){if(!(this.duration<=1))if(this.sequences.length>0){let t=this.sequences[0];for(let e=1;e<this.sequences.length;e++){const i=this.sequences[e];i.frameRate>t.frameRate&&(t=i)}const e=this.frameRate/t.frameRate;for(const i of t.staticTimeRanges)i.start=Math.round(i.start*e),i.end=Math.round(i.end*e),this.staticTimeRanges.push(i)}else{const t={start:0,end:this.duration-1};this.staticTimeRanges.push(t)}}hasImageContent(){return!0}verify(){if(!super.verify()||this.sequences.length<=0)return m(),!1;for(const t of this.sequences)if(!t||!t.verify())return m(),!1;return!0}}class v{constructor(t,e){this.numerator=1,this.denominator=1,this.numerator=t,this.denominator=e}value(){return this.numerator/this.denominator}}const w=new v(1,1);class b{constructor(t,e){this.x=t,this.y=e}}const x=new b(0,0);var E=(t=>(t[t.None=0]="None",t[t.Alpha=1]="Alpha",t[t.AlphaInverted=2]="AlphaInverted",t[t.Luma=3]="Luma",t[t.LumaInverted=4]="LumaInverted",t))(E||{}),S=(t=>(t[t.Unknown=0]="Unknown",t[t[void 0]=1]="undefined",t[t.Solid=2]="Solid",t[t.Text=3]="Text",t[t.Shape=4]="Shape",t[t.Image=5]="Image",t[t.PreCompose=6]="PreCompose",t))(S||{});class T{constructor(){this.id=0,this.parent=void 0,this.containingComposition=void 0,this.stretch=w,this.startTime=0,this.duration=0,this.autoOrientation=!1,this.transform=void 0,this.isActive=!0,this.blendMode=h.Normal,this.trackMatteType=0,this.trackMatteLayer=void 0,this.timeRemap=void 0,this.masks=void 0,this.effects=void 0,this.layerStyles=void 0,this.layerCache=void 0,this.maxScale=void 0}type(){return 0}excludeVaryingRanges(t){var e;if(null==(e=this.transform)||e.excludeVaryingRanges(t),void 0!==this.timeRemap&&this.timeRemap.excludeVaryingRanges(t),void 0!==this.masks)for(const e of this.masks)e.excludeVaryingRanges(t);if(void 0!==this.effects&&this.effects.length>0)for(const e of this.effects)e.excludeVaryingRanges(t);if(void 0!==this.layerStyles&&this.layerStyles.length>0)for(const e of this.layerStyles)e.excludeVaryingRanges(t)}gotoFrame(t){var e;if(null==(e=this.transform)||e.gotoFrame(t),void 0!==this.timeRemap&&this.timeRemap.gotoFrame(t),void 0!==this.masks&&this.masks.length>0)for(const e of this.masks)e.gotoFrame(t);if(void 0!==this.effects&&this.effects.length>0)for(const e of this.effects)e.gotoFrame(t);if(void 0!==this.layerStyles&&this.layerStyles.length>0)for(const e of this.layerStyles)e.gotoFrame(t)}verify(){if(!this.containingComposition||this.duration<=0||!this.transform)return m(),!1;if(!this.transform.verify())return m(),!1;if(this.masks&&this.masks.length>0)for(const t of this.masks)if(!t||!t.verify())return m(),!1;if(this.layerStyles&&this.layerStyles.length>0)for(const t of this.layerStyles)if(!t||!t.verify())return m(),!1;if(this.effects&&this.effects.length>0)for(const t of this.effects)if(!t||!t.verify())return m(),!1;return!0}getMaxScaleFactor(){if(void 0!==this.maxScale)return this.maxScale;this.maxScale=new b(1,1);const t=this.transform.scale;if(t.animatable()){const{keyframes:e}=t;let i=Math.abs(e[0].startValue.x),r=Math.abs(e[0].startValue.y);if(void 0!==e&&e.length>0)for(const t of e){const e=Math.abs(t.endValue.x),s=Math.abs(t.endValue.y);i<e&&(i=e),r<s&&(r=s)}this.maxScale.x=i,this.maxScale.y=r}else this.maxScale.x=Math.abs(t.value.x),this.maxScale.y=Math.abs(t.value.y);if(void 0!==this.parent){const t=this.parent.getMaxScaleFactor();this.maxScale.x*=t.x,this.maxScale.y*=t.y}return this.maxScale}}const R=.005,P=t=>({red:t.readUint8(),green:t.readUint8(),blue:t.readUint8()}),A=t=>t.readEncodedUint64(),C=t=>{const e=t.readFloat32(),i=t.readFloat32();return new b(e,i)},V=(t,e)=>{e.width=t.readEncodeInt32(),e.height=t.readEncodeInt32(),e.duration=A(t),e.frameRate=t.readFloat32(),e.backgroundColor=P(t)};class k{constructor(){this.tagLevel=0,this.compositions=[],this.errorMessages=[]}throwException(t){this.errorMessages.push(t)}releaseCompositions(){const t=this.compositions.slice();return this.compositions=[],t}}const _="PAG file decode error!";class B{constructor(t,e){this._position=0,this.bitPosition=0,this.dataView=new DataView(t),this.littleEndian=!!e,this.context=new k}get length(){return this.dataView.byteLength}get bytesAvailable(){return this.dataView.byteLength-this._position}data(){return this.dataView.buffer}get position(){return this._position}alignWithBytes(){this.bitPosition=8*this._position}readBoolean(){const t=this.dataView.getInt8(this._position);return this._position+=1,this.positonChanged(),Boolean(t)}readChar(){if(this._position>=this.length)throw new Error(_);const t=this.dataView.getInt8(this._position);return this._position+=1,this.positonChanged(),String.fromCharCode(t)}readUint8(){if(this._position>=this.length)throw new Error(_);const t=this.dataView.getUint8(this._position);return this._position+=1,this.positonChanged(),t}readInt8(){if(this._position>=this.length)throw new Error(_);const t=this.dataView.getInt8(this._position);return this._position+=1,this.positonChanged(),t}readInt16(){if(this._position>=this.length-1)throw new Error(_);const t=this.dataView.getInt16(this._position,this.littleEndian);return this._position+=2,this.positonChanged(),t}readUint16(){if(this._position>=this.length-1)throw new Error(_);const t=this.dataView.getUint16(this._position,this.littleEndian);return this._position+=2,this.positonChanged(),t}readInt24(){if(this._position>=this.length-2)throw new Error(_);const t=this.dataView.getInt16(this._position,this.littleEndian),e=this.dataView.getInt8(this._position+2);return this._position+=3,this.positonChanged(),this.littleEndian?t+65536*e:65536*t+e}readUint24(){if(this._position>=this.length-2)throw new Error(_);const t=this.dataView.getUint16(this._position,this.littleEndian),e=this.dataView.getUint8(this._position+2);return this._position+=3,this.positonChanged(),this.littleEndian?t+65536*e:65536*t+e}readInt32(){if(this._position>=this.length-3)throw new Error(_);const t=this.dataView.getInt32(this._position,this.littleEndian);return this._position+=4,this.positonChanged(),t}readUint32(){if(this._position>=this.length-3)throw new Error(_);const t=this.dataView.getUint32(this._position,this.littleEndian);return this._position+=4,this.positonChanged(),t}readInt64(){if(this._position>=this.length-7)throw new Error(_);const t=this.dataView.getInt32(this._position,this.littleEndian),e=this.dataView.getInt32(this._position+4,this.littleEndian);return this._position+=8,this.positonChanged(),this.littleEndian?t+2**32*e:2**32*t+e}readUint64(){if(this._position>=this.length-7)throw new Error(_);const t=this.dataView.getUint32(this._position,this.littleEndian),e=this.dataView.getUint32(this._position+4,this.littleEndian);return this._position+=8,this.positonChanged(),this.littleEndian?t+2**32*e:2**32*t+e}readFloat32(){if(this._position>=this.length-3)throw new Error(_);const t=this.dataView.getFloat32(this._position,this.littleEndian);return this._position+=4,this.positonChanged(),t}readDouble(){if(this._position>=this.length-7)throw new Error(_);const t=this.dataView.getFloat64(this._position,this.littleEndian);return this._position+=8,this.positonChanged(),t}readUTF8String(){if(this._position>=this.length)throw new Error(_);let t="",e=0;for(let i=this._position;i<this.length&&0!==this.dataView.getUint8(i);i++)t+=`%${this.dataView.getUint8(i).toString(16)}`,e+=1;return this._position+=e,this.positonChanged(),decodeURIComponent(t)}readEncodedUint32(){let t=0,e=0;for(let i=0;i<32;i+=7){if(this._position>=this.length)throw Error("readEncodedUint32 End of file was encountered.");if(e=this.dataView.getUint8(this._position),this._position+=1,t|=(127&e)<<i,0==(128&e))break}return this.positonChanged(),t}readEncodeInt32(){const t=this.readEncodedUint32(),e=t>>1;return(1&t)>0?-e:e}readEncodedUint64(){let t=0,e=0;for(let i=0;i<64;i+=7){if(this._position>=this.length)throw Error("readEncodedUint64 End of file was encountered.");if(e=this.dataView.getUint8(this._position),this._position+=1,t|=(127&e)<<i,0==(128&e))break}return this.positonChanged(),t}readEncodeInt64(){const t=this.readEncodedUint64(),e=t<<0;return(1&t)>0?-e:e}readBytes(t){const e=t||this.length-this._position;if(this._position>this.length-e)throw new Error(_);const i=this.dataView.buffer.slice(this._position,this._position+e);return this._position+=e,this.positonChanged(),new B(i,this.littleEndian)}readUBits(t){const e=[0,1,3,7,15,31,63,127,255];let i=0;if(this.bitPosition>8*this.length-t)throw new Error(_);let r=0;for(;r<t;){const s=Math.floor(.125*this.bitPosition),n=this.bitPosition%8;let a=this.dataView.getUint8(s)>>n;const o=Math.min(8-n,t-r);a&=e[o],i|=a<<r,r+=o,this.bitPosition+=o}return this.bitPositionChanged(),i}readBits(t){let e=this.readUBits(t);e<<=32-t;return e<<0>>32-t}readNumBits(){return this.readUBits(5)+1}readInt32List(t){const e=this.readNumBits(),i=new Array(t);for(let r=0;r<t;r++)i[r]=this.readBits(e);return i}readUint32List(t){const e=this.readNumBits(),i=new Array(t);for(let r=0;r<t;r++)i[r]=this.readUBits(e);return i}readBitBoolean(){return 0!==this.readUBits(1)}readFloatList(t,e){const i=this.readNumBits(),r=new Array(t);for(let s=0;s<t;s++)r[s]=this.readBits(i)*e;return r}bitPositionChanged(){this._position=Math.ceil(.125*this.bitPosition)}positonChanged(){this.bitPosition=8*this._position}}class L{constructor(t,e){this.length=0,this.data=t,this.length=e}}class U{constructor(){this.isKeyframe=!1,this.frame=0,this.fileBytes=new L(new B(new ArrayBuffer(0)),0)}}class F{constructor(){this.composition=void 0,this.id=0,this.width=0,this.height=0,this.frameRate=0,this.frameCount=0,this.isKeyFrameFlags=[]}verify(){return p(void 0!==this.composition&&this.width>0&&this.height>0&&this.frameRate>0)}}class D extends F{constructor(){super(...arguments),this.alphaStartX=0,this.alphaStartY=0,this.frames=[],this.headers=[],this.staticTimeRanges=[]}verify(){if(!super.verify()||this.frames.length<=0)return m(),!1;for(const t of this.frames)if(!t||!t.fileBytes)return m(),!1;for(const t of this.headers)if(!t)return m(),!1;return!0}getVideoWidth(){let t=this.alphaStartX+this.width;return t%2==1&&(t+=1),t}getVideoHeight(){let t=this.alphaStartY+this.height;return t%2==1&&(t+=1),t}}const M=t=>{const e=t.readEncodedUint32(),i=t.readBytes(e);if(0===e)throw new Error("Read start code with length 0!");const r=new ArrayBuffer(e+4);return new DataView(r).setUint32(0,e),((t,e,i,r,s)=>{if(e>=t.byteLength||r>=i.byteLength||i.byteLength-r>t.byteLength-e||s>i.byteLength)return;const n=new Uint8Array(t),a=new Uint8Array(i,r,s);n.set(a,e)})(r,4,i.data(),0,e),new L(new B(r),e+4)},I=t=>{const e=new y;e.id=t.readEncodedUint32(),e.hasAlpha=t.readBoolean();return a(t,{composition:e,hasAlpha:e.hasAlpha},O),e},O=(t,e,i)=>{const{composition:r}=i;switch(e){case s.CompositionAttributes:V(t,r);break;case s.VideoSequence:{const e=((t,e)=>{const i=new D;i.width=t.readEncodeInt32(),i.height=t.readEncodeInt32(),i.frameRate=t.readFloat32(),e&&(i.alphaStartX=t.readEncodeInt32(),i.alphaStartY=t.readEncodeInt32());const r=M(t),s=M(t);i.headers.push(r,s),i.frameCount=t.readEncodedUint32();for(let e=0;e<i.frameCount;e++){const e=new U;e.isKeyframe=t.readBitBoolean(),i.frames.push(e)}for(let e=0;e<i.frameCount;e++){const r=i.frames[e];r.frame=A(t),r.fileBytes=M(t)}if(t.bytesAvailable>0){const e=t.readEncodedUint32();for(let r=0;r<e;r++){const e={start:0,end:0};e.start=A(t),e.end=A(t),i.staticTimeRanges.push(e)}}return i})(t,i.hasAlpha);e.composition=r,r.sequences.push(e);break}}};var q=(t=>(t[t.Unknown=0]="Unknown",t[t.Tint=1]="Tint",t[t.Fill=2]="Fill",t[t.Stroke=3]="Stroke",t[t.Tritone=4]="Tritone",t[t.DropShadow=5]="DropShadow",t[t.RadialWipe=6]="RadialWipe",t[t.DisplacementMap=7]="DisplacementMap",t))(q||{});function z(t,e,i){if(i<e)return;for(let r=t.length-1;r>=0;r--){const s=t[r];if(!(s.end<e||s.start>i)){if(s.start<e&&s.end>i){const n={start:i+1,end:s.end};s.end=e-1,n.end>n.start&&t.splice(r+1,0,n),s.end<=s.start&&t.splice(r,1);break}s.start>=e&&s.end<=i?t.splice(r,1):s.start<e?(s.end=e-1,s.end<=s.start&&t.splice(r,1)):(s.start=i+1,s.end<=s.start&&t.splice(r,1))}}}function G(t,e){for(let i=t.length-1;i>=0;i--){const r=t[i];if(r.start===e||r.end<=e)break;if(r.start<e&&r.end>e){const s={start:e,end:r.end};r.end=e-1,s.end>s.start&&t.splice(i+1,0,s),r.end<=r.start&&t.splice(i,1);break}}}class W extends g{constructor(){super(...arguments),this.layers=[],this.staticTimeRanges=[],this.staticTimeRangeUpdated=!1}type(){return r.Vector}getStaticTimeRanges(){return this.staticTimeRangeUpdated||(this.staticTimeRangeUpdated=!0,this.updateStaticTimeRanges()),this.staticTimeRanges}verify(){if(!super.verify())return m(),!1;for(const t of this.layers)if(!t||!t.verify())return m(),!1;return!0}updateStaticTimeRanges(){if(this.duration>1){const t={start:0,end:this.duration-1};this.staticTimeRanges=[t];for(const t of this.layers){if(this.staticTimeRanges.length<=0)break;t.excludeVaryingRanges(this.staticTimeRanges),G(this.staticTimeRanges,t.startTime),G(this.staticTimeRanges,t.startTime+t.duration)}}}}class N{constructor(t){this.value=t}animatable(){return!1}excludeVaryingRanges(t){}gotoFrame(t){}}class H{static createDefaultTransform2D(){return new H}constructor(){this.anchorPoint=new N(x),this.position=new N(x),this.xPosition=new N(0),this.yPosition=new N(0),this.scale=new N(new b(1,1)),this.rotation=new N(0),this.opacity=new N(255)}excludeVaryingRanges(t){this.anchorPoint.excludeVaryingRanges(t),void 0!==this.position?this.position.excludeVaryingRanges(t):(this.xPosition.excludeVaryingRanges(t),this.yPosition.excludeVaryingRanges(t)),this.scale.excludeVaryingRanges(t),this.rotation.excludeVaryingRanges(t),this.opacity.excludeVaryingRanges(t)}gotoFrame(t){this.anchorPoint.gotoFrame(t),void 0!==this.position?this.position.gotoFrame(t):(this.xPosition.gotoFrame(t),this.yPosition.gotoFrame(t)),this.scale.gotoFrame(t),this.rotation.gotoFrame(t),this.opacity.gotoFrame(t)}verify(){return void 0!==this.anchorPoint&&(void 0!==this.position||void 0!==this.xPosition&&void 0!==this.yPosition)&&void 0!==this.scale&&void 0!==this.rotation&&void 0!==this.opacity}}class j extends T{constructor(){super(...arguments),this.composition=void 0,this.compositionStartTime=0,this.staticTimeRanges=void 0,this.staticTimeRangeUpdated=!1}static wrap(t){const e=new j;e.duration=t.duration;const i=new H;return e.transform=i,e.composition=t,e}type(){return S.PreCompose}excludeVaryingRanges(t){super.excludeVaryingRanges(t),t&&0!==t.length&&this.updateStaticTimeRanges()}gotoFrame(t){super.gotoFrame(t)}verify(){return!!super.verify()&&!!this.composition}updateStaticTimeRanges(){var t;if(this.staticTimeRangeUpdated)return;this.staticTimeRangeUpdated=!0;const e=null==(t=this.composition)?void 0:t.getStaticTimeRanges();if(e){for(let t=e.length-1;t>=0;t--){const i=e[t];i.start+=this.compositionStartTime,i.end+=this.compositionStartTime,i.end<=this.startTime?e.pop():i.start<this.startTime?i.start=0:i.start>=this.startTime+this.duration-1?e.pop():i.end>this.startTime+this.duration-1&&(i.end=this.startTime+this.duration-1)}this.staticTimeRanges=e}}}class X extends T{constructor(){super(...arguments),this.contents=[]}type(){return S.Shape}excludeVaryingRanges(t){super.excludeVaryingRanges(t);for(const e of this.contents)e.excludeVaryingRanges(t)}gotoFrame(t){super.gotoFrame(t);for(const e of this.contents)e.gotoFrame(t)}verify(){if(!super.verify())return!1;for(const t of this.contents)if(void 0===t||!t.verify())return!1;return!0}}class K extends T{constructor(){super(...arguments),this.solidColor=c,this.width=0,this.height=0}type(){return S.Solid}excludeVaryingRanges(t){super.excludeVaryingRanges(t)}gotoFrame(t){super.gotoFrame(t)}verify(){return super.verify()?p(this.width>0&&this.height>0):(m(),!1)}}class Y extends T{type(){return S.undefined}}class ${constructor(){this.startTime=0,this.endTime=0,this.interpolationType=l.Hold,this.bezierOut=[],this.bezierIn=[],this.spatialOut=x,this.spatialIn=x}initialize(){}getValue(t){return this.startValue}containsTime(t){return t>=this.startTime&&t<this.endTime}}class Z extends N{constructor(t){if(!t||0===t.length)throw new Error("keyframes is required");if(void 0===t[0].startValue)throw new Error("startValue is required");super(t[0].startValue),this.keyframes=t,this.lastKeyframeIndex=0;for(const e of t)e.initialize()}animatable(){return!0}excludeVaryingRanges(t){for(const e of this.keyframes)switch(e.interpolationType){case l.Bezier:case l.Linear:z(t,e.startTime,e.endTime-1);break;default:G(t,e.startTime),G(t,e.endTime)}}gotoFrame(t){let e=this.keyframes[this.lastKeyframeIndex];if(e.containsTime(t))this.value=e.getValue(t);else{if(t<e.startTime)for(;this.lastKeyframeIndex>0&&(this.lastKeyframeIndex-=1,!this.keyframes[this.lastKeyframeIndex].containsTime(t)););else for(;this.lastKeyframeIndex<this.keyframes.length-1&&(this.lastKeyframeIndex+=1,!this.keyframes[this.lastKeyframeIndex].containsTime(t)););e=this.keyframes[this.lastKeyframeIndex],void 0!==e.startValue&&t<=e.startTime?this.value=e.startValue:void 0!==e.endValue&&t>=e.endTime?this.value=e.endValue:this.value=e.getValue(t)}}}var J=(t=>(t[t.Value=0]="Value",t[t.FixedValue=1]="FixedValue",t[t.SimpleProperty=2]="SimpleProperty",t[t.DiscreteProperty=3]="DiscreteProperty",t[t.MultiDimensionProperty=4]="MultiDimensionProperty",t[t.SpatialProperty=5]="SpatialProperty",t[t.BitFlag=6]="BitFlag",t[t.Custom=7]="Custom",t))(J||{});const Q=(t,e,i)=>{const r=i,s=[];if(!r.configs||0===r.configs.length)return e;for(const e of r.configs){const i=st(t,e);s.push(i)}t.alignWithBytes();let n=0;for(const i of r.configs){const r=s[n],a=i.key;i.readAttribute(t,r,e,a),n+=1}return e};class tt{constructor(t,e,i){this.attributeType=e,this.defaultValue=i,this.key=t}readAttribute(t,e,i,r){}readValue(t){}readValueList(t,e,i){}dimensionality(){return 1}newKeyframe(t){return new $}}const et=(t,e,i,r,s)=>{6===s.attributeType?i[r]=e.exist:1===s.attributeType?i[r]=s.readValue(t):0===s.attributeType?i[r]=rt(t,s,e):i[r]=it(t,s,e)},it=(t,e,i)=>{let r;if(i.exist)if(i.animatable){const s=nt(t,e,i);if(!s||0===s.length)throw new Error("Wrong number of keyframes!");at(t,s,e),ot(t,s,e),i.hasSpatial,r=new Z(s)}else r=new N(rt(t,e,i));else r=new N(e.defaultValue);return r},rt=(t,e,i)=>i.exist?e.readValue(t):e.defaultValue,st=(t,e)=>{const i={exist:!1,animatable:!1,hasSpatial:!1},{attributeType:r}=e;return 1===r?(i.exist=!0,i):(i.exist=t.readBitBoolean(),i.exist&&0!==r&&6!==r&&7!==r?(i.animatable=t.readBitBoolean(),i.animatable&&5===r?(i.hasSpatial=t.readBitBoolean(),i):i):i)},nt=(t,e,i)=>{const r=[],s=t.readEncodedUint32();for(let n=0;n<s;n++){let s;if(3===e.attributeType)s=new $;else{const r=t.readUBits(2);r===l.Hold?s=new $:(s=e.newKeyframe(i),s.interpolationType=r)}r.push(s)}return r},at=(t,e,i)=>{const r=e.length;e[0].startTime=A(t);for(let i=0;i<r;i++){const s=A(t);e[i].endTime=s,i<r-1&&(e[i+1].startTime=s)}const s=[];i.readValueList(t,s,r+1);let n=0;e[0].startValue=s[n],n+=1;for(let t=0;t<r;t++){const i=s[n];n+=1,e[t].endValue=i,t<r-1&&(e[t+1].startValue=i)}},ot=(t,e,i)=>{const r=4===i.attributeType?i.dimensionality():1,s=t.readNumBits();for(const i of e){if(i.interpolationType!==l.Bezier)continue;let e,n;for(let a=0;a<r;a++)e=t.readBits(s)*R,n=t.readBits(s)*R,i.bezierOut.push({x:e,y:n}),e=t.readBits(s)*R,n=t.readBits(s)*R,i.bezierIn.push({x:e,y:n})}};function ht(t,e,i){return t+(e-t)*i}class lt{getInterpolation(t){return t}}class dt extends ${initialize(){super.initialize(),this.interpolationType===l.Bezier||(this.xInterpolator=new lt,this.yInterpolator=new lt)}getValue(t){var e,i,r,s;const n=(t-this.startTime)/(this.endTime-this.startTime),a=null!=(i=null==(e=this.xInterpolator)?void 0:e.getInterpolation(n))?i:n,o=null!=(s=null==(r=this.yInterpolator)?void 0:r.getInterpolation(n))?s:n;return{x:ht(this.startValue.x,this.endValue.x,a),y:ht(this.startValue.y,this.endValue.y,o)}}}class ct extends ${initialize(){this.interpolationType===l.Bezier||(this.interpolator=new lt)}getProgress(t){var e,i;const r=(t-this.startTime)/(this.endTime-this.startTime);return null!=(i=null==(e=this.interpolator)?void 0:e.getInterpolation(r))?i:r}getValue(t){const e=this.getProgress(t);return ht(this.startValue,this.endValue,e)}}class ut extends tt{constructor(t,e,i){super(t,e,i)}readAttribute(t,e,i,r){et(t,e,i,r,this)}readValue(t){return t.readFloat32()}readValueList(t,e,i){for(let r=0;r<i;r++)e.push(this.readValue(t))}dimensionality(){return 1}newKeyframe(t){return new ct}}class mt extends tt{constructor(t,e,i){super(t,e,i)}readAttribute(t,e,i,r){et(t,e,i,r,this)}readValue(t){return t.readBoolean()}readValueList(t,e,i){for(let r=0;r<i;r++)e.push(t.readBitBoolean())}dimensionality(){return 1}newKeyframe(t){return new $}}class pt extends tt{constructor(t,e,i){super(t,e,i)}readAttribute(t,e,i,r){et(t,e,i,r,this)}readValue(t){return t.readUint8()}readValueList(t,e,i){const r=t.readUint32List(i);for(let t=0;t<i;t++)e.push(r[t])}dimensionality(){return 1}newKeyframe(t){return new ct}}class ft extends tt{constructor(t,e,i){super(t,e,i)}readAttribute(t,e,i,r){et(t,e,i,r,this)}readValue(t){return A(t)}readValueList(t,e,i){for(let r=0;r<i;r++)e[r]=this.readValue(t)}dimensionality(){return 1}newKeyframe(t){return new ct}}class gt extends tt{constructor(t,e,i){super(t,e,i)}readAttribute(t,e,i,r){et(t,e,i,r,this)}readValue(t){return C(t)}readValueList(t,e,i){if(this.attributeType===J.SpatialProperty){const r=t.readFloatList(2*i,.05);for(let t=0;t<i;t++)e[t]||(e[t]=new b(0,0)),e[t].x=r[t]}else for(let r=0;r<i;r++)e[r]=C(t)}dimensionality(){return 2}newKeyframe(t){return this.attributeType===J.MultiDimensionProperty?new dt:new ct}}class yt extends tt{constructor(t,e,i){super(t,e,i)}readAttribute(t,e,i,r){et(t,e,i,r,this)}readValue(t){return(t=>{const e=t.readEncodeInt32(),i=t.readEncodedUint32();return new v(e,i)})(t)}readValueList(t,e,i){for(let r=0;r<i;r++)e[r]=this.readValue(t)}dimensionality(){return 1}newKeyframe(t){return new ct}}class vt extends tt{constructor(t,e,i){super(t,e,i)}readAttribute(t,e,i,r){et(t,e,i,r,this)}readValue(t){return(t=>{const e=t.readEncodedUint32();if(0===e)throw new Error("Layer ID is 0");const i=new T;return i.id=e,i})(t)}readValueList(t,e,i){for(let r=0;r<i;r++)e[r]=this.readValue(t)}dimensionality(){return 1}newKeyframe(t){return new ct}}const wt={tagCode:s.LayerAttributes,configs:[new mt("isActive",J.BitFlag,!0),new mt("autoOrientation",J.BitFlag,!1),new vt("parent",J.Value,void 0),new yt("stretch",J.Value,w),new ft("startTime",J.Value,0),new pt("blendMode",J.Value,h.Normal),new pt("trackMatteType",J.Value,E.None),new ut("timeRemap",J.SimpleProperty,0),new ft("duration",J.FixedValue,0)]},bt={tagCode:s.LayerAttributesV2,configs:[new mt("isActive",J.BitFlag,!0),new mt("autoOrientation",J.BitFlag,!1),new vt("parent",J.Value,void 0),new yt("stretch",J.Value,w),new ft("startTime",J.Value,0),new pt("blendMode",J.Value,h.Normal),new pt("trackMatteType",J.Value,E.None),new ut("timeRemap",J.SimpleProperty,0),new ft("duration",J.FixedValue,0),new class extends tt{constructor(t,e,i){super(t,e,i)}readAttribute(t,e,i,r){et(t,e,i,r,this)}readValue(t){return t.readUTF8String()}readValueList(t,e,i){for(let r=0;r<i;r++)e[r]=this.readValue(t)}dimensionality(){return 1}newKeyframe(t){return new ct}}("name",J.Value,"")]},xt={tagCode:s.Transform2D,configs:[new gt("anchorPoint",J.SpatialProperty,x),new gt("position",J.SpatialProperty,x),new ut("xPosition",J.SimpleProperty,0),new ut("yPosition",J.SimpleProperty,0),new gt("scale",J.MultiDimensionProperty,new b(1,1)),new ut("rotation",J.SimpleProperty,0),new pt("opacity",J.SimpleProperty,255)]};s.MaskBlock;const Et=(t,e,i)=>{switch(e){case s.LayerAttributes:Q(t,i,wt),i.duration<=0&&(i.duration=1);break;case s.LayerAttributesV2:Q(t,i,bt),i.duration<=0&&(i.duration=1);break;case s.Transform2D:i.transform=new H,Q(t,i.transform,xt),i.transform.position.animatable()||i.transform.position.value!==x||!i.transform.xPosition.animatable()&&0===i.transform.xPosition.value&&!i.transform.yPosition.animatable()&&0===i.transform.yPosition.value?(i.transform.xPosition=new N(0),i.transform.yPosition=new N(0)):i.transform.position=new N(x);break;case s.SolidColor:i.type()===S.Solid&&function(t,e){e.solidColor=P(t),e.width=t.readEncodeInt32(),e.height=t.readEncodeInt32()}(t,i);break;case s.CompositionReference:i.type()===S.PreCompose&&function(t,e){const i=t.readEncodedUint32();i>0&&(e.composition=new g,e.composition.id=i),e.compositionStartTime=A(t)}(t,i)}},St=t=>{const e=new W;return e.id=t.readEncodedUint32(),a(t,e,Tt),Rt(e.layers),e},Tt=(t,e,i)=>{switch(e){case s.CompositionAttributes:V(t,i);break;case s.LayerBlock:i.layers.push((t=>{let e;switch(t.readUint8()){case S.undefined:e=new Y;break;case S.Solid:e=new K;break;case S.Shape:e=new X;break;case S.PreCompose:e=new j;break;default:e=new T}return e.id=t.readEncodedUint32(),a(t,e,Et),e})(t))}},Rt=t=>{if(t&&0===t.length)return;const e=new Map;for(const i of t)i&&(Pt(i),e.set(i.id,i));let i=0;for(const r of t)if(r){if(void 0!==r.parent){const t=r.parent.id,i=e.get(t);void 0!==i&&(r.parent=i)}if(i>0&&At(r.trackMatteType)&&(r.trackMatteLayer=t[i-1]),void 0!==r.effects&&r.effects.length>0)for(const t of r.effects)t&&(t.type(),q.DisplacementMap);i+=1}},Pt=t=>{var e;if(!t||!t.masks||0===t.masks.length)return;const i=new Map;for(const e of t.masks)e&&i.set(e.id,e);if(null==(e=t.effects)||e.forEach((t=>{if(t){if(void 0!==t.maskReferences&&t.maskReferences.length>0){const e=new Array;t.maskReferences.forEach((t=>{const r=t.id,s=i.get(r);void 0!==s&&e.push(s)})),t.maskReferences=e}switch(t.type()){case q.Fill:if(void 0!==t.fillMask){const e=t.fillMask.id,r=i.get(e);void 0!==r&&(t.fillMask=r)}break;case q.Stroke:{const e=t;if(void 0!==e.path){const t=e.path.id,r=i.get(t);void 0!==r&&(e.path=r)}break}}}})),t.type()===S.Text){const{pathOption:e}=t;if(null==e?void 0:e.path){const t=e.path.id,r=i.get(t);void 0!==r&&(e.path=r)}}},At=t=>{switch(t){case E.Alpha:case E.AlphaInverted:return!0;default:return!1}};function Ct(t,e,i){switch(e){case s.VectorCompositionBlock:i.compositions.push(St(t));break;case s.VideoCompositionBlock:i.compositions.push(I(t))}}const Vt=t=>{const e=kt(t),{context:i}=e;a(e,i,Ct),function(t){if(!t||0===t.length)return;const e=new Map;t.forEach((t=>{t&&e.set(t.id,t)})),t.forEach((t=>{if(t&&t.type()===r.Vector){const i=t;i.layers&&i.layers.length>0&&i.layers.forEach((t=>{t.containingComposition=i;const r=t;if(r.type()===S.PreCompose&&r.composition){const t=e.get(r.composition.id);t&&(r.composition=t)}}))}}))}(i.compositions);const s=i.releaseCompositions();return(t=>{let e=t.length>0;for(const i of t)if(!i||!i.verify()){e=!1;break}if(!e)throw new Error("Verify composition failed!")})(s),{compositions:s,tagLevel:i.tagLevel}},kt=t=>{if(t.length<11)throw new Error("PAG file is invalid!");const e=t.readInt8(),i=t.readInt8(),r=t.readInt8();if(80!==e||65!==i||71!==r)throw new Error("invalid PAG header!");return t.readInt8(),t.readUint32(),t.readInt8(),t.readBytes()};class _t{constructor(t,e){this.tagLevel=1,this.compositions=[],this.numLayers=0,this.scaledTimeRange={start:0,end:0},this.mainComposition=t[t.length-1],this.scaledTimeRange.start=0,this.scaledTimeRange.end=this.mainComposition.duration,this.compositions=t,this.duration=this.mainComposition.duration,this.implDuration=1e3*this.mainComposition.duration/this.mainComposition.frameRate;for(const e of t)if(e.type()===r.Vector)for(const t of e.layers)t.type()!==S.PreCompose&&(this.numLayers+=1);else this.numLayers+=1;this.tagLevel=e}static fromArrayBuffer(t){if(!t||0===t.byteLength)throw new Error("Can't read empty array buffer!");const e=new B(t,!0),{compositions:i,tagLevel:r}=Vt(e);return new _t(i,r)}getVideoSequence(){const t=this.mainComposition.type();return t===r.Video?Bt(this.mainComposition):t===r.Vector?Lt(this.mainComposition):void 0}}const Bt=t=>{if(!t.sequences||0===t.sequences.length)throw new Error("PAGFile has no BMP video sequence!");return t.sequences[t.sequences.length-1]},Lt=t=>{const e=Ut(t);if(e.length>1)throw new Error("PAGFile has more than one BMP video sequence!");if(e.length<1)throw new Error("PAGFile has no BMP video sequence!");const i=e[0];return Bt(i)},Ut=t=>{const e=[];return t.layers.forEach((t=>{if(t.type()!==S.PreCompose)return;const{composition:i}=t;(null==i?void 0:i.type())!==r.Video?(null==i?void 0:i.type())===r.Vector&&e.push(...Ut(i)):e.push(i)})),e};var Ft=(t=>(t.Canvas2D="2d",t.WebGL="WebGL",t))(Ft||{}),Dt=(t=>(t.onAnimationStart="onAnimationStart",t.onAnimationEnd="onAnimationEnd",t.onAnimationCancel="onAnimationCancel",t.onAnimationRepeat="onAnimationRepeat",t.onAnimationUpdate="onAnimationUpdate",t.onAnimationPlay="onAnimationPlay",t.onAnimationPause="onAnimationPause",t))(Dt||{}),Mt=(t=>(t.None="None",t.Stretch="Stretch",t.LetterBox="LetterBox",t.Zoom="Zoom",t))(Mt||{}),It=Object.freeze({__proto__:null,RenderingMode:Ft,EventName:Dt,ScaleMode:Mt});function Ot(t){let e=Object.getOwnPropertyNames(t.prototype).filter((e=>"constructor"!==e&&"function"==typeof t.prototype[e]));const i=(t,e)=>{const i=t[e];t[e]=function(...t){if(!this.destroyed)return i.call(this,...t);console.error(`Don't call ${e} of the PAGView that is destroyed.`)}};e.forEach((e=>i(t.prototype,e)))}const qt=(t,e,i)=>{const r=t.createProgram();if(!r)throw new Error("Failed to create program.");const s=zt(t,e,t.VERTEX_SHADER);if(!s)throw new Error("Failed to create vertex shader.");t.attachShader(r,s);const n=zt(t,i,t.FRAGMENT_SHADER);if(!n)throw new Error("Failed to create fragment shader.");t.attachShader(r,n),t.linkProgram(r);const a=t.getProgramInfoLog(r);a&&console.log(a);const o=t.getShaderInfoLog(s);o&&console.log(o);const h=t.getShaderInfoLog(n);return h&&console.log(h),r},zt=(t,e,i)=>{const r=t.createShader(i);if(!r)throw new Error("Failed to create shader.");return t.shaderSource(r,e),t.compileShader(r),r},Gt=t=>t.replace(/^\s+|\s+$/g,""),Wt=t=>{const e=t.createTexture();if(!e)throw new Error("Failed to create texture.");return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),e};class Nt{constructor(){this.listenersMap={}}on(t,e){void 0===this.listenersMap[t]&&(this.listenersMap[t]=[]),this.listenersMap[t].push(e)}off(t,e){const i=this.listenersMap[t];if(void 0===i)return;if(void 0===e)return void delete this.listenersMap[t];const r=i.findIndex((t=>t===e));i.splice(r,1)}emit(t,...e){const i=this.listenersMap[t];if(void 0===i||i.length<1)return!1;for(const t of i)t(...e);return!0}}var Ht=Object.defineProperty,jt=Object.getOwnPropertyDescriptor,Xt=Object.getOwnPropertySymbols,Kt=Object.prototype.hasOwnProperty,Yt=Object.prototype.propertyIsEnumerable,$t=(t,e,i)=>e in t?Ht(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,Zt=(t,e)=>{for(var i in e||(e={}))Kt.call(e,i)&&$t(t,i,e[i]);if(Xt)for(var i of Xt(e))Yt.call(e,i)&&$t(t,i,e[i]);return t};let Jt=class{constructor(t,e,i){this.canvasSize={width:0,height:0},this.playing=!1,this.viewportSize={x:0,y:0,width:0,height:0,scaleX:1,scaleY:1},this.destroyed=!1,this.renderTimer=null,this.repeatCount=0,this.viewScaleMode=Mt.LetterBox,this.debugData={FPS:0,decodePAGFile:0,createDir:0,coverMP4:0,writeFile:0,createDecoder:0,getFrame:0,draw:0};const r=t.getVideoSequence();if(!r)throw new Error("PAGFile has no BMP video sequence!");delete r.composition,this.videoSequence=r,this.canvas=e,this.videoParam=((t,e)=>({width:t.mainComposition.width,height:t.mainComposition.height,hasAlpha:e.alphaStartX>0||e.alphaStartY>0,alphaStartX:e.alphaStartX,alphaStartY:e.alphaStartY,sequenceWidth:e.width,sequenceHeight:e.height,MP4Width:(e.width+e.alphaStartX)%2==0?e.width+e.alphaStartX:e.width+e.alphaStartX+1,MP4Height:(e.height+e.alphaStartY)%2==0?e.height+e.alphaStartY:e.height+e.alphaStartY+1}))(t,r),this.eventManager=new Nt,this.renderingMode=i.renderingMode||Ft.WebGL,this.updateSize(i.useScale),this.setScaleMode()}isPlaying(){return this.playing}isDestroyed(){return this.destroyed}duration(){return this.videoSequence.frameCount/this.videoSequence.frameRate}frameRate(){return this.videoSequence.frameRate}setRepeatCount(t=1){this.repeatCount=t<0?-1:t-1}addListener(t,e){return this.eventManager.on(t,e)}removeListener(t,e){return this.eventManager.off(t,e)}scaleMode(){return this.viewScaleMode}setScaleMode(t=Mt.LetterBox){switch(this.viewScaleMode=t,t){case Mt.None:this.viewportSize={x:0,y:this.renderingMode===Ft.WebGL?this.canvas.height-this.videoParam.height:0,width:this.videoParam.width,height:this.videoParam.height,scaleX:1,scaleY:1};break;case Mt.Stretch:this.viewportSize={x:0,y:0,width:this.canvas.width,height:this.canvas.height,scaleX:this.canvas.width/this.videoParam.sequenceWidth,scaleY:this.canvas.height/this.videoParam.sequenceHeight};break;case Mt.LetterBox:{const t=this.canvas.width/this.videoParam.sequenceWidth,e=this.canvas.height/this.videoParam.sequenceHeight,i=Math.min(t,e);this.viewportSize={x:(this.canvas.width-this.videoParam.sequenceWidth*i)/2,y:(this.canvas.height-this.videoParam.sequenceHeight*i)/2,width:this.videoParam.sequenceWidth*i,height:this.videoParam.sequenceHeight*i,scaleX:i,scaleY:i}}break;case Mt.Zoom:{const t=this.canvas.width/this.videoParam.sequenceWidth,e=this.canvas.height/this.videoParam.sequenceHeight,i=Math.max(t,e);this.viewportSize={x:(this.canvas.width-this.videoParam.sequenceWidth*i)/2,y:(this.canvas.height-this.videoParam.sequenceHeight*i)/2,width:this.videoParam.sequenceWidth*i,height:this.videoParam.sequenceHeight*i,scaleX:i,scaleY:i}}}}updateSize(t=!0){if(!this.canvas)throw new Error("Canvas element is not found!");let e;const i=getComputedStyle(this.canvas),r={width:Number(i.width.replace("px","")),height:Number(i.height.replace("px",""))};if(r.width>0&&r.height>0)e=r;else{const t={width:Number(this.canvas.style.width.replace("px","")),height:Number(this.canvas.style.height.replace("px",""))};e=t.width>0&&t.height>0?t:{width:this.canvas.width,height:this.canvas.height}}if(!t)return this.canvas.width=this.canvas.width||e.width,void(this.canvas.height=this.canvas.height||e.height);this.canvas.style.width=`${e.width}px`,this.canvas.style.height=`${e.height}px`,this.canvas.width=e.width*window.devicePixelRatio,this.canvas.height=e.height*window.devicePixelRatio}getDebugData(){return this.debugData}setDebugData(t){this.debugData=Zt(Zt({},this.debugData),t)}loadContext(){}clearRender(){}};Jt=((t,e,i,r)=>{for(var s,n=r>1?void 0:r?jt(e,i):e,a=t.length-1;a>=0;a--)(s=t[a])&&(n=(r?s(e,i,n):s(n))||n);return r&&n&&Ht(e,i,n),n})([Ot],Jt);const Qt=2082873600,te=t=>{const e=[];for(let i=0;i<t.length;i++)e.push(t.charCodeAt(i));return e},ee=t=>[t>>24,t>>16&255,t>>8&255,255&t],ie=(t,...e)=>{let i=8,r=e.length;const s=r;for(;r;)r-=1,i+=e[r].byteLength;const n=new Uint8Array(i);for(n[0]=i>>24&255,n[1]=i>>16&255,n[2]=i>>8&255,n[3]=255&i,n.set(t,4),r=0,i=8;r<s;++r)n.set(e[r],i),i+=e[r].byteLength;return n};class re{constructor(t){this.param=t}ftyp(){return ie(te("ftyp"),new Uint8Array(te("isom")),new Uint8Array([0,0,0,1]),new Uint8Array(te("isom")),new Uint8Array(te("iso2")),new Uint8Array(te("avc1")),new Uint8Array(te("mp41")))}moov(){const t=this.param.tracks.map((t=>this.trak(t))).reverse();return ie(te("moov"),this.mvhd(),...t,this.mvex())}moof(){return ie(te("moof"),this.mfhd(),this.traf())}mdat(){const t=new Uint8Array(this.param.track.len);let e=0;return this.param.videoSequence.headers.forEach((i=>{t.set(new Uint8Array(i.data.data()),e),e+=i.length})),this.param.videoSequence.frames.forEach(((i,r)=>{t.set(new Uint8Array(i.fileBytes.data.data()),e),e+=i.fileBytes.length})),ie(te("mdat"),t)}mvhd(){return ie(te("mvhd"),new Uint8Array([0,0,0,0,...ee(Qt),...ee(Qt),...ee(this.param.timescale),...ee(this.param.duration),0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2]))}trak(t){return ie(te("trak"),this.tkhd(t),this.edts(t),this.mdia(t))}tkhd(t){return ie(te("tkhd"),new Uint8Array([0,0,0,1,...ee(Qt),...ee(Qt),...ee(t.id),0,0,0,0,...ee(t.duration),0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,t.width>>8&255,255&t.width,0,0,t.height>>8&255,255&t.height,0,0]))}edts(t){return ie(te("edts"),this.elst(t))}elst(t){return ie(te("elst"),new Uint8Array([0,0,0,0,...ee(1),...ee(t.duration),...ee(t.implicitOffset*Math.floor(t.duration/t.samples.length)),0,1,0,0]))}mdia(t){return ie(te("mdia"),this.mdhd(),this.hdlr(),this.minf(t))}mdhd(){return ie(te("mdhd"),new Uint8Array([0,0,0,0,...ee(Qt),...ee(Qt),...ee(this.param.timescale),...ee(0),85,196,0,0]))}hdlr(){return ie(te("hdlr"),new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]))}minf(t){return ie(te("minf"),this.vmhd(),this.dinf(),this.stbl(t))}vmhd(){return ie(te("vmhd"),new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))}dinf(){return ie(te("dinf"),this.dref())}dref(){return ie(te("dref"),new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]))}stbl(t){return ie(te("stbl"),this.stsd(t),this.stts(t),this.ctts(t),this.stss(t),this.stsc(),this.stsz(),this.stco())}stsd(t){return ie(te("stsd"),new Uint8Array([0,0,0,0,0,0,0,1]),this.avc1(t))}avc1(t){const e=[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t.width>>8&255,255&t.width,t.height>>8&255,255&t.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,98,105,110,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255];return ie(te("avc1"),new Uint8Array(e),this.avcc(t))}avcc(t){let e=[],i=[];t.sps.forEach((t=>{const i=t.length-4;e.push(i>>>8&255),e.push(255&i),e=e.concat(Array.prototype.slice.call(new Uint8Array(t.data.data(),4)))})),t.pps.forEach((t=>{const e=t.length-4;i.push(e>>>8&255),i.push(255&e),i=i.concat(Array.prototype.slice.call(new Uint8Array(t.data.data(),4)))}));const r=[1,e[3],e[4],e[5],255,224|t.sps.length].concat(e).concat([t.pps.length]).concat(i);return ie(te("avcC"),new Uint8Array(r))}stts(t){return ie(te("stts"),new Uint8Array([0,0,0,0,...ee(1),...ee(t.samples.length),...ee(Math.floor(t.duration/t.samples.length))]))}ctts(t){const e=t.pts.length,i=Math.floor(t.duration/e),r=[0,0,0,0,...ee(e)];for(let s=0;s<e;s++){r.push(...ee(1));const e=s*i,n=(t.pts[s]+t.implicitOffset)*i;r.push(...ee(n-e))}return ie(te("ctts"),new Uint8Array(r))}stss(t){const e=t.samples.filter((t=>t.flags.isKeyFrame)).map((t=>t.index+1)),i=[0,0,0,0,...ee(e.length)];return e.forEach((t=>{i.push(...ee(t))})),ie(te("stss"),new Uint8Array(i))}stsc(){return ie(te("stsc"),new Uint8Array([0,0,0,0,0,0,0,0]))}stsz(){return ie(te("stsz"),new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]))}stco(){return ie(te("stco"),new Uint8Array([0,0,0,0,0,0,0,0]))}mvex(){const t=this.param.tracks.map((t=>this.trex(t))).reverse();return ie(te("mvex"),...t)}trex(t){return ie(te("trex"),new Uint8Array([0,0,0,0,t.id>>24,t.id>>16&255,t.id>>8&255,255&t.id,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}mfhd(){return ie(te("mfhd"),new Uint8Array([0,0,0,0,this.param.sequenceNumber>>24,this.param.sequenceNumber>>16&255,this.param.sequenceNumber>>8&255,255&this.param.sequenceNumber]))}traf(){const t=this.sdtp();return this.param.offset=t.length+72,ie(te("traf"),this.tfhd(),this.tfdt(),this.trun(),t)}tfhd(){return ie(te("tfhd"),new Uint8Array([0,0,0,0,...ee(this.param.track.id)]))}tfdt(){return ie(te("tfdt"),new Uint8Array([0,0,0,0,...ee(this.param.baseMediaDecodeTime)]))}trun(){const t=(this.param.track.samples||[]).length,e=12+16*t;this.param.offset+=8+e;const i=[0,0,15,1,...ee(t),...ee(this.param.offset)];return this.param.track.samples.forEach((t=>{const{duration:e,size:r,flags:s,cts:n}=t;i.push(...ee(e)),i.push(...ee(r)),i.push(s.isLeading<<2|s.dependsOn),i.push(s.isDependedOn<<6|s.hasRedundancy<<4|0|s.isNonSync),i.push(61440&s.degradPrio),i.push(15&s.degradPrio),i.push(...ee(n))})),ie(te("trun"),new Uint8Array(i))}sdtp(){const t=new Uint8Array(4+this.param.track.samples.length);return this.param.track.samples.forEach(((e,i)=>{t[i+4]=e.flags.dependsOn<<4|e.flags.isDependedOn<<2|e.flags.hasRedundancy})),ie(te("sdtp"),t)}}var se=Object.defineProperty,ne=Object.getOwnPropertySymbols,ae=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable,he=(t,e,i)=>e in t?se(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,le=(t,e)=>{for(var i in e||(e={}))ae.call(e,i)&&he(t,i,e[i]);if(ne)for(var i of ne(e))oe.call(e,i)&&he(t,i,e[i]);return t};const de=t=>{const e=d?me(t):t,i=ce(e);if(!i||0===i.len)throw new Error("mp4Track is empty");const r={offset:0,tracks:[i],track:i,duration:i.duration,timescale:i.timescale,sequenceNumber:1,baseMediaDecodeTime:0,nalusBytesLen:i.len,videoSequence:e},s=new re(r);return(t=>{let e=0;for(const i of t)e+=i.byteLength;const i=new Uint8Array(e);let r=0;for(const e of t)i.set(e,r),r+=e.byteLength;return i})([s.ftyp(),s.moov(),s.moof(),s.mdat()])},ce=t=>{if(t.headers.length<2)throw new Error("Bad header data in video sequence!");if(0===t.frames.length)throw new Error("There is no frame data in the video sequence!");const e={id:1,type:"video",timescale:6e3,duration:Math.floor(6e3*t.frames.length/t.frameRate),width:t.getVideoWidth(),height:t.getVideoHeight(),sps:[t.headers[0]],pps:[t.headers[1]],implicitOffset:ue(t.frames),len:0,pts:[],samples:[]},i=t.headers.reduce(((t,e)=>t+e.length),0),r=e.duration/t.frames.length;return t.frames.forEach(((t,s)=>{var n;let a=null!=(n=t.fileBytes.length)?n:0;0===s&&(a+=i),e.len+=a,e.pts.push(t.frame),e.samples.push({index:s,size:a,duration:r,cts:(t.frame+e.implicitOffset-s)*r,flags:{isKeyFrame:t.isKeyframe,isNonSync:t.isKeyframe?0:1,dependsOn:t.isKeyframe?2:1,isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}})})),e},ue=t=>Math.max(...t.map(((t,e)=>e-t.frame))),me=t=>{const e=t.frames.length;for(let i=0;i<t.frames.length;i++){const r=le({},t.frames[i]);if(r.isKeyframe&&i>0)break;r.frame+=e,t.frames.push(r)}return t};let pe={};const fe=(t,e,i,r=!1)=>{var s;e in pe||(pe[e]=[]),null==(s=pe[e])||s.push({node:t,handler:i,capture:r}),t.addEventListener(e,i,r)};var ge=Object.defineProperty,ye=Object.getOwnPropertyDescriptor;const ve=navigator&&/MicroMessenger/i.test(navigator.userAgent),we=async t=>{ve&&window.WeixinJSBridge&&await new Promise((t=>{window.WeixinJSBridge.invoke("getNetworkType",{},(()=>{t()}),(()=>{t()}))}));try{await t.play()}catch(t){throw new Error(t.message)}};let be=class{constructor(t){this.destroyed=!1,this.frameRate=0,this._duration=t.frameCount/t.frameRate,this.frameRate=t.frameRate}static create(t){const e=new be(t),i=e.load(t);return{videoReader:e,debugData:i}}getVideoElement(){return this.videoElement}progress(){return Math.round(this.videoElement.currentTime/this._duration*100)/100}duration(){return this._duration}currentTime(){return this.videoElement.currentTime||0}start(){return we(this.videoElement)}pause(){var t;null==(t=this.videoElement)||t.pause()}seek(t){return new Promise((e=>{const i=()=>{var t,r,s,n,a,o,h;t=this.videoElement,s=i,(r="seeked")in pe&&(s?(null==(n=pe[r])||n.filter((({node:e,handler:i})=>e===t&&i===s)).forEach((({node:t,handler:e,capture:i})=>t.removeEventListener(r,e,i))),pe[r]=null==(a=pe[r])?void 0:a.filter((({node:e,handler:i})=>!(e===t&&i===s)))):(null==(o=pe[r])||o.filter((({node:e})=>e===t)).forEach((({node:t,handler:e,capture:i})=>t.removeEventListener(r,e,i))),pe[r]=null==(h=pe[r])?void 0:h.filter((({node:e})=>e!==t)))),e()};fe(this.videoElement,"seeked",i),this.videoElement.currentTime=t}))}addListener(t,e){fe(this.videoElement,t,e)}removeAllListeners(){var t;t=this.videoElement,Object.keys(pe).forEach((e=>{var i,r;const s=e;null==(i=pe[s])||i.filter((({node:e})=>e===t)).forEach((({node:t,handler:e,capture:i})=>t.removeEventListener(s,e,i))),pe[s]=null==(r=pe[s])?void 0:r.filter((({node:e})=>e!==t))}))}getFrameData(t){}clearCallback(){}destroy(){this.removeAllListeners(),this.videoElement=void 0,this.destroyed=!0}load(t){this.videoElement=document.createElement("video"),this.videoElement.style.display="none",this.videoElement.muted=!0,this.videoElement.playsInline=!0;const e=new i,r=de(t);return e.mark("coverMP4"),this.videoElement.src=URL.createObjectURL(new Blob([r],{type:"video/mp4"})),this.videoElement.load(),{coverMP4:e.measure("","coverMP4")}}};be=((t,e,i,r)=>{for(var s,n=r>1?void 0:r?ye(e,i):e,a=t.length-1;a>=0;a--)(s=t[a])&&(n=(r?s(e,i,n):s(n))||n);return r&&n&&ge(e,i,n),n})([Ot],be);var xe=Object.defineProperty,Ee=Object.getOwnPropertyDescriptor;navigator&&/MicroMessenger/i.test(navigator.userAgent);let Se=class extends Jt{constructor(t,e,i){super(t,e,i),this.fpsBuffer=[],this.currentFrame=-1,this.needSeek=!1,this.videoReader=this.createVideoReader(this.videoSequence)}async play(){this.playing||(this.playing=!0,await this.videoReader.start(),await this.flushLoop(),0===this.getProgress()&&