@vvfx/sdk 0.0.0-alpha.40 → 0.0.0-alpha.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +399 -17
- package/dist/index.d.ts +399 -17
- package/dist/index.global.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e,t=Object.create,i=Object.defineProperty,s=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,n=e=>{throw TypeError(e)},c=(e,t)=>{for(var s in t)i(e,s,{get:t[s],enumerable:!0})},h=(e,t,a,n)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let c of r(t))o.call(e,c)||c===a||i(e,c,{get:()=>t[c],enumerable:!(n=s(t,c))||n.enumerable});return e},p=(e,t,i)=>(h(e,t,"default"),i&&h(i,t,"default")),l=(e,s,r)=>(r=null!=e?t(a(e)):{},h(!s&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)),m=(e,t,s)=>((e,t,s)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s),d=(e,t,i)=>t.has(e)||n("Cannot "+i),g=(e,t,i)=>(d(e,t,"read from private field"),i?i.call(e):t.get(e)),u=(e,t,i)=>t.has(e)?n("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,i),f=(e,t,i,s)=>(d(e,t,"write to private field"),s?s.call(e,i):t.set(e,i),i),y={};c(y,{SDK:()=>xt,spec:()=>w.spec}),module.exports=(e=y,h(i({},"__esModule",{value:!0}),e));require("@galacean/effects");var w=require("@galacean/effects"),x=(require("@galacean/effects-plugin-rich-text"),require("@galacean/effects-plugin-rich-text")),v=(require("@galacean/effects-plugin-model"),require("@galacean/effects-plugin-multimedia"),require("@galacean/effects-plugin-multimedia")),P=(require("@galacean/effects-plugin-spine"),require("@pixi/app")),D=class{constructor(){m(this,"interactive"),m(this,"type"),m(this,"active"),this.type="null",this.active=!1,this.interactive=!1}},b=1e-6;function I(e,t,i){const s=isNaN(t)?-1/0:t,r=isNaN(i)?1/0:i,a=Math.min(s,r),o=Math.max(s,r);return Math.min(Math.max(e,a),o)}var C=Math.PI/180,E=180/Math.PI;function A(e){return Math.atan2(-e.y,-e.x)+Math.PI}function S(e,t,i=Math.round){if(Number.isInteger(e))return e;const s=Math.pow(10,t);return i(e*s)/s}function T(e,t){return Math.abs(e-t)<b||e===1/0&&t===1/0||e===-1/0&&t===-1/0}function z(e){return isNaN(e)||Math.abs(e)<b}var _=class e extends w.math.Vector2{subtract(e){return this.x-=e.x,this.y-=e.y,this}toViewCoordinate(e,t){return this.x=(this.x+1)/2*e,this.y=(1-(this.y+1)/2)*t,this}clone(){return new e(this.x,this.y)}distanceTo(e){const t=this.x-e.x,i=this.y-e.y;return Math.sqrt(t*t+i*i)}scaleByCenter(t,i=new e){const s=(new e).subtractVectors(i,this).multiply(t);return(new e).subtractVectors(i,s)}round(e=0){const t=Math.pow(10,e);return this.x=Math.round(this.x*t)/t,this.y=Math.round(this.y*t)/t,this}},k=class e{constructor(e=new _,t=new _){m(this,"start",new _),m(this,"end",new _),this.start.copyFrom(e),this.end.copyFrom(t)}set(e,t){return this.start.copyFrom(e),this.end.copyFrom(t),this}copyFrom(e){return this.start.copyFrom(e.start),this.end.copyFrom(e.end),this}direction(){return(new _).subtractVectors(this.end,this.start).normalize()}getCenter(e=new _){return e.addVectors(this.start,this.end).multiply(.5)}delta(e=new _){return e.subtractVectors(this.end,this.start)}distanceSq(){return this.start.distanceSquared(this.end)}distance(){return this.start.distance(this.end)}at(e,t=new _){return this.delta(t).multiply(e).add(this.start)}closestPointToPointParameter(e,t){const i=new _,s=new _;i.subtractVectors(e,this.start),s.subtractVectors(this.end,this.start);const r=s.dot(s);let a=s.dot(i)/r;return t&&(a=I(a,0,1)),a}closestPointToPoint(e,t,i=new _){const s=this.closestPointToPointParameter(e,t);return this.delta(i).multiply(s).add(this.start)}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return(new e).copyFrom(this)}length(){return(new _).subtractVectors(this.end,this.start).length()}crossWithLine(e){const t=this.delta(),i=e.delta(),s=(new _).subtractVectors(e.start,this.start),r=(new _).subtractVectors(e.end,this.start),a=(new _).subtractVectors(this.start,e.start),o=(new _).subtractVectors(this.end,e.start),n=s.cross(t),c=r.cross(t),h=a.cross(i),p=o.cross(i);return n*c<0&&h*p<0}},M=class e{constructor(e=new _(1/0,1/0),t=new _(-1/0,-1/0)){m(this,"corners",[]),m(this,"min",new _(1/0,1/0)),m(this,"max",new _(-1/0,-1/0)),this.min=e.clone(),this.max=t.clone(),this.isEmpty()?this.corners=[]:this.corners=[e.clone(),new _(t.x,e.y),t.clone(),new _(e.x,t.y)]}set(e,t){return this.min.copyFrom(e),this.max.copyFrom(t),this.corners=[e.clone(),new _(t.x,e.y),t.clone(),new _(e.x,t.y)],this}setFromVec2Array(e){return this.min=(new _).copyFrom(e[0]),this.max=(new _).copyFrom(e[0]),e.forEach(e=>{this.min.min(e),this.max.max(e),this.corners.push(e.clone())}),this}setFromVec2ArrayWithOutCorners(e){return this.min=(new _).copyFrom(e[0]),this.max=(new _).copyFrom(e[0]),e.forEach(e=>{this.min=this.min.min(e),this.max=this.max.max(e)}),this.corners.push(new _(this.min.x,this.min.y)),this.corners.push(new _(this.min.x,this.max.y)),this.corners.push(new _(this.max.x,this.max.y)),this.corners.push(new _(this.max.x,this.min.y)),this}setFromCenterAndSize(e,t){const i=(new _).copyFrom(t).multiply(.5);return this.min.copyFrom(e).subtract(i),this.max.copyFrom(e).add(i),this.corners=[this.min.clone(),new _(this.max.x,this.min.y),this.max.clone(),new _(this.min.x,this.max.y)],this}clone(){return(new e).copyFrom(this)}copyFrom(e){return this.corners=[],this.min.copyFrom(e.min),this.max.copyFrom(e.max),e.corners.forEach(e=>{this.corners.push(e.clone())}),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this.corners=[],this}isEmpty(){return this.max.x<=this.min.x||this.max.y<=this.min.y}getCorners(){const e=[];return this.corners.forEach(t=>{e.push(t.clone())}),e}getCenter(e=new _){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiply(.5)}getSize(e=new _){return this.isEmpty()?e.set(0,0):e.subtractVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.subtract(e),this.max.add(e),this}expandByScalar(e){return this.min.add(-e),this.max.add(e),this}containsPoint(e,t=!0){if(t)return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y);if(this.isEmpty())return!1;for(let t=0;t<this.corners.length;t++){const i=this.corners[t],s=this.corners[(t+1)%4],r=new _(s.x-i.x,s.y-i.y),a=new _(e.x-i.x,e.y-i.y);if(r.cross(a)<0)return!1}return!0}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t=new _){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}clampPoint(e,t=new _){return t.copyFrom(e).clamp(this.min,this.max)}distanceToPoint(e){return(new _).copyFrom(e).clamp(this.min,this.max).subtract(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.min.x>this.max.x||this.min.y>this.max.y?this.makeEmpty():this}union(e){return this.min.min(e.min),this.max.max(e.max),this.corners=[this.min.clone(),new _(this.max.x,this.min.y),this.max.clone(),new _(this.min.x,this.max.y)],this}translate(e){return this.min.add(e),this.max.add(e),this.corners.forEach(t=>{t.add(e)}),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}intersectsBox(e,t=!0){if(t)return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y);if(!this.isEmpty())for(let t=0;t<this.corners.length;t++){const i=new k(this.corners[t],this.corners[(t+1)%4]);if(e.containsPoint(this.corners[t],!1))return!0;for(let t=0;t<e.corners.length;t++){const s=new k(e.corners[t],e.corners[(t+1)%4]);if(this.containsPoint(e.corners[t],!1))return!0;if(i.crossWithLine(s))return!0}}for(let t=0;t<e.corners.length;t++){const i=this.containsPoint(e.corners[t],!1),s=e.containsPoint(this.corners[t],!1);if(i||s)return!0}return!1}},V=class e{constructor(e=new _,t=0){m(this,"center"),m(this,"radius"),this.center=e.clone(),this.radius=t}set(e,t){return this.center=(new _).copyFrom(e),this.radius=t,this}clone(){return(new e).copy(this)}copy(e){return this.center.copyFrom(e.center),this.radius=e.radius,this}makeEmpty(){return this.center=new _,this.radius=0,this}isEmpty(){return 0===this.radius}getCenter(e=new _){return e.copyFrom(this.center),e}getRadius(){return this.radius}expandByPoint(e){return this.radius=this.center.distanceTo(e),this}expandByScalar(e){return this.radius+=e,this}containsPoint(e){return this.center.distanceTo(e)<this.radius}containsBox(e){for(let t=0;t<4;t++)if(!this.containsPoint(e.corners[t]))return!1;return!0}intersectsBox(e){for(let t=0;t<4;t++)if(this.containsPoint(e.corners[t]))return!0;return!1}distanceToPoint(e){return this.center.distanceTo(e)-this.radius}},F=class extends w.math.Quaternion{},B=class e extends w.math.Vector3{clone(){return new e(this.x,this.y,this.z)}setFromMatrixColumn(e,t){return this.set(...e.elements.slice(4*t))}applyEuler(e,t){return this.applyQuaternion((new F).setFromEuler(e))}applyQuaternion(t,i=new e){const{x:s,y:r,z:a,w:o}=t,{x:n,y:c,z:h}=this.subtract(i),p=o*n+r*h-a*c,l=o*c+a*n-s*h,m=o*h+s*c-r*n,d=-s*n-r*c-a*h;return this.x=p*o+d*-s+l*-a-m*-r+i.x,this.y=l*o+d*-r+m*-s-p*-a+i.y,this.z=m*o+d*-a+p*-r-l*-s+i.z,this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}applyMatrix(t,i=new e){const s=t.elements,{x:r,y:a,z:o}=this.subtract(i);let n=1/(s[3]*r+s[7]*a+s[11]*o+s[15]);return n=isNaN(n)?1:n,this.x=(s[0]*r+s[4]*a+s[8]*o+s[12])*n+i.x,this.y=(s[1]*r+s[5]*a+s[9]*o+s[13])*n+i.y,this.z=(s[2]*r+s[6]*a+s[10]*o+s[14])*n+i.z,this}},U=class e extends w.math.Matrix4{static fromArray(t,i=0){return(new e).setFromArray(t,i)}clone(){const t=this.elements;return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}compose(e,t,i,s=B.ZERO){const r=this.elements,{x:a,y:o,z:n,w:c}=t,h=-s.x,p=-s.y,l=-s.z,m=a+a,d=o+o,g=n+n,u=a*m,f=a*d,y=a*g,w=o*d,x=o*g,v=n*g,P=c*m,D=c*d,b=c*g,{x:I,y:C,z:E}=i;return r[0]=(1-(w+v))*I,r[1]=(f+b)*I,r[2]=(y-D)*I,r[3]=0,r[4]=(f-b)*C,r[5]=(1-(u+v))*C,r[6]=(x+P)*C,r[7]=0,r[8]=(y+D)*E,r[9]=(x-P)*E,r[10]=(1-(u+w))*E,r[11]=0,r[12]=h*r[0]+p*r[4]+l*r[8]-h+e.x,r[13]=h*r[1]+p*r[5]+l*r[9]-p+e.y,r[14]=h*r[2]+p*r[6]+l*r[10]-l+e.z,this}extractRotation(e){const t=new B,i=e.elements,s=this.elements,r=1/t.setFromMatrixColumn(e,0).length(),a=1/t.setFromMatrixColumn(e,1).length(),o=1/t.setFromMatrixColumn(e,2).length();return s[0]=i[0]*r,s[1]=i[1]*r,s[2]=i[2]*r,s[3]=0,s[4]=i[4]*a,s[5]=i[5]*a,s[6]=i[6]*a,s[7]=0,s[8]=i[8]*o,s[9]=i[9]*o,s[10]=i[10]*o,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,s=e.y,r=e.z,a=Math.cos(i),o=Math.sin(i),n=Math.cos(s),c=Math.sin(s),h=Math.cos(r),p=Math.sin(r);if(e.order===w.math.EulerOrder.XYZ){const e=a*h,i=a*p,s=o*h,r=o*p;t[0]=n*h,t[4]=-n*p,t[8]=c,t[1]=i+s*c,t[5]=e-r*c,t[9]=-o*n,t[2]=r-e*c,t[6]=s+i*c,t[10]=a*n}else if(e.order===w.math.EulerOrder.YXZ){const e=n*h,i=n*p,s=c*h,r=c*p;t[0]=e+r*o,t[4]=s*o-i,t[8]=a*c,t[1]=a*p,t[5]=a*h,t[9]=-o,t[2]=i*o-s,t[6]=r+e*o,t[10]=a*n}else if(e.order===w.math.EulerOrder.ZXY){const e=n*h,i=n*p,s=c*h,r=c*p;t[0]=e-r*o,t[4]=-a*p,t[8]=s+i*o,t[1]=i+s*o,t[5]=a*h,t[9]=r-e*o,t[2]=-a*c,t[6]=o,t[10]=a*n}else if(e.order===w.math.EulerOrder.ZYX){const e=a*h,i=a*p,s=o*h,r=o*p;t[0]=n*h,t[4]=s*c-i,t[8]=e*c+r,t[1]=n*p,t[5]=r*c+e,t[9]=i*c-s,t[2]=-c,t[6]=o*n,t[10]=a*n}else if(e.order===w.math.EulerOrder.YZX){const e=a*n,i=a*c,s=o*n,r=o*c;t[0]=n*h,t[4]=r-e*p,t[8]=s*p+i,t[1]=p,t[5]=a*h,t[9]=-o*h,t[2]=-c*h,t[6]=i*p+s,t[10]=e-r*p}else if(e.order===w.math.EulerOrder.XZY){const e=a*n,i=a*c,s=o*n,r=o*c;t[0]=n*h,t[4]=-p,t[8]=c*h,t[1]=e*p+r,t[5]=a*h,t[9]=i*p-s,t[2]=s*p-i,t[6]=o*h,t[10]=r*p+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}setPosition(e){return this.elements[12]=e.x,this.elements[13]=e.y,this.elements[14]=e.z,this}},R=class extends w.math.Euler{constructor(e=0,t=0,i=0,s=w.math.EulerOrder.XYZ){super(e,t,i,s)}getInvertMatrixByEuler(){return(new U).makeRotationFromEuler(this).invert()}toDegreeVector3(e){return e?e.set(this.x*E,this.y*E,this.z*E):new B(this.x*E,this.y*E,this.z*E)}setFromDegreeVector3(e,t){return this.set(e.x*C,e.y*C,e.z*C,t??this.order)}},W=class e{constructor(e=0,t=new B(0,0,1)){m(this,"distance"),m(this,"normal");const i=t.length();0===i&&(this.normal=new B(0,0,1)),this.distance=e/(i??1),this.normal=t.normalize()}static set(t,i){return new e(t,i)}set(e,t){const i=t.length();return 0===i&&(this.normal=new B(0,0,1)),this.distance=e/i,this.normal=t.normalize(),this}static copy(t){return new e(t.distance,t.normal.clone())}copy(e){return this.distance=e.distance,this.normal.copyFrom(e.normal),this}static setFromNormalAndCoplanarPoint(t,i){const s=-t.dot(i);return new e(s,i)}setFromNormalAndCoplanarPoint(e,t){return this.normal.copyFrom(t),this.distance=-e.dot(this.normal),this}clone(){return new e(this.distance,this.normal.clone())}distanceToPoint(e){return this.normal.dot(e)+this.distance}},G=class e extends w.math.Ray{constructor(e=new B,t=new B(1,0,0)){super(e,t),m(this,"origin"),m(this,"direction"),this.origin=e.clone(),this.direction=t.clone()}clone(){return new e(this.origin,this.direction)}rayCastPlane(e,t){const i=this.distanceToPlane(e);return isNaN(i)||this.at(i),i}at(e){return this.direction.clone().normalize().multiply(e).add(this.origin)}distanceToPlane(e){const t=e.normal.dot(this.direction);if(z(t))return z(e.distanceToPoint(this.origin))?0:NaN;const i=(-this.origin.dot(e.normal)-e.distance)/t;return i>0?i:NaN}},H=class{constructor(e=new G){m(this,"ray"),this.ray=e.clone()}setFromCamera(e,t){const i=t.position,s=new B(e.x,e.y,.5).applyMatrix(t.inverseViewProjectMatrix).subtract(i).normalize();return this.ray.set(i,s),this}rayCastPlane(e){const t=new B,i=this.ray.rayCastPlane(e,t);if(!isNaN(i))return{distance:i,point:this.ray.at(i)}}},N=class extends D{constructor(e){super(),m(this,"defaultInteractive",!0),m(this,"interactive",!0),m(this,"lastPoint",new _),m(this,"SDKUtils"),this.SDKUtils=e,this.type="control"}initialize(){}preparationAction(){}cancelPreparation(){}refreshResults(){}preAction(){}action(e){if(!xt.config.gestureHandlerConfig.controlGizmoEnabled)return void console.warn("Control gizmo is not opened, use #SDK.setControlConfig() open this feature.");const{metaKey:t,ctrlKey:i,shiftKey:s}=e;if(0===e.buttons){const{deltaX:r,deltaY:a}=e,o=new _(r,a);t||i?(o.y=I(o.y,-10,10),this.dolly(o.y)):(o.x=s&&0!==o.y?Math.sqrt(o.x**2+o.y**2)*o.y/Math.abs(o.y):o.x,o.y=s?0:o.y,this.pan(o.multiply(-1)))}}endAction(){}interruption(){return this.type}actionKey(){}endActionKey(){}dolly(e){const t=-e*xt.config.gestureHandlerConfig.controlGizmoConfig.zoomStep;this.SDKUtils.pageZoom(t)}pan(e){this.SDKUtils.pageMove(e)}getRenderObjects(){return[]}},L=require("@pixi/graphics"),K=class extends D{constructor(e){super(),m(this,"interactive",!0),m(this,"result",{type:"null",box:new M}),m(this,"selectedItemIds",[]),m(this,"cursorPoint",new _),m(this,"startPoint",new _),m(this,"graphics",new L.Graphics),m(this,"pageDataUtils"),m(this,"clearResult",!1),m(this,"type"),this.pageDataUtils=e,this.type="selector"}initialize(){}actionKey(){}endActionKey(){}getRenderObjects(){return xt.config.gestureHandlerConfig.selectorGizmoEnabled?this.clearResult?(this.result={type:"null",box:new M},this.clearResult=!1,[]):(this.refreshResults(),[this.graphics]):[]}cancelPreparation(){this.result.type="null",this.pageDataUtils.clearPreSelectedItem()}preparationAction(e){if(this.result.box=new M,!xt.config.gestureHandlerConfig.selectorGizmoEnabled)return void console.warn("Selector gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");const t=new _(e.offsetX,e.offsetY);this.selectedItemIds=this.hitTest(t);const i=this.selectedItemIds[0]??"";return i.length&&!this.pageDataUtils.isItemSelected(i)?this.pageDataUtils.addPreSelectedItem(i):this.pageDataUtils.clearPreSelectedItem(),this.type}preAction(e){if(this.pageDataUtils.clearPreSelectedItem(),1===e.buttons)return e.shiftKey||this.pageDataUtils.clearSelectedItems(),0===this.selectedItemIds.length?(this.startPoint=new _(e.clientX,e.clientY),this.cursorPoint=new _(e.offsetX,e.offsetY),this.active=!0,this.type):(this.pageDataUtils.addSelectedItems([this.selectedItemIds[0]]),this.clearResult=!0,"transform")}action(e){const t=(new _).addVectors(this.cursorPoint,(new _).subtractVectors(new _(e.clientX,e.clientY),this.startPoint)),i=(new _).subtractVectors(this.cursorPoint,t),s=(new _).addVectors(this.cursorPoint,t).multiply(.5);i.x=Math.abs(i.x),i.y=Math.abs(i.y);const r=(new M).setFromCenterAndSize(s,i);this.result.type="region",this.result.box=r,this.pageDataUtils.clearSelectedItems();const a=this.pageDataUtils.getPageData().items?.filter(e=>this.pageDataUtils.getItemEditEnable(e.id)),o=[];a?.forEach(e=>{r.intersectsBox(this.pageDataUtils.getViewBoxById(e.id),!1)&&o.push(e.id)}),this.pageDataUtils.addSelectedItems(o)}endAction(){this.active=!1,this.result.type="null"}interruption(){this.active=!1,this.result.type="null"}hitTest(e){const t=this.pageDataUtils.getCurrentComposition();if(!t?.items)return[];const{x:i,y:s}=this.pageDataUtils.getViewportByViewPoint(e),r={ray:new G,regions:[]};try{r.regions=t.hitTest(i,s,!0),r.ray=t.getHitTestRay(i,s)}catch(e){console.warn(e)}return this.reorderHitTestResult(r,t).filter(e=>"extra-camera"!==e&&this.pageDataUtils.getItemEditEnable(e))}reorderHitTestResult(e,t){if(0===e.regions.length||!t)return[];const{ray:i}=e,s=e.regions.reverse(),r=[];return s.forEach(e=>{let s;const a=(e,t)=>{for(const i of e){if(i.getInstanceId()===t&&(s=i),s)return;a(i.children,t)}};if(a(t.items,e.id),void 0===s)return;const o="rootItem"===e.compContent?.name?s.getInstanceId():e.compContent.getInstanceId(),n=i.origin.clone().distance(e.position.clone());if((s.type===w.spec.ItemType.mesh||s.getComponent(w.SpriteComponent)?.renderer?.occlusion||s.getComponent(w.TextComponent)?.renderer?.occlusion||s.getComponent(v.VideoComponent)?.renderer?.occlusion||s.getComponent(x.RichTextComponent)?.renderer?.occlusion)&&r.length>0){let e=!0;r.forEach((t,i)=>{if(e)return n<=t[1]?(r.splice(i,0,[o,n]),void(e=!1)):void(i===r.length-1&&r.push([o,n]))})}else r.push([o,n])}),r.map(e=>e[0])}refreshResults(){const{box:e}=this.result;this.graphics.clear();const t=this.pageDataUtils.getPreSelectedItem(),i=this.pageDataUtils.getViewBoxById(t?.id??""),{regionBoxColor:s,regionBoxAlpha:r,preSelectedWidth:a,preSelectedColor:o,regionWireframeWidth:n,regionWireframeColor:c,regionWireframeAlpha:h}=xt.config.gestureHandlerConfig.selectorGizmoConfig;if(i?.isEmpty()||(this.graphics.lineStyle(a,o),this.graphics.drawBox(i)),!e.isEmpty()&&"region"===this.result.type)this.graphics.lineStyle(n,c,h),this.graphics.drawBox(e),this.graphics.beginFill(s,r),this.graphics.fillBox(e),this.graphics.endFill()}},O=require("@pixi/graphics"),j=require("@galacean/effects"),$=class extends D{constructor(e,t){super(),m(this,"type"),m(this,"interactive",!0),m(this,"wireframe"),m(this,"cursorResult",{type:"normal",angle:0}),m(this,"cursorPoint",new _),m(this,"lastPoint",new _),m(this,"rotationAngle",0),m(this,"active",!1),m(this,"enableAdsorption",!0),m(this,"scaleParam"),m(this,"activeType","null"),m(this,"lastWorldPosition",new B),m(this,"pageDataUtils"),m(this,"adsorptionGizmo"),m(this,"graphics",new O.Graphics),this.type="transform",this.pageDataUtils=e,this.adsorptionGizmo=t,this.wireframe={edges:[],anchor:new _,scaleCorners:[],rotationCorners:[],interactive:!0,cornerEnable:!0,directionEnable:!0,box:new M,totalBox:new M,childrenBoxes:[],activeType:"null",interactiveDirection:new _,scaleCorner:new _,scaleEdgeCorners:[]}}initialize(){}actionKey(){}endActionKey(){}getRenderObjects(){return xt.config.gestureHandlerConfig.transformGizmoEnabled?(this.refreshRenderObject(),[this.graphics]):[]}cancelPreparation(){this.active=!1,this.wireframe.activeType="null"}preAction(e,t=!1){if(this.active=1===e.buttons,this.lastPoint=new _(e.clientX,e.clientY),this.cursorPoint=new _(e.offsetX,e.offsetY),1!==e.buttons)return;this.active=!0,"null"===this.wireframe.activeType&&(this.wireframe.activeType="translation");const i=this.cursorPoint.clone().subtract(this.pageDataUtils.getViewportLeftTopPosition());return this.initInteractionPlane(i),this.lastWorldPosition=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(i)??new B,this.activeType=t?"null":this.activeType,this.type}preparationAction(e){if(!xt.config.gestureHandlerConfig.transformGizmoEnabled)return void console.warn("Selector gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");const t=new _(e.offsetX,e.offsetY),i=this.wireframe;this.refreshTransformType(t);const{interactiveDirection:s}=i;return this.refreshCursorResult(this.activeType,A(s)),this.active="null"!==this.activeType,this.active?this.type:void 0}action(e){if(!xt.config.gestureHandlerConfig.transformGizmoEnabled)return void console.warn("Selector gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if(!this.active){this.active=!0,this.refreshWireframeBySelectedItems(),this.wireframe.activeType="translation",this.lastPoint.set(e.clientX,e.clientY),this.cursorPoint.set(e.offsetX,e.offsetY);const t=this.cursorPoint.clone().subtract(this.pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(t),this.lastWorldPosition=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new B}const t=new _(e.clientX,e.clientY),i=(new _).subtractVectors(t,this.lastPoint);if(!this.wireframe.interactive)return;const s=this.pageDataUtils.getSelectedItems(),{anchor:r,activeType:a,interactiveDirection:o}=this.wireframe,n=this.pageDataUtils.getPageData();(0,j.assertExist)(n);let c=0;switch(a){case"rotation":{const e=r.clone(),t=new B,a=S(function(e,t){const i=Math.min(Math.max(e.dot(t)/e.length()/t.length(),-1),1);let s=Math.acos(i);return s=e.x*t.y-e.y*t.x>0?s:-s,s}((new _).subtractVectors(this.cursorPoint,e),(new _).subtractVectors(this.cursorPoint.add(i),e))*E,3);t.z=a,this.rotationAngle+=a,c=A(o)+this.rotationAngle*C,s.forEach(e=>{this.pageDataUtils.rotateItem(e.id,t)});break}case"translation":{const e=i.clone();if(this.enableAdsorption){const t=n.items.map(e=>!s.find(t=>t.id===e.id)&&0===s.filter(t=>e.parentId&&e.parentId===t.id).length&&this.pageDataUtils.getItemEditEnable(e.id)?this.pageDataUtils.getViewBoxById(e.id):new M).filter(e=>!e.isEmpty()),i=new _(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);this.adsorptionGizmo.boxTranslationAdsorption(e,this.wireframe.box,t);const r=new _(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);e.add(i).subtract(r)}const t=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(this.cursorPoint.add(e).clone().subtract(this.pageDataUtils.getViewportLeftTopPosition()));if(t){const e=t.clone().subtract(this.lastWorldPosition);s.forEach(t=>{t.type!==w.spec.ItemType.camera&&this.pageDataUtils.moveItem(t.id,e)}),this.lastWorldPosition.copyFrom(t)}break}case"scale":{this.cursorPoint.add(i);const e=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(this.cursorPoint.clone().subtract(this.pageDataUtils.getViewportLeftTopPosition()));if(i.length()&&e&&this.scaleParam){const{corner:t,center:i,shift:r,lastScalar:a}=this.scaleParam,o=this.pageDataUtils.getSelectedItems()[0]??void 0,n=this.pageDataUtils.getItemTransformById(o?.id??""),c=(new U).extractRotation(n.matrix).invert(),h=(new B).subtractVectors(t,i).applyMatrix(c),p=h.clone().multiply(a),l=e.subtract(r).subtract(i).applyMatrix(c),m=new B(1,1,1),d=function(e){let t,i=0;return e.forEach((e,s)=>{if(0===s)t=Math.abs(e);else{const r=Math.abs(e);t<r&&(t=r,i=s)}}),i}([T(h.x,0)?1:Math.abs(l.x/h.x),T(h.y,0)?1:Math.abs(l.y/h.y)]),g=l.toArray()[d],u=p.toArray()[d];if(T(a.x,a.y)&&T(a.z,a.x)){const e=T(u,0)?1:Math.abs(g/u);m.set(e,e,e)}else if(0===d){m.x=T(u,0)?1:Math.abs(g/u);const e=h.y*g/h.x;m.y=T(p.y,0)?1:e/p.y;const t=h.z*g/h.x;m.z=T(p.z,0)?1:t/p.z}else if(1===d){m.y=T(u,0)?1:Math.abs(g/u);const e=h.x*g/h.y;m.x=T(p.x,0)?1:e/p.x;const t=h.z*g/h.y;m.z=T(p.z,0)?1:t/p.z}else{m.z=T(u,0)?1:Math.abs(g/u);const e=h.x*g/h.z;m.x=T(p.x,0)?1:e/p.x;const t=h.y*g/h.z;m.y=T(p.y,0)?1:t/p.y}this.scaleParam.lastScalar.multiply(m),s.forEach(e=>{this.pageDataUtils.scaleItem(e.id,m)})}c=A(o);break}}this.refreshCursorResult(a,c),this.lastPoint.copyFrom(t)}endAction(e){this.active=!1;const t=new _(e.clientX,e.clientY),i=(new _).subtractVectors(t,this.lastPoint);this.cursorPoint.add(i);const s=this.wireframe;this.refreshTransformType(this.cursorPoint);const{activeType:r,interactiveDirection:a}=s;this.refreshCursorResult(r,A(a)),this.adsorptionGizmo.clearAbsorptionResult(),this.rotationAngle=0,this.cursorPoint=new _,this.lastPoint=new _}interruption(){this.active=!1,this.cursorResult.type="normal",this.adsorptionGizmo.clearAbsorptionResult()}refreshCursorResult(e,t=0){switch(e){case"scale":this.cursorResult={type:"scale",angle:(t+Math.PI/4)*E};break;case"rotation":this.cursorResult={type:"rotation",angle:(t+Math.PI/4)*E};break;case"translation":case"null":this.cursorResult={type:"normal",angle:0}}}refreshResults(){const e=this.wireframe.activeType;this.refreshWireframeBySelectedItems(),e!==this.wireframe.activeType&&this.refreshCursorResult(this.wireframe.activeType),this.wireframe.box.isEmpty()&&this.adsorptionGizmo.clearAbsorptionResult()}initInteractionPlane(e){const t=this.pageDataUtils.getSelectedItems();switch(this.wireframe.activeType){case"scale":{const i=1==t.length?t[0]:void 0;let s,r,a;if(i){const e=this.pageDataUtils.getItemTransformById(i.id);s=(new B).copyFrom(this.pageDataUtils.getPlayerItemById(i.id).transform.anchor).applyMatrix(e.matrix),r=(new B).setFromMatrixPosition(e.matrix),a=(new R).setFromQuaternion((new F).setFromRotationMatrix(e.matrix))}this.pageDataUtils.interactionUtils.initInteractionPlane(r,a),this.scaleParam={shift:new B,center:new B,corner:new B,lastScalar:new B(1,1,1)},this.scaleParam.center=s??r;const o=this.pageDataUtils.getViewportLeftTopPosition();if(["scale"].includes(this.wireframe.activeType)&&this.wireframe.scaleCorner){const e=this.wireframe.scaleCorner.clone().subtract(o);this.scaleParam.corner=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new B}this.scaleParam.shift=(this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new B).subtract(this.scaleParam.corner);break}case"translation":case"rotation":this.pageDataUtils.interactionUtils.initInteractionPlane()}}refreshRenderObject(){this.graphics.clear();const{wireframeAlpha:e,wireframeColor:t,wireframeWidth:i,cornerFillColor:s,cornerLineWidth:r,cornerLineColor:a,cornerLineAlpha:o}=xt.config.gestureHandlerConfig.transformGizmoConfig;if(!this.wireframe.box.isEmpty()){this.graphics.lineStyle(i,t,e),this.wireframe.edges.forEach(e=>{this.graphics.drawLine(e)});const n=e=>{e.corners.forEach((t,i)=>{const s=new k(t,e.corners[(i+1)%4]);this.graphics.drawLine(s)})};this.wireframe.childrenBoxes.forEach(e=>{n(e)}),this.wireframe.cornerEnable&&(this.graphics.beginFill(s),this.graphics.lineStyle(r,a,o),this.wireframe.scaleCorners.forEach(e=>{this.graphics.drawCircle(e.center.x,e.center.y,e.radius)}),this.graphics.endFill())}}refreshTransformType(e){this.activeType="null";let t=!0;if(this.wireframe.interactiveDirection=new _,this.wireframe.scaleCorner=void 0,this.wireframe.scaleEdgeCorners=void 0,this.wireframe.cornerEnable&&t&&this.wireframe.totalBox.containsPoint(e)){for(let i=0;i<4;i++){if(this.wireframe.scaleCorners[i].containsPoint(e)){t=!1,this.activeType="scale",this.wireframe.activeType="scale",this.wireframe.scaleCorner=this.wireframe.scaleCorners[i].center.clone(),this.wireframe.interactiveDirection.copyFrom(this.wireframe.scaleCorners[i].center).subtract(this.wireframe.box.getCenter());break}}t&&this.wireframe.box.containsPoint(e,!1)&&(t=!1,this.activeType="translation",this.wireframe.activeType="translation");for(let i=0;i<4;i++){if(this.wireframe.rotationCorners[i].containsPoint(e)&&t){t=!1,this.activeType="rotation",this.wireframe.activeType="rotation",this.wireframe.interactiveDirection.copyFrom(this.wireframe.rotationCorners[i].center).subtract(this.wireframe.box.getCenter());break}}}}refreshWireframeBySelectedItems(){const e=this.pageDataUtils.getSelectedItems(),t=new M;if(this.wireframe.edges=[],this.wireframe.scaleCorners=[],this.wireframe.childrenBoxes=[],this.wireframe.rotationCorners=[],e.length>1)e.forEach(e=>{if(this.pageDataUtils.getItemShow(e.id)){const i=this.pageDataUtils.getViewBoxById(e.id);t.union(i),this.wireframe.childrenBoxes.push((new M).copyFrom(i).expandByScalar(1))}}),this.wireframe.anchor=t.getCenter(),this.wireframe.interactive=!0;else if(1===e.length){const i=e[0];if(this.pageDataUtils.getItemShow(i.id)){const e=this.pageDataUtils.getViewBoxById(i.id);t.copyFrom(e),this.wireframe.anchor=this.pageDataUtils.getItemViewAnchor(i.id)??t.getCenter(),this.wireframe.interactive=i.type!==w.spec.ItemType.mesh&&this.pageDataUtils.getItemEditEnable(i.id)}}const i=t.isEmpty(),s=i?0:1,r=i?0:16;this.wireframe.activeType=e.length?this.wireframe.activeType:"null",this.wireframe.box.copyFrom(t).expandByScalar(s),this.wireframe.totalBox.copyFrom(t).expandByScalar(r);const a=this.wireframe.box.corners;a.forEach((e,t)=>{this.wireframe.edges.push(new k((new _).copyFrom(e),(new _).copyFrom(a[(t+1)%4])))});const{scaleCircleSize:o,rotationCircleSize:n}=xt.config.gestureHandlerConfig.transformGizmoConfig;this.wireframe.box.corners.forEach(e=>{this.wireframe.scaleCorners.push(new V(e,o));const t=(new _).subtractVectors(e,this.wireframe.box.getCenter()),i=(new _).copyFrom(this.wireframe.box.getCenter()).add((new _).copyFrom(t).normalize().multiply(t.length()+n-o));this.wireframe.rotationCorners.push(new V(i,n))})}setAdsorptionEnabled(e){this.enableAdsorption=e}},Y=require("@pixi/graphics"),q=class extends D{constructor(){super(),m(this,"interactive",!1),m(this,"results",[]),m(this,"graphics",new Y.Graphics),m(this,"absorptionResult",{}),this.type="adsorption"}initialize(){}preparationAction(){}getCursorState(){}preAction(){}action(){}cancelPreparation(){}actionKey(){}endActionKey(){}endAction(){}interruption(){}boxTranslationAdsorption(e,t,i,s=!0,r=!0){if(this.results=[],!xt.config.gestureHandlerConfig.adsorptionGizmoEnabled)return void console.warn("Adsorption gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if(t.isEmpty())return;const a=new _(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(e),o=t.clone().translate(a),n=o.getCenter();this.absorptionResult={},i.forEach(e=>{if(e.isEmpty())return;e.corners.forEach(e=>{o.corners.forEach(t=>{this.getPointAbsorption(t,e,s,r)}),this.getPointAbsorption(n,e,s,r)});const t=e.getCenter();this.getPointAbsorption(n,t,s,r),o.corners.forEach(e=>{this.getPointAbsorption(e,t,s,r)})})}pointTranslationAdsorption(e,t,i,s=!0,r=!0){if(this.results=[],!xt.config.gestureHandlerConfig.adsorptionGizmoEnabled)return void console.warn("Adsorption is not opened, use #SDK.setAdsorptionConfig() open this feature.");const a=new _(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(e),o=t.clone().add(a);this.absorptionResult={},i.forEach(e=>{this.getPointAbsorption(o,e,s,r)})}getPointAbsorption(e,t,i=!0,s=!0){i&&Math.abs(e.x-t.x)<xt.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(e,t,"x"),s&&Math.abs(e.y-t.y)<xt.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(e,t,"y")}refreshPointAbsorptionResult(e,t,i){const s=e[i]-t[i],r="x"===i?"xPoints":"yPoints";if(this.absorptionResult&&void 0===this.absorptionResult[i])this.absorptionResult[i]=s,this.absorptionResult[r]=[{point:e,targets:[t]}];else if(Math.abs(s)-Math.abs(this.absorptionResult[i]??0)<=.005)if(Math.abs(Math.abs(s)-Math.abs(this.absorptionResult[i]??0))<.05&&s*(this.absorptionResult[i]??0)>0)if(void 0===this.absorptionResult[r])this.absorptionResult[i]=s,this.absorptionResult[r]=[{point:e,targets:[t]}];else{const i=this.absorptionResult[r].filter(t=>t.point.equals(e));void 0===i||0===i.length?this.absorptionResult[r]?.push({point:e,targets:[t]}):i[0]?.targets.push(t)}else this.absorptionResult[i]=s,this.absorptionResult[r]=[{point:e,targets:[t]}]}refreshResults(){if(void 0===this.absorptionResult)return;const{x:e,y:t,xPoints:i,yPoints:s}=this.absorptionResult,r=new _(e??0,t??0);void 0!==e&&void 0!==i&&i.forEach(e=>{const t=e.point.clone().subtract(r),i=t.clone(),s=t.clone();e.targets.forEach(e=>{i.x=e.x,i.y=Math.min(i.y,e.y),s.x=e.x,s.y=Math.max(s.y,e.y)}),this.results.push(new k(i,s))}),void 0!==t&&void 0!==s&&s.forEach(e=>{const t=e.point.clone().subtract(r),i=t.clone(),s=t.clone();e.targets.forEach(e=>{i.y=e.y,i.x=Math.min(i.x,e.x),s.y=e.y,s.x=Math.max(s.x,e.x)}),this.results.push(new k(i,s))})}refreshRenderObject(){this.graphics.clear();const{lineWidth:e,lineColor:t}=xt.config.gestureHandlerConfig.adsorptionGizmoConfig;this.results.forEach(i=>{this.graphics.lineStyle(e,t),this.graphics.drawLine(i)})}getRenderObjects(){return xt.config.gestureHandlerConfig.adsorptionGizmoEnabled?(this.refreshResults(),this.refreshRenderObject(),[this.graphics]):[]}clearAbsorptionResult(){this.results=[],this.absorptionResult={}}},J={};c(J,{Application:()=>ee.Application,utils:()=>Z});var X={};c(X,{Application:()=>ee.Application,utils:()=>Z});require("@pixi/polyfill");var Z=l(require("@pixi/utils"),1),Q=require("@pixi/interaction"),ee=require("@pixi/app"),te=require("@pixi/core"),ie=require("@pixi/loaders"),se=require("@pixi/ticker");p(X,require("@pixi/constants")),p(X,require("@pixi/core")),p(X,require("@pixi/display")),p(X,require("@pixi/graphics")),p(X,require("@pixi/loaders")),p(X,require("@pixi/interaction")),p(X,require("@pixi/math")),p(X,require("@pixi/runner")),p(X,require("@pixi/sprite")),p(X,require("@pixi/text")),p(X,require("@pixi/ticker")),p(X,require("@pixi/settings")),Z.skipHello(),te.Renderer.registerPlugin("interaction",Q.InteractionManager),te.Renderer.registerPlugin("batch",te.BatchRenderer),ee.Application.registerPlugin(se.TickerPlugin),ee.Application.registerPlugin(ie.AppLoaderPlugin),X.Graphics.prototype.drawBox=function(e){const t=e.getCorners();this.beginFill();for(let e=0;e<4;e++)this.moveTo(t[e].x,t[e].y),this.lineTo(t[(e+1)%4].x,t[(e+1)%4].y);this.endFill()},X.Graphics.prototype.fillBox=function(e){const t=e.getSize();this.drawRect(e.min.x,e.min.y,t.x,t.y)},X.Graphics.prototype.drawLine=function(e){if(this.beginFill(),e instanceof k)this.moveTo(e.start.x,e.start.y),this.lineTo(e.end.x,e.end.y);else for(let t=0;t<e.length-1;t++)this.moveTo(e[t].x,e[t].y),this.lineTo(e[t+1].x,e[t+1].y);this.endFill()},p(J,X);var re=class extends D{constructor(e){super(),m(this,"interactive",!1),m(this,"box",new M),m(this,"graphics",new J.Graphics),m(this,"PageDataUtils"),this.PageDataUtils=e,this.type="preference"}initialize(){throw new Error("Method not implemented.")}preparationAction(){}preAction(){}action(){}endAction(){}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){if(this.box=new M,!xt.config.gestureHandlerConfig.preferenceGizmoEnabled)return void console.warn("Preference gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");const e=this.PageDataUtils.getPageData();(0,w.assertExist)(e);const{container:t}=this.PageDataUtils;if(t){const{zoom:i}=e.property,{offsetWidth:s,offsetHeight:r}=t,a=new _(s,r).multiply(i),o=this.PageDataUtils.getViewportLeftTopPosition().add(a.clone().divide(2));this.box=(new M).setFromCenterAndSize(o,a)}}refreshRenderObjects(){const{boxWidth:e,boxColor:t,markColor:i,markAlpha:s,safeAreaEnabled:r,safeAreaBoxColor:a,safeAreaBoxAlpha:o}=xt.config.gestureHandlerConfig.preferenceGizmoConfig;this.graphics=new J.Graphics;const{offsetWidth:n,offsetHeight:c}=this.PageDataUtils.container.parentElement,h=new M(new _(0,0),new _(n,this.box.min.y)),p=new M(new _(0,this.box.min.y),new _(this.box.min.x,c)),l=new M(new _(this.box.min.x,this.box.max.y),new _(n,c)),m=new M(new _(this.box.max.x,this.box.min.y),new _(n,this.box.max.y));if(this.graphics.beginFill(i,s),this.graphics.fillBox(h),this.graphics.fillBox(p),this.graphics.fillBox(l),this.graphics.fillBox(m),this.graphics.endFill(),r){const e=this.PageDataUtils.getPageData();(0,w.assertExist)(e,"You must call SDK#run() first");const{viewProperties:t,activeData:i}=e,s=t[i.view??-1];if(s){const{size:e,safeArea:t,previewSafeAreas:i}=s,[r,n,c,h]=t,p=this.box.getSize(),l=r/e[1]*p.y,m=c/e[0]*p.x,d=h/e[0]*p.x,g=n/e[1]*p.y,{min:u,max:f}=this.box;this.graphics.beginFill(a,o);const y=new M(u,new _(f.x,u.y+l)),w=new M(new _(u.x,u.y+l),new _(u.x+m,f.y)),x=new M(new _(f.x-d,u.y+l),new _(f.x,f.y)),v=new M(new _(u.x+m,f.y-g),new _(f.x-d,f.y));this.graphics.fillBox(y),this.graphics.fillBox(w),this.graphics.fillBox(x),this.graphics.fillBox(v),this.graphics.endFill(),i.forEach(t=>{const{box:[i,s,r,a],color:o}=t,n=this.box.getSize(),c=new _(r/e[0]*n.x,a/e[1]*n.y),h=new _(i/e[0]*n.x+c.x/2,s/e[1]*n.y+c.y/2).add(u),p=(new M).setFromCenterAndSize(h,c),l=o?.[3]??.3,m=o?.slice(0,3)??[255,0,0],d=m[0]<<16|m[1]<<8|m[2];this.graphics.beginFill(d,l),this.graphics.fillBox(p),this.graphics.endFill()})}}this.graphics.lineStyle(e,t),this.graphics.drawBox(this.box)}getRenderObjects(){return xt.config.gestureHandlerConfig.preferenceGizmoEnabled?(this.refreshRenderObjects(),[this.graphics]):[]}},ae="https://mdn.alipayobjects.com/rms/uri/file/as/0.0.6",oe={normal:{type:"preset",content:"default"},rotation:{type:"svg",content:"default",url:`${ae}/icons/cursor-rotate-32.svg`},scale:{type:"svg",content:"default",url:`${ae}/icons/cursor-scale-32.svg`}};var ne=class{constructor(e){m(this,"wireframeApplication"),m(this,"gizmos",[]),m(this,"activeGizmo"),m(this,"selectorGizmo"),m(this,"transformGizmo"),m(this,"controlGizmo"),m(this,"preferenceGizmo"),m(this,"spaceClickTime"),m(this,"spaceEmit",!1),m(this,"_ignoreInteraction",!1),m(this,"clickButtons",0),m(this,"container"),m(this,"clickTime",0),m(this,"firstClick",!0),m(this,"dblclickTimeSpan",500),this.gizmos=[];const{width:t,height:i}=e.getBoundingClientRect();this.wireframeApplication=new P.Application({backgroundAlpha:0,width:t,height:i,resolution:1,antialias:!0}),this.container=e,this.wireframeApplication.view.style.position="absolute",this.wireframeApplication.view.id="wireframeApplicationCanvas",e.appendChild(this.wireframeApplication.view),this.wireframeApplication.stage.sortableChildren=!0,this.registerViewEvent(),async function(){await Promise.all(Object.entries(oe).map(([e,t])=>{const{url:i}=t;if(i)return fetch(i).then(e=>e.text()).then(i=>oe[e]={...t,content:i})})).catch(e=>{console.error(e)})}()}set ignoreInteraction(e){e!==this._ignoreInteraction&&(this._ignoreInteraction=e,e&&(this.activeGizmo?.cancelPreparation(),this.activeGizmo=void 0))}get ignoreInteraction(){return this._ignoreInteraction}resize(){this.wireframeApplication&&(this.wireframeApplication.resizeTo=this.container,this.refresh(),this.render())}refresh(){this.gizmos.forEach(e=>{e.refreshResults()})}render(){this.refresh(),this.wireframeApplication.stage?.removeChildren();const e=(this.ignoreInteraction?[this.preferenceGizmo]:this.gizmos).flatMap(e=>e.getRenderObjects());this.wireframeApplication.stage.addChild(...e),this.wireframeApplication.render();const t=this.activeGizmo instanceof $?this.activeGizmo.cursorResult:void 0;this.setCursor(t)}init(e){this.gizmos=[],this.controlGizmo=new N(e),this.selectorGizmo=new K(e);const t=new q;this.transformGizmo=new $(e,t),this.preferenceGizmo=new re(e),this.gizmos.push(this.transformGizmo,this.selectorGizmo,this.controlGizmo,this.preferenceGizmo,t),this.initEvents()}initEvents(){this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.onKeyUp)}registerViewEvent(){this.wireframeApplication.view.onmousedown=e=>{this.onMouseDown(e)},this.wireframeApplication.view.onmousemove=e=>{0===e.buttons&&this.onMouseMove(e)},this.wireframeApplication.view.onmouseout=()=>{this.selectorGizmo?.cancelPreparation(),this.render()},this.wireframeApplication.view.onwheel=e=>{this.onWheel(e)}}onMouseDown(e){if(!this.ignoreInteraction){if(this.clickButtons=e.buttons,this.firstClick=!!this.firstClick&&Date.now()-this.clickTime<this.dblclickTimeSpan,this.firstClick){this.gizmos.forEach(t=>{if(t.interactive)if(void 0===this.activeGizmo){const i=t.preparationAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===i)}else t.cancelPreparation()}),this.activeGizmo=void 0;const t=this.selectorGizmo?.preAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===(t??"null")),this.firstClick=!1}else{void 0===this.activeGizmo&&this.gizmos.forEach(t=>{if(!t.interactive||this.activeGizmo)return;const i=t.preparationAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===i)});const t=this.activeGizmo?.preAction(e);"selector"!==t&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.activeGizmo=this.gizmos.find(e=>e.type===t),this.clickTime=Date.now(),this.firstClick=!0}this.render(),document.addEventListener("mousemove",this.onMouseMove),document.addEventListener("mouseup",this.onMouseUp)}}onMouseMove(e){this.ignoreInteraction||(0!==e.buttons?this.activeGizmo?.action(e):this.spaceEmit||(this.activeGizmo=void 0,this.gizmos.forEach(t=>{if(t.interactive)if(void 0===this.activeGizmo){const i=t.preparationAction(e);"selector"!==i&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.activeGizmo=this.gizmos.find(e=>e.type===i)}else t.cancelPreparation()})),this.render())}onWheel(e){this.ignoreInteraction||(e.preventDefault(),this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.controlGizmo?.action(e))}onMouseUp(e){if(this.ignoreInteraction)return;const t=this.activeGizmo?.endAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===t),void 0===this.activeGizmo&&1===this.clickButtons&&this.gizmos.forEach(t=>{if(t.interactive)if(void 0===this.activeGizmo){const i=t.preparationAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===i)}else t.cancelPreparation()}),this.clickButtons=0,this.render(),document.removeEventListener("mousemove",this.onMouseMove),document.removeEventListener("mouseup",this.onMouseUp)}onKeyDown(e){if(!this.ignoreInteraction){if("space"!==e.code.toLocaleLowerCase()||this.activeGizmo?.active)this.gizmos.forEach(t=>{t.actionKey(e)});else{if(this.spaceEmit)return;void 0===this.spaceClickTime?this.spaceClickTime=Date.now():Date.now()-this.spaceClickTime>300&&(this.spaceEmit=!0,this.activeGizmo=this.controlGizmo,this.activeGizmo?.actionKey(e))}this.render()}}onKeyUp(e){this.ignoreInteraction||(this.gizmos.forEach(t=>{t.endActionKey(e)}),"space"===e.code.toLocaleLowerCase()&&(this.spaceClickTime=void 0,this.spaceEmit=!1),this.render())}dispose(){this.wireframeApplication.destroy(),this.gizmos=[],this.activeGizmo=void 0}setCursor(e){let t="default";if(e?.type){const i=oe[e.type];if("svg"===i.type){const s=16;t=encodeURIComponent(i.content.replace("rotate(0.00)",`rotate(${e.angle})`)),t=`url("data:image/svg+xml,${t}") ${s} ${s}, auto`}else t=i.content}this.wireframeApplication.view.style.cursor=t}};function ce(e,t){e.includes(t)||e.push(t)}var he=require("@galacean/effects"),pe=class{constructor(e){m(this,"plane",new W),m(this,"ray",new G),m(this,"viewportParam",{width:0,height:0,viewWidth:0,viewHeight:0,panelWidth:0,panelHeight:0,scale:1,ratio:1,translation:new _,rulerWidth:0}),m(this,"cameraParam",{position:new B,rotation:new B,focusPosition:new B,focusRotation:new B,viewProjectionMatrix:new U,inverseViewProjectionMatrix:new U}),m(this,"pageDataUtils"),this.pageDataUtils=e}refreshViewParam(){const e=this.pageDataUtils.getPageData();(0,he.assertExist)(e,"You must run SDK first");const t=new _(this.pageDataUtils.container.offsetWidth,this.pageDataUtils.container.offsetHeight),{zoom:i,translation:s}=e.property;this.viewportParam.width=t.x,this.viewportParam.height=t.y,this.viewportParam.viewWidth=t.x,this.viewportParam.viewHeight=t.y,this.viewportParam.panelWidth=t.x,this.viewportParam.panelHeight=t.y,this.viewportParam.scale=i,this.viewportParam.ratio=1,this.viewportParam.translation=new _(...s.map(e=>e/i)),this.viewportParam.rulerWidth=0}refreshCameraParam(){const{player:e}=this.pageDataUtils,t=e?.getCompositions()?.[0]?.camera;if(t){const e=U.fromArray(t.getViewProjectionMatrix().toArray()),i=U.fromArray(t.getViewMatrix().toArray()).invert(),s=new F;i.decompose(this.cameraParam.position,s,new B),this.cameraParam.rotation=(new R).setFromQuaternion(s).toDegreeVector3(),this.cameraParam.focusPosition=new B(...this.cameraParam.position.toVector2().toArray(),this.cameraParam.position.z>0?0:2*this.cameraParam.position.z),this.cameraParam.focusPosition.applyEuler((new R).setFromDegreeVector3(this.cameraParam.rotation.clone()),this.cameraParam.position),this.cameraParam.focusRotation=(new R).setFromQuaternion(s.invert()).toDegreeVector3(),this.cameraParam.viewProjectionMatrix=e,this.cameraParam.inverseViewProjectionMatrix=U.fromArray(t.getInverseViewProjectionMatrix().toArray())}}initInteractionPlane(e,t){e??(e=this.cameraParam.focusPosition),t??(t=(new R).setFromDegreeVector3(this.cameraParam.rotation));const i=new B(0,0,1).applyEuler(t);this.plane.setFromNormalAndCoplanarPoint(e,i)}getWorldSizeByViewSize(e,t=!0,i){const s=t||!i?(new R).setFromDegreeVector3(this.cameraParam.rotation):(new R).setFromQuaternion((new F).setFromRotationMatrix(this.pageDataUtils.getItemTransformById(i.id).matrix)),r=i?(new B).setFromMatrixPosition(this.pageDataUtils.getItemTransformById(i.id).matrix):this.cameraParam.focusPosition,a=this.projectPoint(r.clone()),o=this.getWorldPositionByViewPoint(a.add(e));if(!o)return console.warn("size is out of bounds."),new B(0,0,0);const n=(new R).setFromQuaternion((new F).setFromEuler(s).invert());return(t||!i?o.applyEuler(n,r):o).subtract(r)}projectPoint(e){const{panelWidth:t,panelHeight:i,scale:s}=this.viewportParam,r=this.pageDataUtils.getViewportLeftTopPosition();return(new _).copyFrom(e.applyMatrix(this.cameraParam.viewProjectionMatrix).toVector2()).toViewCoordinate(t*s,i*s).add(r)}getWorldPositionByViewPoint(e){const{position:t,inverseViewProjectionMatrix:i}=this.cameraParam,s=this.getViewPositionByScreenPosition(e),r=(new H).setFromCamera(s,{position:t,inverseViewProjectMatrix:i}).rayCastPlane(this.plane);return r?.point}getViewPositionByScreenPosition(e){const{panelWidth:t,panelHeight:i,scale:s}=this.viewportParam;return new _(e.x/(t*s)*2-1,-e.y/(i*s)*2+1)}getScreenSizeByPixelSize(e){const t=this.viewportParam.width/this.viewportParam.viewWidth,i=e.clone();return i.multiply(t||1),i}getPixelSizeByScreenSize(e){const t=this.viewportParam.viewWidth/this.viewportParam.width,i=e.clone();return i.multiply(t||1),i}},le=require("@ffmpeg/ffmpeg"),me=require("@ffmpeg/util");function de(e,t="asserts failed"){if(!e)throw new Error(t)}function ge(e,t,...i){const s=t.reduce((e,t)=>e?`${e} ${t}`:t,""),r="color: #108ee9;";switch(e){case"error":console.error(`%c[${s}]`,r,...i);break;case"info":console.info(`%c[${s}]`,r,...i);break;case"debug":console.debug(`%c[${s}]`,r,...i);break;case"warn":console.warn(`%c[${s}]`,r,...i);break;default:console.log(`%c[${s}]`,r,...i)}}function ue(e,t){if(Object.is(e,t))return!0;if(typeof e!=typeof t)return!1;if(null===e||"object"!=typeof e)return!1;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(Array.isArray(e)!==Array.isArray(t))return!1;const i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(const s of i){if(!Object.prototype.hasOwnProperty.call(t,s))return!1;if(!ue(e[s],t[s]))return!1}return!0}var fe={SCRIPT:"https://gw.alipayobjects.com/os/gltf-asset/99531561844014/img2webp.js",WASM:"https://mdn.alipayobjects.com/mars/uri/file/as/0.0.4/wasm/img2webp/img2webp.wasm"},ye={CLASSWORKER:"https://mdn.alipayobjects.com/rms/uri/file/as/ffmpeg/core/0.12.10/dist/worker.js",DEFAULT:{CORE:"https://gw.alipayobjects.com/os/lib/ffmpeg/core/0.12.10/dist/esm/ffmpeg-core.js",WASM:"https://gw.alipayobjects.com/os/lib/ffmpeg/core/0.12.10/dist/esm/ffmpeg-core.wasm"},MT:{CORE:"https://gw.alipayobjects.com/os/lib/ffmpeg/core-mt/0.12.10/dist/esm/ffmpeg-core.js",WASM:"https://gw.alipayobjects.com/os/lib/ffmpeg/core-mt/0.12.10/dist/esm/ffmpeg-core.wasm",WORKER:"https://gw.alipayobjects.com/os/lib/ffmpeg/core-mt/0.12.10/dist/esm/ffmpeg-core.worker.js"}};function we(e,t,i,s){const r=t.getContext("2d");de(r),r.clearRect(0,0,t.width,t.height),i&&(r.save(),r.fillStyle=i,r.fillRect(0,0,t.width,t.height),r.restore()),s&&r.drawImage(s,0,0,s.width,s.height,0,0,t.width,t.height),r.drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height)}async function xe(){return new Promise(async(e,t)=>{try{await function(e,t={}){return new Promise((i,s)=>{const r=document.querySelector(`script[src="${e}"]`);if(r)return"true"===r.dataset.loaded?void i(r):(r.addEventListener("load",()=>{i(r)}),void r.addEventListener("error",()=>{s(new Error(`Script already failed: ${e}`))}));const a=document.createElement("script");a.src=e,a.async=!0,Object.keys(t).forEach(e=>{a.setAttribute(e,t[e]??"")}),a.onload=()=>{a.dataset.loaded="true",i(a)},a.onerror=()=>{s(new Error(`Failed to load script: ${e}`))},document.head.appendChild(a)})}(fe.SCRIPT,{crossOrigin:"anonymous"});const t={locateFile:(e,t)=>e.endsWith("createWebPCore.wasm")?fe.WASM:t+e};e(await window.createWebPCore(t))}catch(e){t(e)}})}function ve(e){for(const t of e.getCompositions())for(const e of t.textures)e.isDestroyed||e.dispose();e.disposed||e.destroyCurrentCompositions()}function Pe(e=[750,750]){const t=(0,w.generateGUID)(),i={id:(0,w.generateGUID)(),dataType:w.spec.DataType.TimelineAsset,tracks:[]},s={id:(0,w.generateGUID)(),item:{id:t},dataType:w.spec.DataType.CompositionComponent,items:[],timelineAsset:{id:i.id},sceneBindings:[]},r={id:t,name:"AI 设计师画布",duration:999,startTime:0,endBehavior:w.spec.EndBehavior.forward,previewSize:[...e],camera:{fov:60,far:40,near:.1,clipMode:1,position:[0,0,8],rotation:[0,0,0]},components:[{id:s.id}]},a={version:w.spec.JSONSceneVersion.LATEST,playerVersion:{web:"2.7.3",native:"10.7.6"},type:"ge",compositionId:t,compositions:[],images:[],plugins:[],bins:[],textures:[],items:[],components:[],materials:[],shaders:[],geometries:[],animations:[],miscs:[]};return a.miscs.push(i),a.compositions.push(r),a.components.push(s),a}var De,be,Ie,Ce,Ee,Ae,Se,Te,ze,_e,ke,Me,Ve,Fe,Be,Ue,Re,We,Ge,He=require("@galacean/effects"),Ne=class{static createEmpty(e,t=null,i="NewVFXItem"){return Le.createVFXItem(e,t,i)}static createSprite(e,t=null,i="NewSpite"){const s=Le.createVFXItem(e,t,i,He.SpriteComponent);return s.type=He.spec.ItemType.sprite,s}},Le=class{static createVFXItem(e,t=null,i="NewVFXItem",...s){const r=new He.VFXItem(e.getEngine());r.name=i;for(const e of s)r.addComponent(e);return e.addItem(r),t&&r.setParent(t),r}},Ke=class{constructor(e,t,i,s){m(this,"sdk"),m(this,"player"),m(this,"container"),m(this,"emitter"),m(this,"interactionUtils"),this.player=e,this.sdk=s,this.container=t,this.emitter=i}init(){this.interactionUtils=new pe(this)}getPageData(){return this.sdk.pageData}getCurrentComposition(){return this.player.getCompositions()[0]}isItemSelected(e){return!!this.sdk.pageData?.activeData.selectedItems?.find(t=>t===e)}getItemEditEnable(e){const t=this.getViewItemById(e);if(!t||!this.sdk.pageData||this.sdk.pageData.viewProperties[this.sdk.pageData.activeData.view??0]?.ignoreInteraction)return!1;const i=this.sdk.pageData.time,{duration:s,delay:r,endBehavior:a}=t;return i>=r&&(i<r+s||a===w.spec.EndBehavior.restart)}getItemShow(e){const t=this.getViewItemById(e);if(!this.sdk.pageData||!t?.property.visible)return!1;const i=this.sdk.pageData.time,{duration:s,delay:r,endBehavior:a}=t;return i>=r&&(i<r+s||a===w.spec.EndBehavior.restart||a===w.spec.EndBehavior.freeze)}addSelectedItems(e){var t;(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),(t=this.sdk.pageData.activeData).selectedItems??(t.selectedItems=[]),e.forEach(e=>{ce(this.sdk.pageData?.activeData.selectedItems??[],e)}),this.emitter.emit("selectedItemChange",e)}clearSelectedItems(){this.sdk.pageData&&(this.sdk.pageData.activeData.selectedItems=[],this.emitter.emit("selectedItemChange",[]))}getSelectedItems(){const e=this.sdk.pageData?.activeData.selectedItems;return this.sdk.pageData?.items.filter(t=>e?.find(e=>e===t.id))??[]}addPreSelectedItem(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=e,this.emitter.emit("preSelectedItemChange",e)}clearPreSelectedItem(){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=void 0,this.emitter.emit("preSelectedItemChange",void 0)}getPreSelectedItem(){const e=this.getPageData();(0,w.assertExist)(e,"You must call SDK#run() first");const t=e.activeData.preSelectedItem;return t?this.getViewItemById(t):void 0}getViewItemById(e){return this.sdk.pageData?.items.find(t=>t.id===e)}getPlayerSizeByParent(e,t){const[i,s]=e,[r,a]=t;let o=s,n=o/(a||1624)*(r||750);return n>i&&(o=i/n*s,n=i),[n,o]}async loadScene(e){ve(this.player);const t=this.sdk.pageData?.viewProperties[e];if(!t||!this.sdk.pageData)return void console.warn(`This page does not have ${e} view property.`);const{scene:i,size:s}=t,r=this.container.parentElement?.offsetWidth??300,a=this.container.parentElement?.offsetHeight??300,[o,n]=this.getPlayerSizeByParent([r,a],s);this.container.style.width=`${o}px`,this.container.style.height=`${n}px`,this.sdk.pageData.activeData={view:e,selectedItems:[],preSelectedItem:void 0},this.player.resize();const c=JSON.parse(JSON.stringify(i)),h=await this.player.loadScene(c,{autoplay:!1});this.player.gotoAndStop(this.sdk.pageData.time),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,h.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}refreshPageTime(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.time=e}pageZoom(e){var t;(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{zoom:i}=this.sdk.pageData.property;(t=this.sdk.pageData.property).zoom??(t.zoom=1);const s=I(e,-.1,.1),r=S(I(i+s,.3,10),2);this.sdk.pageData.property.zoom=r,this.container.style.scale=`${r}`,this.emitter.emit("zoomChange",r)}setPageZoom(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const t=S(I(e,.3,10),2);this.sdk.pageData.property.zoom=t,this.container.style.scale=`${t}`,this.emitter.emit("zoomChange",e)}refreshInteractionParam(){this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam()}pageMove(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const[t,i]=this.sdk.pageData.property.translation??[0,0],s=t+e.x,r=i+e.y;this.sdk.pageData.property.translation=[s,r],this.refreshInteractionParam(),this.container.style.translate=`${s}px ${r}px`,this.emitter.emit("pageDataChange",this.sdk.pageData)}rotateItem(e,t){const i=this.getPlayerItemById(e);i&&(i.rotate(...t.toArray()),this.transformSceneItem(e,"rotation",t.toArray()),this.refreshViewItem(e),this.emitter.emit("itemPropertyChange",{id:e,property:"rotation"}))}moveItem(e,t){const i=this.getPlayerItemById(e);if(i){const s=(new U).copyFrom(i.transform.getParentMatrix()??new U);s.setPosition(new B);const r=t.clone().applyMatrix(s.invert());i.translate(...r.toArray()),i.transform.updateLocalMatrix(),this.transformSceneItem(e,"position",r.toArray()),this.refreshViewItem(e),this.emitter.emit("itemPropertyChange",{id:e,property:"translation"})}}scaleItem(e,t){const i=this.getPlayerItemById(e);i&&(i.scale(...t.toArray()),this.transformSceneItem(e,"scale",t.toArray()),this.refreshViewItem(e),this.emitter.emit("itemPropertyChange",{id:e,property:"size"}))}getItemTransformById(e){const t={matrix:new U,parentMatrix:new U},i=this.getPlayerItemById(e);if(void 0!==i?.transform){i.transform.updateLocalMatrix();const e=U.fromArray(i.composition?.transform.getWorldMatrix().elements??[]).invert();t.matrix=e.clone().multiply(U.fromArray(i.transform.getWorldMatrix().elements)),t.parentMatrix=e.clone().multiply(U.fromArray(i.transform.parentTransform?.getWorldMatrix().elements??(new U).toArray()))}return t}addViewItemsByItems(e,t,i){const s=t=>{t.forEach(t=>{e.find(e=>e.id===t.getInstanceId())||e.push(this.createViewItemByPlayerItem(t,i))})};for(const i of t)xt.config.pageConfig.filterItemNames.includes(i.name)||(s([i]),this.addViewItemsByItems(e,i.children,i.getInstanceId()))}createViewItemByPlayerItem(e,t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{transform:i,composition:s,isVisible:r}=e;i.updateLocalMatrix();const a=(new U).copyFrom(s?.transform.getWorldMatrix()??(new U).identity()).invert().multiply(i.getWorldMatrix()),o=new B,n=new F,c=new B;a.decompose(o,n,c);const h=(new R).setFromQuaternion(n);h.x=Number.isNaN(h.x)?0:h.x,h.y=Number.isNaN(h.y)?0:h.y,h.z=Number.isNaN(h.z)?0:h.z;const p=o.toArray().map(e=>S(e,2)),l=h.toArray().map(e=>S(e,2)),m=c.toArray().map(e=>S(e,2)),d=i.size.toArray(),g={position:p,rotation:l,size:this.getPixelSizeByWorldSize([m[0]*d[0],m[1]*d[1],m[2]],e).map(e=>S(e,2)),visible:r,keyPropertyEditing:!1};switch(e.type){case w.spec.ItemType.sprite:{const t=this.getActiveScene()?.scene;if(t){t.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(g.keyPropertyEditing||!("renderer"in e)||!("texture"in e.renderer)||!e.renderer.texture)return;const i=t.textures?.find(t=>t.id===e.renderer.texture.id);if(i&&"source"in i&&i.source){const e=t?.images.find(e=>e.id===i.source.id);g.keyPropertyEditing=!!e?.template;const s=e?.url??"";s&&Object.assign(g,{image:s})}})}break}case w.spec.ItemType.text:case w.spec.ItemType.richtext:{const t=this.getActiveScene()?.scene;if(g.keyPropertyEditing=!0,t){t.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(![w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType))return;const{textAlign:t,textColor:i,text:s,fontWeight:r,fontFamily:a}=e.options;Object.assign(g,{alignment:t,color:i,weight:r,text:s,font:a})})}break}}return{id:e.getInstanceId(),name:e.name,parentId:e.parentId??t,children:[],type:e.type,duration:e.duration,delay:e.defination.delay,endBehavior:e.endBehavior,property:g}}getViewBoxById(e){const t=new M,i=this.getPlayerItemById(e),s=this.getChildrenPlayerItems(i);return i&&s?this.getViewBoxByPlayerItem(i,s):t}getItemViewAnchor(e){const t=this.getPlayerItemById(e);if(t?.transform?.anchor){const e=(new B).copyFrom(t.transform.anchor).applyMatrix((new U).copyFrom(t.transform.getWorldMatrix()));return this.interactionUtils.projectPoint(e).round(2)}}getChildrenPlayerItems(e){const t=[];return e?(t.push(...this.player.getCompositions()[0].items.filter(t=>t.parentId===e.getInstanceId())),t.push(...t.flatMap(e=>this.getChildrenPlayerItems(e))),t):[]}getChildrenSceneItemIds(e,t){const i=[];return i.push(...t.items.filter(t=>t.parentId===e).map(e=>e.id)),i.push(...i.flatMap(e=>this.getChildrenSceneItemIds(e,t))),i}getViewBoxByPlayerItem(e,t){const i=new M;switch(e.type){case w.spec.ItemType.sprite:case w.spec.ItemType.plugin:case w.spec.ItemType.video:case w.spec.ItemType.richtext:case w.spec.ItemType.text:case w.spec.ItemType.shape:{const{transform:s,composition:r}=e;s.updateLocalMatrix();const{size:a}=s,o=(new U).copyFrom(r?.transform.getWorldMatrix()??new U).invert().multiply(s.getWorldMatrix()),{x:n,y:c}=a.clone().divide(2),h=new B(n,c,0).applyMatrix(o),p=new B(n,-c,0).applyMatrix(o),l=new B(-n,-c,0).applyMatrix(o),m=new B(-n,c,0).applyMatrix(o),d=this.interactionUtils.projectPoint(h).round(2),g=this.interactionUtils.projectPoint(p).round(2),u=this.interactionUtils.projectPoint(l).round(2),f=this.interactionUtils.projectPoint(m).round(2);i.setFromVec2Array([d,g,u,f]);const y=t?.map(e=>this.getViewBoxById(e.getInstanceId()));y&&y.map(e=>i.union(e));break}case w.spec.ItemType.null:{const e=t?.map(e=>this.getViewBoxById(e.getInstanceId()));e&&e.map(e=>i.union(e));break}}return i}getViewportLeftTopPosition(){if(!this.sdk.pageData)return new _;const{zoom:e,translation:t}=this.sdk.pageData.property,{offsetWidth:i,offsetHeight:s}=this.container.parentElement,{offsetWidth:r,offsetHeight:a}=this.container,o=new _(i,s),n=new _(r,a).multiply(e);return o.clone().divide(2).subtract(n.clone().divide(2)).add(t)}getContainerPosition(){const{offsetWidth:e,offsetHeight:t}=this.container.parentElement;return new _(e/2,t/2).add(new _(...this.sdk.pageData?.property.translation??[0,0]))}getViewportByViewPoint(e){if(!this.sdk.pageData)return e;const{zoom:t}=this.sdk.pageData.property,{offsetWidth:i,offsetHeight:s}=this.container,r=new _(i,s).multiply(t),a=this.getViewportLeftTopPosition(),o=e.clone().subtract(a);return new _(o.x/r.x*2-1,1-o.y/r.y*2)}getActiveScene(){return this.sdk.pageData?.viewProperties[this.sdk.pageData?.activeData.view??-1]}async changeItemProperty(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const t=this.getViewItemById(e.itemId),i=this.getPlayerItemById(e.itemId);if(t&&i)if(e.propertyName in t.property){switch(e.propertyName){case"alignment":[w.spec.TextAlignment.left,w.spec.TextAlignment.middle,w.spec.TextAlignment.right].includes(e.propertyValue)&&i.getComponent(w.TextComponent).setTextAlign(e.propertyValue);break;case"color":Array.isArray(e.propertyValue)&&4===e.propertyValue.length&&(console.log(e.propertyValue),i.getComponent(w.TextComponent).setTextColor(e.propertyValue));break;case"font":if("string"==typeof e.propertyValue){const t=e.propertyValue.split("/"),s=t[t.length-1]?.split(".")[0],r=this.player.getAssetManager()[0];await r.processFontURL([{fontURL:e.propertyValue,fontFamily:s}]),s&&i.getComponent(w.TextComponent).setFontFamily(s)}break;case"text":"string"==typeof e.propertyValue&&i.getComponent(w.TextComponent).setText(e.propertyValue);break;case"weight":[w.spec.TextWeight.normal,w.spec.TextWeight.bold,w.spec.TextWeight.lighter].includes(e.propertyValue)&&i.getComponent(w.TextComponent).setFontWeight(e.propertyValue);break;case"image":"string"==typeof e.propertyValue&&i.getComponent(w.SpriteComponent).setTexture(await w.Texture.fromImage(e.propertyValue,this.player.renderer.engine));break;case"position":if(Array.isArray(e.propertyValue)&&3===e.propertyValue.length){const i=e.propertyValue.map((e,i)=>e-(t.property.position[i]??0));this.moveItem(e.itemId,new B(...i))}break;case"rotation":if(Array.isArray(e.propertyValue)&&3===e.propertyValue.length){const i=e.propertyValue.map((e,i)=>e-(t.property.rotation[i]??0));this.rotateItem(e.itemId,new B(...i).negate())}break;case"size":if(Array.isArray(e.propertyValue)&&2===e.propertyValue.length){const i=e.propertyValue.map(e=>0===e||null===e?1:e),s=t.property.size.map(e=>e||1),r=i.map((e,t)=>e/s[t]);this.scaleItem(e.itemId,new B(...r,1))}break;case"visible":if("boolean"==typeof e.propertyValue&&(i.setVisible(e.propertyValue),xt.config.pageConfig.groupVisible)){this.getChildrenPlayerItems(i).forEach(t=>{t.setVisible(e.propertyValue)})}}["position","rotation","size"].includes(e.propertyName)||this.player.gotoAndStop(this.sdk.pageData.time),this.changeViewItemProperty(e),this.refreshViewItem(e.itemId)}else console.warn(`Item does not have property ${e.propertyName}.`);else console.warn(`Id ${e.itemId} is not a item id.`)}changeViewItemProperty(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.viewProperties.forEach((t,i)=>{if(!this.sdk.pageData?.property.asyncMode&&i!==this.sdk.pageData?.activeData.view)return;const{scene:s}=t;switch(e.propertyName){case"position":case"rotation":if(Array.isArray(e.propertyValue)&&3===e.propertyValue.length){const t=this.sdk.pageData.items.find(t=>t.id===e.itemId),i=t?.property[e.propertyName],r=e.propertyValue.map((e,t)=>e-(i?.[t]??0));this.changeSceneItemProperty(s,{...e,propertyValue:r})}break;case"size":if(Array.isArray(e.propertyValue)&&2===e.propertyValue.length){const t=this.sdk.pageData.items.find(t=>t.id===e.itemId),i=t?.property[e.propertyName],r=e.propertyValue.map((e,t)=>e/(i?.[t]??0));this.changeSceneItemProperty(s,{...e,propertyValue:r})}break;default:this.changeSceneItemProperty(s,e)}})}changeSceneItemProperty(e,t){switch(t.propertyName){case"alignment":if([w.spec.TextAlignment.left,w.spec.TextAlignment.middle,w.spec.TextAlignment.right].includes(t.propertyValue)){const i=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));i?.options&&"textAlign"in i.options&&(console.log(t.propertyValue),i.options.textAlign=t.propertyValue)}break;case"color":if(Array.isArray(t.propertyValue)&&4===t.propertyValue.length){const i=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));i?.options&&(i.options.textColor=[...t.propertyValue])}break;case"font":if("string"==typeof t.propertyValue){const i=t.propertyValue.split("/"),s=i[i.length-1]?.split(".")[0],r=e.fonts?.find(e=>"family"in e&&e.family===s||"fontFamily"in e&&e.fontFamily===s);!r&&e.fonts&&s&&e.fonts.push({fontFamily:s,fontURL:t.propertyValue});const a=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));a?.options&&(a.options.fontFamily=s)}break;case"text":if("string"==typeof t.propertyValue){const i=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));i?.options&&(i.options.text=t.propertyValue)}break;case"weight":if("string"==typeof t.propertyValue){const i=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));i?.options&&(i.options.fontWeight=t.propertyValue)}break;case"image":if("string"==typeof t.propertyValue){e.components.filter(e=>e.item.id===t.itemId).forEach(i=>{if(!("renderer"in i))return;const s=e.textures?.find(e=>e.id===i.renderer.texture.id);if(s&&"source"in s&&s.source){const i=e?.images.find(e=>e.id===s.source.id);i?.url&&i?.webp&&(i.url=t.propertyValue,i.webp=t.propertyValue),i&&"template"in i&&i.template.background&&(i.template.background.url=t.propertyValue)}})}break;case"position":if(Array.isArray(t.propertyValue)&&3===t.propertyValue.length){const i=e.items.find(e=>e.id===t.itemId);i?.transform&&(i.transform.position.x+=t.propertyValue[0],i.transform.position.y+=t.propertyValue[1],i.transform.position.z+=t.propertyValue[2])}break;case"rotation":if(Array.isArray(t.propertyValue)&&3===t.propertyValue.length){const i=e.items.find(e=>e.id===t.itemId);i?.transform&&(i.transform.eulerHint.x+=t.propertyValue[0],i.transform.eulerHint.y+=t.propertyValue[1],i.transform.eulerHint.z+=t.propertyValue[2])}break;case"size":if(Array.isArray(t.propertyValue)&&2===t.propertyValue.length){const i=e.items.find(e=>e.id===t.itemId);i?.transform&&(i.transform.scale.x*=t.propertyValue[0],i.transform.scale.y*=t.propertyValue[1])}break;case"visible":{const i=e.items.find(e=>e.id===t.itemId);if(i&&(i.visible=t.propertyValue,xt.config.pageConfig.groupVisible)){this.getChildrenSceneItemIds(t.itemId,e).forEach(i=>{const s=e.items.find(e=>e.id===i);s&&(s.visible=t.propertyValue)})}break}}}transformSceneItem(e,t,i){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.viewProperties.forEach((s,r)=>{if(!this.sdk.pageData?.property.asyncMode&&r!==this.sdk.pageData?.activeData.view)return;const{scene:a}=s;switch(t){case"position":if(Array.isArray(i)&&3===i.length){const t=a.items.find(t=>t.id===e);t?.transform&&(t.transform.position.x+=i[0],t.transform.position.y+=i[1],t.transform.position.z+=i[2])}break;case"rotation":if(Array.isArray(i)&&3===i.length){const t=a.items.find(t=>t.id===e);t?.transform&&(t.transform.eulerHint.x+=i[0],t.transform.eulerHint.y+=i[1],t.transform.eulerHint.z+=i[2])}break;case"scale":if(Array.isArray(i)&&3===i.length){const t=a.items.find(t=>t.id===e);t?.transform&&(t.transform.scale.x*=i[0],t.transform.scale.y*=i[1],t.transform.scale.z*=i[2])}}})}refreshViewItem(e){const t=this.sdk.pageData;(0,w.assertExist)(t,"You must call SDK#run() first");const i=t.items.findIndex(t=>t.id===e);if(i<0)return void console.log(`item ${e} is not existed.`);const s=t.items[i],r=this.getPlayerItemById(e);r&&s&&(t.items[i]=this.createViewItemByPlayerItem(r,s.parentId))}getPlayerItemById(e){return this.player.getCompositions()[0]?.items.find(t=>t.getInstanceId()===e)}getPixelSizeByWorldSize(e,t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const i=[0,0],s=t.composition?.camera,r=this.sdk.pageData.viewProperties[this.sdk.pageData.activeData.view??0]?.size;if(s&&r){const{z:a}=t.transform.getWorldPosition(),{x:o,y:n}=s.getInverseVPRatio(a);i[0]=Math.abs(e[0]*r[0]/o/2),i[1]=Math.abs(e[1]*r[1]/n/-2)}else console.warn("camera is not existed.");return i}async addSpriteItem(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{viewProperties:t,activeData:i}=this.sdk.pageData,s=t[i.view??-1]?.scene;if(!s)return void console.warn("Target scene is not exsited.");const{name:r="图层",size:a,scale:o=[1,1],url:n,rotation:c=0,position:h,id:p=(0,w.generateGUID)()}=e,l=this.interactionUtils.getWorldSizeByViewSize(new _(...a)),m=new B(...o??[1,1],1),d=new B(0,0,c),g=this.interactionUtils.getWorldPositionByViewPoint(new _(...h))??new B,u=s.images.find(e=>e.url===n);let f,y={};if(n&&!u){f=await w.Texture.fromImage(n,this.player.renderer.engine);const e={id:(0,w.generateGUID)(),url:n,renderLevel:w.spec.RenderLevel.BPlus};y={id:f.guid,source:{id:e.id},flipY:!0,dataType:w.spec.DataType.Texture},s.images.push(e),s.textures??(s.textures=[]),s.textures.push(y)}const x=function(e,t,i,s,r,a,o){const n=(0,w.generateGUID)(),c={id:e,name:a,dataType:w.spec.DataType.VFXItemData,components:[{id:n}],delay:0,duration:999,endBehavior:w.spec.EndBehavior.restart,renderLevel:w.spec.RenderLevel.BPlus,type:w.spec.ItemType.sprite,visible:!0,transform:{position:{x:t.x,y:t.y,z:t.z},eulerHint:{x:i.x,y:i.y,z:i.z},size:{x:s.x,y:s.y},scale:{x:r.x,y:r.y,z:r.z},anchor:{x:0,y:0}},content:void 0},h={id:n,item:{id:e},dataType:w.spec.DataType.SpriteComponent,options:{startColor:[1,1,1,1]},renderer:{renderMode:w.spec.RenderMode.MESH}};o&&(h.renderer.texture={id:o});const p={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationPlayableAsset},l={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:p.id}}]},m={id:(0,w.generateGUID)(),dataType:w.spec.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:c,component:h,tracks:[l,{id:(0,w.generateGUID)(),dataType:w.spec.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:m.id}}]}],playableAssets:[p,m]}}(p,g,d,new _(Math.abs(l.x),Math.abs(l.y)),m,r,y?.id);s.items.push(x.item),s.miscs.push(...x.tracks,...x.playableAssets),s.components.push(x.component);const v=s.compositions.find(e=>e.id===s.compositionId)??s.compositions[0],P=s.components.find(e=>e.id===v.components[0]?.id);if(P){P.items.push({id:x.item.id});const e={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ObjectBindingTrack,children:[],clips:[]};for(const t of x.tracks)e.children.push({id:t.id});s.miscs.find(e=>e.id===P.timelineAsset.id).tracks.push({id:e.id}),P.sceneBindings.push({key:{id:e.id},value:{id:x.item.id}}),s.miscs.push(e)}const D=this.player.getCompositions()[0],b=Ne.createSprite(D,null,r);if(b.duration=999,b.defination.delay=0,b.endBehavior=w.spec.EndBehavior.restart,b.transform.setSize(Math.abs(l.x),Math.abs(l.y)),b.transform.setPosition(...g.toArray()),b.transform.setRotation(...d.toArray()),b.transform.setScale(...m.toArray()),f){b.getComponent(w.SpriteComponent).setTexture(f)}this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,D.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}},Oe=l(require("jszip"),1),je=l(require("jszip"),1),$e="ready",Ye="executable",qe="dispose",Je={APNG:"APNG",MP4:"MP4",WebM:"WebM",Images:"Images",WebP:"WebP",GIF:"GIF",AlphaMaskVideo:"AlphaMaskVideo"},Xe="idle",Ze="convertImage",Qe="transcoding",et="audio",tt="jpeg",it="webp",st="png",rt=(Je.MP4,Je.WebP,Je.APNG,Je.GIF,Je.AlphaMaskVideo,Je.Images,Je.MP4,Je.WebP,Je.APNG,Je.GIF,Je.AlphaMaskVideo,Je.Images,"default"),at="exporting",ot="success",nt="error",ct={highest:"flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=256[p];[s1][p]paletteuse",high:"flags=bicubic,split[s0][s1];[s0]palettegen=max_colors=200[p];[s1][p]paletteuse",medium:"flags=bilinear,split[s0][s1];[s0]palettegen=max_colors=64[p];[s1][p]paletteuse=dither=bayer",low:"flags=neighbor,split[s0][s1];[s0]palettegen=max_colors=32[p];[s1][p]paletteuse=dither=none"},ht={highest:"1",high:"3",medium:"6",low:"9"},pt=class{constructor(e){m(this,"sampleRate"),m(this,"duration"),m(this,"channels");const{sampleRate:t=44100,duration:i=1,channels:s=2}=e??{};this.sampleRate=t,this.duration=i,this.channels=s}getBuffer(){const e=this.sampleRate*this.duration*this.channels*2,t=44+e,i=new ArrayBuffer(t),s=new DataView(i);let r=0;const a=e=>{for(let t=0;t<e.length;t++)s.setUint8(r++,e.charCodeAt(t))},o=e=>{s.setUint32(r,e,!0),r+=4},n=e=>{s.setUint16(r,e,!0),r+=2};a("RIFF"),o(t-8),a("WAVE"),a("fmt "),o(16),n(1),n(this.channels),o(this.sampleRate),o(this.sampleRate*this.channels*2),n(2*this.channels),n(16),a("data"),o(e);for(let t=0;t<e;t++)s.setUint8(r++,0);return new Uint8Array(i)}},lt=["@vvfx/sdk","exporter"],mt=class extends w.EventEmitter{constructor(e){super(),m(this,"status",$e),m(this,"stage",Xe),m(this,"mediaType"),m(this,"loggerInTranscoding"),m(this,"multiThreading"),m(this,"extraCanvas"),m(this,"player"),u(this,De,0),u(this,be),u(this,Ie),u(this,Ce),u(this,Ee),u(this,Ae,[]),u(this,Se),u(this,Te),u(this,ze,[]),u(this,_e,0),u(this,ke),u(this,Me,[]),u(this,Ve,0),u(this,Fe,0),u(this,Be,0),u(this,Ue,0),u(this,Re,[]),u(this,We,[]),u(this,Ge,!0);const{mediaType:t,extraCanvas:i,loggerInTranscoding:s,multiThreading:r}=e;this.mediaType=t,this.loggerInTranscoding=s??!1,this.multiThreading=r??!1,this.extraCanvas=i??void 0,this.onInit()}get canceled(){return this.status===qe}get config(){const e=this.player?.getCompositions()??[],t=e?.[0],i=t?.name??(new Date).getTime().toString(),s=t?.getDuration()??0,r=t?.startTime??0,a=g(this,ke)?.time;return{name:i,startTime:r,oldTotalTime:s,newTotalTime:a,fps:g(this,ke)?.fps??30,backgroundColor:g(this,ke)?.backgroundColor??"#000000",loop:g(this,ke)?.loop??!0,audioEnable:g(this,ke)?.audioEnable??!1}}get gifConfig(){return g(this,ke)?.gifConfig}get apngConfig(){return g(this,ke)?.apngConfig}get progress(){const e=g(this,Fe)||1,t=g(this,Be)||1,i=Math.min(e/t,1),s=Math.min(g(this,Ve),e)/e*.4,r=Math.min(g(this,Ue),e)/e*.6,a=Math.min(s+r,1);g(this,Me)[g(this,_e)]=i;const o=g(this,Me).reduce((e,t,i)=>i<g(this,_e)?e+(t||0):e,0)+a*i;return Math.min((n=o,Math.round(100*n)/100),1);var n}get transImageType(){return this.mediaType===Je.MP4?tt:this.mediaType===Je.WebP?it:st}async onInit(){try{ge("log",[...lt,"ready"],"starting"),this.status=$e,await this.loadHelper(this.mediaType),this.status=Ye,ge("log",[...lt,"ready"],"success"),this.emit("ready",this.mediaType)}catch(e){this.status=qe,this.onError(e)}finally{return this.status}}onReset(){this.stage=Xe,window.cancelAnimationFrame(g(this,De)),f(this,De,0),this.player?.pause(),this.clearTaskInfo(),this.setProgress()}onError(e){ge("log",[...lt,"error"],e),this.onFinish(!1,g(this,Re),g(this,We)),this.emit("error",e),this.dispose()}onFinish(e,t,i){ge("log",[...lt,"finish"],e?"success":"failed"),this.emit("progress",1),this.emit("finish",e,t,i)}async loadHelper(e){const t="WebP"===e&&!g(this,Ce),i=[Je.MP4,Je.APNG,Je.GIF,Je.AlphaMaskVideo].includes(e)&&!g(this,Ie);t&&f(this,Ce,await xe()),i&&(f(this,Ie,await async function(e){const{multiThreading:t}=e??{},i=new le.FFmpeg,s=!!t,r={classWorkerURL:await(0,me.toBlobURL)(ye.CLASSWORKER,"text/javascript"),coreURL:"",wasmURL:""};return s?(r.coreURL=await(0,me.toBlobURL)(ye.MT.CORE,"text/javascript"),r.wasmURL=await(0,me.toBlobURL)(ye.MT.WASM,"application/wasm"),r.workerURL=await(0,me.toBlobURL)(ye.MT.WORKER,"text/javascript")):(r.coreURL=await(0,me.toBlobURL)(ye.DEFAULT.CORE,"text/javascript"),r.wasmURL=await(0,me.toBlobURL)(ye.DEFAULT.WASM,"application/wasm")),await i.load(r),i}({multiThreading:this.multiThreading})),g(this,Ie).on("log",({message:e})=>{if(this.loggerInTranscoding&&ge("log",[...lt,"transcoding log"],e),this.canceled||this.stage!==Qe)return;const t=/frame=\s*(\d+)/.exec(e);if(t?.[1]){const e=Number(t[1]);this.setProgress({currentTaskInTranscodingFrameIndex:e})}}))}getAllTaskFrames(e){return e.reduce((e,t)=>{const{scene:i,fps:s}=t,r=i.compositions?.[0]?.duration??0;return e+Math.round(r*(s??30))},0)}setProgress(e){void 0!==e?.completedTaskPercentArray&&f(this,Me,e.completedTaskPercentArray),void 0!==e?.currentTaskFrameIndex&&f(this,Ve,e.currentTaskFrameIndex),void 0!==e?.currentTaskTotalFrames&&f(this,Fe,e.currentTaskTotalFrames),void 0!==e?.currentTaskInTranscodingFrameIndex&&f(this,Ue,e.currentTaskInTranscodingFrameIndex),void 0!==e?.allTaskFrames&&f(this,Be,e.allTaskFrames),this.emit("progress",this.progress)}forwardPlayerTime(e,t=!1){(0,w.assertExist)(this.player);const{oldTotalTime:i,startTime:s}=this.config;(0,w.assertExist)(i);const r=1e3*i-1e3*i%15;return e=Math.min(e,r/1e3),t?this.player.gotoAndPlay(e-s):this.player.gotoAndStop(e-s),e}getWavAudio(e){f(this,Se,new pt),g(this,Ie)?g(this,Ie).writeFile(e,g(this,Se).getBuffer()):ge("log",[...lt,"getWavAudio"],"ffmpegCore is not ready")}async getImagesZip(e,t){const i=new je.default,s=i.folder(e);return(0,w.assertExist)(s),g(this,ze).forEach((e,i)=>{s.file(e,t[i])}),i.generateAsync({type:"arraybuffer"})}getWebP(){(0,w.assertExist)(g(this,Ce));const e=Math.round(1e3/this.config.fps/1),t="out.webp",i=`${g(this,ze).join(` -d ${e} `)} -d ${e} -o ${t} -loop ${this.config.loop?0:1}`.split(" "),s=g(this,Ce).cwrap("main","string",["number","number"]),[r,a]=function(e,t){const i=e._malloc(t.length*Uint32Array.BYTES_PER_ELEMENT);return t.forEach((t,s)=>{const r=e._malloc(t.length+1);e.writeAsciiToMemory(t,r),e.setValue(i+Uint32Array.BYTES_PER_ELEMENT*s,r,"i32")}),[t.length,i]}(g(this,Ce),i);de(r&&a,"getWebP has error"),s(r,a);const o=g(this,Ce).FS.readFile(t);return g(this,ze).forEach(e=>{g(this,Ce)?.FS.unlink(e)}),o}async getAPNG(){(0,w.assertExist)(g(this,Ie));this.stage=Qe;const e="export.apng",{fps:t,scale:i="-1:-1",quality:s="highest"}=this.apngConfig??{},r=[`scale=${i}:force_original_aspect_ratio=decrease:flags=lanczos`];t&&r.push(`fps=${t}`);if(0!==await g(this,Ie).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-vf",r.join(","),"-plays",this.config.loop?"0":"1","-compression_level",ht[s],"-y",e]))throw new Error("the command executed by ffmpeg to generate a apng failed.");return e}async getGIF(){(0,w.assertExist)(g(this,Ie));this.stage=Qe;const e="export.gif",{fps:t,scale:i="-1:-1",quality:s="highest"}=this.gifConfig??{},r=[`scale=${i}:${ct[s]}`];t&&r.unshift(`fps=${t}`);if(0!==await g(this,Ie).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-loop",this.config.loop?"0":"-1","-vf",r.join(","),"-y",e]))throw new Error("the command executed by ffmpeg to generate a gif failed.");return e}async getMP4(e,t){(0,w.assertExist)(g(this,Ie));this.stage=Qe;const i="export.mp4";let s;const r=t?",setpts=PTS/"+Math.round(e/t*100)/100:"",a=t??e;this.config.audioEnable&&!g(this,Se)&&(f(this,Te,"audio.wav"),this.getWavAudio(g(this,Te)));if(0!==await g(this,Ie).exec(["-framerate",String(this.config.fps),"-start_number",String(1),"-i",`image-%4d.${this.transImageType}`,"-c:v","libx264","-crf","23","-pix_fmt","yuv420p","-vf",`pad=ceil(iw/2)*2:ceil(ih/2)*2${r}`,"-y",i]))throw new Error("the command executed by ffmpeg to generate a mp4 failed.");if(g(this,Te)&&g(this,Se)){this.stage=et,s="export-with-audio.mp4";if(0!==await g(this,Ie).exec(["-i",i,"-i",g(this,Te),"-c:v","copy","-c:a","aac","-t",`${a}`,"-y",s]))throw new Error("the command executed by ffmpeg to generate a audio of video failed.")}return s&&g(this,Ie).deleteFile(i).catch(()=>{ge("log",[...lt,"ffmpeg delete file error"])}),s??i}async getAlphaMaskVideo(e,t){(0,w.assertExist)(g(this,Ie));this.stage=Qe;const i="export.mp4",s=t?",setpts=PTS/"+Math.round(e/t*100)/100:"";return await g(this,Ie).exec(["-framerate",String(this.config.fps),"-start_number",String(1),"-i",`image-%4d.${this.transImageType}`,"-c:v","libx264","-crf","23","-pix_fmt","yuv420p","-vf",`pad=ceil(iw/2)*2:ceil(ih/2)*2${s}`,"-y",i]),i}async getVideoByType(e,t){(0,w.assertExist)(g(this,Ie));const i=this.mediaType===Je.APNG,s=this.mediaType===Je.GIF,r=this.mediaType===Je.AlphaMaskVideo,a=this.mediaType===Je.MP4;let o="";try{i&&(o=await this.getAPNG()),s&&(o=await this.getGIF()),a&&(o=await this.getMP4(e,t)),r&&(o=await this.getAlphaMaskVideo(e,t)),this.stage=Xe}catch(e){throw e}finally{for(const e of g(this,ze))e&&g(this,Ie).deleteFile(e)}let n=null;try{(0,w.assertExist)(o);const e=await g(this,Ie).readFile(o);n="string"==typeof e?(new TextEncoder).encode(e):new Uint8Array(e)}finally{g(this,Ie).deleteFile(o).catch(()=>{ge("log",[...lt,"ffmpeg delete file error"])})}return n}onRecordWebM(e){const t=new MediaRecorder(e.captureStream(this.config.fps),{mimeType:"video/webm;codecs=vp9"});f(this,Ee,t),g(this,Ee).start(0);const i=[];g(this,Ee).ondataavailable=e=>{e.data.size>0&&i.push(e.data)},f(this,Ae,i)}async onExportImageFrame(e){try{if(this.canceled)return;const{canvas:s,imageBuffers:r,startTime:a,oldTotalTime:o,newTotalTime:n}=e;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,be));const c=g(this,Ve)+1;this.stage=Ze,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:c}),this.loggerInTranscoding&&ge("log",[...lt,"converting log"],`converting ${c} frame image`),c>=1&&this.forwardPlayerTime(c/this.config.fps+a),we(g(this,be),s,this.config.backgroundColor);let h=s;this.mediaType===Je.AlphaMaskVideo&&((0,w.assertExist)(this.extraCanvas),function(e,t){t.width=2*e.width,t.height=e.height;const i=e.getContext("2d");if(!i)throw new Error("inputCtx is null");const s=t.getContext("2d");if(!s)throw new Error("ctx is null");s.clearRect(0,0,t.width,t.height);const r=i.getImageData(0,0,e.width,e.height),a=i.getImageData(0,0,e.width,e.height),o=r.data;for(let e=0;e<o.length;e+=4){const t=Math.max(0,(o[e+3]??0)-5)/250*255;t<=0?(o[e]=0,o[e+1]=0,o[e+2]=0,o[e+3]=255):(o[e]=(o[e]??0)*t/255,o[e+1]=(o[e+1]??0)*t/255,o[e+2]=(o[e+2]??0)*t/255,o[e+3]=255)}s.putImageData(r,0,0);const n=a.data;for(let e=0;e<n.length;e+=4){const t=Math.max(0,(n[e+3]??0)-5)/250*255;n[e]=t,n[e+1]=t,n[e+2]=t,n[e+3]=255}s.putImageData(a,e.width,0)}(s,this.extraCanvas),h=this.extraCanvas);const p=await async function(e,t,i){return new Promise((s,r)=>{e.toBlob(e=>{e?s(e.arrayBuffer()):r("toBlob failed")},t,i)})}(h,`image/${this.transImageType}`,1),l=`image-${t=c,i=4,String(t).padStart(i,"0")}.${this.transImageType}`;this.mediaType===Je.Images?r.push(p):this.mediaType===Je.WebP?((0,w.assertExist)(g(this,Ce)),g(this,Ce).FS.writeFile(l,new Uint8Array(p))):((0,w.assertExist)(g(this,Ie)),await g(this,Ie).writeFile(l,new Uint8Array(p))),g(this,ze).push(l);if(c===g(this,Fe)){this.player?.pause(),await new Promise(e=>{window.requestAnimationFrame(e)});let e=null;"Images"===this.mediaType?e=await this.getImagesZip(this.config.name,r):"WebP"===this.mediaType?e=this.getWebP():[Je.MP4,Je.APNG,Je.GIF,Je.AlphaMaskVideo].includes(this.mediaType)&&(e=await this.getVideoByType(o,n)??null),e&&(ge("log",[...lt,"done"],"success"),this.emit("done",g(this,ke),!0,e))}else f(this,De,window.requestAnimationFrame(()=>{this.canceled||this.onExportImageFrame({canvas:s,imageBuffers:r,startTime:a,oldTotalTime:o,newTotalTime:n})}))}catch(e){ge("log",[...lt,"onExportImageFrame","failed"],e),this.emit("done",g(this,ke),!1)}var t,i}async onExportWebMFrame(e){try{if(this.canceled)return;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,be));const t=g(this,Ve)+1;if(this.stage=Ze,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:t}),this.loggerInTranscoding&&ge("log",[...lt,"converting log"],`converting ${t} frame image`),we(g(this,be),e,this.config.backgroundColor),1===t&&(this.player.play(),this.onRecordWebM(e)),t<g(this,Fe))f(this,De,window.requestAnimationFrame(()=>{this.canceled||this.onExportWebMFrame(e)}));else{this.player?.pause(),g(this,Ee)?.stop();const e=new Blob(g(this,Ae),{type:"video/webm"}),t=await e.arrayBuffer();ge("log",[...lt,"done"],"success"),this.emit("done",g(this,ke),!0,t)}}catch(e){ge("log",[...lt,"done"],"failed",e),this.emit("done",g(this,ke),!1)}}async runTask(e){try{if(this.canceled)return;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,be));const{size:t,startTime:i,containerCanvas:s}=e,{oldTotalTime:r,newTotalTime:a}=this.config,[o,n]=t;if(g(this,be).width=o,g(this,be).height=n,s.width=o,s.height=n,this.player.resize(),f(this,ze,[]),[Je.MP4,Je.APNG,Je.Images,Je.WebP,Je.GIF,Je.AlphaMaskVideo].includes(this.mediaType)){const e={canvas:s,imageBuffers:[],startTime:i,oldTotalTime:r,newTotalTime:a};await this.onExportImageFrame(e)}else"WebM"===this.mediaType&&await this.onExportWebMFrame(s)}catch(e){ge("log",[...lt,"run task error"],e),this.emit("done",g(this,ke),!1)}}clearTaskInfo(){f(this,_e,0),f(this,ke,void 0),f(this,Me,[]),f(this,Ve,0),f(this,Fe,0),f(this,Be,0),f(this,Ue,0),f(this,Re,[]),f(this,We,[]),f(this,Ge,!0)}clearFFMpegCore(){if(g(this,Ie)){for(const e of g(this,ze))e&&g(this,Ie).deleteFile(e);f(this,ze,[]),g(this,Ie).terminate(),f(this,Ie,void 0)}}clearImage2WebPCore(){g(this,Ce)&&(g(this,Ce).FS.quit(),f(this,Ce,void 0))}clearMediaRecorder(){g(this,Ee)&&(g(this,Ee).stop(),f(this,Ee,void 0)),f(this,Ae,[])}clearAllListeners(){for(const e of this.getListeners("ready"))this.off("ready",e);for(const e of this.getListeners("progress"))this.off("progress",e);for(const e of this.getListeners("done"))this.off("done",e);for(const e of this.getListeners("finish"))this.off("finish",e);for(const e of this.getListeners("error"))this.off("error",e)}onCancel(){this.canceled||(this.onFinish(!1,g(this,Re),g(this,We)),this.status=qe,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),ge("log",lt,"canceled"))}async onExport(e){const t=e.length;try{if(this.status===$e)return ge("log",[...lt],"readying"),void this.on("ready",()=>{this.onExport(e)});if(this.status===qe){if(await this.onInit()===qe)throw new Error("init environment failed")}if(this.clearTaskInfo(),!g(this,be)){const e=document.createElement("canvas");e.dataset.key="player-canvas",f(this,be,e)}this.player||(this.player=new w.Player({canvas:g(this,be),pixelRatio:1,transparentBackground:!0,renderOptions:{willCaptureImage:!0}}),this.player.on("rendererror",e=>{this.onError(e)}),this.player.on("webglcontextlost",e=>{this.onError(e)}));let t=null;t??(t=document.querySelector('canvas[data-key="container-canvas"]')),t??(t=document.createElement("canvas")),t.dataset.key="container-canvas",t.style.display="none",this.setProgress({allTaskFrames:this.getAllTaskFrames(e)});const i=[],s=[];let r=!0;for(const[a,o]of e.entries()){if(this.canceled){r=!1;break}f(this,_e,a),f(this,ke,o);const{size:e,scene:n}=o;await new Promise(async c=>{try{if(!this.player)throw new Error("player not found");ge("log",[...lt,"export"],"start",o),ve(this.player),await this.player.loadScene(n,{env:"editor",autoplay:!1});const h=this.config.oldTotalTime,p=0;this.player.pause(),this.setProgress({currentTaskFrameIndex:0,currentTaskTotalFrames:Math.round(h*this.config.fps)});const l=(e,t,n)=>{this.off("done",l),i[a]=o,t&&n?s[a]=n:r=!1,c()};this.on("done",l);const m={size:e,startTime:p,containerCanvas:t};await this.runTask(m)}catch(e){ge("log",[...lt,"export error"],e),r=!1,c()}})}f(this,Re,i),f(this,We,s),f(this,Ge,r)}catch(e){this.onError(e),f(this,Ge,!1)}t>=1&&g(this,Ge)?this.onFinish(!0,g(this,Re),g(this,We)):this.onFinish(!1,g(this,Re),g(this,We))}dispose(){this.status=qe,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),this.player?.dispose(),this.player=void 0,g(this,be)?.remove(),f(this,be,void 0),f(this,Te,void 0),f(this,Se,void 0)}};De=new WeakMap,be=new WeakMap,Ie=new WeakMap,Ce=new WeakMap,Ee=new WeakMap,Ae=new WeakMap,Se=new WeakMap,Te=new WeakMap,ze=new WeakMap,_e=new WeakMap,ke=new WeakMap,Me=new WeakMap,Ve=new WeakMap,Fe=new WeakMap,Be=new WeakMap,Ue=new WeakMap,Re=new WeakMap,We=new WeakMap,Ge=new WeakMap;var dt={[Je.MP4]:{suffix:"mp4",error:"export mp4 is error"},[Je.GIF]:{suffix:"gif",error:"export gif is error"},[Je.Images]:{suffix:"zip",error:"export Images is error"},[Je.APNG]:{suffix:"apng",error:"export APNG is error"},[Je.WebP]:{suffix:"webp",error:"export WebP is error"},[Je.AlphaMaskVideo]:{suffix:"mp4",error:"export AlphaMaskVideo is error"},[Je.WebM]:{suffix:"webm",error:"export WebM is error"}},gt=class extends w.EventEmitter{constructor(e){super(),m(this,"_config"),m(this,"_status",rt),m(this,"_exportMedia"),this._config=e,this._exportMedia=new mt(e)}get status(){return this._status}onExportMedia(e,t,i,s){if(!t.length||!i)return void ge("info",["@vvfx/sdk","export media is error","result or suffix is empty"]);const r=e[0]?.folderName,a=new Oe.default;t.forEach((t,s)=>{if(!t)return;const{name:r}=e[s]??{};r&&a.file(`${r}.${i}`,t)}),a.generateAsync({type:"blob"}).then(e=>{!function(e,t,i="application/octet-stream"){const s=new Blob(Array.isArray(e)?e:[e],{type:i}),r=URL.createObjectURL(s),a=document.createElement("a");a.href=r,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(r)}(e,`${r}.zip`,"application/zip")}).catch(e=>{ge("error",["@vvfx/sdk"],s??"export media is error",e)})}onExportProgress(e){this.emit("progress",e)}onExportDone(e,t,i){this.emit("done",e,t,i)}onExportError(e){this._status=nt,ge("error",["@vvfx/sdk"],"export is error",e)}onExport(e){this._status=at,this._exportMedia.onExport(e),this._exportMedia.on("progress",this.onExportProgress.bind(this)),this._exportMedia.on("done",this.onExportDone.bind(this)),this._exportMedia.once("finish",(t,i,s)=>{if(this._status=t?ot:nt,this.emit("complete",t,i,s),this._config.isOutputBuffer||!s||0===s.length)return;const{suffix:r,error:a}=dt[this._config.mediaType];r&&this.onExportMedia(e,s,r,a)}),this._exportMedia.on("error",this.onExportError.bind(this))}onCancel(){this._status=nt,this._exportMedia.onCancel(),this.emit("complete",!1,[],[])}dispose(){this._exportMedia.dispose()}},ut=class{constructor(){m(this,"enabled",!0),m(this,"_player"),m(this,"_container"),this._container=document.createElement("canvas"),this._player=new w.Player({canvas:this._container,manualRender:!0,renderOptions:{willCaptureImage:!0}})}async generate(e,t,i,s,r){if(!this.enabled)return void console.warn("Screen shot is not opened, use #SDK.setConfig() open this feature.");const[a,o]=t;this._container.width=a,this._container.height=o,this._player.resize();const n=JSON.parse(JSON.stringify(e));await this._player.loadScene(n,{reusable:!0,autoplay:!1}),this._player.gotoAndStop(s);const[c,h]=i,p=document.createElement("canvas");p.width=c,p.height=h;const l=p.getContext("2d");r??(r=[255,255,255,1]),l&&(l.fillStyle=`rgba(${r.join(",")})`,l.fillRect(0,0,c,h),this.drawImageCover(l,this._player.canvas,0,0,c,h,.5,.5));const m=p.toDataURL("image/png");return ve(this._player),m}dispose(){this._player.dispose()}drawImageCover(e,t,i,s,r,a,o,n,c){2===arguments.length&&(i=s=0,r=e.canvas.width,a=e.canvas.height),o="number"==typeof o?I(o,0,1):.5,n="number"==typeof n?I(n,0,1):.5,c??(c={left:0,top:0,width:t instanceof HTMLVideoElement?t.videoWidth:t.width,height:t instanceof HTMLVideoElement?t.videoHeight:t.height});const h=c.width,p=c.height,l=Math.min(r/h,a/p);let m=h*l,d=p*l,g=1;m<r&&(g=r/m),Math.abs(g-1)<1e-14&&d<a&&(g=a/d),m*=g,d*=g;const u=Math.max(h/(m/r),0),f=Math.max(p/(d/a),0),y=Math.min((h-u)*o,h),w=Math.min((p-f)*n,p);e.drawImage(t,y+c.left,w+c.top,u,f,i,s,r,a)}},ft={topAdsorption:"T",leftAdsorption:"L",rightAdsorption:"R",bottomAdsorption:"B",centerAdsorption:"C",bottomCenterAdsorption:"BC"},yt=class{constructor(e){m(this,"_player"),m(this,"_container"),m(this,"size",[0,0]),m(this,"_pageDataUtils"),this._container=document.createElement("canvas"),this._player=new w.Player({canvas:this._container,manualRender:!0}),this._pageDataUtils=e}async adjustment(e,t,i,s,r,a){if(!xt.config.sizeAdaptConfig.enabled)return console.warn("Size adapt is not opened, use #SDK.setConfig() open this feature."),e;this._player??(this._player=new w.Player({canvas:this._container,manualRender:!0})),r??(r=[0,0,0,0]),a??(a=i[0]<i[1]?"y":"x"),this.size=[...s],this._container.width=this.size[0],this._container.height=this.size[1],ve(this._player),this._player.resize();const o=JSON.parse(JSON.stringify(e));await this._player.loadScene(o,{reusable:!0,autoplay:!1}),this._player.gotoAndStop(t);const n=this._player.getCompositions()[0];if(n){const[t,o]=s,c=i[0]/i[1],h=t/o;c>h&&this.keepDistribute(e,n,h/c,s);const[p,l,m,d]=r,g=t-m-d,u=o-p-l,f=[(m-d)/2,(p-l)/2],y=(new M).setFromCenterAndSize(new _(t,o).divide(2),new _(t,o)),w=(new M).setFromCenterAndSize(new _(t,o).divide(2).add(new _(...f)),new _(g,u));this.keepAdsorption("topAdsorption",e,n,f,y,w,a),this.keepAdsorption("bottomAdsorption",e,n,f,y,w,a),this.keepAdsorption("leftAdsorption",e,n,f,y,w,a),this.keepAdsorption("rightAdsorption",e,n,f,y,w,a),this.keepAdsorption("centerAdsorption",e,n,f,y,w,a),this.keepDoubleAdsorption("bottomCenterAdsorption",e,n,f,y,w)}return e}keepDistribute(e,t,i,s){const r=e=>{const i=(new U).copyFrom(t.camera.getViewProjectionMatrix());return(new _).copyFrom(e.applyMatrix(i).toVector2()).toViewCoordinate(s[0],s[1])};["topAdsorption","centerAdsorption","bottomAdsorption"].forEach(a=>{t.items.filter(e=>e.name.split("-")[0]?.toLocaleUpperCase()===ft[a]&&!e.parentId).forEach(a=>{const o=t.items.filter(e=>e.parentId===a.getInstanceId()),n=o.find(e=>"check-area"===e.name),c=n?this.getViewBoxByHeadlessPlayerItem(n,[],r):this.getViewBoxByHeadlessPlayerItem(a,o,r),h=a.transform.position.clone(),p=c.getCenter(),l=new _(...s.map(e=>e/2)),m=p.y-l.y;((e,i,r)=>{const{z:a}=e.transform.getWorldPosition(),{x:o,y:n}=t.camera.getInverseVPRatio(a);e.transform.translate(2*i*o/s[0],-2*r*n/s[1],0)})(a,0,m/i-m),a.transform.updateLocalMatrix();const d=a.transform.position.clone().subtract(h).toArray();this._pageDataUtils.changeSceneItemProperty(e,{itemId:a.getInstanceId(),type:a.type,propertyName:"position",propertyValue:d})})})}keepAdsorption(e,t,i,s,r,a,o){const{x:n,y:c}=r.getSize(),h=(e,t,s)=>{const{z:r}=e.transform.getWorldPosition(),{x:a,y:o}=i.camera.getInverseVPRatio(r);e.transform.translate(2*t*a/n,-2*s*o/c,0)},p=e=>{const t=(new U).copyFrom(i.camera.getViewProjectionMatrix());return(new _).copyFrom(e.applyMatrix(t).toVector2()).toViewCoordinate(n,c)},l=ft[e];i.items.filter(e=>e.name.split("-")[0]?.toLocaleUpperCase()===l&&!e.parentId).forEach(r=>{const n=i.items.filter(e=>e.parentId===r.getInstanceId()),c=n.find(e=>"check-area"===e.name),l=r.transform.position.clone(),m=["leftAdsorption","rightAdsorption"].includes(e)?"x":"y",d=["leftAdsorption","topAdsorption"].includes(e)?1:-1,g=["leftAdsorption","topAdsorption"].includes(e)?"min":"max",u=["leftAdsorption","topAdsorption"].includes(e)?"max":"min",f=3===r.name.split("-").length,y=Number(r.name.split("-")[1]),w=new _,x=[1,1],v=c?this.getViewBoxByHeadlessPlayerItem(c,[],p):this.getViewBoxByHeadlessPlayerItem(r,n,p);h(r,...s),v.getSize().x>a.getSize().x&&(x[0]=a.getSize().x/v.getSize().x,x[1]=a.getSize().x/v.getSize().x,r.scale(...x,1)),r.transform.updateLocalMatrix();const P=c?this.getViewBoxByHeadlessPlayerItem(c,[],p):this.getViewBoxByHeadlessPlayerItem(r,n,p),D=new _;if(!a.containsBox(P)){const{min:e,max:t}=P,{min:i,max:s}=a;D.x+=e.x<i.x?i.x-e.x:0,D.x+=t.x>s.x?s.x-t.x:0,D.y+=e.y<i.y?i.y-e.y:0,D.y+=t.y>s.y?s.y-t.y:0,h(r,...D.toArray()),r.transform.updateLocalMatrix()}const b=c?this.getViewBoxByHeadlessPlayerItem(c,[],p):this.getViewBoxByHeadlessPlayerItem(r,n,p);if(!Number.isNaN(y)&&f)if("centerAdsorption"!==e){const e=Math.abs(b[u][m]-a[g][m]),t=a.getSize()[m]*y;e>t&&(w[m]=(t-e)*d,h(r,...w.toArray()),r.transform.updateLocalMatrix())}else{const e=b.getSize()[o],t=a.getSize()[o];if(e/t>y){const i=t*y/e;r.scale(i,i,1),x[0]*=i,x[1]*=i}}const I=c?this.getViewBoxByHeadlessPlayerItem(c,[],p):this.getViewBoxByHeadlessPlayerItem(r,n,p),C=i.items.filter(e=>"T"===e.name.split("-")[0]?.toLocaleUpperCase()&&!e.parentId),E=new M;if(C.forEach(e=>{const t=i.items.filter(t=>t.parentId===e.getInstanceId()),s=t.find(e=>"check-area"===e.name),r=s?this.getViewBoxByHeadlessPlayerItem(s,[],p):this.getViewBoxByHeadlessPlayerItem(e,t,p);E.union(r)}),!E.isEmpty()&&E.max.y>I.min.y)if("centerAdsorption"===e){const e=E.max.y-I.min.y;h(r,0,e),r.transform.updateLocalMatrix()}else if(["leftAdsorption","rightAdsorption"].includes(e)){const e=I.getSize().y,t=a.getSize().y-(E.max.y-a.min.y);let i=E.max.y-I.min.y;if(e>t){const s=t/e;x[0]*=s,x[1]*=s,r.scale(s,s,1),r.transform.updateLocalMatrix(),i-=(e-t)/2}h(r,0,i),r.transform.updateLocalMatrix()}const A=r.transform.position.clone().subtract(l).toArray();this._pageDataUtils.changeSceneItemProperty(t,{itemId:r.getInstanceId(),type:r.type,propertyName:"position",propertyValue:A}),this._pageDataUtils.changeSceneItemProperty(t,{itemId:r.getInstanceId(),type:r.type,propertyName:"size",propertyValue:x})})}keepDoubleAdsorption(e,t,i,s,r,a){const{x:o,y:n}=r.getSize(),c=(e,t,s)=>{const{z:r}=e.transform.getWorldPosition(),{x:a,y:c}=i.camera.getInverseVPRatio(r);e.transform.translate(2*t*a/o,-2*s*c/n,0)},h=e=>{const t=(new U).copyFrom(i.camera.getViewProjectionMatrix());return(new _).copyFrom(e.applyMatrix(t).toVector2()).toViewCoordinate(o,n)},p=ft[e];i.items.filter(e=>e.name.split("-")[0]?.toLocaleUpperCase()===p&&!e.parentId).forEach(e=>{const r=i.items.filter(t=>t.parentId===e.getInstanceId()),o=r.find(e=>"check-area"===e.name),n=e.transform.position.clone(),p=3===e.name.split("-").length,l=Number(e.name.split("-")[1]),m=[1,1],d=o?this.getViewBoxByHeadlessPlayerItem(o,[],h):this.getViewBoxByHeadlessPlayerItem(e,r,h);c(e,...s),d.getSize().x>a.getSize().x&&(m[0]=a.getSize().x/d.getSize().x,m[1]=a.getSize().x/d.getSize().x,e.scale(...m,1)),e.transform.updateLocalMatrix();const g=o?this.getViewBoxByHeadlessPlayerItem(o,[],h):this.getViewBoxByHeadlessPlayerItem(e,r,h);if(!Number.isNaN(l)&&p){const t=g.getSize().y,i=a.getSize().y;if(t/i>l){const s=i*l/t;e.scale(s,s,1),m[0]*=s,m[1]*=s}}const u=o?this.getViewBoxByHeadlessPlayerItem(o,[],h):this.getViewBoxByHeadlessPlayerItem(e,r,h),f=new _;if(!a.containsBox(u)){const{min:t,max:i}=u,{min:s,max:r}=a;f.x+=t.x<s.x?s.x-t.x:0,f.x+=i.x>r.x?r.x-i.x:0,f.y+=t.y<s.y?s.y-t.y:0,f.y+=i.y>r.y?r.y-i.y:0,c(e,...f.toArray()),e.transform.updateLocalMatrix()}const y=e.transform.position.clone().subtract(n).toArray();this._pageDataUtils.changeSceneItemProperty(t,{itemId:e.getInstanceId(),type:e.type,propertyName:"position",propertyValue:y}),this._pageDataUtils.changeSceneItemProperty(t,{itemId:e.getInstanceId(),type:e.type,propertyName:"size",propertyValue:m})})}getViewBoxByHeadlessPlayerItem(e,t,i){const s=new M,{transform:r,composition:a}=e;switch(e.type){case w.spec.ItemType.sprite:case w.spec.ItemType.plugin:case w.spec.ItemType.video:case w.spec.ItemType.richtext:case w.spec.ItemType.text:case w.spec.ItemType.shape:{r.setValid(!0),r.updateLocalMatrix();const{size:e}=r,o=(new U).copyFrom(a?.transform.getWorldMatrix()??new U).invert().multiply(r.getWorldMatrix()),{x:n,y:c}=e.clone().divide(2),h=new B(n,c,0).applyMatrix(o),p=new B(n,-c,0).applyMatrix(o),l=new B(-n,-c,0).applyMatrix(o),m=new B(-n,c,0).applyMatrix(o),d=i(h).round(2),g=i(p).round(2),u=i(l).round(2),f=i(m).round(2);s.setFromVec2Array([d,g,u,f]);const y=t?.map(e=>{const t=a?.items.filter(t=>t.parentId===e.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(e,t,i)});y&&y.map(e=>s.union(e));break}case w.spec.ItemType.null:{const e=t?.map(e=>{const t=a?.items.filter(t=>t.parentId===e.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(e,t,i)});e&&e.map(e=>s.union(e));break}}return s}dispose(){this._player?.dispose()}},wt=class e{constructor(t){m(this,"_eventEmitter",new w.EventEmitter),m(this,"_pageData"),m(this,"_screenShot"),m(this,"_exporter"),m(this,"_pageDataUtils"),m(this,"_sizeAdapt"),m(this,"_gestureHandler"),m(this,"disposables",[]),m(this,"_isSwitchScene",!1),m(this,"player"),m(this,"_container"),m(this,"_playerContainer"),m(this,"on",this._eventEmitter.on),this._container=t;const[i,s]=[t.offsetWidth,t.offsetHeight],r=document.createElement("div");r.id="player-container",r.style.width=`${i}px`,r.style.height=`${s}px`,r.style.position="absolute",r.style.backgroundRepeat="no-repeat",r.style.backgroundPosition="center center",t.appendChild(r),this._playerContainer=r,this.player=new w.Player({container:r,interactive:!0,pixelRatio:window.devicePixelRatio||1}),this.player.on("update",()=>{if((0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._isSwitchScene)return;const e=this.player.getCompositions()[0]?.time;if(this._pageData.playing)if(void 0!==e)this._pageData.time===e&&this.player.pause(),this._pageData.time=e,this._pageDataUtils.refreshPageTime(e);else{this._pageData.playing=!1,this.setPlayProgress(100);const e=this._pageData.viewProperties[this._pageData.activeData.view??0]?.scene,t=e?.compositions.find(t=>t.id===e.compositionId);this._pageData.time=t?.duration??2,this._pageDataUtils.refreshPageTime(this._pageData.time)}this._eventEmitter.emit("progress",{duration:this.player.getCompositions()[0]?.getDuration()??2,time:this._pageData.time,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!this._pageData.playing})}),this._eventEmitter.on("pageDataChange",e=>{this._pageData=e,this._gestureHandler.refresh(),this._gestureHandler.render()}),this._eventEmitter.on("zoomChange",e=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.property.zoom=e,this._pageDataUtils.refreshInteractionParam(),this._gestureHandler.refresh(),this._gestureHandler.render()}),this._eventEmitter.on("selectedItemChange",e=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.selectedItems=[...e],this._gestureHandler.refresh(),this._gestureHandler.render()}),this._eventEmitter.on("preSelectedItemChange",e=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=e,this._gestureHandler.refresh(),this._gestureHandler.render()}),this._eventEmitter.on("selectedViewChange",e=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.view=e;const t=this._pageData.viewProperties[e];this._gestureHandler.ignoreInteraction=!!t?.ignoreInteraction}),this._eventEmitter.on("sdkConfigChange",(e,t)=>{this._exporter&&!ue(e.exportVideoConfig,t.exportVideoConfig)&&(this._exporter.dispose(),this.initExporter(t.exportVideoConfig))}),this._pageDataUtils=new Ke(this.player,r,this._eventEmitter,this),this.initExporter(e.config.exportVideoConfig),this._gestureHandler=new ne(t),this._gestureHandler.registerViewEvent(),this._screenShot=new ut,this._sizeAdapt=new yt(this._pageDataUtils);const a=new ResizeObserver(()=>{const e=[t.offsetWidth,t.offsetHeight],i=this._pageData?.viewProperties[this._pageData.activeData.view??0];if(!i)return;const{size:s}=i,[r,a]=this._pageDataUtils.getPlayerSizeByParent(e,s);this._playerContainer.style.width=`${r}px`,this._playerContainer.style.height=`${a}px`,this.player.resize(),this._pageDataUtils.refreshInteractionParam(),this._gestureHandler.resize()});a.observe(t),this.setSDKBackground("chess-board"),this.disposables.push(()=>{a.disconnect()})}get pageData(){return this._pageData}get exportStatus(){return this?._exporter?.status}get exportOptions(){if(!this.pageData)return[];const e=this.pageData.viewProperties.filter(e=>!e.ignoreInteraction),t=e[0]?.scene?.compositions?.[0]?.name??"videos",i=[];return e.map((e,s)=>{const{size:r,scene:a,export:{name:o,...n}}=e,c=r?.[0]&&r?.[1]?` (${s+1})_${r[0]}×${r[1]}`:` (${s+1})`;let h="";return h=o?function(e,t){if(!t.includes(e))return e;let i=1,s=`${e} (${i})`;for(;t.includes(s);)i++,s=`${e} (${i})`;return s}(o,i):`${t}${c}`,i.push(h),{folderName:t,name:h,size:r,scene:JSON.parse(JSON.stringify(a)),...n}})}dispose(){this.player?.dispose(),this._screenShot?.dispose(),this._pageData=void 0,this._playerContainer.remove(),this?._exporter?.dispose(),this._screenShot.dispose(),this._gestureHandler.dispose(),this.disposables.forEach(e=>{e()})}async getInitParam(e){const t=JSON.parse(JSON.stringify(e));if("editor"===t.mode){const e=[this._container.offsetWidth,this._container.offsetHeight];return{scene:Pe(e),viewParams:[{size:e,export:{audioEnable:!1}}],options:{asyncMode:!1,safeAreaPreview:!1,adsorption:!0}}}{if("string"==typeof t.scene)try{const e=await fetch(t.scene,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}, statusText: ${e.statusText}`);const i=await e.json(),s=i.compositions.find(e=>e.id===i.compositionId)??i.compositions[0],r=t.viewParams?.length?t.viewParams:[{size:s.previewSize??[750,1624],export:{audioEnable:!1}}];return{...t,scene:i,viewParams:r}}catch(e){throw new Error(`Failed to fetch scene data from ${t.scene}: ${e instanceof Error?e.message:String(e)}`)}const e=t.scene.compositions.find(e=>e.id===t.scene.compositionId)??t.scene.compositions[0],i=t.viewParams?.length?t.viewParams:[{size:e.previewSize??[750,1624],export:{audioEnable:!1}}];return{...t,scene:t.scene,viewParams:i}}}initExporter(e){this._exporter=new gt(e),this._exporter.on("progress",e=>{this._eventEmitter.emit("exportProgress",e)}),this._exporter.on("done",(e,t,i)=>{this._eventEmitter.emit("exportDone",e,t,i)}),this._exporter.on("complete",(e,t,i)=>{this._eventEmitter.emit("exportComplete",e,t,i)})}async initSDK(t){var i;const{scene:s,viewParams:r,options:a}=t,o=[];if(e.config.pageConfig.staticPreview){const e=JSON.parse(JSON.stringify(s)),t=e.compositions.find(t=>t.id===e.compositionId)??e.compositions[0];if(t){const[i,s]=t.previewSize??[1080,1920],r=t.duration??0;o.push({size:[i,s],safeArea:[0,0,0,0],previewSafeAreas:[],id:0,scene:e,ignoreInteraction:!0,export:{time:r,audioEnable:!1}})}}for(let t=0;t<r.length;t++){const a=r[t];if(!a)continue;let n=JSON.parse(JSON.stringify(s));const c=n.compositions.find(e=>e.id===n.compositionId)??n.compositions[0];(0,w.assertExist)(c);const h=c.previewSize??[750,1624],p=h,l=a.size??h;c.previewSize=l;const m=c.duration??0,d=a.safeArea??[0,0,0,0];e.config.sizeAdaptConfig.enabled&&(n=await this._sizeAdapt.adjustment(n,m,p,l,d,a.adaptionDirection)),(i=a.export).time??(i.time=m),o.push({...a,size:l,safeArea:d,previewSafeAreas:[...a.previewSafeAreas??[]],id:t+1,scene:n,ignoreInteraction:!1})}const n=o[0]?.scene;if(!n)return void console.warn("SDK need a view property at least.");const c=n.compositions.find(e=>e.id===n.compositionId)??n.compositions[0],h={...a,zoom:1,translation:[0,0],asyncMode:a.asyncMode??!1},p=(c?.duration??0)-.1;this._pageData={scene:JSON.parse(JSON.stringify(s)),time:p,property:h,activeData:{selectedItems:[]},items:[],viewProperties:o,playing:!1},this._pageDataUtils.init(),this._gestureHandler.init(this._pageDataUtils),this._gestureHandler.ignoreInteraction=!!o[1]?.ignoreInteraction,e.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaEnabled=h.safeAreaPreview,this._eventEmitter.emit("progress",{duration:p,time:p,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!this._pageData.playing}),await this._pageDataUtils.loadScene(1),this._pageDataUtils.refreshPageTime(p)}async run(e){const t=await this.getInitParam(e);await this.initSDK(t),this._eventEmitter.emit("pageDataChange",this.getPageData())}getPageData(){return JSON.parse(JSON.stringify(this._pageData))}getActiveItems(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.selectedItems}setPreSelectedItem(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=e}getPreSelectedItem(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem??""}setSelectedItems(e){this._pageDataUtils.clearPreSelectedItem(),this._pageDataUtils.clearSelectedItems(),this._pageDataUtils.addSelectedItems([...e])}getItemProperty(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t=this._pageData.items.find(t=>t.id===e.itemId);if(t&&t.type===e.type)return{type:t.type,property:t.property}}getItemPropertyValue(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t=this.getItemProperty(e)?.property?.[e.propertyName];return t}async setItemPropertyValue(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t=this._pageData.viewProperties[this._pageData.activeData.view??0]?.ignoreInteraction;t?console.warn("Static scene cannot change."):(await this._pageDataUtils.changeItemProperty(e),this._gestureHandler.refresh(),this._gestureHandler.render(),this._eventEmitter.emit("pageDataChange",this.getPageData()))}async generateScreenShot(e,t=[300,400],i,s){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const r=this.pageData?.viewProperties?.[e];if(!r)return"";const{scene:a,size:[o,n]}=r,c=a.compositionId,h=a.compositions.find(e=>e.id===c);i??(i=h?.duration??0);const p=JSON.parse(JSON.stringify(a));return await this._screenShot.generate(p,[o,n],t,i,s)}async switchScene(e){if((0,w.assertExist)(this._pageData,"You must call SDK#run() first"),e===this._pageData.activeData.view)return;this._isSwitchScene=!0;if(this._pageData.viewProperties[e]){const t=this._pageData.playing;this._pageData.activeData={view:e,selectedItems:[],preSelectedItem:void 0},await this._pageDataUtils.loadScene(e),t&&(this._pageData.playing=t,this.player.gotoAndPlay(this._pageData.time))}else console.warn("target scene does not exist.");this._eventEmitter.emit("selectedViewChange",e),this._eventEmitter.emit("pageDataChange",this.getPageData()),this._isSwitchScene=!1}getPageConfig(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),{safeAreaPreview:this._pageData.property.safeAreaPreview,zoom:this._pageData.property.zoom,adsorption:this._pageData.property.adsorption,asyncMode:this._pageData.property.asyncMode}}setPageConfig(t){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const{adsorption:i,safeAreaPreview:s,zoom:r}=this._pageData.property;this._pageData.property={...this._pageData.property,...t},this._pageData.property.zoom!==r&&this._pageDataUtils.setPageZoom(this._pageData.property.zoom),i!==t.adsorption&&(e.config.gestureHandlerConfig.adsorptionGizmoEnabled=t.adsorption),s!==t.safeAreaPreview&&(e.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaEnabled=t.safeAreaPreview),this._gestureHandler.refresh(),this._gestureHandler.render()}async setPlayProgress(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t=(this.player.getCompositions()[0]?.getDuration()??2)*e/100;this._pageData.time=t;!this.player.getCompositions().length&&(ve(this.player),await this._pageDataUtils.loadScene(this._pageData.activeData.view??0));this._pageData.playing?this.player.gotoAndPlay(t):(this.player.gotoAndStop(t),this._eventEmitter.emit("progress",{duration:this.player.getCompositions()[0]?.getDuration()??2,time:t,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!0})),this._pageDataUtils.refreshPageTime(t)}getViewItems(){return this.getPageData()?.items??[]}async setPlayState(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t="play"===e;if(this._pageData.playing!==t){if(this._pageData.playing=t,this._gestureHandler.ignoreInteraction=t,t){const e=this.player.getCompositions();await this.player.loadScene(this._pageData.viewProperties[this._pageData.activeData.view].scene,{autoplay:!1}),this.player.gotoAndPlay(this._pageData.time),this.destroyCompositions(e)}else this.player.gotoAndStop(this._pageData.time);this._gestureHandler.refresh(),this._gestureHandler.render()}}getViewThumbnail(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.viewProperties.map(e=>({id:e.id,thumbnail:this.generateScreenShot(e.id)}))}getViewScene(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.viewProperties.map(e=>({id:e.id,thumbnail:e.scene}))}destroyCompositions(e){e.forEach(e=>{e.dispose();const t=this.player.getCompositions(),i=t.indexOf(e);i>-1&&t.splice(i,1)})}onExport(){e.config.exportVideoConfig.enabled&&((0,w.assertExist)(this.pageData,"You must call SDK#run() first"),(0,w.assertExist)(this._exporter,"You must init exporter first"),this._exporter.onExport(this.exportOptions))}cancelExport(){(0,w.assertExist)(this._exporter,"You must init exporter first"),this._exporter.onCancel()}async loadPageData(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData={view:this._pageData.viewProperties.length,selectedItems:[],preSelectedItem:void 0},this._pageData.viewProperties.push(...e.viewProperties),this._pageDataUtils.init(),this._gestureHandler.init(this._pageDataUtils),await this._pageDataUtils.loadScene(this.pageData?.activeData.view??0),this._eventEmitter.emit("pageDataChange",this.getPageData())}async runByPageData(e){const t=JSON.parse(JSON.stringify(e));t.property.zoom=1,t.property.translation=[0,0],this._pageData=t,this._pageDataUtils.init(),this._gestureHandler.init(this._pageDataUtils),await this._pageDataUtils.loadScene(this.pageData?.activeData.view??0),this._pageDataUtils.refreshPageTime(this._pageData.time),this._eventEmitter.emit("pageDataChange",this.getPageData())}async reloadPageDataByScene(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");let t=JSON.parse(JSON.stringify(e));if("string"==typeof t)try{const e=await fetch(t,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}, statusText: ${e.statusText}`);t=await e.json()}catch(e){throw new Error(`Failed to fetch scene data from ${t}: ${e instanceof Error?e.message:String(e)}`)}this._pageData.time=t.compositions.find(e=>e.id===t.compositionId)?.duration??2,this._pageData.viewProperties.forEach(e=>{e.scene=JSON.parse(JSON.stringify(t))}),this._pageDataUtils.init(),this._gestureHandler.init(this._pageDataUtils),await this._pageDataUtils.loadScene(this._pageData.activeData.view??0),this._eventEmitter.emit("progress",{duration:this.player.getCompositions()[0]?.getDuration()??2,time:this._pageData.time,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!this._pageData.playing})}async addViewParams(t){var i;(0,w.assertExist)(this._pageData);const s=[],r=this._pageData.viewProperties[this._pageData.viewProperties.length-1]?.id??this._pageData.viewProperties.length-1;for(let a=0;a<t.length;a++){const o=t[a];if(!o)continue;let n=JSON.parse(JSON.stringify(this._pageData.scene));const c=n.compositions.find(e=>e.id===n.compositionId)??n.compositions[0];(0,w.assertExist)(c);const{previewSize:h=[750,1624]}=c,p=h,l=o.size??h;c.previewSize=l;const m=c.duration??0,d=o.safeArea??[0,0,0,0];e.config.sizeAdaptConfig.enabled&&(n=await this._sizeAdapt.adjustment(n,m,p,l,d,o.adaptionDirection)),(i=o.export).time??(i.time=m),s.push({...o,size:l,safeArea:d,previewSafeAreas:[...o.previewSafeAreas??[]],id:r+1+a,scene:n,ignoreInteraction:!1})}this._pageData.viewProperties.push(...s),this._eventEmitter.emit("pageDataChange",this.getPageData())}async deleteViewParams(e){e.sort((e,t)=>e-t);for(let t=0;t<e.length;t++){const i=e[t];(0,w.assertExist)(this._pageData);const s=i-t,r=this._pageData.viewProperties.findIndex(e=>e.id===s);if(!0===this._pageData.viewProperties[r]?.ignoreInteraction){console.warn("target view ignore interaction, it can not be deleted.");continue}if(r<0){console.warn("Target view is not existed.");continue}this._pageData.viewProperties.splice(r,1);const a=this._pageData.activeData.view??0;s===a?(this._pageData.activeData.view=0,await this._pageDataUtils.loadScene(0)):s<a&&(this._pageData.activeData.view=a-1),this._pageData.viewProperties.forEach(e=>{e.id>s&&(e.id-=1)})}this._eventEmitter.emit("selectedViewChange",this._pageData?.activeData?.view??0),this._eventEmitter.emit("pageDataChange",this.getPageData())}setExportParam(e,t){(0,w.assertExist)(this._pageData),this._pageData.viewProperties.forEach(i=>{void 0!==t&&i.id!==t||(i.export=e)})}setPageZoom(e){(0,w.assertExist)(this._pageData),this._pageData.property.zoom=e,this._pageDataUtils.setPageZoom(this._pageData.property.zoom),this._gestureHandler.refresh(),this._gestureHandler.render()}setStaticPreviewEnabled(t){e.config.pageConfig.staticPreview=t}setStaticPreviewName(t){e.config.pageConfig.staticPreviewName=t}setAsyncEnabled(t){e.config.pageConfig.asncMode=t}setGroupVisibleEnabled(t){e.config.pageConfig.groupVisible=t}addFilterItemNames(t){"string"==typeof t?ce(e.config.pageConfig.filterItemNames,t):t.forEach(t=>{ce(e.config.pageConfig.filterItemNames,t)})}setPreferenceBackgroundColor(t){e.config.gestureHandlerConfig.preferenceGizmoConfig.markColor=t[0]<<16|t[1]<<8|t[2],e.config.gestureHandlerConfig.preferenceGizmoConfig.markAlpha=t[3]??.3,this._gestureHandler.refresh(),this._gestureHandler.render()}setSafeAreaColor(t){e.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaBoxColor=t[0]<<16|t[1]<<8|t[2],e.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaBoxAlpha=t[3]??.3,this._gestureHandler.refresh(),this._gestureHandler.render()}setSizeAdaptEnabled(t){e.config.sizeAdaptConfig.enabled=t}setScreenShotEnabled(t){e.config.screenShotConfig.enabled=t}setExportVideoEnabled(t){e.config.exportVideoConfig.enabled=t}setSelectorGizmoPreSelectConfig(t,i){void 0!==t&&(e.config.gestureHandlerConfig.selectorGizmoConfig.preSelectedColor=t),void 0!==i&&(e.config.gestureHandlerConfig.selectorGizmoConfig.preSelectedWidth=i),this._gestureHandler.refresh(),this._gestureHandler.render()}setTranformGizmoWireframeConfig(t){void 0!==t.wireframeAlpha&&(e.config.gestureHandlerConfig.transformGizmoConfig.wireframeAlpha=t.wireframeAlpha),void 0!==t.wireframeColor&&(e.config.gestureHandlerConfig.transformGizmoConfig.wireframeColor=t.wireframeColor),void 0!==t.wireframeWidth&&(e.config.gestureHandlerConfig.transformGizmoConfig.wireframeWidth=t.wireframeWidth),this._gestureHandler.refresh(),this._gestureHandler.render()}getSDKConfig(){return e.config}setSDKConfig(t){const i=Object.assign({},e.config);this._eventEmitter.emit("sdkConfigChange",i,t),e.config=t}setSDKBackground(e,t){switch(e){case"color":this._container.style.removeProperty("background-color"),this._container.style.removeProperty("background-image"),this._container.style.removeProperty("background-repeat"),this._container.style.removeProperty("background-position"),this._container.style.removeProperty("background-size"),t&&(this._container.style.backgroundColor=t);break;case"image":this._container.style.removeProperty("background-color"),this._container.style.removeProperty("background-image"),this._container.style.removeProperty("background-repeat"),this._container.style.removeProperty("background-position"),this._container.style.removeProperty("background-size"),t&&(this._container.style.backgroundImage=`url(${t})`);break;case"chess-board":t??(t="#CCCCCC"),this._container.style.backgroundColor=t,this._container.style.backgroundImage="linear-gradient(45deg, #FFFFFF 25%, transparent 25%, transparent 75%, #FFFFFF 75%),linear-gradient(45deg, #FFFFFF 25%, transparent 25%, transparent 75%, #FFFFFF 75%)",this._container.style.backgroundRepeat="repeat",this._container.style.backgroundPosition="0 0, 10px 10px",this._container.style.backgroundSize="20px 20px"}}async addSpriteItem(e){await this._pageDataUtils.addSpriteItem(e)}};m(wt,"config",{mode:"template",pageConfig:{asncMode:!1,staticPreview:!0,staticPreviewName:"标准模板",filterItemNames:["check-area","ModelPluginItem"],groupVisible:!0},screenShotConfig:{enabled:!0},exportVideoConfig:{enabled:!0,mediaType:"MP4",loggerInTranscoding:!1},sizeAdaptConfig:{enabled:!0},gestureHandlerConfig:{enabled:!0,adsorptionGizmoEnabled:!0,adsorptionGizmoConfig:{lineWidth:2,lineColor:37375,distance:6},controlGizmoEnabled:!0,controlGizmoConfig:{zoomStep:.01},preferenceGizmoEnabled:!0,preferenceGizmoConfig:{boxColor:16711680,boxWidth:1,markColor:0,markAlpha:.17,safeAreaEnabled:!0,safeAreaBoxColor:65280,safeAreaBoxAlpha:.3},selectorGizmoEnabled:!0,selectorGizmoConfig:{preSelectedWidth:3,preSelectedColor:15425024,regionBoxColor:16777215,regionBoxAlpha:.17,regionWireframeColor:16777215,regionWireframeAlpha:.78,regionWireframeWidth:1},transformGizmoEnabled:!0,transformGizmoConfig:{wireframeColor:16711680,wireframeAlpha:1,wireframeWidth:1.5,cornerFillColor:16777215,cornerLineColor:0,cornerLineWidth:1,cornerLineAlpha:.3,scaleCircleSize:4,rotationCircleSize:8}}});var xt=wt;
|
|
1
|
+
"use strict";var e,t=Object.create,i=Object.defineProperty,s=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,a=Object.getPrototypeOf,n=Object.prototype.hasOwnProperty,o=e=>{throw TypeError(e)},c=(e,t)=>{for(var s in t)i(e,s,{get:t[s],enumerable:!0})},h=(e,t,a,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let c of r(t))n.call(e,c)||c===a||i(e,c,{get:()=>t[c],enumerable:!(o=s(t,c))||o.enumerable});return e},l=(e,t,i)=>(h(e,t,"default"),i&&h(i,t,"default")),p=(e,s,r)=>(r=null!=e?t(a(e)):{},h(!s&&e&&e.__esModule?r:i(r,"default",{value:e,enumerable:!0}),e)),m=(e,t,s)=>((e,t,s)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s)(e,"symbol"!=typeof t?t+"":t,s),d=(e,t,i)=>t.has(e)||o("Cannot "+i),g=(e,t,i)=>(d(e,t,"read from private field"),i?i.call(e):t.get(e)),u=(e,t,i)=>t.has(e)?o("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,i),f=(e,t,i,s)=>(d(e,t,"write to private field"),s?s.call(e,i):t.set(e,i),i),y={};c(y,{Box2:()=>B,SDK:()=>Pt,generateGUID:()=>w.generateGUID,spec:()=>w.spec}),module.exports=(e=y,h(i({},"__esModule",{value:!0}),e));require("@galacean/effects");var w=require("@galacean/effects"),x=(require("@galacean/effects-plugin-rich-text"),require("@galacean/effects-plugin-rich-text")),v=(require("@galacean/effects-plugin-model"),require("@galacean/effects-plugin-multimedia"),require("@galacean/effects-plugin-multimedia")),I=(require("@galacean/effects-plugin-spine"),require("@pixi/app")),P=class{constructor(){m(this,"type"),m(this,"active"),this.type="null",this.active=!1}get interactive(){return this.active}set interactive(e){this.active=e}},D=1e-6;function b(e,t,i){const s=isNaN(t)?-1/0:t,r=isNaN(i)?1/0:i,a=Math.min(s,r),n=Math.max(s,r);return Math.min(Math.max(e,a),n)}var C=Math.PI/180,z=180/Math.PI;function E(e){return Math.atan2(-e.y,-e.x)+Math.PI}function S(e,t,i=Math.round){if(Number.isInteger(e))return e;const s=Math.pow(10,t);return i(e*s)/s}function A(e,t){return Math.abs(e-t)<D||e===1/0&&t===1/0||e===-1/0&&t===-1/0}function T(e){return isNaN(e)||Math.abs(e)<D}var _=class e extends w.math.Vector2{subtract(e){return this.x-=e.x,this.y-=e.y,this}toViewCoordinate(e,t){return this.x=(this.x+1)/2*e,this.y=(1-(this.y+1)/2)*t,this}clone(){return new e(this.x,this.y)}distanceTo(e){const t=this.x-e.x,i=this.y-e.y;return Math.sqrt(t*t+i*i)}scaleByCenter(t,i=new e){const s=(new e).subtractVectors(i,this).multiply(t);return(new e).subtractVectors(i,s)}round(e=0){const t=Math.pow(10,e);return this.x=Math.round(this.x*t)/t,this.y=Math.round(this.y*t)/t,this}distanceToLine(t){const i=Math.pow(t.length(),2),{start:s,end:r}=t;if(0===i)return{d:(new e).subtractVectors(this,s).length(),t:0};const a=b(((this.x-s.x)*(r.x-s.x)+(this.y-s.y)*(r.y-s.y))/i,0,1);return{d:(new e).subtractVectors(this,t.at(a)).length(),t:a}}},k=class e{constructor(e=new _,t=new _){m(this,"start",new _),m(this,"end",new _),this.start.copyFrom(e),this.end.copyFrom(t)}set(e,t){return this.start.copyFrom(e),this.end.copyFrom(t),this}copyFrom(e){return this.start.copyFrom(e.start),this.end.copyFrom(e.end),this}direction(){return(new _).subtractVectors(this.end,this.start).normalize()}getCenter(e=new _){return e.addVectors(this.start,this.end).multiply(.5)}delta(e=new _){return e.subtractVectors(this.end,this.start)}distanceSq(){return this.start.distanceSquared(this.end)}distance(){return this.start.distance(this.end)}at(e,t=new _){return this.delta(t).multiply(e).add(this.start)}closestPointToPointParameter(e,t){const i=new _,s=new _;i.subtractVectors(e,this.start),s.subtractVectors(this.end,this.start);const r=s.dot(s);let a=s.dot(i)/r;return t&&(a=b(a,0,1)),a}closestPointToPoint(e,t,i=new _){const s=this.closestPointToPointParameter(e,t);return this.delta(i).multiply(s).add(this.start)}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return(new e).copyFrom(this)}length(){return(new _).subtractVectors(this.end,this.start).length()}crossWithLine(e){const t=this.delta(),i=e.delta(),s=(new _).subtractVectors(e.start,this.start),r=(new _).subtractVectors(e.end,this.start),a=(new _).subtractVectors(this.start,e.start),n=(new _).subtractVectors(this.end,e.start),o=s.cross(t),c=r.cross(t),h=a.cross(i),l=n.cross(i);return o*c<0&&h*l<0}},B=class e{constructor(e=new _(1/0,1/0),t=new _(-1/0,-1/0)){m(this,"corners",[]),m(this,"min",new _(1/0,1/0)),m(this,"max",new _(-1/0,-1/0)),this.min=e.clone(),this.max=t.clone(),this.isEmpty()?this.corners=[]:this.corners=[e.clone(),new _(t.x,e.y),t.clone(),new _(e.x,t.y)]}set(e,t){return this.min.copyFrom(e),this.max.copyFrom(t),this.corners=[e.clone(),new _(t.x,e.y),t.clone(),new _(e.x,t.y)],this}setFromVec2Array(e){return this.min=(new _).copyFrom(e[0]),this.max=(new _).copyFrom(e[0]),e.forEach(e=>{this.min.min(e),this.max.max(e),this.corners.push(e.clone())}),this}setFromVec2ArrayWithOutCorners(e){return this.min=(new _).copyFrom(e[0]),this.max=(new _).copyFrom(e[0]),e.forEach(e=>{this.min=this.min.min(e),this.max=this.max.max(e)}),this.corners.push(new _(this.min.x,this.min.y)),this.corners.push(new _(this.min.x,this.max.y)),this.corners.push(new _(this.max.x,this.max.y)),this.corners.push(new _(this.max.x,this.min.y)),this}setFromCenterAndSize(e,t){const i=(new _).copyFrom(t).multiply(.5);return this.min.copyFrom(e).subtract(i),this.max.copyFrom(e).add(i),this.corners=[this.min.clone(),new _(this.max.x,this.min.y),this.max.clone(),new _(this.min.x,this.max.y)],this}clone(){return(new e).copyFrom(this)}copyFrom(e){return this.corners=[],this.min.copyFrom(e.min),this.max.copyFrom(e.max),e.corners.forEach(e=>{this.corners.push(e.clone())}),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this.corners=[],this}isEmpty(){return this.max.x<=this.min.x||this.max.y<=this.min.y}getCorners(){const e=[];return this.corners.forEach(t=>{e.push(t.clone())}),e}getCenter(e=new _){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiply(.5)}getSize(e=new _){return this.isEmpty()?e.set(0,0):e.subtractVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.subtract(e),this.max.add(e),this}expandByScalar(e){return this.min.add(-e),this.max.add(e),this}containsPoint(e,t=!0){if(t)return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y);if(this.isEmpty())return!1;for(let t=0;t<this.corners.length;t++){const i=this.corners[t],s=this.corners[(t+1)%4],r=new _(s.x-i.x,s.y-i.y),a=new _(e.x-i.x,e.y-i.y);if(r.cross(a)<0)return!1}return!0}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t=new _){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}clampPoint(e,t=new _){return t.copyFrom(e).clamp(this.min,this.max)}distanceToPoint(e){return(new _).copyFrom(e).clamp(this.min,this.max).subtract(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.min.x>this.max.x||this.min.y>this.max.y?this.makeEmpty():this}union(e){return this.min.min(e.min),this.max.max(e.max),this.corners=[this.min.clone(),new _(this.max.x,this.min.y),this.max.clone(),new _(this.min.x,this.max.y)],this}translate(e){return this.min.add(e),this.max.add(e),this.corners.forEach(t=>{t.add(e)}),this}scale(e,t){t??(t=this.getCenter());const i=i=>{const s=i.clone().add(t);i.add(s.multiply(e-1))};return i(this.min),i(this.max),this.corners.forEach(e=>{i(e)}),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}intersectsBox(e,t=!0){if(t)return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y);if(!this.isEmpty())for(let t=0;t<this.corners.length;t++){const i=new k(this.corners[t],this.corners[(t+1)%4]);if(e.containsPoint(this.corners[t],!1))return!0;for(let t=0;t<e.corners.length;t++){const s=new k(e.corners[t],e.corners[(t+1)%4]);if(this.containsPoint(e.corners[t],!1))return!0;if(i.crossWithLine(s))return!0}}for(let t=0;t<e.corners.length;t++){const i=this.containsPoint(e.corners[t],!1),s=e.containsPoint(this.corners[t],!1);if(i||s)return!0}return!1}},M=class e{constructor(e=new _,t=0){m(this,"center"),m(this,"radius"),this.center=e.clone(),this.radius=t}set(e,t){return this.center=(new _).copyFrom(e),this.radius=t,this}clone(){return(new e).copy(this)}copy(e){return this.center.copyFrom(e.center),this.radius=e.radius,this}makeEmpty(){return this.center=new _,this.radius=0,this}isEmpty(){return 0===this.radius}getCenter(e=new _){return e.copyFrom(this.center),e}getRadius(){return this.radius}expandByPoint(e){return this.radius=this.center.distanceTo(e),this}expandByScalar(e){return this.radius+=e,this}containsPoint(e){return this.center.distanceTo(e)<this.radius}containsBox(e){for(let t=0;t<4;t++)if(!this.containsPoint(e.corners[t]))return!1;return!0}intersectsBox(e){for(let t=0;t<4;t++)if(this.containsPoint(e.corners[t]))return!0;return!1}distanceToPoint(e){return this.center.distanceTo(e)-this.radius}},V=class extends w.math.Quaternion{},F=class e extends w.math.Vector3{clone(){return new e(this.x,this.y,this.z)}setFromMatrixColumn(e,t){return this.set(...e.elements.slice(4*t))}applyEuler(e,t){return this.applyQuaternion((new V).setFromEuler(e))}applyQuaternion(t,i=new e){const{x:s,y:r,z:a,w:n}=t,{x:o,y:c,z:h}=this.subtract(i),l=n*o+r*h-a*c,p=n*c+a*o-s*h,m=n*h+s*c-r*o,d=-s*o-r*c-a*h;return this.x=l*n+d*-s+p*-a-m*-r+i.x,this.y=p*n+d*-r+m*-s-l*-a+i.y,this.z=m*n+d*-a+l*-r-p*-s+i.z,this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}applyMatrix(t,i=new e){const s=t.elements,{x:r,y:a,z:n}=this.subtract(i);let o=1/(s[3]*r+s[7]*a+s[11]*n+s[15]);return o=isNaN(o)?1:o,this.x=(s[0]*r+s[4]*a+s[8]*n+s[12])*o+i.x,this.y=(s[1]*r+s[5]*a+s[9]*n+s[13])*o+i.y,this.z=(s[2]*r+s[6]*a+s[10]*n+s[14])*o+i.z,this}},U=class e extends w.math.Matrix4{static fromArray(t,i=0){return(new e).setFromArray(t,i)}clone(){const t=this.elements;return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}compose(e,t,i,s=F.ZERO){const r=this.elements,{x:a,y:n,z:o,w:c}=t,h=-s.x,l=-s.y,p=-s.z,m=a+a,d=n+n,g=o+o,u=a*m,f=a*d,y=a*g,w=n*d,x=n*g,v=o*g,I=c*m,P=c*d,D=c*g,{x:b,y:C,z:z}=i;return r[0]=(1-(w+v))*b,r[1]=(f+D)*b,r[2]=(y-P)*b,r[3]=0,r[4]=(f-D)*C,r[5]=(1-(u+v))*C,r[6]=(x+I)*C,r[7]=0,r[8]=(y+P)*z,r[9]=(x-I)*z,r[10]=(1-(u+w))*z,r[11]=0,r[12]=h*r[0]+l*r[4]+p*r[8]-h+e.x,r[13]=h*r[1]+l*r[5]+p*r[9]-l+e.y,r[14]=h*r[2]+l*r[6]+p*r[10]-p+e.z,this}extractRotation(e){const t=new F,i=e.elements,s=this.elements,r=1/t.setFromMatrixColumn(e,0).length(),a=1/t.setFromMatrixColumn(e,1).length(),n=1/t.setFromMatrixColumn(e,2).length();return s[0]=i[0]*r,s[1]=i[1]*r,s[2]=i[2]*r,s[3]=0,s[4]=i[4]*a,s[5]=i[5]*a,s[6]=i[6]*a,s[7]=0,s[8]=i[8]*n,s[9]=i[9]*n,s[10]=i[10]*n,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,s=e.y,r=e.z,a=Math.cos(i),n=Math.sin(i),o=Math.cos(s),c=Math.sin(s),h=Math.cos(r),l=Math.sin(r);if(e.order===w.math.EulerOrder.XYZ){const e=a*h,i=a*l,s=n*h,r=n*l;t[0]=o*h,t[4]=-o*l,t[8]=c,t[1]=i+s*c,t[5]=e-r*c,t[9]=-n*o,t[2]=r-e*c,t[6]=s+i*c,t[10]=a*o}else if(e.order===w.math.EulerOrder.YXZ){const e=o*h,i=o*l,s=c*h,r=c*l;t[0]=e+r*n,t[4]=s*n-i,t[8]=a*c,t[1]=a*l,t[5]=a*h,t[9]=-n,t[2]=i*n-s,t[6]=r+e*n,t[10]=a*o}else if(e.order===w.math.EulerOrder.ZXY){const e=o*h,i=o*l,s=c*h,r=c*l;t[0]=e-r*n,t[4]=-a*l,t[8]=s+i*n,t[1]=i+s*n,t[5]=a*h,t[9]=r-e*n,t[2]=-a*c,t[6]=n,t[10]=a*o}else if(e.order===w.math.EulerOrder.ZYX){const e=a*h,i=a*l,s=n*h,r=n*l;t[0]=o*h,t[4]=s*c-i,t[8]=e*c+r,t[1]=o*l,t[5]=r*c+e,t[9]=i*c-s,t[2]=-c,t[6]=n*o,t[10]=a*o}else if(e.order===w.math.EulerOrder.YZX){const e=a*o,i=a*c,s=n*o,r=n*c;t[0]=o*h,t[4]=r-e*l,t[8]=s*l+i,t[1]=l,t[5]=a*h,t[9]=-n*h,t[2]=-c*h,t[6]=i*l+s,t[10]=e-r*l}else if(e.order===w.math.EulerOrder.XZY){const e=a*o,i=a*c,s=n*o,r=n*c;t[0]=o*h,t[4]=-l,t[8]=c*h,t[1]=e*l+r,t[5]=a*h,t[9]=i*l-s,t[2]=s*l-i,t[6]=n*h,t[10]=r*l+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}setPosition(e){return this.elements[12]=e.x,this.elements[13]=e.y,this.elements[14]=e.z,this}},R=class extends w.math.Euler{constructor(e=0,t=0,i=0,s=w.math.EulerOrder.XYZ){super(e,t,i,s)}getInvertMatrixByEuler(){return(new U).makeRotationFromEuler(this).invert()}toDegreeVector3(e){return e?e.set(this.x*z,this.y*z,this.z*z):new F(this.x*z,this.y*z,this.z*z)}setFromDegreeVector3(e,t){return this.set(e.x*C,e.y*C,e.z*C,t??this.order)}},G=class e{constructor(e=0,t=new F(0,0,1)){m(this,"distance"),m(this,"normal");const i=t.length();0===i&&(this.normal=new F(0,0,1)),this.distance=e/(i??1),this.normal=t.normalize()}static set(t,i){return new e(t,i)}set(e,t){const i=t.length();return 0===i&&(this.normal=new F(0,0,1)),this.distance=e/i,this.normal=t.normalize(),this}static copy(t){return new e(t.distance,t.normal.clone())}copy(e){return this.distance=e.distance,this.normal.copyFrom(e.normal),this}static setFromNormalAndCoplanarPoint(t,i){const s=-t.dot(i);return new e(s,i)}setFromNormalAndCoplanarPoint(e,t){return this.normal.copyFrom(t),this.distance=-e.dot(this.normal),this}clone(){return new e(this.distance,this.normal.clone())}distanceToPoint(e){return this.normal.dot(e)+this.distance}},W=class e extends w.math.Ray{constructor(e=new F,t=new F(1,0,0)){super(e,t),m(this,"origin"),m(this,"direction"),this.origin=e.clone(),this.direction=t.clone()}clone(){return new e(this.origin,this.direction)}rayCastPlane(e,t){const i=this.distanceToPlane(e);return isNaN(i)||this.at(i),i}at(e){return this.direction.clone().normalize().multiply(e).add(this.origin)}distanceToPlane(e){const t=e.normal.dot(this.direction);if(T(t))return T(e.distanceToPoint(this.origin))?0:NaN;const i=(-this.origin.dot(e.normal)-e.distance)/t;return i>0?i:NaN}},H=class{constructor(e=new W){m(this,"ray"),this.ray=e.clone()}setFromCamera(e,t){const i=t.position,s=new F(e.x,e.y,.5).applyMatrix(t.inverseViewProjectMatrix).subtract(i).normalize();return this.ray.set(i,s),this}rayCastPlane(e){const t=new F,i=this.ray.rayCastPlane(e,t);if(!isNaN(i))return{distance:i,point:this.ray.at(i)}}},N=class extends P{constructor(e){super(),m(this,"defaultInteractive",!0),m(this,"lastPoint",new _),m(this,"SDKUtils"),this.SDKUtils=e,this.type="control"}get interactive(){return Pt.config.gestureHandlerConfig.controlGizmoEnabled}set interactive(e){Pt.config.gestureHandlerConfig.controlGizmoEnabled=!0}initialize(){}preparationAction(){}cancelPreparation(){}refreshResults(){}preAction(){}action(e){if(!Pt.config.gestureHandlerConfig.controlGizmoEnabled)return void console.warn("Control gizmo is not opened, use #SDK.setControlConfig() open this feature.");const{metaKey:t,ctrlKey:i,shiftKey:s}=e;if(0===e.buttons){const{deltaX:r,deltaY:a}=e,n=new _(r,a);t||i?(n.y=b(n.y,-10,10),this.dolly(n.y)):(n.x=s&&0!==n.y?Math.sqrt(n.x**2+n.y**2)*n.y/Math.abs(n.y):n.x,n.y=s?0:n.y,this.pan(n.multiply(-1)))}}endAction(){}interruption(){return this.type}actionKey(){}endActionKey(){}dolly(e){const t=-e*Pt.config.gestureHandlerConfig.controlGizmoConfig.zoomStep;this.SDKUtils.pageZoom(t)}pan(e){this.SDKUtils.pageMove(e)}getRenderObjects(){return[]}},L=require("@pixi/graphics");function O(e,t){e.includes(t)||e.push(t)}var K=class extends P{constructor(e){super(),m(this,"result",{type:"null",box:new B}),m(this,"selectedItemIds",[]),m(this,"activeParentIds",[]),m(this,"cursorPoint",new _),m(this,"startPoint",new _),m(this,"firstClickPoint",new _),m(this,"graphics",new L.Graphics),m(this,"pageDataUtils"),m(this,"clearResult",!1),m(this,"type","selector"),this.pageDataUtils=e}get interactive(){return Pt.config.gestureHandlerConfig.selectorGizmoEnabled}set interactive(e){Pt.config.gestureHandlerConfig.selectorGizmoEnabled=!0}initialize(){}actionKey(){}endActionKey(){}getRenderObjects(){return this.interactive?this.clearResult?(this.result={type:"null",box:new B},this.clearResult=!1,[]):(this.refreshResults(),[this.graphics]):[]}cancelPreparation(){this.result.type="null",this.pageDataUtils.clearPreSelectedItem()}preparationAction(e){if(this.result.box=new B,!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");const t=new _(e.offsetX,e.offsetY),i=this.hitTest(t);this.selectedItemIds=this.filterSelectedItems(i);const s=this.selectedItemIds[0]??"";return s.length&&!this.pageDataUtils.isItemSelected(s)?this.pageDataUtils.addPreSelectedItem(s):this.pageDataUtils.clearPreSelectedItem(),this.type}preAction(e,t=!1,i){switch(this.pageDataUtils.clearPreSelectedItem(),e.buttons){case 1:{const s=new _(e.offsetX,e.offsetY);if(i??(i=this.firstClickPoint),t&&s.distanceTo(i)<4){const t=new _(e.offsetX,e.offsetY),i=this.hitTest(t);this.selectedItemIds=this.filterSelectedItems(i)}if(t||this.firstClickPoint.set(e.offsetX,e.offsetY),e.shiftKey){if(t){const e=this.pageDataUtils.getViewItemById(this.selectedItemIds[0]);e?.parentId&&this.pageDataUtils.removeSelectedItems([e.parentId])}}else this.pageDataUtils.clearSelectedItems();if(0===this.selectedItemIds.length)return this.startPoint=new _(e.clientX,e.clientY),this.cursorPoint=new _(e.offsetX,e.offsetY),this.activeParentIds=[],this.active=!0,this.type;{this.pageDataUtils.addSelectedItems([this.selectedItemIds[0]]);const e=this.pageDataUtils.getPageData()?.activeData?.selectedItems;return console.log("selected ids ",e),this.addActiveParentIds(e),console.log("active ids ",this.activeParentIds),this.clearResult=!0,"transform"}}case 2:return void(this.selectedItemIds.length&&(e.shiftKey||this.pageDataUtils.clearSelectedItems(),this.pageDataUtils.addSelectedItems([this.selectedItemIds[0]]),this.clearResult=!0));default:return}}action(e){const t=(new _).addVectors(this.cursorPoint,(new _).subtractVectors(new _(e.clientX,e.clientY),this.startPoint)),i=(new _).subtractVectors(this.cursorPoint,t),s=(new _).addVectors(this.cursorPoint,t).multiply(.5);i.x=Math.abs(i.x),i.y=Math.abs(i.y);const r=(new B).setFromCenterAndSize(s,i);this.result.type="region",this.result.box=r,this.pageDataUtils.clearSelectedItems();const a=this.pageDataUtils.getPageData().items?.filter(e=>this.pageDataUtils.getItemEditEnable(e.id)),n=[];a?.forEach(e=>{r.intersectsBox(this.pageDataUtils.getViewBoxById(e.id),!1)&&n.push(e.id)});const o=this.filterSelectedItems(n);this.pageDataUtils.addSelectedItems(o)}endAction(){this.active=!1,this.result.type="null"}interruption(){this.active=!1,this.result.type="null"}hitTest(e){const t=this.pageDataUtils.getCurrentComposition();if(!t?.items)return[];const{x:i,y:s}=this.pageDataUtils.getViewportByViewPoint(e),r={ray:new W,regions:[]};try{r.regions=t.hitTest(i,s,!0),r.ray=t.getHitTestRay(i,s)}catch(e){console.warn(e)}return this.reorderHitTestResult(r,t).filter(e=>"extra-camera"!==e&&this.pageDataUtils.getItemEditEnable(e))}reorderHitTestResult(e,t){if(0===e.regions.length||!t)return[];const{ray:i}=e,s=e.regions.reverse(),r=[];return s.forEach(e=>{let s;const a=(e,t)=>{for(const i of e){if(i.getInstanceId()===t&&(s=i),s)return;a(i.children,t)}};if(a(t.items,e.item.getInstanceId()),void 0===s)return;const n="rootItem"===e.compContent?.name?s.getInstanceId():e.compContent.getInstanceId(),o=i.origin.clone().distance(e.position.clone());if((s.type===w.spec.ItemType.mesh||s.getComponent(w.SpriteComponent)?.renderer?.occlusion||s.getComponent(w.TextComponent)?.renderer?.occlusion||s.getComponent(v.VideoComponent)?.renderer?.occlusion||s.getComponent(x.RichTextComponent)?.renderer?.occlusion)&&r.length>0){let e=!0;r.forEach((t,i)=>{if(e)return o<=t[1]?(r.splice(i,0,[n,o]),void(e=!1)):void(i===r.length-1&&r.push([n,o]))})}else r.push([n,o])}),r.map(e=>e[0])}filterSelectedItems(e){const t=[],i=e=>{const t=this.pageDataUtils.getViewItemById(e);return!t.parentId||this.activeParentIds.includes(t.parentId)?t.id:i(t.parentId)};return e.forEach(e=>{const s=i(e);O(t,s)}),t}addActiveParentIds(e){this.activeParentIds=[],e?.forEach(e=>{if(!this.pageDataUtils.getViewItemById(e))return;const t=e=>{this.activeParentIds.push(e);const i=this.pageDataUtils.getViewItemById(e);i.parentId&&t(i.parentId)};t(e)})}resetActiveParentIds(e){const t=this.pageDataUtils.getViewItemById(e);t&&(this.activeParentIds=this.activeParentIds.filter(e=>e===t.parentId))}refreshResults(){const{box:e}=this.result;this.graphics.clear();const t=this.pageDataUtils.getPreSelectedItem(),i=this.pageDataUtils.getViewBoxById(t?.id??""),{regionBoxColor:s,regionBoxAlpha:r,preSelectedWidth:a,preSelectedColor:n,regionWireframeWidth:o,regionWireframeColor:c,regionWireframeAlpha:h}=Pt.config.gestureHandlerConfig.selectorGizmoConfig;if(i?.isEmpty()||(this.graphics.lineStyle(a,n),this.graphics.drawBox(i)),!e.isEmpty()&&"region"===this.result.type)this.graphics.lineStyle(o,c,h),this.graphics.drawBox(e),this.graphics.beginFill(s,r),this.graphics.fillBox(e),this.graphics.endFill()}},j=require("@pixi/graphics"),$=require("@galacean/effects"),Y=class extends P{constructor(e,t,i){super(),m(this,"type"),m(this,"wireframe"),m(this,"cursorResult",{type:"normal",angle:0}),m(this,"cursorPoint",new _),m(this,"lastPoint",new _),m(this,"rotationAngle",0),m(this,"active",!1),m(this,"enableAdsorption",!0),m(this,"scaleParam"),m(this,"activeType","null"),m(this,"lastWorldPosition",new F),m(this,"firstClickPoint",new _),m(this,"pageDataUtils"),m(this,"adsorptionGizmo"),m(this,"selectorGizmo"),m(this,"graphics",new j.Graphics),this.type="transform",this.pageDataUtils=e,this.selectorGizmo=i,this.adsorptionGizmo=t,this.wireframe={edges:[],anchor:new _,scaleCorners:[],rotationCorners:[],interactive:!0,cornerEnable:!0,directionEnable:!0,box:new B,totalBox:new B,childrenBoxes:[],activeType:"null",interactiveDirection:new _,scaleCorner:new _,scaleEdgeCorners:[]}}get interactive(){return Pt.config.gestureHandlerConfig.transformGizmoEnabled}set interactive(e){Pt.config.gestureHandlerConfig.transformGizmoEnabled=e}initialize(){}actionKey(){}endActionKey(){}getRenderObjects(){return this.interactive?(this.refreshRenderObject(),[this.graphics]):[]}cancelPreparation(){this.active=!1,this.wireframe.activeType="null"}preparationAction(e){if(!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");const t=new _(e.offsetX,e.offsetY),i=this.wireframe;this.refreshTransformType(t);const{interactiveDirection:s}=i;return this.refreshCursorResult(this.activeType,E(s)),this.active="null"!==this.activeType,this.active?this.type:void 0}preAction(e,t=!1){if(this.active=1===e.buttons,this.lastPoint=new _(e.clientX,e.clientY),this.cursorPoint=new _(e.offsetX,e.offsetY),1!==e.buttons)return;if(t)return this.selectorGizmo.preAction(e,t,new _(e.offsetX,e.offsetY));this.active=!0,"null"===this.wireframe.activeType&&(this.wireframe.activeType="translation");const i=this.cursorPoint.clone().subtract(this.pageDataUtils.getViewportLeftTopPosition());return this.initInteractionPlane(i),this.lastWorldPosition=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(i)??new F,this.activeType=t?"null":this.activeType,this.type}action(e){if(!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if(!this.active){this.active=!0,this.refreshWireframeBySelectedItems(),this.wireframe.activeType="translation",this.lastPoint.set(e.clientX,e.clientY),this.cursorPoint.set(e.offsetX,e.offsetY);const t=this.cursorPoint.clone().subtract(this.pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(t),this.lastWorldPosition=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new F}const t=new _(e.clientX,e.clientY),i=(new _).subtractVectors(t,this.lastPoint);if(!this.wireframe.interactive)return;const s=this.pageDataUtils.getSelectedItems(),{anchor:r,activeType:a,interactiveDirection:n}=this.wireframe,o=this.pageDataUtils.getPageData();(0,$.assertExist)(o);let c=0;switch(a){case"rotation":{const e=r.clone(),t=new F,a=S(function(e,t){const i=Math.min(Math.max(e.dot(t)/e.length()/t.length(),-1),1);let s=Math.acos(i);return s=e.x*t.y-e.y*t.x>0?s:-s,s}((new _).subtractVectors(this.cursorPoint,e),(new _).subtractVectors(this.cursorPoint.add(i),e))*z,3);t.z=a,this.rotationAngle+=a,c=E(n)+this.rotationAngle*C,s.forEach(e=>{this.pageDataUtils.rotateItem(e.id,t)});break}case"translation":{const e=i.clone();if(this.enableAdsorption){const t=o.items.map(e=>s.find(t=>t.id===e.id)||0!==s.filter(t=>e.parentId&&e.parentId===t.id).length||!this.pageDataUtils.getItemEditEnable(e.id)||s.find(t=>t.parentId===e.id)?new B:this.pageDataUtils.getViewBoxById(e.id)).filter(e=>!e.isEmpty()),i=new _(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);this.adsorptionGizmo.boxTranslationAdsorption(e,this.wireframe.box,t);const r=new _(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);e.add(i).subtract(r)}const t=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(this.cursorPoint.add(e).clone().subtract(this.pageDataUtils.getViewportLeftTopPosition()));if(t){const e=t.clone().subtract(this.lastWorldPosition);s.forEach(t=>{t.type!==w.spec.ItemType.camera&&this.pageDataUtils.moveItem(t.id,e)}),this.lastWorldPosition.copyFrom(t)}break}case"scale":{this.cursorPoint.add(i);const e=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(this.cursorPoint.clone().subtract(this.pageDataUtils.getViewportLeftTopPosition()));if(i.length()&&e&&this.scaleParam){const{corner:t,center:i,shift:r,lastScalar:a}=this.scaleParam,n=this.pageDataUtils.getSelectedItems()[0]??void 0,o=this.pageDataUtils.getItemTransformById(n?.id??""),c=(new U).extractRotation(o.matrix).invert(),h=(new F).subtractVectors(t,i).applyMatrix(c),l=h.clone().multiply(a),p=e.subtract(r).subtract(i).applyMatrix(c),m=new F(1,1,1),d=function(e){let t,i=0;return e.forEach((e,s)=>{if(0===s)t=Math.abs(e);else{const r=Math.abs(e);t<r&&(t=r,i=s)}}),i}([A(h.x,0)?1:Math.abs(p.x/h.x),A(h.y,0)?1:Math.abs(p.y/h.y)]),g=p.toArray()[d],u=l.toArray()[d];if(A(a.x,a.y)&&A(a.z,a.x)){const e=A(u,0)?1:Math.abs(g/u);m.set(e,e,e)}else if(0===d){m.x=A(u,0)?1:Math.abs(g/u);const e=h.y*g/h.x;m.y=A(l.y,0)?1:e/l.y;const t=h.z*g/h.x;m.z=A(l.z,0)?1:t/l.z}else if(1===d){m.y=A(u,0)?1:Math.abs(g/u);const e=h.x*g/h.y;m.x=A(l.x,0)?1:e/l.x;const t=h.z*g/h.y;m.z=A(l.z,0)?1:t/l.z}else{m.z=A(u,0)?1:Math.abs(g/u);const e=h.x*g/h.z;m.x=A(l.x,0)?1:e/l.x;const t=h.y*g/h.z;m.y=A(l.y,0)?1:t/l.y}this.scaleParam.lastScalar.multiply(m),s.forEach(e=>{this.pageDataUtils.scaleItem(e.id,m)})}c=E(n);break}}this.refreshCursorResult(a,c),this.lastPoint.copyFrom(t)}endAction(e){this.active=!1;const t=new _(e.clientX,e.clientY),i=(new _).subtractVectors(t,this.lastPoint);this.cursorPoint.add(i);const s=this.wireframe;this.refreshTransformType(this.cursorPoint);const{activeType:r,interactiveDirection:a}=s;this.refreshCursorResult(r,E(a)),this.adsorptionGizmo.clearAbsorptionResult(),this.rotationAngle=0,this.cursorPoint=new _,this.lastPoint=new _}interruption(){this.active=!1,this.cursorResult.type="normal",this.adsorptionGizmo.clearAbsorptionResult()}refreshCursorResult(e,t=0){switch(e){case"scale":this.cursorResult={type:"scale",angle:(t+Math.PI/4)*z};break;case"rotation":this.cursorResult={type:"rotation",angle:(t+Math.PI/4)*z};break;case"translation":case"null":this.cursorResult={type:"normal",angle:0}}}refreshResults(){const e=this.wireframe.activeType;this.refreshWireframeBySelectedItems(),e!==this.wireframe.activeType&&this.refreshCursorResult(this.wireframe.activeType),this.wireframe.box.isEmpty()&&this.adsorptionGizmo.clearAbsorptionResult()}initInteractionPlane(e){const t=this.pageDataUtils.getSelectedItems();switch(this.wireframe.activeType){case"scale":{const i=1==t.length?t[0]:void 0;let s,r,a;if(i){const e=this.pageDataUtils.getItemTransformById(i.id);s=(new F).copyFrom(this.pageDataUtils.getPlayerItemById(i.id).transform.anchor).applyMatrix(e.matrix),r=(new F).setFromMatrixPosition(e.matrix),a=(new R).setFromQuaternion((new V).setFromRotationMatrix(e.matrix))}this.pageDataUtils.interactionUtils.initInteractionPlane(r,a),this.scaleParam={shift:new F,center:new F,corner:new F,lastScalar:new F(1,1,1)},this.scaleParam.center=s??r;const n=this.pageDataUtils.getViewportLeftTopPosition();if(["scale"].includes(this.wireframe.activeType)&&this.wireframe.scaleCorner){const e=this.wireframe.scaleCorner.clone().subtract(n);this.scaleParam.corner=this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new F}this.scaleParam.shift=(this.pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new F).subtract(this.scaleParam.corner);break}case"translation":case"rotation":this.pageDataUtils.interactionUtils.initInteractionPlane()}}refreshRenderObject(){this.graphics.clear();const{wireframeAlpha:e,wireframeColor:t,wireframeWidth:i,cornerFillColor:s,cornerLineWidth:r,cornerLineColor:a,cornerLineAlpha:n}=Pt.config.gestureHandlerConfig.transformGizmoConfig;if(!this.wireframe.box.isEmpty()){this.graphics.lineStyle(i,t,e),this.wireframe.edges.forEach(e=>{this.graphics.drawLine(e)});const o=e=>{e.corners.forEach((t,i)=>{const s=new k(t,e.corners[(i+1)%4]);this.graphics.drawLine(s)})};this.wireframe.childrenBoxes.forEach(e=>{o(e)}),this.wireframe.cornerEnable&&(this.graphics.beginFill(s),this.graphics.lineStyle(r,a,n),this.wireframe.scaleCorners.forEach(e=>{this.graphics.drawCircle(e.center.x,e.center.y,e.radius)}),this.graphics.endFill())}}refreshTransformType(e){this.activeType="null";let t=!0;if(this.wireframe.interactiveDirection=new _,this.wireframe.scaleCorner=void 0,this.wireframe.scaleEdgeCorners=void 0,this.wireframe.cornerEnable&&t&&this.wireframe.totalBox.containsPoint(e)){for(let i=0;i<4;i++){if(this.wireframe.scaleCorners[i].containsPoint(e)){t=!1,this.activeType="scale",this.wireframe.activeType="scale",this.wireframe.scaleCorner=this.wireframe.scaleCorners[i].center.clone(),this.wireframe.interactiveDirection.copyFrom(this.wireframe.scaleCorners[i].center).subtract(this.wireframe.box.getCenter());break}}t&&this.wireframe.box.containsPoint(e,!1)&&(t=!1,this.activeType="translation",this.wireframe.activeType="translation");for(let i=0;i<4;i++){if(this.wireframe.rotationCorners[i].containsPoint(e)&&t){t=!1,this.activeType="rotation",this.wireframe.activeType="rotation",this.wireframe.interactiveDirection.copyFrom(this.wireframe.rotationCorners[i].center).subtract(this.wireframe.box.getCenter());break}}}}refreshWireframeBySelectedItems(){const e=this.pageDataUtils.getSelectedItems(),t=new B;if(this.wireframe.edges=[],this.wireframe.scaleCorners=[],this.wireframe.childrenBoxes=[],this.wireframe.rotationCorners=[],e.length>1)e.forEach(e=>{if(this.pageDataUtils.getItemShow(e.id)){const i=this.pageDataUtils.getViewBoxById(e.id);t.union(i),this.wireframe.childrenBoxes.push((new B).copyFrom(i).expandByScalar(1))}}),this.wireframe.anchor=t.getCenter(),this.wireframe.interactive=!0;else if(1===e.length){const i=e[0];if(this.pageDataUtils.getItemShow(i.id)){const e=this.pageDataUtils.getViewBoxById(i.id);t.copyFrom(e),this.wireframe.anchor=this.pageDataUtils.getItemViewAnchor(i.id)??t.getCenter(),this.wireframe.interactive=i.type!==w.spec.ItemType.mesh&&this.pageDataUtils.getItemEditEnable(i.id)}}const i=t.isEmpty(),s=i?0:1,r=i?0:16;this.wireframe.activeType=e.length?this.wireframe.activeType:"null",this.wireframe.box.copyFrom(t).expandByScalar(s),this.wireframe.totalBox.copyFrom(t).expandByScalar(r);const a=this.wireframe.box.corners;a.forEach((e,t)=>{this.wireframe.edges.push(new k((new _).copyFrom(e),(new _).copyFrom(a[(t+1)%4])))});const{scaleCircleSize:n,rotationCircleSize:o}=Pt.config.gestureHandlerConfig.transformGizmoConfig;this.wireframe.box.corners.forEach(e=>{this.wireframe.scaleCorners.push(new M(e,n));const t=(new _).subtractVectors(e,this.wireframe.box.getCenter()),i=(new _).copyFrom(this.wireframe.box.getCenter()).add((new _).copyFrom(t).normalize().multiply(t.length()+o-n));this.wireframe.rotationCorners.push(new M(i,o))})}setAdsorptionEnabled(e){this.enableAdsorption=e}},q=require("@pixi/graphics"),J=class extends P{constructor(){super(),m(this,"results",[]),m(this,"graphics",new q.Graphics),m(this,"absorptionResult",{}),this.type="adsorption"}get interactive(){return Pt.config.gestureHandlerConfig.adsorptionGizmoEnabled}set interactive(e){Pt.config.gestureHandlerConfig.adsorptionGizmoEnabled=e}initialize(){}preparationAction(){}getCursorState(){}preAction(){}action(){}cancelPreparation(){}actionKey(){}endActionKey(){}endAction(){}interruption(){}boxTranslationAdsorption(e,t,i,s=!0,r=!0){if(this.results=[],!this.interactive)return void console.warn("Adsorption gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if(t.isEmpty())return;const a=new _(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(e),n=t.clone().translate(a),o=n.getCenter();this.absorptionResult={},i.forEach(e=>{if(e.isEmpty())return;e.corners.forEach(e=>{n.corners.forEach(t=>{this.getPointAbsorption(t,e,s,r)}),this.getPointAbsorption(o,e,s,r)});const t=e.getCenter();this.getPointAbsorption(o,t,s,r),n.corners.forEach(e=>{this.getPointAbsorption(e,t,s,r)})})}pointTranslationAdsorption(e,t,i,s=!0,r=!0){if(this.results=[],!this.interactive)return void console.warn("Adsorption is not opened, use #SDK.setAdsorptionConfig() open this feature.");const a=new _(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(e),n=t.clone().add(a);this.absorptionResult={},i.forEach(e=>{this.getPointAbsorption(n,e,s,r)})}getPointAbsorption(e,t,i=!0,s=!0){i&&Math.abs(e.x-t.x)<Pt.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(e,t,"x"),s&&Math.abs(e.y-t.y)<Pt.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(e,t,"y")}refreshPointAbsorptionResult(e,t,i){const s=e[i]-t[i],r="x"===i?"xPoints":"yPoints";if(this.absorptionResult&&void 0===this.absorptionResult[i])this.absorptionResult[i]=s,this.absorptionResult[r]=[{point:e,targets:[t]}];else if(Math.abs(s)-Math.abs(this.absorptionResult[i]??0)<=.005)if(Math.abs(Math.abs(s)-Math.abs(this.absorptionResult[i]??0))<.05&&s*(this.absorptionResult[i]??0)>0)if(void 0===this.absorptionResult[r])this.absorptionResult[i]=s,this.absorptionResult[r]=[{point:e,targets:[t]}];else{const i=this.absorptionResult[r].filter(t=>t.point.equals(e));void 0===i||0===i.length?this.absorptionResult[r]?.push({point:e,targets:[t]}):i[0]?.targets.push(t)}else this.absorptionResult[i]=s,this.absorptionResult[r]=[{point:e,targets:[t]}]}refreshResults(){if(void 0===this.absorptionResult)return;const{x:e,y:t,xPoints:i,yPoints:s}=this.absorptionResult,r=new _(e??0,t??0);void 0!==e&&void 0!==i&&i.forEach(e=>{const t=e.point.clone().subtract(r),i=t.clone(),s=t.clone();e.targets.forEach(e=>{i.x=e.x,i.y=Math.min(i.y,e.y),s.x=e.x,s.y=Math.max(s.y,e.y)}),this.results.push(new k(i,s))}),void 0!==t&&void 0!==s&&s.forEach(e=>{const t=e.point.clone().subtract(r),i=t.clone(),s=t.clone();e.targets.forEach(e=>{i.y=e.y,i.x=Math.min(i.x,e.x),s.y=e.y,s.x=Math.max(s.x,e.x)}),this.results.push(new k(i,s))})}refreshRenderObject(){this.graphics.clear();const{lineWidth:e,lineColor:t}=Pt.config.gestureHandlerConfig.adsorptionGizmoConfig;this.results.forEach(i=>{this.graphics.lineStyle(e,t),this.graphics.drawLine(i)})}getRenderObjects(){return this.interactive?(this.refreshResults(),this.refreshRenderObject(),[this.graphics]):[]}clearAbsorptionResult(){this.results=[],this.absorptionResult={}}},X={};c(X,{Application:()=>te.Application,utils:()=>Q});var Z={};c(Z,{Application:()=>te.Application,utils:()=>Q});require("@pixi/polyfill");var Q=p(require("@pixi/utils"),1),ee=require("@pixi/interaction"),te=require("@pixi/app"),ie=require("@pixi/core"),se=require("@pixi/loaders"),re=require("@pixi/ticker");l(Z,require("@pixi/constants")),l(Z,require("@pixi/core")),l(Z,require("@pixi/display")),l(Z,require("@pixi/graphics")),l(Z,require("@pixi/loaders")),l(Z,require("@pixi/interaction")),l(Z,require("@pixi/math")),l(Z,require("@pixi/runner")),l(Z,require("@pixi/sprite")),l(Z,require("@pixi/text")),l(Z,require("@pixi/ticker")),l(Z,require("@pixi/settings")),Q.skipHello(),ie.Renderer.registerPlugin("interaction",ee.InteractionManager),ie.Renderer.registerPlugin("batch",ie.BatchRenderer),te.Application.registerPlugin(re.TickerPlugin),te.Application.registerPlugin(se.AppLoaderPlugin),Z.Graphics.prototype.drawBox=function(e){const t=e.getCorners();this.beginFill();for(let e=0;e<4;e++)this.moveTo(t[e].x,t[e].y),this.lineTo(t[(e+1)%4].x,t[(e+1)%4].y);this.endFill()},Z.Graphics.prototype.fillBox=function(e){const t=e.getSize();this.drawRect(e.min.x,e.min.y,t.x,t.y)},Z.Graphics.prototype.drawLine=function(e){if(this.beginFill(),e instanceof k)this.moveTo(e.start.x,e.start.y),this.lineTo(e.end.x,e.end.y);else for(let t=0;t<e.length-1;t++)this.moveTo(e[t].x,e[t].y),this.lineTo(e[t+1].x,e[t+1].y);this.endFill()},l(X,Z);var ae=class extends P{constructor(e){super(),m(this,"box",new B),m(this,"graphics",new X.Graphics),m(this,"PageDataUtils"),this.PageDataUtils=e,this.type="preference"}initialize(){throw new Error("Method not implemented.")}preparationAction(){}preAction(){}action(){}endAction(){}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){if(this.box=new B,!this.interactive)return void console.warn("Preference gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");const e=this.PageDataUtils.getPageData();(0,w.assertExist)(e);const{container:t}=this.PageDataUtils;if(t){const{zoom:i}=e.property,{offsetWidth:s,offsetHeight:r}=t,a=new _(s,r).multiply(i),n=this.PageDataUtils.getViewportLeftTopPosition().add(a.clone().divide(2));this.box=(new B).setFromCenterAndSize(n,a)}}refreshRenderObjects(){const{boxWidth:e,boxColor:t,markColor:i,markAlpha:s,safeAreaEnabled:r,safeAreaBoxColor:a,safeAreaBoxAlpha:n}=Pt.config.gestureHandlerConfig.preferenceGizmoConfig;this.graphics=new X.Graphics;const{offsetWidth:o,offsetHeight:c}=this.PageDataUtils.container.parentElement,h=new B(new _(0,0),new _(o,this.box.min.y)),l=new B(new _(0,this.box.min.y),new _(this.box.min.x,c)),p=new B(new _(this.box.min.x,this.box.max.y),new _(o,c)),m=new B(new _(this.box.max.x,this.box.min.y),new _(o,this.box.max.y));if(this.graphics.beginFill(i,s),this.graphics.fillBox(h),this.graphics.fillBox(l),this.graphics.fillBox(p),this.graphics.fillBox(m),this.graphics.endFill(),r){const e=this.PageDataUtils.getPageData();(0,w.assertExist)(e,"You must call SDK#run() first");const{viewProperties:t,activeData:i}=e,s=t[i.view??-1];if(s){const{size:e,safeArea:t,previewSafeAreas:i}=s,[r,o,c,h]=t,l=this.box.getSize(),p=r/e[1]*l.y,m=c/e[0]*l.x,d=h/e[0]*l.x,g=o/e[1]*l.y,{min:u,max:f}=this.box;this.graphics.beginFill(a,n);const y=new B(u,new _(f.x,u.y+p)),w=new B(new _(u.x,u.y+p),new _(u.x+m,f.y)),x=new B(new _(f.x-d,u.y+p),new _(f.x,f.y)),v=new B(new _(u.x+m,f.y-g),new _(f.x-d,f.y));this.graphics.fillBox(y),this.graphics.fillBox(w),this.graphics.fillBox(x),this.graphics.fillBox(v),this.graphics.endFill(),i.forEach(t=>{const{box:[i,s,r,a],color:n}=t,o=this.box.getSize(),c=new _(r/e[0]*o.x,a/e[1]*o.y),h=new _(i/e[0]*o.x+c.x/2,s/e[1]*o.y+c.y/2).add(u),l=(new B).setFromCenterAndSize(h,c),p=n?.[3]??.3,m=n?.slice(0,3)??[255,0,0],d=m[0]<<16|m[1]<<8|m[2];this.graphics.beginFill(d,p),this.graphics.fillBox(l),this.graphics.endFill()})}}this.graphics.lineStyle(e,t),this.graphics.drawBox(this.box)}getRenderObjects(){return Pt.config.gestureHandlerConfig.preferenceGizmoEnabled?(this.refreshRenderObjects(),[this.graphics]):[]}get interactive(){return Pt.config.gestureHandlerConfig.preferenceGizmoEnabled}set interactive(e){Pt.config.gestureHandlerConfig.preferenceGizmoEnabled=e}},ne="https://mdn.alipayobjects.com/rms/uri/file/as/0.0.6",oe={normal:{type:"preset",content:"default"},rotation:{type:"svg",content:"default",url:`${ne}/icons/cursor-rotate-32.svg`},scale:{type:"svg",content:"default",url:`${ne}/icons/cursor-scale-32.svg`}};function ce(e,t="asserts failed"){if(!e)throw new Error(t)}function he(e,t,...i){const s=t.reduce((e,t)=>e?`${e} ${t}`:t,""),r="color: #108ee9;";switch(e){case"error":console.error(`%c[${s}]`,r,...i);break;case"info":console.info(`%c[${s}]`,r,...i);break;case"debug":console.debug(`%c[${s}]`,r,...i);break;case"warn":console.warn(`%c[${s}]`,r,...i);break;default:console.log(`%c[${s}]`,r,...i)}}function le(e,t){if(Object.is(e,t))return!0;if(typeof e!=typeof t)return!1;if(null===e||"object"!=typeof e)return!1;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(Array.isArray(e)!==Array.isArray(t))return!1;const i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(const s of i){if(!Object.prototype.hasOwnProperty.call(t,s))return!1;if(!le(e[s],t[s]))return!1}return!0}var pe=class extends P{constructor(e,t){super(),m(this,"result",{type:"invalid"}),m(this,"interactionParam",{type:"none"}),m(this,"graphics",new X.Graphics),m(this,"_pageDataUtils"),m(this,"_eventEmitter"),m(this,"type","picture-cut"),m(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=e,this._eventEmitter=t}get interactive(){return Pt.config.gestureHandlerConfig.pictureCutGizmoEnabled}set interactive(e){e!==Pt.config.gestureHandlerConfig.pictureCutGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture cut gizmo can not open."):Pt.config.gestureHandlerConfig.pictureCutGizmoEnabled=e)}initialize(){}preparationAction(e){if(!this.interactive)return;const t=new _(e.offsetX,e.offsetY),i=new _(e.clientX,e.clientY);return this.refreshInteractionType(t,i),"picture-cut"}preAction(e,t){if(this.interactive&&"none"!==this.interactionParam.type)return"picture-cut"}action(e){if(!this.interactive||"none"===this.interactionParam.type||"invalid"===this.result.type)return;const t=new _(e.clientX,e.clientY),{startMouse:i,box:s}=this.interactionParam,r=(new _).subtractVectors(t,i),{itemBox:{min:a,max:n}}=this.result;switch(this.interactionParam.type){case"move":{const{min:e,max:t}=s,i=a.x-e.x,o=n.x-t.x,c=a.y-e.y,h=n.y-t.y;r.x=Math.min(Math.max(r.x,i),o),r.y=Math.min(Math.max(r.y,c),h);const l=s.clone().translate(r);this.result.cutBox.copyFrom(l),this._eventEmitter.emit("cutBoxChange",this.result.cutBox.clone());break}case"scale":{const{index:e}=this.interactionParam,t=new _;t.x=Math.min(Math.max(s.corners[e].x+r.x,a.x),n.x),t.y=Math.min(Math.max(s.corners[e].y+r.y,a.y),n.y);const i=s.corners[(e+2)%4];this.result.cutBox.copyFrom((new B).setFromVec2ArrayWithOutCorners([t,i])),this._eventEmitter.emit("cutBoxChange",this.result.cutBox.clone());break}case"direction-scale":{const{index:e}=this.interactionParam,t=s.corners[e].clone();e%2==0?(r.x=Math.min(Math.max(t.x+r.x,a.x),n.x)-t.x,r.y=0):(r.x=0,r.y=Math.min(Math.max(t.y+r.y,a.y),n.y)-t.y);const i=s.corners.map((t,i)=>[e,(e+1)%4].includes(i)?t.clone().add(r):t.clone());this.result.cutBox.copyFrom((new B).setFromVec2Array(i)),this._eventEmitter.emit("cutBoxChange",this.result.cutBox.clone());break}}}endAction(e){if(!this.interactive||"none"===this.interactionParam.type)return;const t=new _(e.offsetX,e.offsetY),i=new _(e.clientX,e.clientY);return this.refreshInteractionType(t,i),"picture-cut"}interruption(){this.interactionParam={type:"none"}}actionKey(e){}endActionKey(e){}cancelPreparation(){this.interactionParam={type:"none"}}refreshResults(){if(this.interactive){const e=this._pageDataUtils.getPageData();if(function(e,t="item doesn't exist"){if(null==e)throw new Error(t)}(e,"You must call SDK#run() first"),1!==e.activeData.selectedItems.length)console.warn("Picture Cut Gizmo can edit one picture at a time.");else if("invalid"===this.result.type){const t=this._pageDataUtils.getViewBoxById(e.activeData.selectedItems[0]);this.result={type:"valid",itemBox:t.clone(),cutBox:t.clone()}}else{const t=this._pageDataUtils.getViewBoxById(e.activeData.selectedItems[0]),i=t.getCenter().subtract(this.result.itemBox.getCenter()),s=t.getSize().x/this.result.itemBox.getSize().x;this.result.itemBox.scale(s),this.result.cutBox.scale(s),this.result.itemBox.translate(i),this.result.cutBox.translate(i)}}else this.result={type:"invalid"}}refreshRenderObjects(){if(this.graphics.clear(),!this.interactive||"invalid"===this.result.type)return;const{maskColor:e,maskAlpha:t,cutBoxLineWidth:i,cutBoxLineColor:s,cutBoxLineAlpha:r,itemBoxLineWidth:a,itemBoxLineColor:n,itemBoxLineAlpha:o,cutBoxCornerRadius:c,cutBoxCornerFillColor:h,cutBoxCornerLineWidth:l,cutBoxCornerLineColor:p,cutBoxCornerLineAlpha:m}=Pt.config.gestureHandlerConfig.pictureCutGizmoConfig,{cutBox:d,itemBox:g}=this.result,{min:u,max:f}=d,{min:y,max:w}=g,x=new B(y.clone(),new _(w.x,u.y)),v=new B(new _(y.x,u.y),new _(u.x,w.y)),I=new B(new _(f.x,u.y),new _(w.x,f.y)),P=new B(new _(u.x,f.y),w.clone());this.graphics.beginFill(e,t),this.graphics.fillBox(x),this.graphics.fillBox(v),this.graphics.fillBox(I),this.graphics.fillBox(P),this.graphics.endFill(),this.graphics.lineStyle(a,n,o),this.graphics.drawBox(g),this.graphics.lineStyle(i,s,r),this.graphics.drawBox(d),this.graphics.beginFill(h),this.graphics.lineStyle(l,p,m),d.corners.forEach(e=>{this.graphics.drawCircle(e.x,e.y,c)}),this.graphics.endFill()}refreshCursorResult(e,t=0){switch(e){case"scale":case"direction-scale":this.cursorResult={type:"scale",angle:t};break;case"move":case"none":this.cursorResult={type:"normal",angle:0}}}getRenderObjects(){return this.interactive?(this.refreshRenderObjects(),[this.graphics]):[]}refreshInteractionType(e,t){if(this.interactionParam.type="none",!this.interactive||"invalid"===this.result.type)return;const{cutBox:i}=this.result;let s=!1,r=0;i.corners.forEach((a,n)=>{s||a.distanceTo(e)<Pt.config.gestureHandlerConfig.pictureCutGizmoConfig.scaleInteractionDistance&&(s=!0,this.interactionParam={type:"scale",index:n,box:i.clone(),startMouse:t},r=Math.PI/2*(n+1))}),i.corners.forEach((a,n)=>{if(s)return;const o=new k(a.clone(),i.corners[(n+1)%4]),c=e.distanceToLine(o);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){s=!0;const e=o.at(c.t);this.interactionParam={type:"direction-scale",index:n,point:e,box:i.clone(),startMouse:t},r=Math.PI/2*n+Math.PI/4}}),i.containsPoint(e)&&!s&&(this.interactionParam={type:"move",point:e.clone(),box:i.clone(),startMouse:t},s=!0),this.refreshCursorResult(this.interactionParam.type,r*z)}getCutBox(){if(this.interactive&&"invalid"!==this.result.type)return this.result.cutBox.clone()}},me=class{constructor(e){m(this,"wireframeApplication"),m(this,"gizmos",[]),m(this,"activeGizmo"),m(this,"selectorGizmo"),m(this,"transformGizmo"),m(this,"controlGizmo"),m(this,"preferenceGizmo"),m(this,"pictureCutGizmo"),m(this,"spaceClickTime"),m(this,"spaceEmit",!1),m(this,"_ignoreInteraction",!1),m(this,"clickButtons",0),m(this,"container"),m(this,"_emitter"),m(this,"clickTime",0),m(this,"firstClick",!0),m(this,"dblclickTimeSpan",500),this.gizmos=[];const{width:t,height:i}=e.getBoundingClientRect();this.wireframeApplication=new I.Application({backgroundAlpha:0,width:t,height:i,resolution:1,antialias:!0}),this.container=e,this.wireframeApplication.view.style.position="absolute",this.wireframeApplication.view.id="wireframeApplicationCanvas",e.appendChild(this.wireframeApplication.view),this.wireframeApplication.stage.sortableChildren=!0,this.registerViewEvent(),async function(){await Promise.all(Object.entries(oe).map(([e,t])=>{const{url:i}=t;if(i)return fetch(i).then(e=>e.text()).then(i=>oe[e]={...t,content:i})})).catch(e=>{console.error(e)})}()}set ignoreInteraction(e){e!==this._ignoreInteraction&&(this._ignoreInteraction=e,e&&(this.activeGizmo?.cancelPreparation(),this.activeGizmo=void 0))}get ignoreInteraction(){return this._ignoreInteraction}resize(){this.wireframeApplication&&(this.wireframeApplication.resizeTo=this.container,this.refresh(),this.render())}refresh(){this.gizmos.forEach(e=>{e.refreshResults()})}render(){this.refresh(),this.wireframeApplication.stage?.removeChildren();const e=(this.ignoreInteraction?[this.preferenceGizmo]:this.gizmos).flatMap(e=>e.getRenderObjects());this.wireframeApplication.stage.addChild(...e),this.wireframeApplication.render();const t=this.activeGizmo instanceof Y||this.activeGizmo instanceof pe?this.activeGizmo.cursorResult:void 0;this.setCursor(t)}init(e,t){this.gizmos=[],this.controlGizmo=new N(e),this.selectorGizmo=new K(e);const i=new J;this.transformGizmo=new Y(e,i,this.selectorGizmo),this.preferenceGizmo=new ae(e),this.pictureCutGizmo=new pe(e,t),this.gizmos.push(this.pictureCutGizmo,this.transformGizmo,this.selectorGizmo,this.controlGizmo,this.preferenceGizmo,i),this._emitter=t,this.initEvents()}initEvents(){this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),document.addEventListener("keydown",this.onKeyDown),document.addEventListener("keyup",this.onKeyUp)}registerViewEvent(){this.wireframeApplication.view.onmousedown=e=>{this.onMouseDown(e)},this.wireframeApplication.view.onmousemove=e=>{0===e.buttons&&this.onMouseMove(e)},this.wireframeApplication.view.onmouseout=()=>{this.selectorGizmo?.cancelPreparation(),this.render()},this.wireframeApplication.view.onwheel=e=>{this.onWheel(e)},this.wireframeApplication.view.oncontextmenu=e=>{e.stopPropagation(),e.preventDefault()}}onMouseDown(e){if(!this.ignoreInteraction){if(this.clickButtons=e.buttons,this.firstClick=!!this.firstClick&&Date.now()-this.clickTime<this.dblclickTimeSpan,this.firstClick){if(this.gizmos.forEach(t=>{if(t.interactive)if(void 0===this.activeGizmo){const i=t.preparationAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===i)}else t.cancelPreparation()}),this.activeGizmo instanceof Y)this.activeGizmo.preAction(e,!0);else{this.activeGizmo=void 0;const t=this.selectorGizmo?.preAction(e,!0);this.activeGizmo=this.gizmos.find(e=>e.type===(t??"null"))}this.firstClick=!1}else{void 0===this.activeGizmo&&this.gizmos.forEach(t=>{if(!t.interactive||this.activeGizmo)return;const i=t.preparationAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===i)});const t=this.activeGizmo?.preAction(e);"selector"!==t&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.activeGizmo=this.gizmos.find(e=>e.type===t),this.clickTime=Date.now(),this.firstClick=!0}this.render(),document.addEventListener("mousemove",this.onMouseMove),document.addEventListener("mouseup",this.onMouseUp)}}onMouseMove(e){this.ignoreInteraction||(0!==e.buttons?this.activeGizmo?.action(e):this.spaceEmit||(this.activeGizmo=void 0,this.gizmos.forEach(t=>{if(t.interactive)if(void 0===this.activeGizmo){const i=t.preparationAction(e);"selector"!==i&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.activeGizmo=this.gizmos.find(e=>e.type===i)}else t.cancelPreparation()})),this.render())}onWheel(e){this.ignoreInteraction||(e.preventDefault(),this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.controlGizmo?.action(e))}onMouseUp(e){if(this.ignoreInteraction)return;const t=this.activeGizmo?.endAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===t),void 0===this.activeGizmo&&1===this.clickButtons&&this.gizmos.forEach(t=>{if(t.interactive)if(void 0===this.activeGizmo){const i=t.preparationAction(e);this.activeGizmo=this.gizmos.find(e=>e.type===i)}else t.cancelPreparation()}),this.clickButtons=0,this.render(),document.removeEventListener("mousemove",this.onMouseMove),document.removeEventListener("mouseup",this.onMouseUp)}onKeyDown(e){if(!this.ignoreInteraction){if("space"!==e.code.toLocaleLowerCase()||this.activeGizmo?.active)this.gizmos.forEach(t=>{t.actionKey(e)});else{if(this.spaceEmit)return;void 0===this.spaceClickTime?this.spaceClickTime=Date.now():Date.now()-this.spaceClickTime>300&&(this.spaceEmit=!0,this.activeGizmo=this.controlGizmo,this.activeGizmo?.actionKey(e))}this.render()}}onKeyUp(e){this.ignoreInteraction||(this.gizmos.forEach(t=>{t.endActionKey(e)}),"space"===e.code.toLocaleLowerCase()&&(this.spaceClickTime=void 0,this.spaceEmit=!1),this.render())}dispose(){this.wireframeApplication.destroy(),this.gizmos=[],this.activeGizmo=void 0}setCursor(e){let t="default";if(e?.type&&["scale","rotation"].includes(e.type)){const i=oe[e.type];if("svg"===i.type){const s=16;t=encodeURIComponent(i.content.replace("rotate(0.00)",`rotate(${e.angle??0})`)),t=`url("data:image/svg+xml,${t}") ${s} ${s}, auto`}else t=i.content}this.wireframeApplication.view.style.cursor=t}openPictureCutGizmo(){if(!this.pictureCutGizmo)return;const e=JSON.parse(JSON.stringify(Pt.config));this.pictureCutGizmo.interactive=!0,this.pictureCutGizmo.interactive&&(this.transformGizmo.interactive=!1,this.selectorGizmo.interactive=!1);const t=JSON.parse(JSON.stringify(Pt.config));this.refresh(),this.render(),this._emitter?.emit("sdkConfigChange",e,t)}closePictureCutGizmo(){if(!this.pictureCutGizmo)return;const e=JSON.parse(JSON.stringify(Pt.config));this.pictureCutGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const t=JSON.parse(JSON.stringify(Pt.config));this.refresh(),this.render(),this._emitter?.emit("sdkConfigChange",e,t)}getCutBox(){return this.pictureCutGizmo?.getCutBox()??new B}},de=require("@galacean/effects"),ge=class{constructor(e){m(this,"plane",new G),m(this,"ray",new W),m(this,"viewportParam",{width:0,height:0,viewWidth:0,viewHeight:0,panelWidth:0,panelHeight:0,scale:1,ratio:1,translation:new _,rulerWidth:0}),m(this,"cameraParam",{position:new F,rotation:new F,focusPosition:new F,focusRotation:new F,viewProjectionMatrix:new U,inverseViewProjectionMatrix:new U}),m(this,"pageDataUtils"),this.pageDataUtils=e}refreshViewParam(){const e=this.pageDataUtils.getPageData();(0,de.assertExist)(e,"You must run SDK first");const t=new _(this.pageDataUtils.container.offsetWidth,this.pageDataUtils.container.offsetHeight),{zoom:i,translation:s}=e.property;this.viewportParam.width=t.x,this.viewportParam.height=t.y,this.viewportParam.viewWidth=t.x,this.viewportParam.viewHeight=t.y,this.viewportParam.panelWidth=t.x,this.viewportParam.panelHeight=t.y,this.viewportParam.scale=i,this.viewportParam.ratio=1,this.viewportParam.translation=new _(...s.map(e=>e/i)),this.viewportParam.rulerWidth=0}refreshCameraParam(){const{player:e}=this.pageDataUtils,t=e?.getCompositions()?.[0]?.camera;if(t){const e=U.fromArray(t.getViewProjectionMatrix().toArray()),i=U.fromArray(t.getViewMatrix().toArray()).invert(),s=new V;i.decompose(this.cameraParam.position,s,new F),this.cameraParam.rotation=(new R).setFromQuaternion(s).toDegreeVector3(),this.cameraParam.focusPosition=new F(...this.cameraParam.position.toVector2().toArray(),this.cameraParam.position.z>0?0:2*this.cameraParam.position.z),this.cameraParam.focusPosition.applyEuler((new R).setFromDegreeVector3(this.cameraParam.rotation.clone()),this.cameraParam.position),this.cameraParam.focusRotation=(new R).setFromQuaternion(s.invert()).toDegreeVector3(),this.cameraParam.viewProjectionMatrix=e,this.cameraParam.inverseViewProjectionMatrix=U.fromArray(t.getInverseViewProjectionMatrix().toArray())}}initInteractionPlane(e,t){e??(e=this.cameraParam.focusPosition),t??(t=(new R).setFromDegreeVector3(this.cameraParam.rotation));const i=new F(0,0,1).applyEuler(t);this.plane.setFromNormalAndCoplanarPoint(e,i)}getWorldSizeByViewSize(e,t=!0,i){const s=t||!i?(new R).setFromDegreeVector3(this.cameraParam.rotation):(new R).setFromQuaternion((new V).setFromRotationMatrix(this.pageDataUtils.getItemTransformById(i).matrix)),r=i?(new F).setFromMatrixPosition(this.pageDataUtils.getItemTransformById(i).matrix):this.cameraParam.focusPosition,a=this.projectPoint(r.clone()),n=this.getWorldPositionByViewPoint(a.add(e));if(!n)return console.warn("size is out of bounds."),new F(0,0,0);const o=(new R).setFromQuaternion((new V).setFromEuler(s).invert());return(t||!i?n.applyEuler(o,r):n).subtract(r)}projectPoint(e){const{panelWidth:t,panelHeight:i,scale:s}=this.viewportParam,r=this.pageDataUtils.getViewportLeftTopPosition();return(new _).copyFrom(e.applyMatrix(this.cameraParam.viewProjectionMatrix).toVector2()).toViewCoordinate(t*s,i*s).add(r)}getWorldPositionByViewPoint(e){const{position:t,inverseViewProjectionMatrix:i}=this.cameraParam,s=this.getViewPositionByScreenPosition(e),r=(new H).setFromCamera(s,{position:t,inverseViewProjectMatrix:i}).rayCastPlane(this.plane);return r?.point}getViewPositionByScreenPosition(e){const{panelWidth:t,panelHeight:i,scale:s}=this.viewportParam;return new _(e.x/(t*s)*2-1,-e.y/(i*s)*2+1)}getScreenSizeByPixelSize(e){const t=this.viewportParam.width/this.viewportParam.viewWidth,i=e.clone();return i.multiply(t||1),i}getPixelSizeByScreenSize(e){const t=this.viewportParam.viewWidth/this.viewportParam.width,i=e.clone();return i.multiply(t||1),i}},ue=require("@ffmpeg/ffmpeg"),fe=require("@ffmpeg/util"),ye={SCRIPT:"https://gw.alipayobjects.com/os/gltf-asset/99531561844014/img2webp.js",WASM:"https://mdn.alipayobjects.com/mars/uri/file/as/0.0.4/wasm/img2webp/img2webp.wasm"},we={CLASSWORKER:"https://mdn.alipayobjects.com/rms/uri/file/as/ffmpeg/core/0.12.10/dist/worker.js",DEFAULT:{CORE:"https://gw.alipayobjects.com/os/lib/ffmpeg/core/0.12.10/dist/esm/ffmpeg-core.js",WASM:"https://gw.alipayobjects.com/os/lib/ffmpeg/core/0.12.10/dist/esm/ffmpeg-core.wasm"},MT:{CORE:"https://gw.alipayobjects.com/os/lib/ffmpeg/core-mt/0.12.10/dist/esm/ffmpeg-core.js",WASM:"https://gw.alipayobjects.com/os/lib/ffmpeg/core-mt/0.12.10/dist/esm/ffmpeg-core.wasm",WORKER:"https://gw.alipayobjects.com/os/lib/ffmpeg/core-mt/0.12.10/dist/esm/ffmpeg-core.worker.js"}};function xe(e,t,i,s){const r=t.getContext("2d");ce(r),r.clearRect(0,0,t.width,t.height),i&&(r.save(),r.fillStyle=i,r.fillRect(0,0,t.width,t.height),r.restore()),s&&r.drawImage(s,0,0,s.width,s.height,0,0,t.width,t.height),r.drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height)}async function ve(){return new Promise(async(e,t)=>{try{await function(e,t={}){return new Promise((i,s)=>{const r=document.querySelector(`script[src="${e}"]`);if(r)return"true"===r.dataset.loaded?void i(r):(r.addEventListener("load",()=>{i(r)}),void r.addEventListener("error",()=>{s(new Error(`Script already failed: ${e}`))}));const a=document.createElement("script");a.src=e,a.async=!0,Object.keys(t).forEach(e=>{a.setAttribute(e,t[e]??"")}),a.onload=()=>{a.dataset.loaded="true",i(a)},a.onerror=()=>{s(new Error(`Failed to load script: ${e}`))},document.head.appendChild(a)})}(ye.SCRIPT,{crossOrigin:"anonymous"});const t={locateFile:(e,t)=>e.endsWith("createWebPCore.wasm")?ye.WASM:t+e};e(await window.createWebPCore(t))}catch(e){t(e)}})}function Ie(e){for(const t of e.getCompositions())for(const e of t.textures)e.isDestroyed||e.dispose();e.disposed||e.destroyCurrentCompositions()}function Pe(e=[750,750]){const t=(0,w.generateGUID)(),i={id:(0,w.generateGUID)(),dataType:w.spec.DataType.TimelineAsset,tracks:[]},s={id:(0,w.generateGUID)(),item:{id:t},dataType:w.spec.DataType.CompositionComponent,items:[],timelineAsset:{id:i.id},sceneBindings:[]},r={id:t,name:"AI 设计师画布",duration:999,startTime:0,endBehavior:w.spec.EndBehavior.forward,previewSize:[...e],camera:{fov:60,far:40,near:.1,clipMode:1,position:[0,0,8],rotation:[0,0,0]},components:[{id:s.id}]},a={version:w.spec.JSONSceneVersion.LATEST,playerVersion:{web:"2.7.3",native:"10.7.6"},type:"ge",compositionId:t,compositions:[],images:[],plugins:[],bins:[],textures:[],items:[],components:[],materials:[],shaders:[],geometries:[],animations:[],miscs:[]};return a.miscs.push(i),a.compositions.push(r),a.components.push(s),a}function De(e,t){e.items.push(t.item),e.miscs.push(...t.tracks,...t.playableAssets),e.components.push(...t.components);const i=e.compositions.find(t=>t.id===e.compositionId)??e.compositions[0],s=e.components.find(e=>e.id===i.components[0]?.id);if(s){s.items.push({id:t.item.id});const i={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ObjectBindingTrack,children:[],clips:[]};for(const e of t.tracks)i.children.push({id:e.id});e.miscs.find(e=>e.id===s.timelineAsset.id).tracks.push({id:i.id}),s.sceneBindings.push({key:{id:i.id},value:{id:t.item.id}}),e.miscs.push(i)}}function be(e,t,i){var s;const r=e.items.findIndex(e=>e.id===t);if(r<0)return;!function(e,t){var i;const s=e.items.findIndex(e=>e.id===t);if(!e.items[s]?.parentId)return;const r=e.items.find(t=>t.id===e.items[s].parentId);if(!r)return void delete e.items[s].parentId;const{position:a={x:0,y:0,z:0},eulerHint:n=new F,scale:o=new F(1,1,1)}=r.transform;(i=e.items[s]).transform??(i.transform={position:{x:0,y:0,z:0},eulerHint:{x:0,y:0,z:0},scale:{x:1,y:1,z:1},size:{x:1,y:1}}),e.items[s].transform.position.x+=a.x,e.items[s].transform.position.y+=a.y,e.items[s].transform.position.z+=a.z,e.items[s].transform.eulerHint.x+=n.x,e.items[s].transform.eulerHint.y+=n.y,e.items[s].transform.eulerHint.z+=n.z,e.items[s].transform.scale.x*=0===o.x?1:o.x,e.items[s].transform.scale.y*=0===o.y?1:o.y,e.items[s].transform.scale.z*=0===o.z?1:o.z}(e,t);const a=e.items.find(e=>e.id===i);if(!a)return;e.items[r].parentId=i;const{position:n={x:0,y:0,z:0},eulerHint:o=new F,scale:c=new F(1,1,1)}=a.transform;(s=e.items[r]).transform??(s.transform={position:{x:0,y:0,z:0},eulerHint:{x:0,y:0,z:0},scale:{x:1,y:1,z:1},size:{x:1,y:1}}),e.items[r].transform.position.x-=n.x,e.items[r].transform.position.y-=n.y,e.items[r].transform.position.z-=n.z,e.items[r].transform.eulerHint.x-=o.x,e.items[r].transform.eulerHint.y-=o.y,e.items[r].transform.eulerHint.z-=o.z,e.items[r].transform.scale.x/=0===c.x?1:c.x,e.items[r].transform.scale.y/=0===c.y?1:c.y,e.items[r].transform.scale.z/=0===c.z?1:c.z}var Ce,ze,Ee,Se,Ae,Te,_e,ke,Be,Me,Ve,Fe,Ue,Re,Ge,We,He,Ne,Le,Oe=require("@galacean/effects"),Ke=class{static createEmpty(e,t=null,i="NewVFXItem"){const s=je.createVFXItem(e,t,i);return s.type=Oe.spec.ItemType.null,s}static createSprite(e,t=null,i="NewSpite"){const s=je.createVFXItem(e,t,i,Oe.SpriteComponent);return s.type=Oe.spec.ItemType.sprite,s}static createText(e,t=null,i="NewText"){const s=je.createVFXItem(e,t,i,Oe.TextComponent);return s.type=Oe.spec.ItemType.text,s}},je=class{static createVFXItem(e,t=null,i="NewVFXItem",...s){const r=new Oe.VFXItem(e.getEngine());r.name=i;for(const e of s)r.addComponent(e);return e.addItem(r),t&&r.setParent(t),r}},$e=class{constructor(e,t,i,s){m(this,"sdk"),m(this,"player"),m(this,"container"),m(this,"emitter"),m(this,"interactionUtils"),this.player=e,this.sdk=s,this.container=t,this.emitter=i}init(){this.interactionUtils=new ge(this)}getPageData(){return this.sdk.pageData}getCurrentComposition(){return this.player.getCompositions()[0]}isItemSelected(e){return!!this.sdk.pageData?.activeData.selectedItems?.find(t=>t===e)}getItemEditEnable(e){const t=this.getViewItemById(e);if(!t||!this.sdk.pageData||this.sdk.pageData.viewProperties[this.sdk.pageData.activeData.view??0]?.ignoreInteraction)return!1;const i=this.sdk.pageData.time,{duration:s,delay:r,endBehavior:a}=t;return i>=r&&(i<r+s||a===w.spec.EndBehavior.restart)}getItemShow(e){const t=this.getViewItemById(e);if(!this.sdk.pageData||!t?.property.visible)return!1;const i=this.sdk.pageData.time,{duration:s,delay:r,endBehavior:a}=t;return i>=r&&(i<r+s||a===w.spec.EndBehavior.restart||a===w.spec.EndBehavior.freeze)}addSelectedItems(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const t=this.sdk.pageData.activeData.selectedItems??[];e.forEach(e=>{O(t,e)}),this.emitter.emit("selectedItemChange",t)}removeSelectedItems(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const t=this.sdk.pageData.activeData.selectedItems??[];for(const i of e){const e=t.findIndex(e=>e===i);e>=0&&t.splice(e,1)}this.emitter.emit("selectedItemChange",t)}clearSelectedItems(){this.sdk.pageData&&(this.sdk.pageData.activeData.selectedItems=[],this.emitter.emit("selectedItemChange",[]))}getSelectedItems(){const e=this.sdk.pageData?.activeData.selectedItems;return this.sdk.pageData?.items.filter(t=>e?.find(e=>e===t.id))??[]}addPreSelectedItem(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=e,this.emitter.emit("preSelectedItemChange",e)}clearPreSelectedItem(){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=void 0,this.emitter.emit("preSelectedItemChange",void 0)}getPreSelectedItem(){const e=this.getPageData();(0,w.assertExist)(e,"You must call SDK#run() first");const t=e.activeData.preSelectedItem;return t?this.getViewItemById(t):void 0}getViewItemById(e){return this.sdk.pageData?.items.find(t=>t.id===e)}getPlayerSizeByParent(e,t){const[i,s]=e,[r,a]=t;let n=s,o=n/(a||1624)*(r||750);return o>i&&(n=i/o*s,o=i),[o,n]}async loadScene(e){Ie(this.player);const t=this.sdk.pageData?.viewProperties[e];if(!t||!this.sdk.pageData)return void console.warn(`This page does not have ${e} view property.`);const{scene:i,size:s}=t,r=this.container.parentElement?.offsetWidth??300,a=this.container.parentElement?.offsetHeight??300,[n,o]=this.getPlayerSizeByParent([r,a],s);this.container.style.width=`${n}px`,this.container.style.height=`${o}px`,this.sdk.pageData.activeData={view:e,selectedItems:[],preSelectedItem:void 0},this.player.resize();const c=JSON.parse(JSON.stringify(i)),h=await this.player.loadScene(c,{autoplay:!1});this.player.gotoAndStop(this.sdk.pageData.time),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,h.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}refreshPageTime(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.time=e}pageZoom(e){var t;(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{zoom:i}=this.sdk.pageData.property;(t=this.sdk.pageData.property).zoom??(t.zoom=1);const s=b(e,-.1,.1),r=S(b(i+s,.3,10),2);this.sdk.pageData.property.zoom=r,this.container.style.scale=`${r}`,this.emitter.emit("zoomChange",r)}setPageZoom(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const t=S(b(e,.3,10),2);this.sdk.pageData.property.zoom=t,this.container.style.scale=`${t}`,this.emitter.emit("zoomChange",e)}refreshInteractionParam(){this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam()}pageMove(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const[t,i]=this.sdk.pageData.property.translation??[0,0],s=t+e.x,r=i+e.y;this.sdk.pageData.property.translation=[s,r],this.refreshInteractionParam(),this.container.style.translate=`${s}px ${r}px`,this.emitter.emit("pageDataChange",this.sdk.pageData)}rotateItem(e,t){const i=this.getPlayerItemById(e);i&&(i.rotate(...t.toArray()),this.transformSceneItem(e,"rotation",t.toArray()),this.refreshViewItem(e),this.emitter.emit("itemPropertyChange",{id:e,property:"rotation"}))}moveItem(e,t){const i=this.getPlayerItemById(e);if(i){const s=(new U).copyFrom(i.transform.getParentMatrix()??new U);s.setPosition(new F);const r=t.clone().applyMatrix(s.invert());i.translate(...r.toArray()),i.transform.updateLocalMatrix(),this.transformSceneItem(e,"position",r.toArray()),this.refreshViewItem(e),this.emitter.emit("itemPropertyChange",{id:e,property:"translation"})}}scaleItem(e,t){const i=this.getPlayerItemById(e);i&&(i.scale(...t.toArray()),this.transformSceneItem(e,"scale",t.toArray()),this.refreshViewItem(e),this.emitter.emit("itemPropertyChange",{id:e,property:"size"}))}getItemTransformById(e){const t={matrix:new U,parentMatrix:new U},i=this.getPlayerItemById(e);if(void 0!==i?.transform){i.transform.updateLocalMatrix();const e=U.fromArray(i.composition?.transform.getWorldMatrix().elements??[]).invert();t.matrix=e.clone().multiply(U.fromArray(i.transform.getWorldMatrix().elements)),t.parentMatrix=e.clone().multiply(U.fromArray(i.transform.parentTransform?.getWorldMatrix().elements??(new U).toArray()))}return t}addViewItemsByItems(e,t,i){const s=t=>{t.forEach(t=>{e.find(e=>e.id===t.getInstanceId())||e.push(this.createViewItemByPlayerItem(t,i))})};for(const i of t)Pt.config.pageConfig.filterItemNames.includes(i.name)||(s([i]),this.addViewItemsByItems(e,i.children,i.getInstanceId()))}createViewItemByPlayerItem(e,t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{transform:i,composition:s,isVisible:r}=e;i.updateLocalMatrix();const a=(new U).copyFrom(s?.transform.getWorldMatrix()??(new U).identity()).invert().multiply(i.getWorldMatrix()),n=new F,o=new V,c=new F;a.decompose(n,o,c);const h=(new R).setFromQuaternion(o);h.x=Number.isNaN(h.x)?0:h.x,h.y=Number.isNaN(h.y)?0:h.y,h.z=Number.isNaN(h.z)?0:h.z,this.interactionUtils.initInteractionPlane(n,h);const l=this.interactionUtils.projectPoint(n).toArray().map(e=>S(e,2)),p=h.toArray().map(e=>S(e,2)),m=c.toArray().map(e=>S(e,2)),d=i.size.toArray(),g={position:l,rotation:p,size:this.getPixelSizeByWorldSize([m[0]*d[0],m[1]*d[1],m[2]],e).map(e=>S(e,2)),visible:r,keyPropertyEditing:!1};switch(e.type){case w.spec.ItemType.sprite:{const t=this.getActiveScene()?.scene;if(t){t.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(g.keyPropertyEditing||!("renderer"in e)||!("texture"in e.renderer)||!e.renderer.texture)return;const i=t.textures?.find(t=>t.id===e.renderer.texture.id);if(i&&"source"in i&&i.source){const e=t?.images.find(e=>e.id===i.source.id);g.keyPropertyEditing=!!e?.template;const s=e?.url??"";s&&Object.assign(g,{image:s})}})}break}case w.spec.ItemType.text:case w.spec.ItemType.richtext:{const t=this.getActiveScene()?.scene;if(g.keyPropertyEditing=!0,t){t.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(![w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType))return;const{textAlign:t,textColor:i,text:s,fontWeight:r,fontFamily:a}=e.options;Object.assign(g,{alignment:t,color:i,weight:r,text:s,font:a})})}break}}return{id:e.getInstanceId(),name:e.name,parentId:e.parentId??t,children:[],type:e.type,duration:e.duration,delay:e.defination.delay,endBehavior:e.endBehavior,property:g}}getViewBoxById(e){const t=new B,i=this.getPlayerItemById(e),s=this.getChildrenPlayerItems(i);return i&&s?this.getViewBoxByPlayerItem(i,s):t}getItemViewAnchor(e){const t=this.getPlayerItemById(e);if(t?.transform?.anchor){const e=(new F).copyFrom(t.transform.anchor).applyMatrix((new U).copyFrom(t.transform.getWorldMatrix()));return this.interactionUtils.projectPoint(e).round(2)}}getChildrenPlayerItems(e){const t=[];return e?(t.push(...this.player.getCompositions()[0].items.filter(t=>t.parentId===e.getInstanceId())),t.push(...t.flatMap(e=>this.getChildrenPlayerItems(e))),t):[]}getChildrenSceneItemIds(e,t){const i=[];return i.push(...t.items.filter(t=>t.parentId===e).map(e=>e.id)),i.push(...i.flatMap(e=>this.getChildrenSceneItemIds(e,t))),i}getViewBoxByPlayerItem(e,t){const i=new B;switch(e.type){case w.spec.ItemType.sprite:case w.spec.ItemType.plugin:case w.spec.ItemType.video:case w.spec.ItemType.richtext:case w.spec.ItemType.text:case w.spec.ItemType.shape:{const{transform:s,composition:r}=e;s.updateLocalMatrix();const{size:a}=s,n=(new U).copyFrom(r?.transform.getWorldMatrix()??new U).invert().multiply(s.getWorldMatrix()),{x:o,y:c}=a.clone().divide(2),h=new F(o,c,0).applyMatrix(n),l=new F(o,-c,0).applyMatrix(n),p=new F(-o,-c,0).applyMatrix(n),m=new F(-o,c,0).applyMatrix(n),d=this.interactionUtils.projectPoint(h).round(2),g=this.interactionUtils.projectPoint(l).round(2),u=this.interactionUtils.projectPoint(p).round(2),f=this.interactionUtils.projectPoint(m).round(2);i.setFromVec2Array([d,g,u,f]);const y=t?.map(e=>this.getViewBoxById(e.getInstanceId()));y&&y.map(e=>i.union(e));break}case w.spec.ItemType.null:{const e=t?.map(e=>this.getViewBoxById(e.getInstanceId()));e&&e.map(e=>i.union(e));break}}return i}getViewportLeftTopPosition(){if(!this.sdk.pageData)return new _;const{zoom:e,translation:t}=this.sdk.pageData.property,{offsetWidth:i,offsetHeight:s}=this.container.parentElement,{offsetWidth:r,offsetHeight:a}=this.container,n=new _(i,s),o=new _(r,a).multiply(e);return n.clone().divide(2).subtract(o.clone().divide(2)).add(t)}getContainerPosition(){const{offsetWidth:e,offsetHeight:t}=this.container.parentElement;return new _(e/2,t/2).add(new _(...this.sdk.pageData?.property.translation??[0,0]))}getViewportByViewPoint(e){if(!this.sdk.pageData)return e;const{zoom:t}=this.sdk.pageData.property,{offsetWidth:i,offsetHeight:s}=this.container,r=new _(i,s).multiply(t),a=this.getViewportLeftTopPosition(),n=e.clone().subtract(a);return new _(n.x/r.x*2-1,1-n.y/r.y*2)}getActiveScene(){return this.sdk.pageData?.viewProperties[this.sdk.pageData?.activeData.view??-1]}async changeItemProperty(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const t=this.getViewItemById(e.itemId),i=this.getPlayerItemById(e.itemId);if(t&&i)if(e.propertyName in t.property){switch(e.propertyName){case"alignment":[w.spec.TextAlignment.left,w.spec.TextAlignment.middle,w.spec.TextAlignment.right].includes(e.propertyValue)&&i.getComponent(w.TextComponent).setTextAlign(e.propertyValue);break;case"color":Array.isArray(e.propertyValue)&&4===e.propertyValue.length&&(console.log(e.propertyValue),i.getComponent(w.TextComponent).setTextColor(e.propertyValue));break;case"font":if("string"==typeof e.propertyValue){const t=e.propertyValue.split("/"),s=t[t.length-1]?.split(".")[0],r=this.player.getAssetManager()[0];await r.processFontURL([{fontURL:e.propertyValue,fontFamily:s}]),s&&i.getComponent(w.TextComponent).setFontFamily(s)}break;case"text":"string"==typeof e.propertyValue&&i.getComponent(w.TextComponent).setText(e.propertyValue);break;case"weight":[w.spec.TextWeight.normal,w.spec.TextWeight.bold,w.spec.TextWeight.lighter].includes(e.propertyValue)&&i.getComponent(w.TextComponent).setFontWeight(e.propertyValue);break;case"image":"string"==typeof e.propertyValue&&i.getComponent(w.SpriteComponent).setTexture(await w.Texture.fromImage(e.propertyValue,this.player.renderer.engine));break;case"position":if(Array.isArray(e.propertyValue)&&3===e.propertyValue.length){const i=e.propertyValue.map((e,i)=>e-(t.property.position[i]??0)),s=this.interactionUtils.getWorldSizeByViewSize(new _(...i),!0,e.itemId);this.moveItem(e.itemId,s)}break;case"rotation":if(Array.isArray(e.propertyValue)&&3===e.propertyValue.length){const i=e.propertyValue.map((e,i)=>e-(t.property.rotation[i]??0));this.rotateItem(e.itemId,new F(...i).negate())}break;case"size":if(Array.isArray(e.propertyValue)&&2===e.propertyValue.length){const i=e.propertyValue.map(e=>0===e||null===e?1:e),s=t.property.size.map(e=>e||1),r=i.map((e,t)=>e/s[t]);this.scaleItem(e.itemId,new F(...r,1))}break;case"visible":if("boolean"==typeof e.propertyValue&&(i.setVisible(e.propertyValue),Pt.config.pageConfig.groupVisible)){this.getChildrenPlayerItems(i).forEach(t=>{t.setVisible(e.propertyValue)})}}["position","rotation","size"].includes(e.propertyName)||this.player.gotoAndStop(this.sdk.pageData.time),this.changeViewItemProperty(e),this.refreshViewItem(e.itemId)}else console.warn(`Item does not have property ${e.propertyName}.`);else console.warn(`Id ${e.itemId} is not a item id.`)}changeViewItemProperty(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.viewProperties.forEach((t,i)=>{if(!this.sdk.pageData?.property.asyncMode&&i!==this.sdk.pageData?.activeData.view)return;const{scene:s}=t;switch(e.propertyName){case"position":if(Array.isArray(e.propertyValue)&&2===e.propertyValue.length){const t=this.sdk.pageData.items.find(t=>t.id===e.itemId),i=t?.property[e.propertyName],r=e.propertyValue.map((e,t)=>e-(i?.[t]??0)),a=this.interactionUtils.getWorldSizeByViewSize(new _(...r),!0,e.itemId);this.changeSceneItemProperty(s,{...e,propertyValue:a.toArray()})}break;case"rotation":if(Array.isArray(e.propertyValue)&&3===e.propertyValue.length){const t=this.sdk.pageData.items.find(t=>t.id===e.itemId),i=t?.property[e.propertyName],r=e.propertyValue.map((e,t)=>e-(i?.[t]??0));this.changeSceneItemProperty(s,{...e,propertyValue:r})}break;case"size":if(Array.isArray(e.propertyValue)&&2===e.propertyValue.length){const t=this.sdk.pageData.items.find(t=>t.id===e.itemId),i=t?.property[e.propertyName],r=e.propertyValue.map((e,t)=>e/(i?.[t]??0));this.changeSceneItemProperty(s,{...e,propertyValue:r})}break;default:this.changeSceneItemProperty(s,e)}})}changeSceneItemProperty(e,t){switch(t.propertyName){case"alignment":if([w.spec.TextAlignment.left,w.spec.TextAlignment.middle,w.spec.TextAlignment.right].includes(t.propertyValue)){const i=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));i?.options&&"textAlign"in i.options&&(console.log(t.propertyValue),i.options.textAlign=t.propertyValue)}break;case"color":if(Array.isArray(t.propertyValue)&&4===t.propertyValue.length){const i=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));i?.options&&(i.options.textColor=[...t.propertyValue])}break;case"font":if("string"==typeof t.propertyValue){const i=t.propertyValue.split("/"),s=i[i.length-1]?.split(".")[0],r=e.fonts?.find(e=>"family"in e&&e.family===s||"fontFamily"in e&&e.fontFamily===s);!r&&e.fonts&&s&&e.fonts.push({fontFamily:s,fontURL:t.propertyValue});const a=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));a?.options&&(a.options.fontFamily=s)}break;case"text":if("string"==typeof t.propertyValue){const i=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));i?.options&&(i.options.text=t.propertyValue)}break;case"weight":if("string"==typeof t.propertyValue){const i=e.components.find(e=>e.item.id===t.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));i?.options&&(i.options.fontWeight=t.propertyValue)}break;case"image":if("string"==typeof t.propertyValue){e.components.filter(e=>e.item.id===t.itemId).forEach(i=>{if(!("renderer"in i))return;const s=e.textures?.find(e=>e.id===i.renderer.texture.id);if(s&&"source"in s&&s.source){const i=e?.images.find(e=>e.id===s.source.id);i?.url&&i?.webp&&(i.url=t.propertyValue,i.webp=t.propertyValue),i&&"template"in i&&i.template.background&&(i.template.background.url=t.propertyValue)}})}break;case"position":{const i=t.propertyValue;if(Array.isArray(t.propertyValue)&&3===i.length){const s=e.items.find(e=>e.id===t.itemId);s?.transform&&(s.transform.position.x+=i[0],s.transform.position.y+=i[1],s.transform.position.z+=i[2])}break}case"rotation":if(Array.isArray(t.propertyValue)&&3===t.propertyValue.length){const i=e.items.find(e=>e.id===t.itemId);i?.transform&&(i.transform.eulerHint.x+=t.propertyValue[0],i.transform.eulerHint.y+=t.propertyValue[1],i.transform.eulerHint.z+=t.propertyValue[2])}break;case"size":if(Array.isArray(t.propertyValue)&&2===t.propertyValue.length){const i=e.items.find(e=>e.id===t.itemId);i?.transform&&(i.transform.scale.x*=t.propertyValue[0],i.transform.scale.y*=t.propertyValue[1])}break;case"visible":{const i=e.items.find(e=>e.id===t.itemId);if(i&&(i.visible=t.propertyValue,Pt.config.pageConfig.groupVisible)){this.getChildrenSceneItemIds(t.itemId,e).forEach(i=>{const s=e.items.find(e=>e.id===i);s&&(s.visible=t.propertyValue)})}break}}}transformSceneItem(e,t,i){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.viewProperties.forEach((s,r)=>{if(!this.sdk.pageData?.property.asyncMode&&r!==this.sdk.pageData?.activeData.view)return;const{scene:a}=s;switch(t){case"position":if(Array.isArray(i)&&3===i.length){const t=a.items.find(t=>t.id===e);t?.transform&&(t.transform.position.x+=i[0],t.transform.position.y+=i[1],t.transform.position.z+=i[2])}break;case"rotation":if(Array.isArray(i)&&3===i.length){const t=a.items.find(t=>t.id===e);t?.transform&&(t.transform.eulerHint.x+=i[0],t.transform.eulerHint.y+=i[1],t.transform.eulerHint.z+=i[2])}break;case"scale":if(Array.isArray(i)&&3===i.length){const t=a.items.find(t=>t.id===e);t?.transform&&(t.transform.scale.x*=i[0],t.transform.scale.y*=i[1],t.transform.scale.z*=i[2])}}})}refreshViewItem(e){const t=this.sdk.pageData;(0,w.assertExist)(t,"You must call SDK#run() first");const i=t.items.findIndex(t=>t.id===e);if(i<0)return void console.log(`item ${e} is not existed.`);const s=t.items[i],r=this.getPlayerItemById(e);r&&s&&(t.items[i]=this.createViewItemByPlayerItem(r,s.parentId))}getPlayerItemById(e){return this.player.getCompositions()[0]?.items.find(t=>t.getInstanceId()===e)}getPixelSizeByWorldSize(e,t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const i=[0,0],s=t.composition?.camera,r=this.sdk.pageData.viewProperties[this.sdk.pageData.activeData.view??0]?.size;if(s&&r){const{z:a}=t.transform.getWorldPosition(),{x:n,y:o}=s.getInverseVPRatio(a);i[0]=Math.abs(e[0]*r[0]/n/2),i[1]=Math.abs(e[1]*r[1]/o/-2)}else console.warn("camera is not existed.");return i}async addSpriteItem(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{viewProperties:t,activeData:i}=this.sdk.pageData,s=t[i.view??-1]?.scene;if(!s)return void console.warn("Target scene is not exsited.");const{name:r="图层",size:a,scale:n=[1,1],url:o,rotation:c=0,position:h,id:l=(0,w.generateGUID)()}=e,p=this.interactionUtils.getWorldSizeByViewSize(new _(...a)),m=new F(...n??[1,1],1),d=new F(0,0,c),g=this.interactionUtils.getWorldPositionByViewPoint(new _(...h))??new F,u=s.images.findIndex(e=>e.url===o);let f,y={};if(o)if(u<0){f=await w.Texture.fromImage(o,this.player.renderer.engine);const e={id:(0,w.generateGUID)(),url:o,renderLevel:w.spec.RenderLevel.BPlus};y={id:f.guid,source:{id:e.id},flipY:!0,dataType:w.spec.DataType.Texture},s.images.push(e),s.textures??(s.textures=[]),s.textures.push(y)}else{const e=s.textures?.find(e=>e.source.id===s.images[u].id);y={id:e?.id},f=this.player.renderer.engine.findObject({id:e.id})}const x=function(e,t,i,s,r,a,n){const o=(0,w.generateGUID)(),c={id:e,name:a,dataType:w.spec.DataType.VFXItemData,components:[{id:o}],delay:0,duration:999,endBehavior:w.spec.EndBehavior.restart,renderLevel:w.spec.RenderLevel.BPlus,type:w.spec.ItemType.sprite,visible:!0,transform:{position:{x:t.x,y:t.y,z:t.z},eulerHint:{x:i.x,y:i.y,z:i.z},size:{x:s.x,y:s.y},scale:{x:r.x,y:r.y,z:r.z},anchor:{x:0,y:0}},content:void 0},h={id:o,item:{id:e},dataType:w.spec.DataType.SpriteComponent,options:{startColor:[1,1,1,1]},renderer:{renderMode:w.spec.RenderMode.MESH}};n&&(h.renderer.texture={id:n});const l={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationPlayableAsset},p={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:l.id}}]},m={id:(0,w.generateGUID)(),dataType:w.spec.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:c,components:[h],tracks:[p,{id:(0,w.generateGUID)(),dataType:w.spec.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:m.id}}]}],playableAssets:[l,m]}}(l,g,d,new _(Math.abs(p.x),Math.abs(p.y)),m,r,y?.id);De(s,x);const v=this.player.getCompositions()[0],I=Ke.createSprite(v,null,r);if(I.setInstanceId(x.item.id),I.duration=999,I.defination.delay=0,I.endBehavior=w.spec.EndBehavior.restart,I.transform.setSize(Math.abs(p.x),Math.abs(p.y)),I.transform.setPosition(...g.toArray()),I.transform.setRotation(...d.toArray()),I.transform.setScale(...m.toArray()),f){I.getComponent(w.SpriteComponent).setTexture(f)}this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,v.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}addNullItem(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{viewProperties:t,activeData:i}=this.sdk.pageData,s=t[i.view??-1]?.scene;if(!s)return void console.warn("Target scene is not exsited.");const{name:r="空节点",translation:a=[0,0],id:n=(0,w.generateGUID)(),children:o=[]}=e,c=o.filter(e=>!this.getPlayerItemById(e)),h=o.filter(e=>!!this.getPlayerItemById(e));if(c.length&&console.warn(`item ${c.join("、")} is not existed.`),0===h.length)return;const l=h.map(e=>this.getViewBoxById(e)),p=new B;l.forEach(e=>p.union(e));const m=p.getCenter();this.interactionUtils.initInteractionPlane();const d=this.interactionUtils.getWorldPositionByViewPoint(m)??new F,g=this.interactionUtils.getWorldSizeByViewSize(new _(...a))??new F,u=(new F).addVectors(d,g),f=function(e,t,i){const s=e??(0,w.generateGUID)(),r=JSON.parse(JSON.stringify(i??new F)),a={id:s,name:t??"空节点",duration:999,type:w.spec.ItemType.null,visible:!0,endBehavior:w.spec.EndBehavior.restart,delay:0,renderLevel:w.spec.RenderLevel.BPlus,content:{options:{startColor:[1,1,1,1]}},components:[],transform:{position:r,eulerHint:{x:0,y:0,z:0},size:{x:1,y:1},scale:{x:1,y:1,z:1}},dataType:w.spec.DataType.VFXItemData},n={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationPlayableAsset};return{item:a,components:[],tracks:[{id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:n.id}}]}],playableAssets:[n]}}(n,r,u);De(s,f),h.forEach(e=>{be(s,e,n)});const y=this.player.getCompositions()[0],x=Ke.createEmpty(y,null,r);x.setInstanceId(f.item.id),x.duration=999,x.defination.delay=0,x.endBehavior=w.spec.EndBehavior.restart,x.transform.setPosition(...u.toArray()),h.forEach(e=>{const t=this.getPlayerItemById(e);t.setParent(x),t.parentId=f.item.id,t.translate(...u.clone().negate().toArray())}),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,y.items),this.emitter.emit("selectedItemChange",[f.item.id]),this.emitter.emit("pageDataChange",this.sdk.pageData)}deleteItem(e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{viewProperties:t,activeData:i}=this.sdk.pageData,s=t[i.view??-1]?.scene;s||console.warn("Target scene is not exsited.")}},Ye=p(require("jszip"),1),qe=p(require("jszip"),1),Je="ready",Xe="executable",Ze="dispose",Qe={APNG:"APNG",MP4:"MP4",WebM:"WebM",Images:"Images",WebP:"WebP",GIF:"GIF",AlphaMaskVideo:"AlphaMaskVideo"},et="idle",tt="convertImage",it="transcoding",st="audio",rt="jpeg",at="webp",nt="png",ot=(Qe.MP4,Qe.WebP,Qe.APNG,Qe.GIF,Qe.AlphaMaskVideo,Qe.Images,Qe.MP4,Qe.WebP,Qe.APNG,Qe.GIF,Qe.AlphaMaskVideo,Qe.Images,"default"),ct="exporting",ht="success",lt="error",pt={highest:"flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=256[p];[s1][p]paletteuse",high:"flags=bicubic,split[s0][s1];[s0]palettegen=max_colors=200[p];[s1][p]paletteuse",medium:"flags=bilinear,split[s0][s1];[s0]palettegen=max_colors=64[p];[s1][p]paletteuse=dither=bayer",low:"flags=neighbor,split[s0][s1];[s0]palettegen=max_colors=32[p];[s1][p]paletteuse=dither=none"},mt={highest:"1",high:"3",medium:"6",low:"9"},dt=class{constructor(e){m(this,"sampleRate"),m(this,"duration"),m(this,"channels");const{sampleRate:t=44100,duration:i=1,channels:s=2}=e??{};this.sampleRate=t,this.duration=i,this.channels=s}getBuffer(){const e=this.sampleRate*this.duration*this.channels*2,t=44+e,i=new ArrayBuffer(t),s=new DataView(i);let r=0;const a=e=>{for(let t=0;t<e.length;t++)s.setUint8(r++,e.charCodeAt(t))},n=e=>{s.setUint32(r,e,!0),r+=4},o=e=>{s.setUint16(r,e,!0),r+=2};a("RIFF"),n(t-8),a("WAVE"),a("fmt "),n(16),o(1),o(this.channels),n(this.sampleRate),n(this.sampleRate*this.channels*2),o(2*this.channels),o(16),a("data"),n(e);for(let t=0;t<e;t++)s.setUint8(r++,0);return new Uint8Array(i)}},gt=["@vvfx/sdk","exporter"],ut=class extends w.EventEmitter{constructor(e){super(),m(this,"status",Je),m(this,"stage",et),m(this,"mediaType"),m(this,"loggerInTranscoding"),m(this,"multiThreading"),m(this,"extraCanvas"),m(this,"player"),u(this,Ce,0),u(this,ze),u(this,Ee),u(this,Se),u(this,Ae),u(this,Te,[]),u(this,_e),u(this,ke),u(this,Be,[]),u(this,Me,0),u(this,Ve),u(this,Fe,[]),u(this,Ue,0),u(this,Re,0),u(this,Ge,0),u(this,We,0),u(this,He,[]),u(this,Ne,[]),u(this,Le,!0);const{mediaType:t,extraCanvas:i,loggerInTranscoding:s,multiThreading:r}=e;this.mediaType=t,this.loggerInTranscoding=s??!1,this.multiThreading=r??!1,this.extraCanvas=i??void 0,this.onInit()}get canceled(){return this.status===Ze}get config(){const e=this.player?.getCompositions()??[],t=e?.[0],i=t?.name??(new Date).getTime().toString(),s=t?.getDuration()??0,r=t?.startTime??0,a=g(this,Ve)?.time;return{name:i,startTime:r,oldTotalTime:s,newTotalTime:a,fps:g(this,Ve)?.fps??30,backgroundColor:g(this,Ve)?.backgroundColor??"#000000",loop:g(this,Ve)?.loop??!0,audioEnable:g(this,Ve)?.audioEnable??!1}}get gifConfig(){return g(this,Ve)?.gifConfig}get apngConfig(){return g(this,Ve)?.apngConfig}get progress(){const e=g(this,Re)||1,t=g(this,Ge)||1,i=Math.min(e/t,1),s=Math.min(g(this,Ue),e)/e*.4,r=Math.min(g(this,We),e)/e*.6,a=Math.min(s+r,1);g(this,Fe)[g(this,Me)]=i;const n=g(this,Fe).reduce((e,t,i)=>i<g(this,Me)?e+(t||0):e,0)+a*i;return Math.min((o=n,Math.round(100*o)/100),1);var o}get transImageType(){return this.mediaType===Qe.MP4?rt:this.mediaType===Qe.WebP?at:nt}async onInit(){try{he("log",[...gt,"ready"],"starting"),this.status=Je,await this.loadHelper(this.mediaType),this.status=Xe,he("log",[...gt,"ready"],"success"),this.emit("ready",this.mediaType)}catch(e){this.status=Ze,this.onError(e)}finally{return this.status}}onReset(){this.stage=et,window.cancelAnimationFrame(g(this,Ce)),f(this,Ce,0),this.player?.pause(),this.clearTaskInfo(),this.setProgress()}onError(e){he("log",[...gt,"error"],e),this.onFinish(!1,g(this,He),g(this,Ne)),this.emit("error",e),this.dispose()}onFinish(e,t,i){he("log",[...gt,"finish"],e?"success":"failed"),this.emit("progress",1),this.emit("finish",e,t,i)}async loadHelper(e){const t="WebP"===e&&!g(this,Se),i=[Qe.MP4,Qe.APNG,Qe.GIF,Qe.AlphaMaskVideo].includes(e)&&!g(this,Ee);t&&f(this,Se,await ve()),i&&(f(this,Ee,await async function(e){const{multiThreading:t}=e??{},i=new ue.FFmpeg,s=!!t,r={classWorkerURL:await(0,fe.toBlobURL)(we.CLASSWORKER,"text/javascript"),coreURL:"",wasmURL:""};return s?(r.coreURL=await(0,fe.toBlobURL)(we.MT.CORE,"text/javascript"),r.wasmURL=await(0,fe.toBlobURL)(we.MT.WASM,"application/wasm"),r.workerURL=await(0,fe.toBlobURL)(we.MT.WORKER,"text/javascript")):(r.coreURL=await(0,fe.toBlobURL)(we.DEFAULT.CORE,"text/javascript"),r.wasmURL=await(0,fe.toBlobURL)(we.DEFAULT.WASM,"application/wasm")),await i.load(r),i}({multiThreading:this.multiThreading})),g(this,Ee).on("log",({message:e})=>{if(this.loggerInTranscoding&&he("log",[...gt,"transcoding log"],e),this.canceled||this.stage!==it)return;const t=/frame=\s*(\d+)/.exec(e);if(t?.[1]){const e=Number(t[1]);this.setProgress({currentTaskInTranscodingFrameIndex:e})}}))}getAllTaskFrames(e){return e.reduce((e,t)=>{const{scene:i,fps:s}=t,r=i.compositions?.[0]?.duration??0;return e+Math.round(r*(s??30))},0)}setProgress(e){void 0!==e?.completedTaskPercentArray&&f(this,Fe,e.completedTaskPercentArray),void 0!==e?.currentTaskFrameIndex&&f(this,Ue,e.currentTaskFrameIndex),void 0!==e?.currentTaskTotalFrames&&f(this,Re,e.currentTaskTotalFrames),void 0!==e?.currentTaskInTranscodingFrameIndex&&f(this,We,e.currentTaskInTranscodingFrameIndex),void 0!==e?.allTaskFrames&&f(this,Ge,e.allTaskFrames),this.emit("progress",this.progress)}forwardPlayerTime(e,t=!1){(0,w.assertExist)(this.player);const{oldTotalTime:i,startTime:s}=this.config;(0,w.assertExist)(i);const r=1e3*i-1e3*i%15;return e=Math.min(e,r/1e3),t?this.player.gotoAndPlay(e-s):this.player.gotoAndStop(e-s),e}getWavAudio(e){f(this,_e,new dt),g(this,Ee)?g(this,Ee).writeFile(e,g(this,_e).getBuffer()):he("log",[...gt,"getWavAudio"],"ffmpegCore is not ready")}async getImagesZip(e,t){const i=new qe.default,s=i.folder(e);return(0,w.assertExist)(s),g(this,Be).forEach((e,i)=>{s.file(e,t[i])}),i.generateAsync({type:"arraybuffer"})}getWebP(){(0,w.assertExist)(g(this,Se));const e=Math.round(1e3/this.config.fps/1),t="out.webp",i=`${g(this,Be).join(` -d ${e} `)} -d ${e} -o ${t} -loop ${this.config.loop?0:1}`.split(" "),s=g(this,Se).cwrap("main","string",["number","number"]),[r,a]=function(e,t){const i=e._malloc(t.length*Uint32Array.BYTES_PER_ELEMENT);return t.forEach((t,s)=>{const r=e._malloc(t.length+1);e.writeAsciiToMemory(t,r),e.setValue(i+Uint32Array.BYTES_PER_ELEMENT*s,r,"i32")}),[t.length,i]}(g(this,Se),i);ce(r&&a,"getWebP has error"),s(r,a);const n=g(this,Se).FS.readFile(t);return g(this,Be).forEach(e=>{g(this,Se)?.FS.unlink(e)}),n}async getAPNG(){(0,w.assertExist)(g(this,Ee));this.stage=it;const e="export.apng",{fps:t,scale:i="-1:-1",quality:s="highest"}=this.apngConfig??{},r=[`scale=${i}:force_original_aspect_ratio=decrease:flags=lanczos`];t&&r.push(`fps=${t}`);if(0!==await g(this,Ee).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-vf",r.join(","),"-plays",this.config.loop?"0":"1","-compression_level",mt[s],"-y",e]))throw new Error("the command executed by ffmpeg to generate a apng failed.");return e}async getGIF(){(0,w.assertExist)(g(this,Ee));this.stage=it;const e="export.gif",{fps:t,scale:i="-1:-1",quality:s="highest"}=this.gifConfig??{},r=[`scale=${i}:${pt[s]}`];t&&r.unshift(`fps=${t}`);if(0!==await g(this,Ee).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-loop",this.config.loop?"0":"-1","-vf",r.join(","),"-y",e]))throw new Error("the command executed by ffmpeg to generate a gif failed.");return e}async getMP4(e,t){(0,w.assertExist)(g(this,Ee));this.stage=it;const i="export.mp4";let s;const r=t?",setpts=PTS/"+Math.round(e/t*100)/100:"",a=t??e;this.config.audioEnable&&!g(this,_e)&&(f(this,ke,"audio.wav"),this.getWavAudio(g(this,ke)));if(0!==await g(this,Ee).exec(["-framerate",String(this.config.fps),"-start_number",String(1),"-i",`image-%4d.${this.transImageType}`,"-c:v","libx264","-crf","23","-pix_fmt","yuv420p","-vf",`pad=ceil(iw/2)*2:ceil(ih/2)*2${r}`,"-y",i]))throw new Error("the command executed by ffmpeg to generate a mp4 failed.");if(g(this,ke)&&g(this,_e)){this.stage=st,s="export-with-audio.mp4";if(0!==await g(this,Ee).exec(["-i",i,"-i",g(this,ke),"-c:v","copy","-c:a","aac","-t",`${a}`,"-y",s]))throw new Error("the command executed by ffmpeg to generate a audio of video failed.")}return s&&g(this,Ee).deleteFile(i).catch(()=>{he("log",[...gt,"ffmpeg delete file error"])}),s??i}async getAlphaMaskVideo(e,t){(0,w.assertExist)(g(this,Ee));this.stage=it;const i="export.mp4",s=t?",setpts=PTS/"+Math.round(e/t*100)/100:"";return await g(this,Ee).exec(["-framerate",String(this.config.fps),"-start_number",String(1),"-i",`image-%4d.${this.transImageType}`,"-c:v","libx264","-crf","23","-pix_fmt","yuv420p","-vf",`pad=ceil(iw/2)*2:ceil(ih/2)*2${s}`,"-y",i]),i}async getVideoByType(e,t){(0,w.assertExist)(g(this,Ee));const i=this.mediaType===Qe.APNG,s=this.mediaType===Qe.GIF,r=this.mediaType===Qe.AlphaMaskVideo,a=this.mediaType===Qe.MP4;let n="";try{i&&(n=await this.getAPNG()),s&&(n=await this.getGIF()),a&&(n=await this.getMP4(e,t)),r&&(n=await this.getAlphaMaskVideo(e,t)),this.stage=et}catch(e){throw e}finally{for(const e of g(this,Be))e&&g(this,Ee).deleteFile(e)}let o=null;try{(0,w.assertExist)(n);const e=await g(this,Ee).readFile(n);o="string"==typeof e?(new TextEncoder).encode(e):new Uint8Array(e)}finally{g(this,Ee).deleteFile(n).catch(()=>{he("log",[...gt,"ffmpeg delete file error"])})}return o}onRecordWebM(e){const t=new MediaRecorder(e.captureStream(this.config.fps),{mimeType:"video/webm;codecs=vp9"});f(this,Ae,t),g(this,Ae).start(0);const i=[];g(this,Ae).ondataavailable=e=>{e.data.size>0&&i.push(e.data)},f(this,Te,i)}async onExportImageFrame(e){try{if(this.canceled)return;const{canvas:s,imageBuffers:r,startTime:a,oldTotalTime:n,newTotalTime:o}=e;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,ze));const c=g(this,Ue)+1;this.stage=tt,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:c}),this.loggerInTranscoding&&he("log",[...gt,"converting log"],`converting ${c} frame image`),c>=1&&this.forwardPlayerTime(c/this.config.fps+a),xe(g(this,ze),s,this.config.backgroundColor);let h=s;this.mediaType===Qe.AlphaMaskVideo&&((0,w.assertExist)(this.extraCanvas),function(e,t){t.width=2*e.width,t.height=e.height;const i=e.getContext("2d");if(!i)throw new Error("inputCtx is null");const s=t.getContext("2d");if(!s)throw new Error("ctx is null");s.clearRect(0,0,t.width,t.height);const r=i.getImageData(0,0,e.width,e.height),a=i.getImageData(0,0,e.width,e.height),n=r.data;for(let e=0;e<n.length;e+=4){const t=Math.max(0,(n[e+3]??0)-5)/250*255;t<=0?(n[e]=0,n[e+1]=0,n[e+2]=0,n[e+3]=255):(n[e]=(n[e]??0)*t/255,n[e+1]=(n[e+1]??0)*t/255,n[e+2]=(n[e+2]??0)*t/255,n[e+3]=255)}s.putImageData(r,0,0);const o=a.data;for(let e=0;e<o.length;e+=4){const t=Math.max(0,(o[e+3]??0)-5)/250*255;o[e]=t,o[e+1]=t,o[e+2]=t,o[e+3]=255}s.putImageData(a,e.width,0)}(s,this.extraCanvas),h=this.extraCanvas);const l=await async function(e,t,i){return new Promise((s,r)=>{e.toBlob(e=>{e?s(e.arrayBuffer()):r("toBlob failed")},t,i)})}(h,`image/${this.transImageType}`,1),p=`image-${t=c,i=4,String(t).padStart(i,"0")}.${this.transImageType}`;this.mediaType===Qe.Images?r.push(l):this.mediaType===Qe.WebP?((0,w.assertExist)(g(this,Se)),g(this,Se).FS.writeFile(p,new Uint8Array(l))):((0,w.assertExist)(g(this,Ee)),await g(this,Ee).writeFile(p,new Uint8Array(l))),g(this,Be).push(p);if(c===g(this,Re)){this.player?.pause(),await new Promise(e=>{window.requestAnimationFrame(e)});let e=null;"Images"===this.mediaType?e=await this.getImagesZip(this.config.name,r):"WebP"===this.mediaType?e=this.getWebP():[Qe.MP4,Qe.APNG,Qe.GIF,Qe.AlphaMaskVideo].includes(this.mediaType)&&(e=await this.getVideoByType(n,o)??null),e&&(he("log",[...gt,"done"],"success"),this.emit("done",g(this,Ve),!0,e))}else f(this,Ce,window.requestAnimationFrame(()=>{this.canceled||this.onExportImageFrame({canvas:s,imageBuffers:r,startTime:a,oldTotalTime:n,newTotalTime:o})}))}catch(e){he("log",[...gt,"onExportImageFrame","failed"],e),this.emit("done",g(this,Ve),!1)}var t,i}async onExportWebMFrame(e){try{if(this.canceled)return;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,ze));const t=g(this,Ue)+1;if(this.stage=tt,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:t}),this.loggerInTranscoding&&he("log",[...gt,"converting log"],`converting ${t} frame image`),xe(g(this,ze),e,this.config.backgroundColor),1===t&&(this.player.play(),this.onRecordWebM(e)),t<g(this,Re))f(this,Ce,window.requestAnimationFrame(()=>{this.canceled||this.onExportWebMFrame(e)}));else{this.player?.pause(),g(this,Ae)?.stop();const e=new Blob(g(this,Te),{type:"video/webm"}),t=await e.arrayBuffer();he("log",[...gt,"done"],"success"),this.emit("done",g(this,Ve),!0,t)}}catch(e){he("log",[...gt,"done"],"failed",e),this.emit("done",g(this,Ve),!1)}}async runTask(e){try{if(this.canceled)return;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,ze));const{size:t,startTime:i,containerCanvas:s}=e,{oldTotalTime:r,newTotalTime:a}=this.config,[n,o]=t;if(g(this,ze).width=n,g(this,ze).height=o,s.width=n,s.height=o,this.player.resize(),f(this,Be,[]),[Qe.MP4,Qe.APNG,Qe.Images,Qe.WebP,Qe.GIF,Qe.AlphaMaskVideo].includes(this.mediaType)){const e={canvas:s,imageBuffers:[],startTime:i,oldTotalTime:r,newTotalTime:a};await this.onExportImageFrame(e)}else"WebM"===this.mediaType&&await this.onExportWebMFrame(s)}catch(e){he("log",[...gt,"run task error"],e),this.emit("done",g(this,Ve),!1)}}clearTaskInfo(){f(this,Me,0),f(this,Ve,void 0),f(this,Fe,[]),f(this,Ue,0),f(this,Re,0),f(this,Ge,0),f(this,We,0),f(this,He,[]),f(this,Ne,[]),f(this,Le,!0)}clearFFMpegCore(){if(g(this,Ee)){for(const e of g(this,Be))e&&g(this,Ee).deleteFile(e);f(this,Be,[]),g(this,Ee).terminate(),f(this,Ee,void 0)}}clearImage2WebPCore(){g(this,Se)&&(g(this,Se).FS.quit(),f(this,Se,void 0))}clearMediaRecorder(){g(this,Ae)&&(g(this,Ae).stop(),f(this,Ae,void 0)),f(this,Te,[])}clearAllListeners(){for(const e of this.getListeners("ready"))this.off("ready",e);for(const e of this.getListeners("progress"))this.off("progress",e);for(const e of this.getListeners("done"))this.off("done",e);for(const e of this.getListeners("finish"))this.off("finish",e);for(const e of this.getListeners("error"))this.off("error",e)}onCancel(){this.canceled||(this.onFinish(!1,g(this,He),g(this,Ne)),this.status=Ze,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),he("log",gt,"canceled"))}async onExport(e){const t=e.length;try{if(this.status===Je)return he("log",[...gt],"readying"),void this.on("ready",()=>{this.onExport(e)});if(this.status===Ze){if(await this.onInit()===Ze)throw new Error("init environment failed")}if(this.clearTaskInfo(),!g(this,ze)){const e=document.createElement("canvas");e.dataset.key="player-canvas",f(this,ze,e)}this.player||(this.player=new w.Player({canvas:g(this,ze),pixelRatio:1,transparentBackground:!0,renderOptions:{willCaptureImage:!0}}),this.player.on("rendererror",e=>{this.onError(e)}),this.player.on("webglcontextlost",e=>{this.onError(e)}));let t=null;t??(t=document.querySelector('canvas[data-key="container-canvas"]')),t??(t=document.createElement("canvas")),t.dataset.key="container-canvas",t.style.display="none",this.setProgress({allTaskFrames:this.getAllTaskFrames(e)});const i=[],s=[];let r=!0;for(const[a,n]of e.entries()){if(this.canceled){r=!1;break}f(this,Me,a),f(this,Ve,n);const{size:e,scene:o}=n;await new Promise(async c=>{try{if(!this.player)throw new Error("player not found");he("log",[...gt,"export"],"start",n),Ie(this.player),await this.player.loadScene(o,{env:"editor",autoplay:!1});const h=this.config.oldTotalTime,l=0;this.player.pause(),this.setProgress({currentTaskFrameIndex:0,currentTaskTotalFrames:Math.round(h*this.config.fps)});const p=(e,t,o)=>{this.off("done",p),i[a]=n,t&&o?s[a]=o:r=!1,c()};this.on("done",p);const m={size:e,startTime:l,containerCanvas:t};await this.runTask(m)}catch(e){he("log",[...gt,"export error"],e),r=!1,c()}})}f(this,He,i),f(this,Ne,s),f(this,Le,r)}catch(e){this.onError(e),f(this,Le,!1)}t>=1&&g(this,Le)?this.onFinish(!0,g(this,He),g(this,Ne)):this.onFinish(!1,g(this,He),g(this,Ne))}dispose(){this.status=Ze,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),this.player?.dispose(),this.player=void 0,g(this,ze)?.remove(),f(this,ze,void 0),f(this,ke,void 0),f(this,_e,void 0)}};Ce=new WeakMap,ze=new WeakMap,Ee=new WeakMap,Se=new WeakMap,Ae=new WeakMap,Te=new WeakMap,_e=new WeakMap,ke=new WeakMap,Be=new WeakMap,Me=new WeakMap,Ve=new WeakMap,Fe=new WeakMap,Ue=new WeakMap,Re=new WeakMap,Ge=new WeakMap,We=new WeakMap,He=new WeakMap,Ne=new WeakMap,Le=new WeakMap;var ft={[Qe.MP4]:{suffix:"mp4",error:"export mp4 is error"},[Qe.GIF]:{suffix:"gif",error:"export gif is error"},[Qe.Images]:{suffix:"zip",error:"export Images is error"},[Qe.APNG]:{suffix:"apng",error:"export APNG is error"},[Qe.WebP]:{suffix:"webp",error:"export WebP is error"},[Qe.AlphaMaskVideo]:{suffix:"mp4",error:"export AlphaMaskVideo is error"},[Qe.WebM]:{suffix:"webm",error:"export WebM is error"}},yt=class extends w.EventEmitter{constructor(e){super(),m(this,"_config"),m(this,"_status",ot),m(this,"_exportMedia"),this._config=e,this._exportMedia=new ut(e)}get status(){return this._status}onExportMedia(e,t,i,s){if(!t.length||!i)return void he("info",["@vvfx/sdk","export media is error","result or suffix is empty"]);const r=e[0]?.folderName,a=new Ye.default;t.forEach((t,s)=>{if(!t)return;const{name:r}=e[s]??{};r&&a.file(`${r}.${i}`,t)}),a.generateAsync({type:"blob"}).then(e=>{!function(e,t,i="application/octet-stream"){const s=new Blob(Array.isArray(e)?e:[e],{type:i}),r=URL.createObjectURL(s),a=document.createElement("a");a.href=r,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(r)}(e,`${r}.zip`,"application/zip")}).catch(e=>{he("error",["@vvfx/sdk"],s??"export media is error",e)})}onExportProgress(e){this.emit("progress",e)}onExportDone(e,t,i){this.emit("done",e,t,i)}onExportError(e){this._status=lt,he("error",["@vvfx/sdk"],"export is error",e)}onExport(e){this._status=ct,this._exportMedia.onExport(e),this._exportMedia.on("progress",this.onExportProgress.bind(this)),this._exportMedia.on("done",this.onExportDone.bind(this)),this._exportMedia.once("finish",(t,i,s)=>{if(this._status=t?ht:lt,this.emit("complete",t,i,s),this._config.isOutputBuffer||!s||0===s.length)return;const{suffix:r,error:a}=ft[this._config.mediaType];r&&this.onExportMedia(e,s,r,a)}),this._exportMedia.on("error",this.onExportError.bind(this))}onCancel(){this._status=lt,this._exportMedia.onCancel(),this.emit("complete",!1,[],[])}dispose(){this._exportMedia.dispose()}},wt=class{constructor(){m(this,"enabled",!0),m(this,"_player"),m(this,"_container"),this._container=document.createElement("canvas"),this._player=new w.Player({canvas:this._container,manualRender:!0,renderOptions:{willCaptureImage:!0}})}async generate(e,t,i,s,r){if(!this.enabled)return void console.warn("Screen shot is not opened, use #SDK.setConfig() open this feature.");const[a,n]=t;this._container.width=a,this._container.height=n,this._player.resize();const o=JSON.parse(JSON.stringify(e));await this._player.loadScene(o,{reusable:!0,autoplay:!1}),this._player.gotoAndStop(s);const[c,h]=i,l=document.createElement("canvas");l.width=c,l.height=h;const p=l.getContext("2d");r??(r=[255,255,255,1]),p&&(p.fillStyle=`rgba(${r.join(",")})`,p.fillRect(0,0,c,h),this.drawImageCover(p,this._player.canvas,0,0,c,h,.5,.5));const m=l.toDataURL("image/png");return Ie(this._player),m}dispose(){this._player.dispose()}drawImageCover(e,t,i,s,r,a,n,o,c){2===arguments.length&&(i=s=0,r=e.canvas.width,a=e.canvas.height),n="number"==typeof n?b(n,0,1):.5,o="number"==typeof o?b(o,0,1):.5,c??(c={left:0,top:0,width:t instanceof HTMLVideoElement?t.videoWidth:t.width,height:t instanceof HTMLVideoElement?t.videoHeight:t.height});const h=c.width,l=c.height,p=Math.min(r/h,a/l);let m=h*p,d=l*p,g=1;m<r&&(g=r/m),Math.abs(g-1)<1e-14&&d<a&&(g=a/d),m*=g,d*=g;const u=Math.max(h/(m/r),0),f=Math.max(l/(d/a),0),y=Math.min((h-u)*n,h),w=Math.min((l-f)*o,l);e.drawImage(t,y+c.left,w+c.top,u,f,i,s,r,a)}},xt={topAdsorption:"T",leftAdsorption:"L",rightAdsorption:"R",bottomAdsorption:"B",centerAdsorption:"C",bottomCenterAdsorption:"BC"},vt=class{constructor(e){m(this,"_player"),m(this,"_container"),m(this,"size",[0,0]),m(this,"_pageDataUtils"),this._container=document.createElement("canvas"),this._player=new w.Player({canvas:this._container,manualRender:!0}),this._pageDataUtils=e}async adjustment(e,t,i,s,r,a){if(!Pt.config.sizeAdaptConfig.enabled)return console.warn("Size adapt is not opened, use #SDK.setConfig() open this feature."),e;this._player??(this._player=new w.Player({canvas:this._container,manualRender:!0})),r??(r=[0,0,0,0]),a??(a=i[0]<i[1]?"y":"x"),this.size=[...s],this._container.width=this.size[0],this._container.height=this.size[1],Ie(this._player),this._player.resize();const n=JSON.parse(JSON.stringify(e));await this._player.loadScene(n,{reusable:!0,autoplay:!1}),this._player.gotoAndStop(t);const o=this._player.getCompositions()[0];if(o){const[t,n]=s,c=i[0]/i[1],h=t/n;c>h&&this.keepDistribute(e,o,h/c,s);const[l,p,m,d]=r,g=t-m-d,u=n-l-p,f=[(m-d)/2,(l-p)/2],y=(new B).setFromCenterAndSize(new _(t,n).divide(2),new _(t,n)),w=(new B).setFromCenterAndSize(new _(t,n).divide(2).add(new _(...f)),new _(g,u));this.keepAdsorption("topAdsorption",e,o,f,y,w,a),this.keepAdsorption("bottomAdsorption",e,o,f,y,w,a),this.keepAdsorption("leftAdsorption",e,o,f,y,w,a),this.keepAdsorption("rightAdsorption",e,o,f,y,w,a),this.keepAdsorption("centerAdsorption",e,o,f,y,w,a),this.keepDoubleAdsorption("bottomCenterAdsorption",e,o,f,y,w)}return e}keepDistribute(e,t,i,s){const r=e=>{const i=(new U).copyFrom(t.camera.getViewProjectionMatrix());return(new _).copyFrom(e.applyMatrix(i).toVector2()).toViewCoordinate(s[0],s[1])};["topAdsorption","centerAdsorption","bottomAdsorption"].forEach(a=>{t.items.filter(e=>e.name.split("-")[0]?.toLocaleUpperCase()===xt[a]&&!e.parentId).forEach(a=>{const n=t.items.filter(e=>e.parentId===a.getInstanceId()),o=n.find(e=>"check-area"===e.name),c=o?this.getViewBoxByHeadlessPlayerItem(o,[],r):this.getViewBoxByHeadlessPlayerItem(a,n,r),h=a.transform.position.clone(),l=c.getCenter(),p=new _(...s.map(e=>e/2)),m=l.y-p.y;((e,i,r)=>{const{z:a}=e.transform.getWorldPosition(),{x:n,y:o}=t.camera.getInverseVPRatio(a);e.transform.translate(2*i*n/s[0],-2*r*o/s[1],0)})(a,0,m/i-m),a.transform.updateLocalMatrix();const d=a.transform.position.clone().subtract(h).toArray();this._pageDataUtils.changeSceneItemProperty(e,{itemId:a.getInstanceId(),type:a.type,propertyName:"position",propertyValue:d})})})}keepAdsorption(e,t,i,s,r,a,n){const{x:o,y:c}=r.getSize(),h=(e,t,s)=>{const{z:r}=e.transform.getWorldPosition(),{x:a,y:n}=i.camera.getInverseVPRatio(r);e.transform.translate(2*t*a/o,-2*s*n/c,0)},l=e=>{const t=(new U).copyFrom(i.camera.getViewProjectionMatrix());return(new _).copyFrom(e.applyMatrix(t).toVector2()).toViewCoordinate(o,c)},p=xt[e];i.items.filter(e=>e.name.split("-")[0]?.toLocaleUpperCase()===p&&!e.parentId).forEach(r=>{const o=i.items.filter(e=>e.parentId===r.getInstanceId()),c=o.find(e=>"check-area"===e.name),p=r.transform.position.clone(),m=["leftAdsorption","rightAdsorption"].includes(e)?"x":"y",d=["leftAdsorption","topAdsorption"].includes(e)?1:-1,g=["leftAdsorption","topAdsorption"].includes(e)?"min":"max",u=["leftAdsorption","topAdsorption"].includes(e)?"max":"min",f=3===r.name.split("-").length,y=Number(r.name.split("-")[1]),w=new _,x=[1,1],v=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(r,o,l);h(r,...s),v.getSize().x>a.getSize().x&&(x[0]=a.getSize().x/v.getSize().x,x[1]=a.getSize().x/v.getSize().x,r.scale(...x,1)),r.transform.updateLocalMatrix();const I=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(r,o,l),P=new _;if(!a.containsBox(I)){const{min:e,max:t}=I,{min:i,max:s}=a;P.x+=e.x<i.x?i.x-e.x:0,P.x+=t.x>s.x?s.x-t.x:0,P.y+=e.y<i.y?i.y-e.y:0,P.y+=t.y>s.y?s.y-t.y:0,h(r,...P.toArray()),r.transform.updateLocalMatrix()}const D=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(r,o,l);if(!Number.isNaN(y)&&f)if("centerAdsorption"!==e){const e=Math.abs(D[u][m]-a[g][m]),t=a.getSize()[m]*y;e>t&&(w[m]=(t-e)*d,h(r,...w.toArray()),r.transform.updateLocalMatrix())}else{const e=D.getSize()[n],t=a.getSize()[n];if(e/t>y){const i=t*y/e;r.scale(i,i,1),x[0]*=i,x[1]*=i}}const b=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(r,o,l),C=i.items.filter(e=>"T"===e.name.split("-")[0]?.toLocaleUpperCase()&&!e.parentId),z=new B;if(C.forEach(e=>{const t=i.items.filter(t=>t.parentId===e.getInstanceId()),s=t.find(e=>"check-area"===e.name),r=s?this.getViewBoxByHeadlessPlayerItem(s,[],l):this.getViewBoxByHeadlessPlayerItem(e,t,l);z.union(r)}),!z.isEmpty()&&z.max.y>b.min.y)if("centerAdsorption"===e){const e=z.max.y-b.min.y;h(r,0,e),r.transform.updateLocalMatrix()}else if(["leftAdsorption","rightAdsorption"].includes(e)){const e=b.getSize().y,t=a.getSize().y-(z.max.y-a.min.y);let i=z.max.y-b.min.y;if(e>t){const s=t/e;x[0]*=s,x[1]*=s,r.scale(s,s,1),r.transform.updateLocalMatrix(),i-=(e-t)/2}h(r,0,i),r.transform.updateLocalMatrix()}const E=r.transform.position.clone().subtract(p).toArray();this._pageDataUtils.changeSceneItemProperty(t,{itemId:r.getInstanceId(),type:r.type,propertyName:"position",propertyValue:E}),this._pageDataUtils.changeSceneItemProperty(t,{itemId:r.getInstanceId(),type:r.type,propertyName:"size",propertyValue:x})})}keepDoubleAdsorption(e,t,i,s,r,a){const{x:n,y:o}=r.getSize(),c=(e,t,s)=>{const{z:r}=e.transform.getWorldPosition(),{x:a,y:c}=i.camera.getInverseVPRatio(r);e.transform.translate(2*t*a/n,-2*s*c/o,0)},h=e=>{const t=(new U).copyFrom(i.camera.getViewProjectionMatrix());return(new _).copyFrom(e.applyMatrix(t).toVector2()).toViewCoordinate(n,o)},l=xt[e];i.items.filter(e=>e.name.split("-")[0]?.toLocaleUpperCase()===l&&!e.parentId).forEach(e=>{const r=i.items.filter(t=>t.parentId===e.getInstanceId()),n=r.find(e=>"check-area"===e.name),o=e.transform.position.clone(),l=3===e.name.split("-").length,p=Number(e.name.split("-")[1]),m=[1,1],d=n?this.getViewBoxByHeadlessPlayerItem(n,[],h):this.getViewBoxByHeadlessPlayerItem(e,r,h);c(e,...s),d.getSize().x>a.getSize().x&&(m[0]=a.getSize().x/d.getSize().x,m[1]=a.getSize().x/d.getSize().x,e.scale(...m,1)),e.transform.updateLocalMatrix();const g=n?this.getViewBoxByHeadlessPlayerItem(n,[],h):this.getViewBoxByHeadlessPlayerItem(e,r,h);if(!Number.isNaN(p)&&l){const t=g.getSize().y,i=a.getSize().y;if(t/i>p){const s=i*p/t;e.scale(s,s,1),m[0]*=s,m[1]*=s}}const u=n?this.getViewBoxByHeadlessPlayerItem(n,[],h):this.getViewBoxByHeadlessPlayerItem(e,r,h),f=new _;if(!a.containsBox(u)){const{min:t,max:i}=u,{min:s,max:r}=a;f.x+=t.x<s.x?s.x-t.x:0,f.x+=i.x>r.x?r.x-i.x:0,f.y+=t.y<s.y?s.y-t.y:0,f.y+=i.y>r.y?r.y-i.y:0,c(e,...f.toArray()),e.transform.updateLocalMatrix()}const y=e.transform.position.clone().subtract(o).toArray();this._pageDataUtils.changeSceneItemProperty(t,{itemId:e.getInstanceId(),type:e.type,propertyName:"position",propertyValue:y}),this._pageDataUtils.changeSceneItemProperty(t,{itemId:e.getInstanceId(),type:e.type,propertyName:"size",propertyValue:m})})}getViewBoxByHeadlessPlayerItem(e,t,i){const s=new B,{transform:r,composition:a}=e;switch(e.type){case w.spec.ItemType.sprite:case w.spec.ItemType.plugin:case w.spec.ItemType.video:case w.spec.ItemType.richtext:case w.spec.ItemType.text:case w.spec.ItemType.shape:{r.setValid(!0),r.updateLocalMatrix();const{size:e}=r,n=(new U).copyFrom(a?.transform.getWorldMatrix()??new U).invert().multiply(r.getWorldMatrix()),{x:o,y:c}=e.clone().divide(2),h=new F(o,c,0).applyMatrix(n),l=new F(o,-c,0).applyMatrix(n),p=new F(-o,-c,0).applyMatrix(n),m=new F(-o,c,0).applyMatrix(n),d=i(h).round(2),g=i(l).round(2),u=i(p).round(2),f=i(m).round(2);s.setFromVec2Array([d,g,u,f]);const y=t?.map(e=>{const t=a?.items.filter(t=>t.parentId===e.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(e,t,i)});y&&y.map(e=>s.union(e));break}case w.spec.ItemType.null:{const e=t?.map(e=>{const t=a?.items.filter(t=>t.parentId===e.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(e,t,i)});e&&e.map(e=>s.union(e));break}}return s}dispose(){this._player?.dispose()}},It=class e{constructor(t){m(this,"_eventEmitter",new w.EventEmitter),m(this,"_pageData"),m(this,"_screenShot"),m(this,"_exporter"),m(this,"_pageDataUtils"),m(this,"_sizeAdapt"),m(this,"_gestureHandler"),m(this,"disposables",[]),m(this,"_isSwitchScene",!1),m(this,"player"),m(this,"_container"),m(this,"_playerContainer"),m(this,"on",this._eventEmitter.on),this._container=t;const[i,s]=[t.offsetWidth,t.offsetHeight],r=document.createElement("div");r.id="player-container",r.style.width=`${i}px`,r.style.height=`${s}px`,r.style.position="absolute",r.style.backgroundRepeat="no-repeat",r.style.backgroundPosition="center center",t.appendChild(r),this._playerContainer=r,this.player=new w.Player({container:r,interactive:!0,pixelRatio:window.devicePixelRatio||1}),this.player.on("update",()=>{if((0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._isSwitchScene)return;const e=this.player.getCompositions()[0]?.time;if(this._pageData.playing)if(void 0!==e)this._pageData.time===e&&this.player.pause(),this._pageData.time=e,this._pageDataUtils.refreshPageTime(e);else{this._pageData.playing=!1,this.setPlayProgress(100);const e=this._pageData.viewProperties[this._pageData.activeData.view??0]?.scene,t=e?.compositions.find(t=>t.id===e.compositionId);this._pageData.time=t?.duration??2,this._pageDataUtils.refreshPageTime(this._pageData.time)}this._eventEmitter.emit("progress",{duration:this.player.getCompositions()[0]?.getDuration()??2,time:this._pageData.time,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!this._pageData.playing})}),this._eventEmitter.on("pageDataChange",e=>{this._pageData=e,this._gestureHandler.refresh(),this._gestureHandler.render()}),this._eventEmitter.on("zoomChange",e=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.property.zoom=e,this._pageDataUtils.refreshInteractionParam(),this._gestureHandler.refresh(),this._gestureHandler.render()}),this._eventEmitter.on("selectedItemChange",e=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.selectedItems=[...e],this._gestureHandler.refresh(),this._gestureHandler.render()}),this._eventEmitter.on("preSelectedItemChange",e=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=e,this._gestureHandler.refresh(),this._gestureHandler.render()}),this._eventEmitter.on("selectedViewChange",e=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.view=e;const t=this._pageData.viewProperties[e];this._gestureHandler.ignoreInteraction=!!t?.ignoreInteraction}),this._eventEmitter.on("sdkConfigChange",(e,t)=>{this.checkExporter(e.exportConfig,t.exportConfig)}),this._pageDataUtils=new $e(this.player,r,this._eventEmitter,this),this.initExporter(e.config.exportConfig),this._gestureHandler=new me(t),this._gestureHandler.registerViewEvent(),this._screenShot=new wt,this._sizeAdapt=new vt(this._pageDataUtils);const a=new ResizeObserver(()=>{const e=[t.offsetWidth,t.offsetHeight],i=this._pageData?.viewProperties[this._pageData.activeData.view??0];if(!i)return;const{size:s}=i,[r,a]=this._pageDataUtils.getPlayerSizeByParent(e,s);this._playerContainer.style.width=`${r}px`,this._playerContainer.style.height=`${a}px`,this.player.resize(),this._pageDataUtils.refreshInteractionParam(),this._gestureHandler.resize()});a.observe(t),this.disposables.push(()=>{a.disconnect()})}get pageData(){return this._pageData}get exportStatus(){return this?._exporter?.status}get exportOptions(){if(!this.pageData)return[];const e=this.pageData.viewProperties.filter(e=>!e.ignoreInteraction),t=e[0]?.scene?.compositions?.[0]?.name??"videos",i=[];return e.map((e,s)=>{const{size:r,scene:a,export:{name:n,...o}}=e,c=r?.[0]&&r?.[1]?` (${s+1})_${r[0]}×${r[1]}`:` (${s+1})`;let h="";return h=n?function(e,t){if(!t.includes(e))return e;let i=1,s=`${e} (${i})`;for(;t.includes(s);)i++,s=`${e} (${i})`;return s}(n,i):`${t}${c}`,i.push(h),{folderName:t,name:h,size:r,scene:JSON.parse(JSON.stringify(a)),...o}})}dispose(){this.player?.dispose(),this._screenShot?.dispose(),this._pageData=void 0,this._playerContainer.remove(),this?._exporter?.dispose(),this._screenShot.dispose(),this._gestureHandler.dispose(),this.disposables.forEach(e=>{e()})}async getInitParam(e){const t=JSON.parse(JSON.stringify(e));if("editor"===t.mode){const e=[this._container.offsetWidth,this._container.offsetHeight];return{scene:Pe(e),viewParams:[{size:e,export:{audioEnable:!1}}],options:{asyncMode:!1,safeAreaPreview:!1,adsorption:!0}}}{if("string"==typeof t.scene)try{const e=await fetch(t.scene,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}, statusText: ${e.statusText}`);const i=await e.json(),s=i.compositions.find(e=>e.id===i.compositionId)??i.compositions[0],r=t.viewParams?.length?t.viewParams:[{size:s.previewSize??[750,1624],export:{audioEnable:!1}}];return{...t,scene:i,viewParams:r}}catch(e){throw new Error(`Failed to fetch scene data from ${t.scene}: ${e instanceof Error?e.message:String(e)}`)}const e=t.scene.compositions.find(e=>e.id===t.scene.compositionId)??t.scene.compositions[0],i=t.viewParams?.length?t.viewParams:[{size:e.previewSize??[750,1624],export:{audioEnable:!1}}];return{...t,scene:t.scene,viewParams:i}}}checkExporter(e,t){this._exporter&&!le(e,t)&&(this._exporter.dispose(),this.initExporter(t))}initExporter(e){this._exporter=new yt(e),this._exporter.on("progress",e=>{this._eventEmitter.emit("exportProgress",e)}),this._exporter.on("done",(e,t,i)=>{this._eventEmitter.emit("exportDone",e,t,i)}),this._exporter.on("complete",(e,t,i)=>{this._eventEmitter.emit("exportComplete",e,t,i)})}async initSDK(t){var i;const{scene:s,viewParams:r,options:a}=t,n=[];if(e.config.pageConfig.staticPreview){const e=JSON.parse(JSON.stringify(s)),t=e.compositions.find(t=>t.id===e.compositionId)??e.compositions[0];if(t){const[i,s]=t.previewSize??[1080,1920],r=t.duration??0;n.push({size:[i,s],safeArea:[0,0,0,0],previewSafeAreas:[],id:0,scene:e,ignoreInteraction:!0,export:{time:r,audioEnable:!1}})}}for(let t=0;t<r.length;t++){const a=r[t];if(!a)continue;let o=JSON.parse(JSON.stringify(s));const c=o.compositions.find(e=>e.id===o.compositionId)??o.compositions[0];(0,w.assertExist)(c);const h=c.previewSize??[750,1624],l=h,p=a.size??h;c.previewSize=p;const m=c.duration??0,d=a.safeArea??[0,0,0,0];e.config.sizeAdaptConfig.enabled&&(o=await this._sizeAdapt.adjustment(o,m,l,p,d,a.adaptionDirection)),(i=a.export).time??(i.time=m),n.push({...a,size:p,safeArea:d,previewSafeAreas:[...a.previewSafeAreas??[]],id:t+1,scene:o,ignoreInteraction:!1})}const o=n[0]?.scene;if(!o)return void console.warn("SDK need a view property at least.");const c=o.compositions.find(e=>e.id===o.compositionId)??o.compositions[0],h={...a,zoom:1,translation:[0,0],asyncMode:a.asyncMode??!1},l=(c?.duration??0)-.1;this._pageData={scene:JSON.parse(JSON.stringify(s)),time:l,property:h,activeData:{selectedItems:[]},items:[],viewProperties:n,playing:!1},this._pageDataUtils.init(),this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),this._gestureHandler.ignoreInteraction=!!n[1]?.ignoreInteraction,e.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaEnabled=h.safeAreaPreview,this._eventEmitter.emit("progress",{duration:l,time:l,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!this._pageData.playing}),await this._pageDataUtils.loadScene(1),this._pageDataUtils.refreshPageTime(l)}async run(e){const t=await this.getInitParam(e);await this.initSDK(t),this._eventEmitter.emit("pageDataChange",this.getPageData())}getPageData(){return JSON.parse(JSON.stringify(this._pageData))}getActiveItems(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.selectedItems}setPreSelectedItem(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=e}getPreSelectedItem(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem??""}setSelectedItems(e){this._pageDataUtils.clearPreSelectedItem(),this._pageDataUtils.clearSelectedItems(),this._pageDataUtils.addSelectedItems([...e])}getItemProperty(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t=this._pageData.items.find(t=>t.id===e.itemId);if(t&&t.type===e.type)return{type:t.type,property:t.property}}getItemPropertyValue(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t=this.getItemProperty(e)?.property?.[e.propertyName];return t}async setItemPropertyValue(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t=this._pageData.viewProperties[this._pageData.activeData.view??0]?.ignoreInteraction;t?console.warn("Static scene cannot change."):(await this._pageDataUtils.changeItemProperty(e),this._gestureHandler.refresh(),this._gestureHandler.render(),this._eventEmitter.emit("pageDataChange",this.getPageData()))}async generateScreenShot(e,t=[300,400],i,s){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const r=this.pageData?.viewProperties?.[e];if(!r)return"";const{scene:a,size:[n,o]}=r,c=a.compositionId,h=a.compositions.find(e=>e.id===c);i??(i=h?.duration??0);const l=JSON.parse(JSON.stringify(a));return await this._screenShot.generate(l,[n,o],t,i,s)}async switchScene(e){if((0,w.assertExist)(this._pageData,"You must call SDK#run() first"),e===this._pageData.activeData.view)return;this._isSwitchScene=!0;if(this._pageData.viewProperties[e]){const t=this._pageData.playing;this._pageData.activeData={view:e,selectedItems:[],preSelectedItem:void 0},await this._pageDataUtils.loadScene(e),t&&(this._pageData.playing=t,this.player.gotoAndPlay(this._pageData.time))}else console.warn("target scene does not exist.");this._eventEmitter.emit("selectedViewChange",e),this._eventEmitter.emit("pageDataChange",this.getPageData()),this._isSwitchScene=!1}getPageConfig(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),{safeAreaPreview:this._pageData.property.safeAreaPreview,zoom:this._pageData.property.zoom,adsorption:this._pageData.property.adsorption,asyncMode:this._pageData.property.asyncMode}}setPageConfig(t){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const{adsorption:i,safeAreaPreview:s,zoom:r}=this._pageData.property;this._pageData.property={...this._pageData.property,...t},this._pageData.property.zoom!==r&&this._pageDataUtils.setPageZoom(this._pageData.property.zoom),i!==t.adsorption&&(e.config.gestureHandlerConfig.adsorptionGizmoEnabled=t.adsorption),s!==t.safeAreaPreview&&(e.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaEnabled=t.safeAreaPreview),this._gestureHandler.refresh(),this._gestureHandler.render()}async setPlayProgress(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t=(this.player.getCompositions()[0]?.getDuration()??2)*e/100;this._pageData.time=t;!this.player.getCompositions().length&&(Ie(this.player),await this._pageDataUtils.loadScene(this._pageData.activeData.view??0));this._pageData.playing?this.player.gotoAndPlay(t):(this.player.gotoAndStop(t),this._eventEmitter.emit("progress",{duration:this.player.getCompositions()[0]?.getDuration()??2,time:t,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!0})),this._pageDataUtils.refreshPageTime(t)}getViewItems(){return this.getPageData()?.items??[]}async setPlayState(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const t="play"===e;if(this._pageData.playing!==t){if(this._pageData.playing=t,this._gestureHandler.ignoreInteraction=t,t){const e=this.player.getCompositions();await this.player.loadScene(this._pageData.viewProperties[this._pageData.activeData.view].scene,{autoplay:!1}),this.player.gotoAndPlay(this._pageData.time),this.destroyCompositions(e)}else this.player.gotoAndStop(this._pageData.time);this._gestureHandler.refresh(),this._gestureHandler.render()}}getViewThumbnail(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.viewProperties.map(e=>({id:e.id,thumbnail:this.generateScreenShot(e.id)}))}getViewScene(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.viewProperties.map(e=>({id:e.id,thumbnail:e.scene}))}destroyCompositions(e){e.forEach(e=>{e.dispose();const t=this.player.getCompositions(),i=t.indexOf(e);i>-1&&t.splice(i,1)})}onExport(){e.config.exportConfig.enabled&&((0,w.assertExist)(this.pageData,"You must call SDK#run() first"),(0,w.assertExist)(this._exporter,"You must init exporter first"),this._exporter.onExport(this.exportOptions))}cancelExport(){(0,w.assertExist)(this._exporter,"You must init exporter first"),this._exporter.onCancel()}async loadPageData(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData={view:this._pageData.viewProperties.length,selectedItems:[],preSelectedItem:void 0},this._pageData.viewProperties.push(...e.viewProperties),this._pageDataUtils.init(),this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),await this._pageDataUtils.loadScene(this.pageData?.activeData.view??0),this._eventEmitter.emit("pageDataChange",this.getPageData())}async runByPageData(e){const t=JSON.parse(JSON.stringify(e));t.property.zoom=1,t.property.translation=[0,0],this._pageData=t,this._pageDataUtils.init(),this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),await this._pageDataUtils.loadScene(this.pageData?.activeData.view??0),this._pageDataUtils.refreshPageTime(this._pageData.time),this._eventEmitter.emit("pageDataChange",this.getPageData())}async reloadPageDataByScene(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");let t=JSON.parse(JSON.stringify(e));if("string"==typeof t)try{const e=await fetch(t,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}, statusText: ${e.statusText}`);t=await e.json()}catch(e){throw new Error(`Failed to fetch scene data from ${t}: ${e instanceof Error?e.message:String(e)}`)}this._pageData.time=t.compositions.find(e=>e.id===t.compositionId)?.duration??2,this._pageData.viewProperties.forEach(e=>{e.scene=JSON.parse(JSON.stringify(t))}),this._pageDataUtils.init(),this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),await this._pageDataUtils.loadScene(this._pageData.activeData.view??0),this._eventEmitter.emit("progress",{duration:this.player.getCompositions()[0]?.getDuration()??2,time:this._pageData.time,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!this._pageData.playing})}async addViewParams(t){var i;(0,w.assertExist)(this._pageData);const s=[],r=this._pageData.viewProperties[this._pageData.viewProperties.length-1]?.id??this._pageData.viewProperties.length-1;for(let a=0;a<t.length;a++){const n=t[a];if(!n)continue;let o=JSON.parse(JSON.stringify(this._pageData.scene));const c=o.compositions.find(e=>e.id===o.compositionId)??o.compositions[0];(0,w.assertExist)(c);const{previewSize:h=[750,1624]}=c,l=h,p=n.size??h;c.previewSize=p;const m=c.duration??0,d=n.safeArea??[0,0,0,0];e.config.sizeAdaptConfig.enabled&&(o=await this._sizeAdapt.adjustment(o,m,l,p,d,n.adaptionDirection)),(i=n.export).time??(i.time=m),s.push({...n,size:p,safeArea:d,previewSafeAreas:[...n.previewSafeAreas??[]],id:r+1+a,scene:o,ignoreInteraction:!1})}this._pageData.viewProperties.push(...s),this._eventEmitter.emit("pageDataChange",this.getPageData())}async deleteViewParams(e){e.sort((e,t)=>e-t);for(let t=0;t<e.length;t++){const i=e[t];(0,w.assertExist)(this._pageData);const s=i-t,r=this._pageData.viewProperties.findIndex(e=>e.id===s);if(!0===this._pageData.viewProperties[r]?.ignoreInteraction){console.warn("target view ignore interaction, it can not be deleted.");continue}if(r<0){console.warn("Target view is not existed.");continue}this._pageData.viewProperties.splice(r,1);const a=this._pageData.activeData.view??0;s===a?(this._pageData.activeData.view=0,await this._pageDataUtils.loadScene(0)):s<a&&(this._pageData.activeData.view=a-1),this._pageData.viewProperties.forEach(e=>{e.id>s&&(e.id-=1)})}this._eventEmitter.emit("selectedViewChange",this._pageData?.activeData?.view??0),this._eventEmitter.emit("pageDataChange",this.getPageData())}setExportParam(e,t){(0,w.assertExist)(this._pageData),this._pageData.viewProperties.forEach(i=>{void 0!==t&&i.id!==t||Object.assign(i.export,e)})}setPageZoom(e){(0,w.assertExist)(this._pageData),this._pageData.property.zoom=e,this._pageDataUtils.setPageZoom(this._pageData.property.zoom),this._gestureHandler.refresh(),this._gestureHandler.render()}setStaticPreviewEnabled(t){e.config.pageConfig.staticPreview=t}setStaticPreviewName(t){e.config.pageConfig.staticPreviewName=t}setAsyncEnabled(t){e.config.pageConfig.asncMode=t}setGroupVisibleEnabled(t){e.config.pageConfig.groupVisible=t}addFilterItemNames(t){"string"==typeof t?O(e.config.pageConfig.filterItemNames,t):t.forEach(t=>{O(e.config.pageConfig.filterItemNames,t)})}setPreferenceBackgroundColor(t){e.config.gestureHandlerConfig.preferenceGizmoConfig.markColor=t[0]<<16|t[1]<<8|t[2],e.config.gestureHandlerConfig.preferenceGizmoConfig.markAlpha=t[3]??.3,this._gestureHandler.refresh(),this._gestureHandler.render()}setSafeAreaColor(t){e.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaBoxColor=t[0]<<16|t[1]<<8|t[2],e.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaBoxAlpha=t[3]??.3,this._gestureHandler.refresh(),this._gestureHandler.render()}setSizeAdaptEnabled(t){e.config.sizeAdaptConfig.enabled=t}setScreenShotEnabled(t){e.config.screenShotConfig.enabled=t}setExportConfig(t){const i=Object.assign({},e.config.exportConfig,t);this.checkExporter(e.config.exportConfig,i),e.config.exportConfig=i}setSelectorGizmoPreSelectConfig(t,i){void 0!==t&&(e.config.gestureHandlerConfig.selectorGizmoConfig.preSelectedColor=t),void 0!==i&&(e.config.gestureHandlerConfig.selectorGizmoConfig.preSelectedWidth=i),this._gestureHandler.refresh(),this._gestureHandler.render()}setTranformGizmoWireframeConfig(t){void 0!==t.wireframeAlpha&&(e.config.gestureHandlerConfig.transformGizmoConfig.wireframeAlpha=t.wireframeAlpha),void 0!==t.wireframeColor&&(e.config.gestureHandlerConfig.transformGizmoConfig.wireframeColor=t.wireframeColor),void 0!==t.wireframeWidth&&(e.config.gestureHandlerConfig.transformGizmoConfig.wireframeWidth=t.wireframeWidth),this._gestureHandler.refresh(),this._gestureHandler.render()}getSDKConfig(){return e.config}setSDKConfig(t){const i=Object.assign({},e.config);this._eventEmitter.emit("sdkConfigChange",i,t),e.config=t}setSDKBackground(e,t){switch(e){case"color":this._container.style.removeProperty("background-color"),this._container.style.removeProperty("background-image"),this._container.style.removeProperty("background-repeat"),this._container.style.removeProperty("background-position"),this._container.style.removeProperty("background-size"),t&&(this._container.style.backgroundColor=t);break;case"image":this._container.style.removeProperty("background-color"),this._container.style.removeProperty("background-image"),this._container.style.removeProperty("background-repeat"),this._container.style.removeProperty("background-position"),this._container.style.removeProperty("background-size"),t&&(this._container.style.backgroundImage=`url(${t})`);break;case"chess-board":t??(t="#CCCCCC"),this._container.style.backgroundColor=t,this._container.style.backgroundImage="linear-gradient(45deg, #FFFFFF 25%, transparent 25%, transparent 75%, #FFFFFF 75%),linear-gradient(45deg, #FFFFFF 25%, transparent 25%, transparent 75%, #FFFFFF 75%)",this._container.style.backgroundRepeat="repeat",this._container.style.backgroundPosition="0 0, 10px 10px",this._container.style.backgroundSize="20px 20px"}}async addSpriteItem(e){await this._pageDataUtils.addSpriteItem(e)}openPictureCutGizmo(){this._gestureHandler.openPictureCutGizmo()}closePictureCutGizmo(){this._gestureHandler.closePictureCutGizmo()}groupItems(e){this._pageDataUtils.addNullItem(e)}deleteItems(e){Array.isArray(e)?e.forEach(e=>{this._pageDataUtils.deleteItem(e)}):this._pageDataUtils.deleteItem(e)}};m(It,"config",{mode:"template",pageConfig:{asncMode:!1,staticPreview:!0,staticPreviewName:"标准模板",filterItemNames:["check-area","ModelPluginItem"],groupVisible:!0},screenShotConfig:{enabled:!0},exportConfig:{enabled:!0,mediaType:"MP4",loggerInTranscoding:!1},sizeAdaptConfig:{enabled:!0},gestureHandlerConfig:{enabled:!0,adsorptionGizmoEnabled:!0,adsorptionGizmoConfig:{lineWidth:2,lineColor:37375,distance:6},controlGizmoEnabled:!0,controlGizmoConfig:{zoomStep:.01},preferenceGizmoEnabled:!0,preferenceGizmoConfig:{boxColor:16711680,boxWidth:1,markColor:0,markAlpha:.17,safeAreaEnabled:!0,safeAreaBoxColor:65280,safeAreaBoxAlpha:.3},selectorGizmoEnabled:!0,selectorGizmoConfig:{preSelectedWidth:3,preSelectedColor:15425024,regionBoxColor:16777215,regionBoxAlpha:.17,regionWireframeColor:16777215,regionWireframeAlpha:.78,regionWireframeWidth:1},transformGizmoEnabled:!0,transformGizmoConfig:{wireframeColor:16711680,wireframeAlpha:1,wireframeWidth:1.5,cornerFillColor:16777215,cornerLineColor:0,cornerLineWidth:1,cornerLineAlpha:.3,scaleCircleSize:4,rotationCircleSize:8},pictureCutGizmoEnabled:!1,pictureCutGizmoConfig:{maskColor:16777215,maskAlpha:.5,cutBoxLineWidth:2,cutBoxLineColor:6960383,cutBoxLineAlpha:1,itemBoxLineWidth:1,itemBoxLineColor:6960383,itemBoxLineAlpha:1,cutBoxCornerRadius:5,cutBoxCornerLineWidth:2,cutBoxCornerLineColor:6960383,cutBoxCornerLineAlpha:1,cutBoxCornerFillColor:16777215,scaleInteractionDistance:8,directionScaleInteractionDistance:5}}});var Pt=It;
|