@vvfx/sdk 0.1.19-alpha.2 → 0.1.19-alpha.20

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.js CHANGED
@@ -1,4 +1,4 @@
1
- var t=Object.defineProperty,e=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,s=t=>{throw TypeError(t)},n=(e,i)=>{for(var r in i)t(e,r,{get:i[r],enumerable:!0})},o=(s,n,o,a)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let c of i(n))r.call(s,c)||c===o||t(s,c,{get:()=>n[c],enumerable:!(a=e(n,c))||a.enumerable});return s},a=(t,e,i)=>(o(t,e,"default"),i&&o(i,e,"default")),c=(e,i,r)=>((e,i,r)=>i in e?t(e,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[i]=r)(e,"symbol"!=typeof i?i+"":i,r),h=(t,e,i)=>e.has(t)||s("Cannot "+i),l=(t,e,i)=>(h(t,e,"read from private field"),i?i.call(t):e.get(t)),p=(t,e,i)=>e.has(t)?s("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,i),d=(t,e,i,r)=>(h(t,e,"write to private field"),r?r.call(t,i):e.set(t,i),i);import"@galacean/effects";import{spec as m,VFXItem as g,Player as u,math as y,Composition as f,EventEmitter as x,assertExist as w,SpriteComponent as v,TextComponent as I,Texture as P,generateGUID as b}from"@galacean/effects";import"@galacean/effects-plugin-rich-text";import{RichTextComponent as S}from"@galacean/effects-plugin-rich-text";import"@galacean/effects-plugin-model";import"@galacean/effects-plugin-multimedia";import{VideoComponent as C}from"@galacean/effects-plugin-multimedia";import"@galacean/effects-plugin-spine";import"@galacean/effects-plugin-ffd";var D=(t=>(t.SPRITE="sprite",t.TEXT="text",t.VIDEO="video",t.GROUP="group",t.GENERATOR="generator",t.EFFECTS="effects",t.FRAME="frame",t))(D||{}),z=(m.ItemType.sprite,m.ItemType.text,m.ItemType.video,m.ItemType.null,m.ItemType.composition,m.ItemType.composition,m.ItemType.sprite,class t extends y.Vector2{subtract(t){return this.x-=t.x,this.y-=t.y,this}toViewCoordinate(t,e){return this.x=(this.x+1)/2*t,this.y=(1-(this.y+1)/2)*e,this}clone(){return new t(this.x,this.y)}distanceTo(t){const e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)}scaleByCenter(e,i=new t){const r=(new t).subtractVectors(i,this).multiply(e);return this.subtractVectors(i,r)}round(t=0){const e=Math.pow(10,t);return this.x=Math.round(this.x*e)/e,this.y=Math.round(this.y*e)/e,this}distanceToLine(e){const i=Math.pow(e.length(),2),{start:r,end:s}=e;if(0===i)return{d:(new t).subtractVectors(this,r).length(),t:0};const n=_(((this.x-r.x)*(s.x-r.x)+(this.y-r.y)*(s.y-r.y))/i,0,1);return{d:(new t).subtractVectors(this,e.at(n)).length(),t:n}}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}rotateAround(t,e){const i=Math.cos(e),r=Math.sin(e),s=this.x-t.x,n=this.y-t.y;return this.x=s*i-n*r+t.x,this.y=s*r+n*i+t.y,this}}),A=1e-6;function _(t,e,i){const r=isNaN(e)?-1/0:e,s=isNaN(i)?1/0:i,n=Math.min(r,s),o=Math.max(r,s);return Math.min(Math.max(t,n),o)}var T=Math.PI/180,E=180/Math.PI;function B(t){return Math.atan2(-t.y,-t.x)+Math.PI}function k(t,e){const i=Math.min(Math.max(t.dot(e)/t.length()/e.length(),-1),1);let r=Math.acos(i);return r=t.x*e.y-t.y*e.x>0?r:-r,r}function M(t,e,i=Math.round){if(Number.isInteger(t))return t;const r=Math.pow(10,e);return i(t*r)/r}function U(t){let e,i=0;return t.forEach((t,r)=>{if(0===r)e=Math.abs(t);else{const s=Math.abs(t);e<s&&(e=s,i=r)}}),i}function G(t,e){return Math.abs(t-e)<A||t===1/0&&e===1/0||t===-1/0&&e===-1/0}function F(t){return isNaN(t)||Math.abs(t)<A}function R(t,e){const i=new W,{min:r,max:s}=t,{min:n,max:o}=e,a=r.clone().add((new z).subtractVectors(s,r).multiply(n)),c=r.clone().add((new z).subtractVectors(s,r).multiply(o));return i.setFromVec2ArrayWithOutCorners([a,c]),i}function V(t,e){const i=new W,{min:r,max:s}=t,{min:n,max:o}=e,a=(new z).subtractVectors(n,r).divide((new z).subtractVectors(s,r)),c=(new z).subtractVectors(o,r).divide((new z).subtractVectors(s,r));return i.setFromVec2ArrayWithOutCorners([a,c]),i}var L=class t{constructor(t=new z,e=new z){c(this,"start",new z),c(this,"end",new z),this.start.copyFrom(t),this.end.copyFrom(e)}set(t,e){return this.start.copyFrom(t),this.end.copyFrom(e),this}copyFrom(t){return this.start.copyFrom(t.start),this.end.copyFrom(t.end),this}direction(){return(new z).subtractVectors(this.end,this.start).normalize()}getCenter(t=new z){return t.addVectors(this.start,this.end).multiply(.5)}delta(t=new z){return t.subtractVectors(this.end,this.start)}distanceSq(){return this.start.distanceSquared(this.end)}distance(){return this.start.distance(this.end)}at(t,e=new z){return this.delta(e).multiply(t).add(this.start)}closestPointToPointParameter(t,e){const i=new z,r=new z;i.subtractVectors(t,this.start),r.subtractVectors(this.end,this.start);const s=r.dot(r);let n=r.dot(i)/s;return e&&(n=_(n,0,1)),n}closestPointToPoint(t,e,i=new z){const r=this.closestPointToPointParameter(t,e);return this.delta(i).multiply(r).add(this.start)}equals(t){return t.start.equals(this.start)&&t.end.equals(this.end)}clone(){return(new t).copyFrom(this)}length(){return(new z).subtractVectors(this.end,this.start).length()}crossWithLine(t){const e=this.delta(),i=t.delta(),r=(new z).subtractVectors(t.start,this.start),s=(new z).subtractVectors(t.end,this.start),n=(new z).subtractVectors(this.start,t.start),o=(new z).subtractVectors(this.end,t.start),a=r.cross(e),c=s.cross(e),h=n.cross(i),l=o.cross(i);return a*c<0&&h*l<0}},W=class t{constructor(t=new z(1/0,1/0),e=new z(-1/0,-1/0)){c(this,"corners",[]),c(this,"min",new z(1/0,1/0)),c(this,"max",new z(-1/0,-1/0)),this.min=t.clone(),this.max=e.clone(),this.isEmpty()?this.corners=[]:this.corners=[new z(e.x,t.y),e.clone(),new z(t.x,e.y),t.clone()]}set(t,e){return this.min.copyFrom(t),this.max.copyFrom(e),this.corners=[new z(e.x,t.y),e.clone(),new z(t.x,e.y),t.clone()],this}setFromVec2Array(t){return this.min=(new z).copyFrom(t[0]),this.max=(new z).copyFrom(t[0]),t.forEach(t=>{this.min.min(t),this.max.max(t),this.corners.push(t.clone())}),this}setFromVec2ArrayWithOutCorners(t){return this.min=(new z).copyFrom(t[0]),this.max=(new z).copyFrom(t[0]),t.forEach(t=>{this.min=this.min.min(t),this.max=this.max.max(t)}),this.corners.push(new z(this.max.x,this.min.y)),this.corners.push(new z(this.max.x,this.max.y)),this.corners.push(new z(this.min.x,this.max.y)),this.corners.push(new z(this.min.x,this.min.y)),this}setFromCenterAndSize(t,e){const i=(new z).copyFrom(e).multiply(.5);return this.min.copyFrom(t).subtract(i),this.max.copyFrom(t).add(i),this.corners=[new z(this.max.x,this.min.y),this.max.clone(),new z(this.min.x,this.max.y),this.min.clone()],this}clone(){return(new t).copyFrom(this)}copyFrom(t){return this.corners=[],this.min.copyFrom(t.min),this.max.copyFrom(t.max),t.corners.forEach(t=>{this.corners.push(t.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 t=[];return this.corners.forEach(e=>{t.push(e.clone())}),t}getCenter(t=new z){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiply(.5)}getSize(t=new z){return this.isEmpty()?t.set(0,0):t.subtractVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.subtract(t),this.max.add(t),this}expandByScalar(t){return this.min.add(-t),this.max.add(t),this}containsPoint(t,e=!0){if(e)return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y);if(this.isEmpty())return!1;for(let e=0;e<this.corners.length;e++){const i=this.corners[e],r=this.corners[(e+1)%4],s=new z(r.x-i.x,r.y-i.y),n=new z(t.x-i.x,t.y-i.y);if(s.cross(n)<0)return!1}return!0}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e=new z){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}clampPoint(t,e=new z){return e.copyFrom(t).clamp(this.min,this.max)}distanceToPoint(t){return(new z).copyFrom(t).clamp(this.min,this.max).subtract(t).length()}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.min.x>this.max.x||this.min.y>this.max.y?this.makeEmpty():this}union(e){return e instanceof t?(this.min.min(e.min),this.max.max(e.max)):(this.min.min(e),this.max.max(e)),this.corners=[new z(this.max.x,this.min.y),this.max.clone(),new z(this.min.x,this.max.y),this.min.clone()],this}translate(t){return this.min.add(t),this.max.add(t),this.corners.forEach(e=>{e.add(t)}),this}scale(t,e){e??(e=this.getCenter());const i="number"==typeof t?new z(t,t):new z(t.x,t.y);return this.min.scaleByCenter(i,e),this.max.scaleByCenter(i,e),this.corners.forEach(t=>{t.scaleByCenter(i,e)}),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}intersectsBox(t,e=!0){if(e)return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y);if(!this.isEmpty())for(let e=0;e<this.corners.length;e++){const i=new L(this.corners[e],this.corners[(e+1)%4]);if(t.containsPoint(this.corners[e],!1))return!0;for(let e=0;e<t.corners.length;e++){const r=new L(t.corners[e],t.corners[(e+1)%4]);if(this.containsPoint(t.corners[e],!1))return!0;if(i.crossWithLine(r))return!0}}for(let e=0;e<t.corners.length;e++){const i=this.containsPoint(t.corners[e],!1),r=t.containsPoint(this.corners[e],!1);if(i||r)return!0}return!1}rotate(t,e){e??(e=this.getCenter());const i=this.corners.map(i=>i.rotateAround(e,t));return this.makeEmpty(),this.setFromVec2Array(i),this}},O=class t{constructor(t=new z,e=0){c(this,"center"),c(this,"radius"),this.center=t.clone(),this.radius=e}set(t,e){return this.center=(new z).copyFrom(t),this.radius=e,this}clone(){return(new t).copy(this)}copy(t){return this.center.copyFrom(t.center),this.radius=t.radius,this}makeEmpty(){return this.center=new z,this.radius=0,this}isEmpty(){return this.radius<=0}getCenter(t=new z){return t.copyFrom(this.center),t}getRadius(){return this.radius}expandByPoint(t){return this.radius=this.center.distanceTo(t),this}expandByScalar(t){return this.radius+=t,this}containsPoint(t){return this.center.distanceTo(t)<this.radius}containsBox(t){for(let e=0;e<4;e++)if(!this.containsPoint(t.corners[e]))return!1;return!0}intersectsBox(t){for(let e=0;e<4;e++)if(this.containsPoint(t.corners[e]))return!0;return!1}distanceToPoint(t){return this.center.distanceTo(t)-this.radius}},H=class extends y.Quaternion{},j=class t extends y.Vector3{clone(){return new t(this.x,this.y,this.z)}setFromMatrixColumn(t,e){return this.set(...t.elements.slice(4*e))}applyEuler(t,e){return this.applyQuaternion((new H).setFromEuler(t))}applyQuaternion(e,i=new t){const{x:r,y:s,z:n,w:o}=e,{x:a,y:c,z:h}=this.subtract(i),l=o*a+s*h-n*c,p=o*c+n*a-r*h,d=o*h+r*c-s*a,m=-r*a-s*c-n*h;return this.x=l*o+m*-r+p*-n-d*-s+i.x,this.y=p*o+m*-s+d*-r-l*-n+i.y,this.z=d*o+m*-n+l*-s-p*-r+i.z,this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}applyMatrix(e,i=new t){const r=e.elements,{x:s,y:n,z:o}=this.subtract(i);let a=1/(r[3]*s+r[7]*n+r[11]*o+r[15]);return a=isNaN(a)?1:a,this.x=(r[0]*s+r[4]*n+r[8]*o+r[12])*a+i.x,this.y=(r[1]*s+r[5]*n+r[9]*o+r[13])*a+i.y,this.z=(r[2]*s+r[6]*n+r[10]*o+r[14])*a+i.z,this}},N=class t extends y.Matrix4{static fromArray(e,i=0){return(new t).setFromArray(e,i)}clone(){const e=this.elements;return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}compose(t,e,i,r=j.ZERO){const s=this.elements,{x:n,y:o,z:a,w:c}=e,h=-r.x,l=-r.y,p=-r.z,d=n+n,m=o+o,g=a+a,u=n*d,y=n*m,f=n*g,x=o*m,w=o*g,v=a*g,I=c*d,P=c*m,b=c*g,{x:S,y:C,z:D}=i;return s[0]=(1-(x+v))*S,s[1]=(y+b)*S,s[2]=(f-P)*S,s[3]=0,s[4]=(y-b)*C,s[5]=(1-(u+v))*C,s[6]=(w+I)*C,s[7]=0,s[8]=(f+P)*D,s[9]=(w-I)*D,s[10]=(1-(u+x))*D,s[11]=0,s[12]=h*s[0]+l*s[4]+p*s[8]-h+t.x,s[13]=h*s[1]+l*s[5]+p*s[9]-l+t.y,s[14]=h*s[2]+l*s[6]+p*s[10]-p+t.z,this}extractRotation(t){const e=new j,i=t.elements,r=this.elements,s=1/e.setFromMatrixColumn(t,0).length(),n=1/e.setFromMatrixColumn(t,1).length(),o=1/e.setFromMatrixColumn(t,2).length();return r[0]=i[0]*s,r[1]=i[1]*s,r[2]=i[2]*s,r[3]=0,r[4]=i[4]*n,r[5]=i[5]*n,r[6]=i[6]*n,r[7]=0,r[8]=i[8]*o,r[9]=i[9]*o,r[10]=i[10]*o,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,this}makeRotationFromEuler(t){const e=this.elements,i=t.x,r=t.y,s=t.z,n=Math.cos(i),o=Math.sin(i),a=Math.cos(r),c=Math.sin(r),h=Math.cos(s),l=Math.sin(s);if(t.order===y.EulerOrder.XYZ){const t=n*h,i=n*l,r=o*h,s=o*l;e[0]=a*h,e[4]=-a*l,e[8]=c,e[1]=i+r*c,e[5]=t-s*c,e[9]=-o*a,e[2]=s-t*c,e[6]=r+i*c,e[10]=n*a}else if(t.order===y.EulerOrder.YXZ){const t=a*h,i=a*l,r=c*h,s=c*l;e[0]=t+s*o,e[4]=r*o-i,e[8]=n*c,e[1]=n*l,e[5]=n*h,e[9]=-o,e[2]=i*o-r,e[6]=s+t*o,e[10]=n*a}else if(t.order===y.EulerOrder.ZXY){const t=a*h,i=a*l,r=c*h,s=c*l;e[0]=t-s*o,e[4]=-n*l,e[8]=r+i*o,e[1]=i+r*o,e[5]=n*h,e[9]=s-t*o,e[2]=-n*c,e[6]=o,e[10]=n*a}else if(t.order===y.EulerOrder.ZYX){const t=n*h,i=n*l,r=o*h,s=o*l;e[0]=a*h,e[4]=r*c-i,e[8]=t*c+s,e[1]=a*l,e[5]=s*c+t,e[9]=i*c-r,e[2]=-c,e[6]=o*a,e[10]=n*a}else if(t.order===y.EulerOrder.YZX){const t=n*a,i=n*c,r=o*a,s=o*c;e[0]=a*h,e[4]=s-t*l,e[8]=r*l+i,e[1]=l,e[5]=n*h,e[9]=-o*h,e[2]=-c*h,e[6]=i*l+r,e[10]=t-s*l}else if(t.order===y.EulerOrder.XZY){const t=n*a,i=n*c,r=o*a,s=o*c;e[0]=a*h,e[4]=-l,e[8]=c*h,e[1]=t*l+s,e[5]=n*h,e[9]=i*l-r,e[2]=r*l-i,e[6]=o*h,e[10]=s*l+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}setPosition(t){return this.elements[12]=t.x,this.elements[13]=t.y,this.elements[14]=t.z,this}},K=class extends y.Euler{constructor(t=0,e=0,i=0,r=y.EulerOrder.XYZ){super(t,e,i,r)}getInvertMatrixByEuler(){return(new N).makeRotationFromEuler(this).invert()}toDegreeVector3(t){return t?t.set(this.x*E,this.y*E,this.z*E):new j(this.x*E,this.y*E,this.z*E)}setFromDegreeVector3(t,e){return this.set(t.x*T,t.y*T,t.z*T,e??this.order)}},$=class t{constructor(t=0,e=new j(0,0,1)){c(this,"distance"),c(this,"normal");const i=e.length();0===i&&(this.normal=new j(0,0,1)),this.distance=t/(i??1),this.normal=e.normalize()}static set(e,i){return new t(e,i)}set(t,e){const i=e.length();return 0===i&&(this.normal=new j(0,0,1)),this.distance=t/i,this.normal=e.normalize(),this}static copy(e){return new t(e.distance,e.normal.clone())}copy(t){return this.distance=t.distance,this.normal.copyFrom(t.normal),this}static setFromNormalAndCoplanarPoint(e,i){const r=-e.dot(i);return new t(r,i)}setFromNormalAndCoplanarPoint(t,e){return this.normal.copyFrom(e),this.distance=-t.dot(this.normal),this}clone(){return new t(this.distance,this.normal.clone())}distanceToPoint(t){return this.normal.dot(t)+this.distance}},Y=class t extends y.Ray{constructor(t=new j,e=new j(1,0,0)){super(t,e),c(this,"origin"),c(this,"direction"),this.origin=t.clone(),this.direction=e.clone()}clone(){return new t(this.origin,this.direction)}rayCastPlane(t,e){const i=this.distanceToPlane(t);return isNaN(i)||this.at(i),i}at(t){return this.direction.clone().normalize().multiply(t).add(this.origin)}distanceToPlane(t){const e=t.normal.dot(this.direction);if(F(e))return F(t.distanceToPoint(this.origin))?0:NaN;const i=(-this.origin.dot(t.normal)-t.distance)/e;return i>0?i:NaN}},J=class{constructor(t=new Y){c(this,"ray"),this.ray=t.clone()}setFromCamera(t,e){const i=e.position,r=new j(t.x,t.y,.5).applyMatrix(e.inverseViewProjectMatrix).subtract(i).normalize();return this.ray.set(i,r),this}rayCastPlane(t){const e=new j,i=this.ray.rayCastPlane(t,e);if(!isNaN(i))return{distance:i,point:this.ray.at(i)}}};function X(t,e){t.includes(e)||t.push(e)}function Z(t){return"object"==typeof t&&!!t}function q(t,e){if(Z(t)&&Z(e)){if(Array.isArray(t)&&Array.isArray(e))return t.length===e.length&&t.every((t,i)=>q(t,e[i]));const i=[];for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){if(!q(t[r],e[r]))return!1;i.push(r)}return Object.getOwnPropertyNames(e).length===i.length}return t===e}function Q(t){if(void 0!==t)return JSON.parse(JSON.stringify(t))}function tt(t){return t.map((t,e)=>e<3?M(255*t,0):t)}function et(t){return t.map((t,e)=>e<3?M(t/255,4):t)}var it=class{constructor(t){c(this,"id"),c(this,"name"),c(this,"parentId"),c(this,"duration"),c(this,"delay"),c(this,"endBehavior"),c(this,"visible"),c(this,"isLocked"),c(this,"isCoreEditable"),c(this,"_extension",new Map),this.id=t.id,this.name=t.name,this.parentId=t.parentId,this.duration=t.duration??999,this.delay=t.delay??0,this.endBehavior=t.endBehavior??m.EndBehavior.freeze,this.visible=t.visible??!0,this.isLocked=t.isLocked??!1,this.isCoreEditable=t.isCoreEditable,t.extension&&Object.entries(t.extension).forEach(([t,e])=>{this._extension.set(t,e)});const e=["id","name","parentId","children","visible","duration","delay","endBehavior","isLocked","type","property","extension"];Object.keys(t).forEach(i=>{e.includes(i)||this._extension.set(i,t[i])})}setExtension(t,e){this._extension.set(t,e)}getExtension(t){return this._extension.get(t)}hasExtension(t){return this._extension.has(t)}deleteExtension(t){return this._extension.delete(t)}getExtensionKeys(){return Array.from(this._extension.keys())}getAllExtension(){return Q(Object.fromEntries(this._extension.entries()))}setExtensions(t){Object.entries(t).forEach(([t,e])=>{this._extension.set(t,e)})}clearExtension(){this._extension.clear()}toJSON(){return{id:this.id,name:this.name,type:this.type,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,property:Q(this.property),extension:this.getAllExtension()}}};function rt(t){return t instanceof it}var st=class t extends it{constructor(t){super(t),c(this,"type","sprite"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],image:t.property?.image??""}}get image(){return this.property.image}set image(t){this.property.image=t}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}toCreateInfo(t){const e=this.getAllExtension(),i=Q(this.property);return Object.assign(i,{width:i.size[0],height:i.size[1]}),delete i.size,{type:"sprite",id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:i}}clone(){return new t({id:b(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:Q(this.property),extension:this.getAllExtension()})}toCreateInfoWithExtensions(t,e){const i=this.toCreateInfo(t);return e&&Object.assign(i,e),i}};function nt(t){return t instanceof st}var ot=class t extends it{constructor(t){super(t),c(this,"type","text"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],fontFamily:t.property?.fontFamily??"",color:t.property?.color??[0,0,0,1],fontWeight:t.property?.fontWeight??m.TextWeight.normal,text:t.property?.text??"",textAlign:t.property?.textAlign??m.TextAlignment.left,fontSize:t.property?.fontSize??24,fontStyle:t.property?.fontStyle??m.FontStyle.normal,lineHeight:t.property?.lineHeight??24,outlineColor:t.property?.outlineColor,outlineWidth:t.property?.outlineWidth,outlineEnabled:t.property?.outlineEnabled??!1,fontUrl:t.property?.fontUrl}}get text(){return this.property.text}set text(t){this.property.text=t}get fontFamily(){return this.property.fontFamily}set fontFamily(t){this.property.fontFamily=t}get fontSize(){return this.property.fontSize}set fontSize(t){this.property.fontSize=t}get fontWeight(){return this.property.fontWeight}set fontWeight(t){this.property.fontWeight=t}get fontStyle(){return this.property.fontStyle}set fontStyle(t){this.property.fontStyle=t}get textAlign(){return this.property.textAlign}set textAlign(t){this.property.textAlign=t}get color(){return this.property.color}set color(t){this.property.color=t}get width(){return this.property.width}set width(t){this.property.width=t}get lineHeight(){return this.property.lineHeight}set lineHeight(t){this.property.lineHeight=t}get height(){return this.property.height}set height(t){this.property.height=t}get outlineColor(){return this.property.outlineColor}set outlineColor(t){this.property.outlineColor=t}get outlineWidth(){return this.property.outlineWidth}set outlineWidth(t){this.property.outlineWidth=t}get outlineEnabled(){return this.property.outlineEnabled??!1}set outlineEnabled(t){this.property.outlineEnabled=t}get position(){return this.property.position}set position(t){this.property.position=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}toCreateInfo(t){const e=this.getAllExtension();return{type:"text",id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:Q(this.property)}}clone(){return new t({id:b(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:Q(this.property),extension:this.getAllExtension()})}};function at(t){return t instanceof ot}var ct=class t extends it{constructor(t){super(t),c(this,"type","video"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],video:t.property?.video??"",muted:t.property?.muted??!0,transparent:t.property?.transparent??!0,playbackRate:t.property?.playbackRate??1,volume:t.property?.volume??0}}get video(){return this.property.video}set video(t){this.property.video=t}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}get muted(){return this.property.muted??!0}set muted(t){this.property.muted=t}get transparent(){return this.property.transparent??!0}set transparent(t){this.property.transparent=t}get volume(){return this.property.volume??0}set volume(t){this.property.volume=t}get playbackRate(){return this.property.playbackRate??1}set playbackRate(t){this.property.playbackRate=t}toCreateInfo(t){const e=this.getAllExtension();return{type:"video",id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:Q(this.property)}}clone(){return new t({id:b(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:Q(this.property),extension:this.getAllExtension()})}};function ht(t){return t instanceof ct}var lt=class t extends it{constructor(t){super(t),c(this,"type","group"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,children:[...t.children??[]],scale:t.property?.scale??[1,1]}}get position(){return this.property.position}set position(t){this.property.position=t}get scale(){return this.property.scale}set scale(t){this.property.scale=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}toCreateInfo(t){const e=this.getAllExtension();return{type:this.type,id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:Q(this.property)}}clone(){return new t({id:b(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:Q(this.property),extension:this.getAllExtension()})}};function pt(t){return t instanceof lt}var dt=class t extends it{constructor(t){super(t),c(this,"type","generator"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],generatorType:t.property?.generatorType??"video"}}get generatorType(){return this.property.generatorType}set generatorType(t){this.property.generatorType=t}get image(){return""}set image(t){}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}toCreateInfo(t){const e=this.getAllExtension();return{type:"generator",id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:Q(this.property)}}toVideoCreateInfo(t,e){const i=this.getAllExtension(),r=Q(this.property);return delete r.generatorType,{type:"video",id:this.id,name:this.name,parentId:e?this.parentId:void 0,extension:Object.keys(i).length>0?i:void 0,property:{video:t,...r}}}toSpriteCreateInfo(t,e){const i=this.getAllExtension(),r=Q(this.property);return delete r.generatorType,{type:"sprite",id:this.id,name:this.name,parentId:e?this.parentId:void 0,extension:Object.keys(i).length>0?i:void 0,property:{image:t,...r}}}clone(){return new t({id:b(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:Q(this.property),extension:this.getAllExtension()})}};function mt(t){return t instanceof dt}var gt=class t extends it{constructor(t){super(t),c(this,"type","effects"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],effects:t.property?.effects??""}}get effects(){return this.property.effects}set effects(t){this.property.effects=t}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}toCreateInfo(t){const e={type:"effects",id:this.id,name:this.name,property:Q(this.property)};t&&this.parentId&&(e.parentId=this.parentId);const i=this.getAllExtension();return Object.keys(i).length>0&&(e.extension=i),e}clone(){return new t({id:b(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:Q(this.property),extension:this.getAllExtension()})}};function ut(t){return t instanceof gt}var yt=(t=>(t[t.BringToFront=0]="BringToFront",t[t.SendToBack=1]="SendToBack",t[t.BringForward=2]="BringForward",t[t.SendBackward=3]="SendBackward",t))(yt||{}),ft=class t extends it{constructor(t){super(t),c(this,"type","frame"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],layoutMode:t.property?.layoutMode??"free",children:[...t.children??[]]}}get children(){return this.property.children}get layoutMode(){return this.property.layoutMode}set layoutMode(t){this.property.layoutMode=t}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get scale(){return this.property.scale}set scale(t){this.property.scale=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}addChild(t){return!this.property.children.includes(t)&&(this.property.children.push(t),!0)}addChildren(t){t.map(t=>this.addChild(t))}removeChild(t){const e=this.property.children.indexOf(t);return-1!==e&&(this.property.children.splice(e,1),!0)}removeChildren(t){this.property.children=this.property.children.filter(e=>!t.includes(e))}hasChild(t){return this.property.children.includes(t)}clearChildren(){this.property.children=[]}toCreateInfo(t){const e={type:"frame",id:this.id,name:this.name,property:Q(this.property)};t&&this.parentId&&(e.parentId=this.parentId);const i=this.getAllExtension();return Object.keys(i).length>0&&(e.extension=i),e}clone(){return new t({id:b(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:Q(this.property),extension:this.getAllExtension()})}};function xt(t){return t instanceof ft}function wt(t,e){switch(t){case m.ItemType.sprite:return new st(e);case m.ItemType.null:return new lt(e);case m.ItemType.text:return new ot(e);case m.ItemType.video:return new ct(e);default:return console.warn(`SDKItem type ${t} not implemented, falling back to GroupItem`),new lt(e)}}var vt="object"==typeof global&&global&&global.Object===Object&&global,It="object"==typeof self&&self&&self.Object===Object&&self,Pt=vt||It||Function("return this")(),bt=Pt.Symbol,St=Object.prototype,Ct=St.hasOwnProperty,Dt=St.toString,zt=bt?bt.toStringTag:void 0;var At=function(t){var e=Ct.call(t,zt),i=t[zt];try{t[zt]=void 0;var r=!0}catch(t){}var s=Dt.call(t);return r&&(e?t[zt]=i:delete t[zt]),s},_t=Object.prototype.toString;var Tt=function(t){return _t.call(t)},Et=bt?bt.toStringTag:void 0;var Bt=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Et&&Et in Object(t)?At(t):Tt(t)};var kt=function(t){return null!=t&&"object"==typeof t},Mt=Array.isArray;var Ut=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};var Gt=function(t){return t};var Ft,Rt=function(t){if(!Ut(t))return!1;var e=Bt(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e},Vt=Pt["__core-js_shared__"],Lt=(Ft=/[^.]+$/.exec(Vt&&Vt.keys&&Vt.keys.IE_PROTO||""))?"Symbol(src)_1."+Ft:"";var Wt=function(t){return!!Lt&&Lt in t},Ot=Function.prototype.toString;var Ht=function(t){if(null!=t){try{return Ot.call(t)}catch(t){}try{return t+""}catch(t){}}return""},jt=/^\[object .+?Constructor\]$/,Nt=Function.prototype,Kt=Object.prototype,$t=Nt.toString,Yt=Kt.hasOwnProperty,Jt=RegExp("^"+$t.call(Yt).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Xt=function(t){return!(!Ut(t)||Wt(t))&&(Rt(t)?Jt:jt).test(Ht(t))};var Zt=function(t,e){return null==t?void 0:t[e]};var qt=function(t,e){var i=Zt(t,e);return Xt(i)?i:void 0},Qt=Object.create,te=function(){function t(){}return function(e){if(!Ut(e))return{};if(Qt)return Qt(e);t.prototype=e;var i=new t;return t.prototype=void 0,i}}();var ee=function(t,e,i){switch(i.length){case 0:return t.call(e);case 1:return t.call(e,i[0]);case 2:return t.call(e,i[0],i[1]);case 3:return t.call(e,i[0],i[1],i[2])}return t.apply(e,i)};var ie=function(t,e){var i=-1,r=t.length;for(e||(e=Array(r));++i<r;)e[i]=t[i];return e},re=Date.now;var se=function(t){var e=0,i=0;return function(){var r=re(),s=16-(r-i);if(i=r,s>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}};var ne=function(t){return function(){return t}},oe=function(){try{var t=qt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),ae=se(oe?function(t,e){return oe(t,"toString",{configurable:!0,enumerable:!1,value:ne(e),writable:!0})}:Gt),ce=/^(?:0|[1-9]\d*)$/;var he=function(t,e){var i=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==i||"symbol"!=i&&ce.test(t))&&t>-1&&t%1==0&&t<e};var le=function(t,e,i){"__proto__"==e&&oe?oe(t,e,{configurable:!0,enumerable:!0,value:i,writable:!0}):t[e]=i};var pe=function(t,e){return t===e||t!=t&&e!=e},de=Object.prototype.hasOwnProperty;var me=function(t,e,i){var r=t[e];de.call(t,e)&&pe(r,i)&&(void 0!==i||e in t)||le(t,e,i)};var ge=function(t,e,i,r){var s=!i;i||(i={});for(var n=-1,o=e.length;++n<o;){var a=e[n],c=r?r(i[a],t[a],a,i,t):void 0;void 0===c&&(c=t[a]),s?le(i,a,c):me(i,a,c)}return i},ue=Math.max;var ye=function(t,e,i){return e=ue(void 0===e?t.length-1:e,0),function(){for(var r=arguments,s=-1,n=ue(r.length-e,0),o=Array(n);++s<n;)o[s]=r[e+s];s=-1;for(var a=Array(e+1);++s<e;)a[s]=r[s];return a[e]=i(o),ee(t,this,a)}};var fe=function(t,e){return ae(ye(t,e,Gt),t+"")};var xe=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991};var we=function(t){return null!=t&&xe(t.length)&&!Rt(t)};var ve=function(t,e,i){if(!Ut(i))return!1;var r=typeof e;return!!("number"==r?we(i)&&he(e,i.length):"string"==r&&e in i)&&pe(i[e],t)};var Ie=function(t){return fe(function(e,i){var r=-1,s=i.length,n=s>1?i[s-1]:void 0,o=s>2?i[2]:void 0;for(n=t.length>3&&"function"==typeof n?(s--,n):void 0,o&&ve(i[0],i[1],o)&&(n=s<3?void 0:n,s=1),e=Object(e);++r<s;){var a=i[r];a&&t(e,a,r,n)}return e})},Pe=Object.prototype;var be=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Pe)};var Se=function(t,e){for(var i=-1,r=Array(t);++i<t;)r[i]=e(i);return r};var Ce=function(t){return kt(t)&&"[object Arguments]"==Bt(t)},De=Object.prototype,ze=De.hasOwnProperty,Ae=De.propertyIsEnumerable,_e=Ce(function(){return arguments}())?Ce:function(t){return kt(t)&&ze.call(t,"callee")&&!Ae.call(t,"callee")};var Te=function(){return!1},Ee="object"==typeof exports&&exports&&!exports.nodeType&&exports,Be=Ee&&"object"==typeof module&&module&&!module.nodeType&&module,ke=Be&&Be.exports===Ee?Pt.Buffer:void 0,Me=(ke?ke.isBuffer:void 0)||Te,Ue={};Ue["[object Float32Array]"]=Ue["[object Float64Array]"]=Ue["[object Int8Array]"]=Ue["[object Int16Array]"]=Ue["[object Int32Array]"]=Ue["[object Uint8Array]"]=Ue["[object Uint8ClampedArray]"]=Ue["[object Uint16Array]"]=Ue["[object Uint32Array]"]=!0,Ue["[object Arguments]"]=Ue["[object Array]"]=Ue["[object ArrayBuffer]"]=Ue["[object Boolean]"]=Ue["[object DataView]"]=Ue["[object Date]"]=Ue["[object Error]"]=Ue["[object Function]"]=Ue["[object Map]"]=Ue["[object Number]"]=Ue["[object Object]"]=Ue["[object RegExp]"]=Ue["[object Set]"]=Ue["[object String]"]=Ue["[object WeakMap]"]=!1;var Ge=function(t){return kt(t)&&xe(t.length)&&!!Ue[Bt(t)]};var Fe=function(t){return function(e){return t(e)}},Re="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ve=Re&&"object"==typeof module&&module&&!module.nodeType&&module,Le=Ve&&Ve.exports===Re&&vt.process,We=function(){try{var t=Ve&&Ve.require&&Ve.require("util").types;return t||Le&&Le.binding&&Le.binding("util")}catch(t){}}(),Oe=We&&We.isTypedArray,He=Oe?Fe(Oe):Ge,je=Object.prototype.hasOwnProperty;var Ne=function(t,e){var i=Mt(t),r=!i&&_e(t),s=!i&&!r&&Me(t),n=!i&&!r&&!s&&He(t),o=i||r||s||n,a=o?Se(t.length,String):[],c=a.length;for(var h in t)!e&&!je.call(t,h)||o&&("length"==h||s&&("offset"==h||"parent"==h)||n&&("buffer"==h||"byteLength"==h||"byteOffset"==h)||he(h,c))||a.push(h);return a};var Ke=function(t,e){return function(i){return t(e(i))}};var $e=function(t){var e=[];if(null!=t)for(var i in Object(t))e.push(i);return e},Ye=Object.prototype.hasOwnProperty;var Je=function(t){if(!Ut(t))return $e(t);var e=be(t),i=[];for(var r in t)("constructor"!=r||!e&&Ye.call(t,r))&&i.push(r);return i};var Xe=function(t){return we(t)?Ne(t,!0):Je(t)},Ze=qt(Object,"create");var qe=function(){this.__data__=Ze?Ze(null):{},this.size=0};var Qe=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},ti=Object.prototype.hasOwnProperty;var ei=function(t){var e=this.__data__;if(Ze){var i=e[t];return"__lodash_hash_undefined__"===i?void 0:i}return ti.call(e,t)?e[t]:void 0},ii=Object.prototype.hasOwnProperty;var ri=function(t){var e=this.__data__;return Ze?void 0!==e[t]:ii.call(e,t)};var si=function(t,e){var i=this.__data__;return this.size+=this.has(t)?0:1,i[t]=Ze&&void 0===e?"__lodash_hash_undefined__":e,this};function ni(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}ni.prototype.clear=qe,ni.prototype.delete=Qe,ni.prototype.get=ei,ni.prototype.has=ri,ni.prototype.set=si;var oi=ni;var ai=function(){this.__data__=[],this.size=0};var ci=function(t,e){for(var i=t.length;i--;)if(pe(t[i][0],e))return i;return-1},hi=Array.prototype.splice;var li=function(t){var e=this.__data__,i=ci(e,t);return!(i<0)&&(i==e.length-1?e.pop():hi.call(e,i,1),--this.size,!0)};var pi=function(t){var e=this.__data__,i=ci(e,t);return i<0?void 0:e[i][1]};var di=function(t){return ci(this.__data__,t)>-1};var mi=function(t,e){var i=this.__data__,r=ci(i,t);return r<0?(++this.size,i.push([t,e])):i[r][1]=e,this};function gi(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}gi.prototype.clear=ai,gi.prototype.delete=li,gi.prototype.get=pi,gi.prototype.has=di,gi.prototype.set=mi;var ui=gi,yi=qt(Pt,"Map");var fi=function(){this.size=0,this.__data__={hash:new oi,map:new(yi||ui),string:new oi}};var xi=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};var wi=function(t,e){var i=t.__data__;return xi(e)?i["string"==typeof e?"string":"hash"]:i.map};var vi=function(t){var e=wi(this,t).delete(t);return this.size-=e?1:0,e};var Ii=function(t){return wi(this,t).get(t)};var Pi=function(t){return wi(this,t).has(t)};var bi=function(t,e){var i=wi(this,t),r=i.size;return i.set(t,e),this.size+=i.size==r?0:1,this};function Si(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var r=t[e];this.set(r[0],r[1])}}Si.prototype.clear=fi,Si.prototype.delete=vi,Si.prototype.get=Ii,Si.prototype.has=Pi,Si.prototype.set=bi;var Ci=Si,Di=Ke(Object.getPrototypeOf,Object),zi=Function.prototype,Ai=Object.prototype,_i=zi.toString,Ti=Ai.hasOwnProperty,Ei=_i.call(Object);var Bi=function(t){if(!kt(t)||"[object Object]"!=Bt(t))return!1;var e=Di(t);if(null===e)return!0;var i=Ti.call(e,"constructor")&&e.constructor;return"function"==typeof i&&i instanceof i&&_i.call(i)==Ei};var ki=function(){this.__data__=new ui,this.size=0};var Mi=function(t){var e=this.__data__,i=e.delete(t);return this.size=e.size,i};var Ui=function(t){return this.__data__.get(t)};var Gi=function(t){return this.__data__.has(t)};var Fi=function(t,e){var i=this.__data__;if(i instanceof ui){var r=i.__data__;if(!yi||r.length<199)return r.push([t,e]),this.size=++i.size,this;i=this.__data__=new Ci(r)}return i.set(t,e),this.size=i.size,this};function Ri(t){var e=this.__data__=new ui(t);this.size=e.size}Ri.prototype.clear=ki,Ri.prototype.delete=Mi,Ri.prototype.get=Ui,Ri.prototype.has=Gi,Ri.prototype.set=Fi;var Vi=Ri,Li="object"==typeof exports&&exports&&!exports.nodeType&&exports,Wi=Li&&"object"==typeof module&&module&&!module.nodeType&&module,Oi=Wi&&Wi.exports===Li?Pt.Buffer:void 0,Hi=Oi?Oi.allocUnsafe:void 0;var ji=function(t,e){if(e)return t.slice();var i=t.length,r=Hi?Hi(i):new t.constructor(i);return t.copy(r),r},Ni=Pt.Uint8Array;var Ki=function(t){var e=new t.constructor(t.byteLength);return new Ni(e).set(new Ni(t)),e};var $i=function(t,e){var i=e?Ki(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.length)};var Yi=function(t){return"function"!=typeof t.constructor||be(t)?{}:te(Di(t))};var Ji=function(t){return function(e,i,r){for(var s=-1,n=Object(e),o=r(e),a=o.length;a--;){var c=o[t?a:++s];if(!1===i(n[c],c,n))break}return e}}();var Xi=function(t,e,i){(void 0!==i&&!pe(t[e],i)||void 0===i&&!(e in t))&&le(t,e,i)};var Zi=function(t){return kt(t)&&we(t)};var qi=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var Qi=function(t){return ge(t,Xe(t))};var tr=function(t,e,i,r,s,n,o){var a=qi(t,i),c=qi(e,i),h=o.get(c);if(h)Xi(t,i,h);else{var l=n?n(a,c,i+"",t,e,o):void 0,p=void 0===l;if(p){var d=Mt(c),m=!d&&Me(c),g=!d&&!m&&He(c);l=c,d||m||g?Mt(a)?l=a:Zi(a)?l=ie(a):m?(p=!1,l=ji(c,!0)):g?(p=!1,l=$i(c,!0)):l=[]:Bi(c)||_e(c)?(l=a,_e(a)?l=Qi(a):Ut(a)&&!Rt(a)||(l=Yi(c))):p=!1}p&&(o.set(c,l),s(l,c,r,n,o),o.delete(c)),Xi(t,i,l)}};var er=function t(e,i,r,s,n){e!==i&&Ji(i,function(o,a){if(n||(n=new Vi),Ut(o))tr(e,i,a,r,t,s,n);else{var c=s?s(qi(e,a),o,a+"",e,i,n):void 0;void 0===c&&(c=o),Xi(e,a,c)}},Xe)},ir=Ie(function(t,e,i){er(t,e,i)});import{Application as rr}from"@pixi/app";var sr=class{constructor(){c(this,"type"),c(this,"active"),this.type="null",this.active=!1}get interactive(){return this.active}set interactive(t){this.active=t}},nr=class extends sr{constructor(t){super(),c(this,"type","control"),c(this,"_interactionType","mouse"),c(this,"active",!1),c(this,"lastPoint",new z),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"SDKUtils"),this.SDKUtils=t}get interactive(){return Dn.config.gestureHandlerConfig.controlGizmoEnabled}set interactive(t){Dn.config.gestureHandlerConfig.controlGizmoEnabled=!0}get interactionType(){return this._interactionType}set interactionType(t){t===this._interactionType&&(this._interactionType=t,this.refreshCursorResult())}get useCameraControl(){return"editor"===Dn.config.mode}preparationAction(){}cancelPreparation(){}refreshResults(){}preAction(t){return"mouse"===this.interactionType&&(this.active=!0,this.lastPoint=new z(t.clientX,t.clientY)),this.refreshCursorResult(),"mouse"===this.interactionType?this.type:void 0}action(t){if(!Dn.config.gestureHandlerConfig.controlGizmoEnabled)return void console.warn("Control gizmo is not opened, use #SDK.setControlConfig() open this feature.");const{metaKey:e,ctrlKey:i,shiftKey:r}=t;if(0===t.buttons){const{deltaX:s,deltaY:n,offsetX:o,offsetY:a}=t,c=new z(s,n);if(e||i){const t=this.useCameraControl?new z(o,a):new z,e=-c.y*Dn.config.gestureHandlerConfig.controlGizmoConfig.zoomStep;this.SDKUtils.pageZoom(e,t)}else c.x=r&&0!==c.y?Math.sqrt(c.x**2+c.y**2)*c.y/Math.abs(c.y):c.x,c.y=r?0:c.y,this.SDKUtils.pageMove(c.negate())}else if(this.active&&t instanceof MouseEvent&&[1,4].includes(t.buttons)){const{clientX:e,clientY:i}=t,s=new z(e,i),n=(new z).subtractVectors(s,this.lastPoint);n.x=r&&0!==n.y?Math.sqrt(n.x**2+n.y**2)*n.y/Math.abs(n.y):n.x,n.y=r?0:n.y,this.SDKUtils.pageMove(n),this.lastPoint.copyFrom(s)}}endAction(){return this.active=!1,this.refreshCursorResult(),"mouse"===this.interactionType?this.type:void 0}interruption(){return this.type}actionKey(){}endActionKey(){}refreshCursorResult(){"mouse"===this.interactionType?this.cursorResult={type:this.active?"active-hand":"hand",angle:0}:this.cursorResult={type:"normal",angle:0}}getRenderObjects(){return[]}};import{Graphics as or}from"@pixi/graphics";var ar=class extends sr{constructor(t){super(),c(this,"result",{type:"null",box:new W}),c(this,"selectedItemIds",[]),c(this,"activeParentIds",[]),c(this,"cursorPoint",new z),c(this,"startPoint",new z),c(this,"firstClickPoint",new z),c(this,"graphics",new or),c(this,"pageDataUtils"),c(this,"clearResult",!1),c(this,"type","selector"),this.pageDataUtils=t}get interactive(){return Dn.config.gestureHandlerConfig.selectorGizmoEnabled}set interactive(t){Dn.config.gestureHandlerConfig.selectorGizmoEnabled=!0}actionKey(){}endActionKey(){}getRenderObjects(){return this.interactive?this.clearResult?(this.result={type:"null",box:new W},this.clearResult=!1,[]):(this.refreshResults(),[this.graphics]):[]}cancelPreparation(){this.result.type="null"}preparationAction(t,e){if(this.result.box=new W,!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setSelectorConfig() open this feature.");const i=new z(t.offsetX,t.offsetY),r=this.hitTest(i);this.selectedItemIds=this.filterSelectedItems(r);const s=this.selectedItemIds[0]??"",n=[...this.pageDataUtils.getPageData().activeData.selectedItems,...this.pageDataUtils.getPageData().activeData.selectedItems.flatMap(t=>this.pageDataUtils.getChildrenIds(t))],o=this.pageDataUtils.getPageData()?.activeData.preSelectedItem;return s.length&&e&&!n.includes(s)||!e?(!s.length||this.pageDataUtils.isItemSelected(s)||n.includes(s)?(this.pageDataUtils.pauseVideoItem(o),this.pageDataUtils.clearPreSelectedItem()):(this.pageDataUtils.addPreSelectedItem(s),s!==o&&(this.pageDataUtils.playVideoItem(s),this.pageDataUtils.pauseVideoItem(o))),this.type):(this.pageDataUtils.pauseVideoItem(o),this.pageDataUtils.clearPreSelectedItem(),e)}preAction(t,e=!1,i){if(!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setSelectorConfig() open this feature.");const r=this.pageDataUtils.getPageData()?.activeData.preSelectedItem;switch(this.pageDataUtils.pauseVideoItem(r),this.pageDataUtils.clearPreSelectedItem(),t.buttons){case 1:{const r=new z(t.offsetX,t.offsetY);if(i??(i=this.firstClickPoint),e&&r.distanceTo(i)<4){const e=new z(t.offsetX,t.offsetY),i=this.hitTest(e);this.selectedItemIds=this.filterSelectedItems(i)}if(e||this.firstClickPoint.set(t.offsetX,t.offsetY),t.shiftKey){if(e){const t=this.selectedItemIds[0];if(t){const e=this.pageDataUtils.getSDKItem(t);e?.parentId&&this.pageDataUtils.removeSelectedItems([e.parentId])}}}else this.pageDataUtils.clearSelectedItems(0===this.selectedItemIds.length);if(0===this.selectedItemIds.length)return this.startPoint=new z(t.clientX,t.clientY),this.cursorPoint=new z(t.offsetX,t.offsetY),this.activeParentIds=[],this.active=!0,this.type;{const t=this.addSelectedItem(this.selectedItemIds[0]);return 1===t?.length&&"text"===this.pageDataUtils.getSDKItem(t[0])?.type?"text":"transform"}}case 2:{const e=[...this.pageDataUtils.getPageData().activeData.selectedItems,...this.pageDataUtils.getPageData().activeData.selectedItems.flatMap(t=>this.pageDataUtils.getChildrenIds(t))];return this.selectedItemIds.length&&!e.includes(this.selectedItemIds[0])&&(t.shiftKey||this.pageDataUtils.clearSelectedItems(),this.pageDataUtils.addSelectedItems([this.selectedItemIds[0]]),this.clearResult=!0),void this.pageDataUtils.saveUndoRedoOldData()}default:return}}action(t){const e=(new z).addVectors(this.cursorPoint,(new z).subtractVectors(new z(t.clientX,t.clientY),this.startPoint)),i=(new z).subtractVectors(this.cursorPoint,e),r=(new z).addVectors(this.cursorPoint,e).multiply(.5);i.x=Math.abs(i.x),i.y=Math.abs(i.y);const s=(new W).setFromCenterAndSize(r,i);this.result.type="region",this.result.box=s,this.pageDataUtils.clearSelectedItems();const n=this.pageDataUtils.getPageData().items?.filter(t=>this.pageDataUtils.getItemEditEnable(t.id)),o=[];i.length()>0&&n?.forEach(t=>{s.intersectsBox(this.pageDataUtils.getViewBoxById(t.id),!1)&&o.push(t.id)});const a=this.filterSelectedItems(o);this.pageDataUtils.addSelectedItems(a)}endAction(){this.active=!1,this.result.type="null"}addSelectedItem(t){this.pageDataUtils.addSelectedItems([t]);const e=this.pageDataUtils.getPageData()?.activeData?.selectedItems;return this.addActiveParentIds(e),this.clearResult=!0,this.pageDataUtils.saveUndoRedoOldData(),e}interruption(){this.active=!1,this.result.type="null"}hitTest(t){const e=this.pageDataUtils.getCurrentComposition();if(!e?.items)return[];const{x:i,y:r}=this.pageDataUtils.getViewportByViewPoint(t),s={ray:new Y,regions:[]};try{s.regions=e.hitTest(i,r,!0),s.ray=e.getHitTestRay(i,r)}catch(t){console.warn(t)}return this.reorderHitTestResult(s,e).filter(t=>"extra-camera"!==t&&this.pageDataUtils.getItemEditEnable(t))}reorderHitTestResult(t,e){if(0===t.regions.length||!e)return[];const{ray:i}=t,r=t.regions.reverse(),s=[];return r.forEach(t=>{let r;const n=(t,e)=>{for(const i of t){if(i.getInstanceId()===e&&(r=i),r)return;n(i.children,e)}};if(n(e.items,t.item.getInstanceId()),void 0===r)return;const o=r.getInstanceId(),a=i.origin.clone().distance(t.position.clone());if((r.type===m.ItemType.mesh||r.getComponent(v)?.renderer?.occlusion||r.getComponent(I)?.renderer?.occlusion||r.getComponent(C)?.renderer?.occlusion||r.getComponent(S)?.renderer?.occlusion)&&s.length>0){let t=!0;s.forEach((e,i)=>{if(t)return a<=e[1]?(s.splice(i,0,[o,a]),void(t=!1)):void(i===s.length-1&&s.push([o,a]))})}else s.push([o,a])}),s.map(t=>t[0])}filterSelectedItems(t){const e=[],i=t=>{const e=this.pageDataUtils.getSDKItem(t);return!e.parentId||this.activeParentIds.includes(e.parentId)?e.id:i(e.parentId)},r=this.pageDataUtils.getPageData()?.activeData.loadingItems??[];return t.forEach(t=>{const s=i(t);r.includes(s)||X(e,s)}),e}addActiveParentIds(t){this.activeParentIds=[],t?.forEach(t=>{if(!this.pageDataUtils.getSDKItem(t))return;const e=t=>{this.activeParentIds.push(t);const i=this.pageDataUtils.getSDKItem(t);i.parentId&&e(i.parentId)};e(t)})}resetActiveParentIds(t){const e=this.pageDataUtils.getSDKItem(t);e&&(this.activeParentIds=this.activeParentIds.filter(t=>t===e.parentId))}refreshResults(){const{box:t}=this.result;this.graphics.clear();const e=this.pageDataUtils.getPreSelectedItem(),i=this.pageDataUtils.getViewBoxById(e?.id??""),{regionBoxColor:r,regionBoxAlpha:s,preSelectedWidth:n,preSelectedColor:o,regionWireframeWidth:a,regionWireframeColor:c,regionWireframeAlpha:h}=Dn.config.gestureHandlerConfig.selectorGizmoConfig;if(i?.isEmpty()||(this.graphics.lineStyle(n,o),this.graphics.drawBox(i)),!t.isEmpty()&&"region"===this.result.type)this.graphics.lineStyle(a,c,h),this.graphics.drawBox(t),this.graphics.beginFill(r,s),this.graphics.fillBox(t),this.graphics.endFill()}},cr={};n(cr,{Application:()=>mr,utils:()=>pr});import{Vector2 as hr}from"@galacean/effects-plugin-model";var lr={};n(lr,{Application:()=>mr,utils:()=>pr}),a(lr,xr),a(lr,wr),a(lr,vr),a(lr,Ir),a(lr,Pr),a(lr,br),a(lr,Sr),a(lr,Cr),a(lr,Dr),a(lr,zr),a(lr,Ar),a(lr,_r);import"@pixi/polyfill";import*as pr from"@pixi/utils";import{InteractionManager as dr}from"@pixi/interaction";import{Application as mr}from"@pixi/app";import{Renderer as gr,BatchRenderer as ur}from"@pixi/core";import{AppLoaderPlugin as yr}from"@pixi/loaders";import{TickerPlugin as fr}from"@pixi/ticker";import*as xr from"@pixi/constants";import*as wr from"@pixi/core";import*as vr from"@pixi/display";import*as Ir from"@pixi/graphics";import*as Pr from"@pixi/loaders";import*as br from"@pixi/interaction";import*as Sr from"@pixi/math";import*as Cr from"@pixi/runner";import*as Dr from"@pixi/sprite";import*as zr from"@pixi/text";import*as Ar from"@pixi/ticker";import*as _r from"@pixi/settings";pr.skipHello(),gr.registerPlugin("interaction",dr),gr.registerPlugin("batch",ur),mr.registerPlugin(fr),mr.registerPlugin(yr),lr.Graphics.prototype.drawBox=function(t){const e=t.getCorners();this.beginFill();for(let t=0;t<4;t++){const i=e[t],r=e[(t+1)%4],s=(new hr).subtractVectors(r,i).normalize();this.moveTo(i.x-s.x,i.y-s.y),this.lineTo(r.x+s.x,r.y-s.y)}this.endFill()},lr.Graphics.prototype.fillBox=function(t){const e=t.getSize();this.drawRect(t.min.x,t.min.y,e.x,e.y)},lr.Graphics.prototype.drawLine=function(t){if(this.beginFill(),t instanceof L)this.moveTo(t.start.x,t.start.y),this.lineTo(t.end.x,t.end.y);else for(let e=0;e<t.length-1;e++)this.moveTo(t[e].x,t[e].y),this.lineTo(t[e+1].x,t[e+1].y);this.endFill()},lr.Graphics.prototype.drawDashLine=function(t,e,i=16,r=8){const s=this.currentPath.points,n={x:s[s.length-2]||0,y:s[s.length-1]||0},o=Math.abs(t),a=Math.abs(e),c=Math.atan((e-n.y)/(t-n.x));for(;Math.abs(n.x)<o||Math.abs(n.y)<a;)n.x=Math.abs(n.x+i*Math.cos(c))<o?n.x+i*Math.cos(c):t,n.y=Math.abs(n.y+i*Math.sin(c))<a?n.y+i*Math.sin(c):e,this.lineTo(n.x,n.y),n.x=Math.abs(n.x+r*Math.cos(c))<o?n.x+r*Math.cos(c):t,n.y=Math.abs(n.y+r*Math.sin(c))<a?n.y+r*Math.sin(c):e,this.moveTo(n.x,n.y)},a(cr,lr);var Tr=class extends sr{constructor(t,e,i){super(),c(this,"type","transform"),c(this,"wireframe"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"cursorPoint",new z),c(this,"lastPoint",new z),c(this,"startPoint",new z),c(this,"rotationAngle",0),c(this,"active",!1),c(this,"enableAdsorption",!0),c(this,"scaleParam"),c(this,"activeType","null"),c(this,"lastWorldPosition",new j),c(this,"_ignoreInteraction",!1),c(this,"firstClickPoint",new z),c(this,"_pageDataUtils"),c(this,"adsorptionGizmo"),c(this,"selectorGizmo"),c(this,"onSelectorGizmoTrigger",!1),c(this,"graphics",new cr.Graphics),c(this,"_isLockScale",!0),c(this,"isShiftDown",!1),c(this,"nameText",new cr.Text("",{fontSize:14,fill:Dn.config.gestureHandlerConfig.transformGizmoConfig.sizeTextColor,align:"left"})),c(this,"imageSprite"),c(this,"groupSprite"),c(this,"textSprite"),c(this,"videoSprite"),this._pageDataUtils=t,this.selectorGizmo=i,this.adsorptionGizmo=e,this.wireframe={edges:[],anchor:new z,scaleCorners:[],rotationCorners:[],interactive:!0,cornerEnable:!0,directionEnable:!0,rotationEnabled:!0,scaleEnabled:!0,box:new W,totalBox:new W,childrenBoxes:[],activeType:"null",interactiveDirection:new z,scaleCorner:new z,scaleEdgeCorners:[]},this.imageSprite=cr.Sprite.from(Dn.config.gestureHandlerConfig.transformGizmoConfig.pictureLogoUrl),this.imageSprite.width=15,this.imageSprite.height=15,this.groupSprite=cr.Sprite.from(Dn.config.gestureHandlerConfig.transformGizmoConfig.groupLogoUrl),this.groupSprite.width=15,this.groupSprite.height=15,this.textSprite=cr.Sprite.from(Dn.config.gestureHandlerConfig.transformGizmoConfig.textLogoUrl),this.textSprite.width=15,this.textSprite.height=15,this.videoSprite=cr.Sprite.from(Dn.config.gestureHandlerConfig.transformGizmoConfig.videoLogoUrl),this.videoSprite.width=15,this.videoSprite.height=15}get interactive(){return Dn.config.gestureHandlerConfig.transformGizmoEnabled}set interactive(t){Dn.config.gestureHandlerConfig.transformGizmoEnabled=t,this.ignoreInteraction=t}get isLockScale(){return this._isLockScale}set isLockScale(t){t!==this.isLockScale&&(this._isLockScale=t)}get infoType(){const t=this._pageDataUtils.getSelectedItems();return 1===t.length?t[0].type:m.ItemType.base}get ignoreInteraction(){return this._ignoreInteraction}set ignoreInteraction(t){t!==this._ignoreInteraction&&(this._ignoreInteraction=t,this.wireframe.cornerEnable=t)}actionKey(t){this.isShiftDown=t.shiftKey}endActionKey(t){this.isShiftDown=t.shiftKey}getRenderObjects(){const t=[];if(!this.interactive)return t;if(this.refreshRenderObject(),t.push(this.graphics),this.infoType!==m.ItemType.base&&Dn.config.gestureHandlerConfig.transformGizmoConfig.infoShowEnabled)switch(t.push(this.nameText),this.infoType){case"sprite":t.push(this.imageSprite);break;case"group":t.push(this.groupSprite);break;case"text":Dn.config.gestureHandlerConfig.textGizmoEnbaled||t.push(this.textSprite);break;case"video":t.push(this.videoSprite)}return t}cancelPreparation(){this.active=!1,this.wireframe.activeType="null"}preparationAction(t){if(!this.interactive)return void console.warn("Transform gizmo is not opened, use #SDK.openTransformGizmo() open this feature.");const e=new z(t.offsetX,t.offsetY),i=this.wireframe;this.refreshTransformType(e);const{interactiveDirection:r}=i;return this.refreshCursorResult(this.activeType,B(r)),"translation"===this.activeType&&(this.onSelectorGizmoTrigger="selector"===this.selectorGizmo.preparationAction(t,"transform")),this.active="null"!==this.activeType,this.active?this.type:void 0}preAction(t,e=!1){if(this._pageDataUtils.saveUndoRedoOldData(),this.active=1===t.buttons,this.startPoint=new z(t.clientX,t.clientY),this.lastPoint=new z(t.clientX,t.clientY),this.cursorPoint=new z(t.offsetX,t.offsetY),1!==t.buttons)return;if(e)return this.selectorGizmo.preAction(t,e,new z(t.offsetX,t.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 j,this.activeType=e?"null":this.activeType,this.type}action(t){if(!this.interactive)return void console.warn("Transform gizmo is not opened, use #SDK.openTransformGizmo() open this feature.");if(!this.active){this.active=!0,this.refreshWireframeBySelectedItems(),this.wireframe.activeType="translation",this.lastPoint.set(t.clientX,t.clientY),this.cursorPoint.set(t.offsetX,t.offsetY);const e=this.cursorPoint.clone().subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(e),this.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new j}const e=new z(t.clientX,t.clientY),i=(new z).subtractVectors(e,this.lastPoint);if(!this.wireframe.interactive||i.length()<=0)return;const r=this._pageDataUtils.getSelectedItems(),{anchor:s,activeType:n,interactiveDirection:o,scaleCorner:a}=this.wireframe,c=this._pageDataUtils.getPageData();w(c);let h=0;switch(n){case"rotation":{const t=s.clone(),e=new j,n=M(k((new z).subtractVectors(this.cursorPoint,t),(new z).subtractVectors(this.cursorPoint.add(i),t))*E,3);e.z=n,this.rotationAngle+=n,h=B(o)+this.rotationAngle*T,r.forEach(t=>{this._pageDataUtils.rotateItem(t.id,e)});break}case"translation":{const t=i.clone();if(this.enableAdsorption){const e=c.items.map(t=>r.find(e=>e.id===t.id)||0!==r.filter(e=>t.parentId&&t.parentId===e.id).length||!this._pageDataUtils.getItemEditEnable(t.id)||r.find(e=>e.parentId===t.id)?new W:this._pageDataUtils.getViewBoxById(t.id)).filter(t=>!t.isEmpty()),i=new z(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);this.adsorptionGizmo.boxTranslationAdsorption(t,this.wireframe.box,e);const s=new z(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);t.add(i).subtract(s)}const e=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(this.cursorPoint.add(t).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition()));if(e){const t=e.clone().subtract(this.lastWorldPosition);r.forEach(e=>{t.x=M(t.x,5),t.y=M(t.y,5),t.z=M(t.z,5),this._pageDataUtils.moveItem(e.id,t)}),this.lastWorldPosition.copyFrom(e)}break}case"scale":{const t=this.cursorPoint.add(i).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition());if(!a||!this.scaleParam)return;const e=this.scaleParam.farthestCorner;(a.x-e.x)*(this.cursorPoint.x-e.x)>0&&(a.y-e.y)*(this.cursorPoint.y-e.y)>0||!this.isLockScale||this.isShiftDown||(t.x=e.x+(a.x-e.x)/Math.abs(a.x-e.x)*4,t.y=e.y+(a.y-e.y)/Math.abs(a.y-e.y)*4);const s=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t);if(s){const t=this._pageDataUtils.getSelectedItems()[0]??void 0,e=this._pageDataUtils.getItemTransformById(t?.id??""),i=(new N).extractRotation(e.matrix).invert(),{corner:n,center:o,shift:a,lastScalar:c}=this.scaleParam,h=(new j).subtractVectors(n,o).applyMatrix(i),l=h.clone().multiply(c),p=s.clone().subtract(a).subtract(o).applyMatrix(i),d=new j(1,1,1);if(!this.isLockScale||this.isShiftDown)d.x=G(l.x,0)?1:p.x/l.x,d.y=G(l.y,0)?1:p.y/l.y,d.z=G(l.z,0)?1:p.z/l.z;else{const t=U([G(h.x,0)?1:Math.abs(p.x/h.x),G(h.y,0)?1:Math.abs(p.y/h.y)]),e=p.toArray()[t],i=l.toArray()[t];if(G(c.x,c.y)&&G(c.z,c.x)){const t=G(i,0)?1:Math.abs(e/i);d.set(t,t,t)}else if(0===t){d.x=G(i,0)?1:Math.abs(e/i);const t=h.y*e/h.x;d.y=G(l.y,0)?1:t/l.y;const r=h.z*e/h.x;d.z=G(l.z,0)?1:r/l.z}else if(1===t){d.y=G(i,0)?1:Math.abs(e/i);const t=h.x*e/h.y;d.x=G(l.x,0)?1:t/l.x;const r=h.z*e/h.y;d.z=G(l.z,0)?1:r/l.z}else{d.z=G(i,0)?1:Math.abs(e/i);const t=h.x*e/h.z;d.x=G(l.x,0)?1:t/l.x;const r=h.y*e/h.z;d.y=G(l.y,0)?1:r/l.y}}const m=d.clone().subtract(new j(1,1,0)).divide(2).add(new j(1,1,.5)),g=o.clone().add((new j).subtractVectors(n,o).multiply(new j(c.x,c.y,1)));this.scaleParam.lastScalar.multiply(m);const u=o.clone().add((new j).subtractVectors(n,o).multiply(new j(this.scaleParam.lastScalar.x,this.scaleParam.lastScalar.y,1))),y=(new j).subtractVectors(u,g);y.x=M(y.x,5),y.y=M(y.y,5),y.z=M(y.z,5),this.scaleParam.center.add(y),this.scaleParam.corner.add(y),r.forEach(t=>{this._pageDataUtils.scaleItem(t.id,m),this._pageDataUtils.moveItem(t.id,y)}),this.lastWorldPosition.copyFrom(s)}h=B(o);break}}this.refreshCursorResult(n,h),this.lastPoint.copyFrom(e)}endAction(t){this._pageDataUtils.pushUndoRedoData(),this.active=!1;const{clientX:e,clientY:i,offsetX:r,offsetY:s}=t,n=new z(e,i);if(n.distanceTo(this.startPoint)<4&&this.onSelectorGizmoTrigger){const t=this.selectorGizmo.hitTest(new z(r,s));this.isShiftDown||this._pageDataUtils.clearSelectedItems(0===t.length),this.selectorGizmo.addSelectedItem(t[0])}else{const t=(new z).subtractVectors(n,this.lastPoint);this.cursorPoint.add(t);const e=this.wireframe;this.refreshTransformType(this.cursorPoint);const{activeType:i,interactiveDirection:r}=e;this.refreshCursorResult(i,B(r)),this.adsorptionGizmo.clearAbsorptionResult()}this.onSelectorGizmoTrigger=!1,this.rotationAngle=0,this.lastPoint=new z,this.startPoint=new z,this.cursorPoint=new z}interruption(){this.active=!1,this.cursorResult.type="normal",this.adsorptionGizmo.clearAbsorptionResult()}refreshCursorResult(t,e=0){switch(t){case"scale":this.cursorResult={type:"scale",angle:(e+Math.PI/4)*E};break;case"rotation":this.cursorResult={type:"rotation",angle:(e+Math.PI/4)*E};break;case"translation":case"null":this.cursorResult={type:"normal",angle:0}}}refreshResults(){const t=this.wireframe.activeType;this.refreshWireframeBySelectedItems(),t!==this.wireframe.activeType&&this.refreshCursorResult(this.wireframe.activeType)}initInteractionPlane(t){const e=this._pageDataUtils.getSelectedItems();switch(this.wireframe.activeType){case"scale":{const i=1==e.length?e[0]:void 0;let r,s,n;if(i){const t=this._pageDataUtils.getItemTransformById(i.id);r=(new j).copyFrom(this._pageDataUtils.getPlayerItemById(i.id).transform.anchor).applyMatrix(t.matrix),s=(new j).setFromMatrixPosition(t.matrix),n=(new K).setFromQuaternion((new H).setFromRotationMatrix(t.matrix))}this._pageDataUtils.interactionUtils.initInteractionPlane(s,n);const{scaleCorner:o,box:a}=this.wireframe,c=a.corners[0].clone();let h=c.distanceTo(o);a.corners.forEach(t=>{t.distanceTo(o)>h&&(c.copyFrom(t),h=t.distanceTo(o))}),this.scaleParam={shift:new j,center:new j,corner:new j,lastScalar:new j(1,1,1),farthestCorner:c},this.scaleParam.center=r??s;const l=this._pageDataUtils.getViewportLeftTopPosition();if(["scale"].includes(this.wireframe.activeType)&&this.wireframe.scaleCorner){const t=this.wireframe.scaleCorner.clone().subtract(l);this.scaleParam.corner=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new j}this.scaleParam.shift=(this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new j).subtract(this.scaleParam.corner);break}case"translation":case"rotation":this._pageDataUtils.interactionUtils.initInteractionPlane()}}refreshRenderObject(){this.graphics.clear(),this.nameText.text="";const{wireframeAlpha:t,wireframeColor:e,wireframeWidth:i,cornerFillColor:r,cornerLineWidth:s,cornerLineColor:n,cornerLineAlpha:o,infoShowEnabled:a}=Dn.config.gestureHandlerConfig.transformGizmoConfig;if(!this.wireframe.box.isEmpty()){this.graphics.lineStyle(i,e,t),this.wireframe.edges.forEach(t=>{this.graphics.drawLine(t)});const c=t=>{t.corners.forEach((e,i)=>{const r=new L(e,t.corners[(i+1)%4]);this.graphics.drawLine(r)})};if(this.wireframe.childrenBoxes.forEach(t=>{c(t)}),this.wireframe.cornerEnable&&(this.graphics.beginFill(r),this.graphics.lineStyle(s,n,o),this.wireframe.scaleCorners.forEach(t=>{this.graphics.drawCircle(t.center.x,t.center.y,t.radius)}),this.graphics.endFill()),this.infoType!==m.ItemType.base&&a){const t=this._pageDataUtils.getSelectedItems()[0],e="group"===t.type?"编组":"sprite"===t.type?"图片":"text"===t.type?"文本":"video"===t.type?"视频":"图片",{width:i,height:r,rotation:s}=t.property,n=[i,r],o="sprite"===this.infoType?this.imageSprite:"group"===this.infoType?this.groupSprite:"text"===this.infoType?this.textSprite:"video"===this.infoType?this.videoSprite:this.imageSprite,a=this.wireframe.box.corners[3],c=s[2]*T;o.anchor.set(0,1),o.x=a.x,o.y=a.y-5,o.rotation=-c;const h=a.clone().add(new z(20,0)).rotateAround(a,-c),l=new z(0,4).rotateAround(new z,c);this.nameText.text=` ${e} ${n.map(t=>M(t,0)).join(" * ")}`,this.nameText.anchor.set(0,1),this.nameText.x=h.x+l.x,this.nameText.y=h.y-l.y,this.nameText.rotation=-c}}}refreshTransformType(t){this.activeType="null";let e=!0;if(this.wireframe.interactiveDirection=new z,this.wireframe.scaleCorner=void 0,this.wireframe.scaleEdgeCorners=void 0,this.wireframe.interactive&&e&&this.wireframe.totalBox.containsPoint(t)){if(this.wireframe.scaleEnabled)for(let i=0,r=this.wireframe.scaleCorners.length;i<r;i++){if(this.wireframe.scaleCorners[i].containsPoint(t)){e=!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}}if(e&&this.wireframe.box.containsPoint(t,!1)&&(e=!1,this.activeType="translation",this.wireframe.activeType="translation"),this.wireframe.rotationEnabled)for(let i=0,r=this.wireframe.scaleCorners.length;i<r;i++){if(this.wireframe.rotationCorners[i].containsPoint(t)&&e){e=!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 t=this._pageDataUtils.getSelectedItems(),e=new W;if(this.wireframe.edges=[],this.wireframe.scaleCorners=[],this.wireframe.childrenBoxes=[],this.wireframe.rotationCorners=[],this.wireframe.rotationEnabled="template"===Dn.config.mode,this.wireframe.scaleEnabled=1===t.length&&"group"!==t[0].type||"template"===Dn.config.mode,this.wireframe.cornerEnable=1===t.length&&"group"!==t[0].type||"template"===Dn.config.mode,t.length>1)t.forEach(t=>{if(this._pageDataUtils.getItemShow(t.id)){const i=this._pageDataUtils.getViewBoxById(t.id);e.union(i),this.wireframe.childrenBoxes.push((new W).copyFrom(i).expandByScalar(1))}}),this.wireframe.anchor=e.getCenter(),this.wireframe.interactive=!0;else if(1===t.length){const i=t[0];if("text"!==i.type&&this._pageDataUtils.getItemShow(i.id)){const t=this._pageDataUtils.getViewBoxById(i.id);e.copyFrom(t),this.wireframe.anchor=this._pageDataUtils.getItemViewAnchor(i.id)??e.getCenter(),this.wireframe.interactive=this._pageDataUtils.getItemEditEnable(i.id)}}const i=e.isEmpty(),r=i?0:1,s=i?0:16;this.wireframe.activeType=t.length?this.wireframe.activeType:"null",this.wireframe.box.copyFrom(e).expandByScalar(r),this.wireframe.totalBox.copyFrom(e).expandByScalar(s);const n=this.wireframe.box.corners;n.forEach((t,e)=>{this.wireframe.edges.push(new L((new z).copyFrom(t),(new z).copyFrom(n[(e+1)%4])))});const{scaleCircleSize:o,rotationCircleSize:a}=Dn.config.gestureHandlerConfig.transformGizmoConfig;1===t.length&&this.wireframe.box.corners.forEach(t=>{this.wireframe.scaleCorners.push(new O(t,o));const e=(new z).subtractVectors(t,this.wireframe.box.getCenter()),i=(new z).copyFrom(this.wireframe.box.getCenter()).add((new z).copyFrom(e).normalize().multiply(e.length()+a-o));this.wireframe.rotationCorners.push(new O(i,a))})}setAdsorptionEnabled(t){this.enableAdsorption=t}};import{Graphics as Er}from"@pixi/graphics";var Br=class extends sr{constructor(){super(...arguments),c(this,"results",[]),c(this,"graphics",new Er),c(this,"absorptionResult",{}),c(this,"type","adsorption")}get interactive(){return Dn.config.gestureHandlerConfig.adsorptionGizmoEnabled}set interactive(t){Dn.config.gestureHandlerConfig.adsorptionGizmoEnabled=t}preparationAction(){}getCursorState(){}preAction(){}action(){}cancelPreparation(){}actionKey(){}endActionKey(){}endAction(){}interruption(){}boxTranslationAdsorption(t,e,i,r=!0,s=!0){if(this.results=[],!this.interactive)return void console.warn("Adsorption gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if(e.isEmpty())return;const n=new z(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(t),o=e.clone().translate(n),a=o.getCenter();this.absorptionResult={},i.forEach(t=>{if(t.isEmpty())return;t.corners.forEach(t=>{o.corners.forEach(e=>{this.getPointAbsorption(e,t,r,s)}),this.getPointAbsorption(a,t,r,s)});const e=t.getCenter();this.getPointAbsorption(a,e,r,s),o.corners.forEach(t=>{this.getPointAbsorption(t,e,r,s)})})}pointTranslationAdsorption(t,e,i,r=!0,s=!0){if(this.results=[],!this.interactive)return void console.warn("Adsorption is not opened, use #SDK.setAdsorptionConfig() open this feature.");const n=new z(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(t),o=e.clone().add(n);this.absorptionResult={},i.forEach(t=>{this.getPointAbsorption(o,t,r,s)})}getPointAbsorption(t,e,i=!0,r=!0){i&&Math.abs(t.x-e.x)<Dn.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(t,e,"x"),r&&Math.abs(t.y-e.y)<Dn.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(t,e,"y")}refreshPointAbsorptionResult(t,e,i){const r=t[i]-e[i],s="x"===i?"xPoints":"yPoints";if(this.absorptionResult&&void 0===this.absorptionResult[i])this.absorptionResult[i]=r,this.absorptionResult[s]=[{point:t,targets:[e]}];else if(Math.abs(r)-Math.abs(this.absorptionResult[i]??0)<=.005)if(Math.abs(Math.abs(r)-Math.abs(this.absorptionResult[i]??0))<.05&&r*(this.absorptionResult[i]??0)>0)if(void 0===this.absorptionResult[s])this.absorptionResult[i]=r,this.absorptionResult[s]=[{point:t,targets:[e]}];else{const i=this.absorptionResult[s].filter(e=>e.point.equals(t));void 0===i||0===i.length?this.absorptionResult[s]?.push({point:t,targets:[e]}):i[0]?.targets.push(e)}else this.absorptionResult[i]=r,this.absorptionResult[s]=[{point:t,targets:[e]}]}refreshResults(){if(void 0===this.absorptionResult)return;const{x:t,y:e,xPoints:i,yPoints:r}=this.absorptionResult,s=new z(t??0,e??0);void 0!==t&&void 0!==i&&i.forEach(t=>{const e=t.point.clone().subtract(s),i=e.clone(),r=e.clone();t.targets.forEach(t=>{i.x=t.x,i.y=Math.min(i.y,t.y),r.x=t.x,r.y=Math.max(r.y,t.y)}),this.results.push(new L(i,r))}),void 0!==e&&void 0!==r&&r.forEach(t=>{const e=t.point.clone().subtract(s),i=e.clone(),r=e.clone();t.targets.forEach(t=>{i.y=t.y,i.x=Math.min(i.x,t.x),r.y=t.y,r.x=Math.max(r.x,t.x)}),this.results.push(new L(i,r))})}refreshRenderObject(){this.graphics.clear();const{lineWidth:t,lineColor:e}=Dn.config.gestureHandlerConfig.adsorptionGizmoConfig;this.results.forEach(i=>{this.graphics.lineStyle(t,e),this.graphics.drawLine(i)})}getRenderObjects(){return this.interactive?(this.refreshResults(),this.refreshRenderObject(),[this.graphics]):[]}clearAbsorptionResult(){this.results=[],this.absorptionResult={}}},kr=class extends sr{constructor(t){super(),c(this,"safeAreaSprites",new Map),c(this,"box",new W),c(this,"graphics",new cr.Graphics),c(this,"PageDataUtils"),c(this,"type","preference"),this.PageDataUtils=t}preparationAction(){}preAction(){}action(){}endAction(){}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){if(this.box=new W,!this.interactive)return void console.warn("Preference gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if("editor"===Dn.config.mode)return;const t=this.PageDataUtils.getPageData();w(t);const{container:e}=this.PageDataUtils;if(e){const{zoom:i}=t.property,{offsetWidth:r,offsetHeight:s}=e,n=new z(r,s).multiply(i),o=this.PageDataUtils.getViewportLeftTopPosition().add(n.clone().divide(2));this.box=(new W).setFromCenterAndSize(o,n)}}refreshRenderObjects(){if("editor"===Dn.config.mode)return;const{boxWidth:t,boxColor:e,markColor:i,markAlpha:r,safeAreaEnabled:s,safeAreaBoxColor:n,safeAreaBoxAlpha:o}=Dn.config.gestureHandlerConfig.preferenceGizmoConfig;this.graphics=new cr.Graphics;const{offsetWidth:a,offsetHeight:c}=this.PageDataUtils.container.parentElement,h=new W(new z(0,0),new z(a,this.box.min.y)),l=new W(new z(0,this.box.min.y),new z(this.box.min.x,c)),p=new W(new z(this.box.min.x,this.box.max.y),new z(a,c)),d=new W(new z(this.box.max.x,this.box.min.y),new z(a,this.box.max.y));if(this.graphics.beginFill(i,r),this.graphics.fillBox(h),this.graphics.fillBox(l),this.graphics.fillBox(p),this.graphics.fillBox(d),this.graphics.endFill(),s){const t=this.PageDataUtils.getViewProperty();if(t){const{size:e,safeArea:i,previewSafeAreas:r}=t,[s,a,c,h]=i,l=this.box.getSize(),p=s/e[1]*l.y,d=c/e[0]*l.x,m=h/e[0]*l.x,g=a/e[1]*l.y,{min:u,max:y}=this.box;this.graphics.beginFill(n,o);const f=new W(u,new z(y.x,u.y+p)),x=new W(new z(u.x,u.y+p),new z(u.x+d,y.y)),w=new W(new z(y.x-m,u.y+p),new z(y.x,y.y)),v=new W(new z(u.x+d,y.y-g),new z(y.x-m,y.y));this.graphics.fillBox(f),this.graphics.fillBox(x),this.graphics.fillBox(w),this.graphics.fillBox(v),this.graphics.endFill(),r.forEach(t=>{const{box:[i,r,s,n],color:o,url:a,visible:c}=t;if(!1===c)return;const h=this.box.getSize(),l=new z(s/e[0]*h.x,n/e[1]*h.y),p=new z(i/e[0]*h.x+l.x/2,r/e[1]*h.y+l.y/2).add(u),d=(new W).setFromCenterAndSize(p,l);if(a){let t=this.safeAreaSprites.get(a);t||(t=cr.Sprite.from(a),t.anchor.set(.5,.5),this.safeAreaSprites.set(a,t)),t.x=p.x,t.y=p.y,t.width=l.x,t.height=l.y,this.graphics.addChild(t)}else{const t=o?.[3]??.3,e=o?.slice(0,3)??[255,0,0],i=e[0]<<16|e[1]<<8|e[2];this.graphics.beginFill(i,t),this.graphics.fillBox(d),this.graphics.endFill()}})}}this.graphics.lineStyle(t,e),this.graphics.drawBox(this.box)}getRenderObjects(){return Dn.config.gestureHandlerConfig.preferenceGizmoEnabled&&"editor"!==Dn.config.mode?(this.refreshRenderObjects(),[this.graphics]):[]}get interactive(){return Dn.config.gestureHandlerConfig.preferenceGizmoEnabled}set interactive(t){Dn.config.gestureHandlerConfig.preferenceGizmoEnabled=t}},Mr="https://mdn.alipayobjects.com/rms/uri/file/as/0.0.6",Ur={normal:{type:"preset",content:"default"},rotation:{type:"svg",content:"default",url:`${Mr}/icons/cursor-rotate-32.svg`},circle:{type:"svg",content:"default",url:`${Mr}/icons/cursor-rotate-32.svg`},scale:{type:"svg",content:"default",url:`${Mr}/icons/cursor-scale-32.svg`},hand:{type:"preset",content:"grab"},pointer:{type:"preset",content:"pointer"},"text-create":{type:"preset",content:"text"},"active-hand":{type:"preset",content:"grabbing"},"frame-create":{type:"preset",content:"crosshair"},"text-rotation":{type:"svg",content:"default",url:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*R722QoloC44AAAAAKkAAAAgAev-aAQ/original"}};function Gr(t,e="item doesn't exist"){if(null==t)throw new Error(e)}function Fr(t,e="asserts failed"){if(!t)throw new Error(e)}function Rr(t,e,...i){const r=e.reduce((t,e)=>t?`${t} ${e}`:e,""),s="color: #108ee9;";switch(t){case"error":console.error(`%c[${r}]`,s,...i);break;case"info":console.info(`%c[${r}]`,s,...i);break;case"debug":console.debug(`%c[${r}]`,s,...i);break;case"warn":console.warn(`%c[${r}]`,s,...i);break;default:console.log(`%c[${r}]`,s,...i)}}function Vr(t,e){if(Object.is(t,e))return!0;if(typeof t!=typeof e)return!1;if(null===t||"object"!=typeof t)return!1;if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(t instanceof RegExp&&e instanceof RegExp)return t.toString()===e.toString();if(Array.isArray(t)!==Array.isArray(e))return!1;const i=Object.keys(t),r=Object.keys(e);if(i.length!==r.length)return!1;for(const r of i){if(!Object.prototype.hasOwnProperty.call(e,r))return!1;if(!Vr(t[r],e[r]))return!1}return!0}var Lr=class extends sr{constructor(t,e){super(),c(this,"result",{type:"invalid"}),c(this,"interactionParam",{type:"none"}),c(this,"graphics",new cr.Graphics),c(this,"isShiftDown",!1),c(this,"_isLockScale",!1),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"type","picture-cut"),c(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return Dn.config.gestureHandlerConfig.pictureCutGizmoEnabled}set interactive(t){t!==Dn.config.gestureHandlerConfig.pictureCutGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture cut gizmo can not open."):Dn.config.gestureHandlerConfig.pictureCutGizmoEnabled=t)}get isLockScale(){return this._isLockScale}set isLockScale(t){t!==this.isLockScale&&(this._isLockScale=t)}preparationAction(t){if(!this.interactive)return;const e=new z(t.offsetX,t.offsetY),i=new z(t.clientX,t.clientY);return this.refreshInteractionType(e,i),this.type}preAction(t,e){if(this.interactive&&"none"!==this.interactionParam.type)return this.type}action(t){var e;if(!this.interactive||"none"===this.interactionParam.type||"invalid"===this.result.type)return;const i=new z(t.clientX,t.clientY),{startMouse:r,box:s}=this.interactionParam,n=(new z).subtractVectors(i,r),{itemBox:o}=this.result,{min:a,max:c}=o;switch(this.interactionParam.type){case"move":{const{min:t,max:e}=s,i=a.x-t.x,r=c.x-e.x,h=a.y-t.y,l=c.y-e.y;n.x=Math.min(Math.max(n.x,i),r),n.y=Math.min(Math.max(n.y,h),l);const p=s.clone().translate(n);this.result.normalizeCutBox=V(o,p),this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}case"scale":{const{startCorner:t,anchor:i}=this.interactionParam,r=new z;if(r.x=Math.min(Math.max(t.x+n.x,a.x),c.x),r.y=Math.min(Math.max(t.y+n.y,a.y),c.y),this.isShiftDown||this.isLockScale){const n=this.getCutBox(),{x:o,y:h}=n.getSize(),{x:l,y:p}=s.getSize();if((e=this.interactionParam).lockedAspect??(e.lockedAspect=o/h),Math.abs(r.x-i.x)/l>Math.abs(r.y-i.y)/p){const e=Math.abs(r.x-i.x)/this.interactionParam.lockedAspect;G(t.y,i.y)?r.y=t.y:r.y=(t.y-i.y)/Math.abs(t.y-i.y)*e+i.y,r.y=Math.min(Math.max(r.y,a.y),c.y)}else{const e=Math.abs(r.y-i.y)*this.interactionParam.lockedAspect;G(t.x,i.x)?r.x=t.x:r.x=(t.x-i.x)/Math.abs(t.x-i.x)*e+i.x,r.x=Math.min(Math.max(r.x,a.x),c.x)}}if(G(t.x,i.x)||G(t.y,i.y)){const e=s.corners[0].clone();let i=e.distanceTo(t);s.corners.forEach(r=>{r.distanceTo(t)>i&&(e.copyFrom(r),i=r.distanceTo(t))}),this.result.normalizeCutBox=V(o,(new W).setFromVec2Array([e,r]))}else{const e=(r.x-i.x)/(t.x-i.x),n=(r.y-i.y)/(t.y-i.y),a=new z(e,n);this.result.normalizeCutBox=V(o,s.clone().scale(a,i))}this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}case"direction-scale":{const{index:t}=this.interactionParam,e=s.corners[t].clone();t%2==0?(n.x=Math.min(Math.max(e.x+n.x,a.x),c.x)-e.x,n.y=0):(n.x=0,n.y=Math.min(Math.max(e.y+n.y,a.y),c.y)-e.y);const i=s.corners.map((e,i)=>[t,(t+1)%4].includes(i)?e.clone().add(n):e.clone());this.result.normalizeCutBox=V(o,(new W).setFromVec2Array(i)),this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}}}endAction(t){if(!this.interactive||"none"===this.interactionParam.type)return;const e=new z(t.offsetX,t.offsetY),i=new z(t.clientX,t.clientY);return this.refreshInteractionType(e,i),this.type}interruption(){this.interactionParam={type:"none"}}actionKey(t){this.isShiftDown=t.shiftKey}endActionKey(t){this.isShiftDown=t.shiftKey,"lockedAspect"in this.interactionParam&&delete this.interactionParam.lockedAspect}cancelPreparation(){this.interactionParam={type:"none"}}refreshResults(){if(this.interactive){const t=this._pageDataUtils.getPageData();if(Gr(t,"You must call SDK#run() first"),1!==t.activeData.selectedItems.length)console.warn("Picture Cut Gizmo can edit one picture at a time.");else if("invalid"===this.result.type){const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]);this.result={type:"valid",itemBox:e.clone(),normalizeCutBox:new W(new z,new z(1,1))}}else{const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]),i=e.getCenter().subtract(this.result.itemBox.getCenter()),r=e.getSize().x/this.result.itemBox.getSize().x;this.result.itemBox.translate(i),this.result.itemBox.scale(r)}}else this.result={type:"invalid"}}refreshRenderObjects(){if(this.graphics.clear(),!this.interactive||"invalid"===this.result.type)return[];const{maskColor:t,maskAlpha:e,cutBoxLineWidth:i,cutBoxLineColor:r,cutBoxLineAlpha:s,itemBoxLineWidth:n,itemBoxLineColor:o,itemBoxLineAlpha:a,cutBoxCornerRadius:c,cutBoxCornerFillColor:h,cutBoxCornerLineWidth:l,cutBoxCornerLineColor:p,cutBoxCornerLineAlpha:d,gridLineWidth:m,gridLineColor:g,gridLineAlpha:u,gridCount:y}=Dn.config.gestureHandlerConfig.pictureCutGizmoConfig,{normalizeCutBox:f,itemBox:x}=this.result,w=R(x,f),{min:v,max:I}=w,{min:P,max:b}=x,S=new W(P.clone(),new z(b.x,v.y)),C=new W(new z(P.x,v.y),new z(v.x,b.y)),D=new W(new z(I.x,v.y),new z(b.x,I.y)),A=new W(new z(v.x,I.y),b.clone());this.graphics.beginFill(t,e),this.graphics.fillBox(S),this.graphics.fillBox(C),this.graphics.fillBox(D),this.graphics.fillBox(A),this.graphics.endFill();const _=w.getSize().x/(y+1),T=w.getSize().y/(y+1);this.graphics.lineStyle(m,g,u);for(let t=1;t<=y;t++){const e=new L(new z(v.x+_*t,v.y),new z(v.x+_*t,I.y)),i=new L(new z(v.x,v.y+T*t),new z(I.x,v.y+T*t));this.graphics.drawLine(e),this.graphics.drawLine(i)}return this.graphics.lineStyle(n,o,a),this.graphics.drawBox(x),this.graphics.lineStyle(i,r,s),this.graphics.drawBox(w),this.graphics.beginFill(h),this.graphics.lineStyle(l,p,d),w.corners.forEach(t=>{this.graphics.drawCircle(t.x,t.y,c)}),this.graphics.endFill(),[this.graphics]}refreshCursorResult(t,e=0){switch(t){case"scale":case"direction-scale":this.cursorResult={type:"scale",angle:e};break;case"move":case"none":this.cursorResult={type:"normal",angle:0}}}getRenderObjects(){return this.interactive?this.refreshRenderObjects():[]}refreshInteractionType(t,e){if(this.interactionParam={type:"none"},!this.interactive||"invalid"===this.result.type)return;const{normalizeCutBox:i,itemBox:r}=this.result,s=R(r,i);let n=!1,o=0;s.corners.forEach((i,r)=>{n||i.distanceTo(t)<Dn.config.gestureHandlerConfig.pictureCutGizmoConfig.scaleInteractionDistance&&(n=!0,this.interactionParam={type:"scale",box:s.clone(),startMouse:e,startCorner:i.clone(),anchor:s.corners[(r+2)%4]},o=Math.PI/2*r)}),s.corners.forEach((i,r)=>{if(n)return;const a=new L(i.clone(),s.corners[(r+1)%4]),c=t.distanceToLine(a);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){n=!0;const t=a.at(c.t);this.interactionParam={type:"direction-scale",index:r,point:t,box:s.clone(),startMouse:e},o=Math.PI/2*r+Math.PI/4}}),s.containsPoint(t)&&!n&&(this.interactionParam={type:"move",point:t.clone(),box:s.clone(),startMouse:e},n=!0),this.refreshCursorResult(this.interactionParam.type,o*E)}getCutInfo(){const[t]=this._pageDataUtils.getSelectedItems();if(this.interactive&&"invalid"!==this.result.type&&t)return{cutBox:this.getCutBox(),itemBox:this._pageDataUtils.getItemBoxById(t.id)}}getCutBox(){const[t]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!t)return;const e=this._pageDataUtils.getItemBoxById(t.id),{normalizeCutBox:i}=this.result;return R(e,i)}setCutBox(t,e){const[i]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!i)return;const r=new W(t,e),s=this._pageDataUtils.getItemBoxById(i.id),{min:n,max:o}=V(s,r);this.result.normalizeCutBox.set(new z(Math.max(n.x,0),Math.max(n.y,0)),new z(Math.min(o.x,1),Math.min(o.y,1)));const a=this.getCutBox();return this._eventEmitter.emit("cutBoxChange",a),a}};var Wr=class extends sr{constructor(t,e,i,r,s){super(),c(this,"type","text"),c(this,"_eventEmitter"),c(this,"textAreaElement"),c(this,"graphics",new cr.Graphics),c(this,"_pageDataUtils"),c(this,"result"),c(this,"interactionParam"),c(this,"_adsorptionGizmo"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"ignoreInteraction",!1),c(this,"scaleParam"),c(this,"rotationSprite",new cr.Sprite),c(this,"cursorPoint",new z),c(this,"_selectorGizmo"),c(this,"handleInput",async t=>{const e=t.target,i=this._pageDataUtils.getSelectedItems()[0].id;await this._pageDataUtils.setItemProperty({itemId:i,type:"text",propertyName:"text",propertyValue:e.value}),this._eventEmitter.emit("textInput",{itemId:i,text:e.value,fontFamily:e.style.fontFamily})}),c(this,"handleBlur",()=>{this.interactionParam.type="scale",this.textAreaElement.style.display="none",this.textAreaElement.removeEventListener("input",this.handleInput),this.textAreaElement.removeEventListener("blur",this.handleBlur)}),this._pageDataUtils=t,this._adsorptionGizmo=e,this._selectorGizmo=i,this._eventEmitter=r,this.textAreaElement=document.createElement("textarea"),this.textAreaElement.style.display="none",s?.appendChild(this.textAreaElement),function(t,e,i){const r=i.replace(/&/g,`.${e}`),s=document.createElement("style");s.textContent=`\n .${e} {\n ${r}\n }\n `,document.head.appendChild(s),t.classList.add(e)}(this.textAreaElement,"text-gizmo-custom-style","\n word-break: break-all;\n position: absolute;\n border: none;\n margin: 0;\n padding: 0;\n outline: none !important;\n overflow: hidden;\n resize: none;\n display: none;\n background: transparent;\n opacity: .8;\n color: transparent;\n caret-color: #000000;\n field-sizing: content;\n -webkit-text-fill-color: transparent;\n text-fill-color: transparent;\n"),this.result={type:"empty"},this.interactionParam={active:!1,type:"none",anchor:new z,lastPoint:new z,startPoint:new z,lastWorldPosition:new j}}get interactive(){return Dn.config.gestureHandlerConfig.textGizmoEnbaled}set interactive(t){Dn.config.gestureHandlerConfig.textGizmoEnbaled=t}preparationAction(t){if(!this.interactive)return void console.warn("Text gizmo is not opened, use #SDK.openTextGizmo() open this feature.");if("empty"===this.result.type)return;const e=new z(t.offsetX,t.offsetY),i=new z(t.clientX,t.clientY);this.refreshInteractionParam(e,i);const r=e.subtract(this._pageDataUtils.getViewportLeftTopPosition());if(this.initInteractionPlane(r),this.cursorPoint.set(t.offsetX,t.offsetY),this.refreshCursorResult(),"none"!==this.interactionParam.type){const e="translation"===this.interactionParam.type?this._selectorGizmo.preparationAction(t,"text"):this.type;return this.interactionParam.active="text"===e,this.interactionParam.active?e:void 0}}preAction(t,e){if(1!==t.buttons)return this.type;const{offsetX:i,offsetY:r}=t,s=new z(i,r);if(e){if("empty"===this.result.type||this.result.box.containsPoint(s))this._pageDataUtils.saveUndoRedoOldData(),this.interactionParam.type="edit";else if("none"===this.interactionParam.type)return this.result={type:"empty"},void this._pageDataUtils.clearSelectedItems(!0)}else if("empty"===this.result.type||this.result.box.containsPoint(s)){this._pageDataUtils.saveUndoRedoOldData();const t=s.subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(t),this.interactionParam.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new j,this.refreshCursorResult()}else if("edit"===this.interactionParam.type)this.interactionParam.type="none",this.ignoreInteraction=!0;else if("none"===this.interactionParam.type)return void(this.result={type:"empty"});return this.type}action(t){if(!this.interactive)return void console.warn("Text gizmo is not opened, use #SDK.setTextConfig() open this feature.");if("edit"===this.interactionParam.type||"empty"===this.result.type||this.ignoreInteraction)return;if(!this.interactionParam.active){this.interactionParam.active=!0,this.interactionParam.type="translation",this.interactionParam.lastPoint=new z(t.clientX,t.clientY),this.interactionParam.startPoint=new z(t.offsetX,t.offsetY);const e=new z(t.offsetX,t.offsetY).subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(e),this.interactionParam.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new j}const e=new z(t.clientX,t.clientY),{type:i,lastPoint:r,startPoint:s,anchor:n}=this.interactionParam,o=(new z).subtractVectors(e,r),a=this._pageDataUtils.getSelectedItems();switch(i){case"rotation":{const t=new j,i=M(k((new z).subtractVectors(s,n),(new z).subtractVectors(s.add(o),n))*E,3);t.z=i,a.forEach(e=>{this._pageDataUtils.rotateItem(e.id,t)}),this.interactionParam.lastPoint.copyFrom(e);break}case"translation":{const t=o.clone();if(this._adsorptionGizmo.interactive){const e=this._pageDataUtils.getPageData();w(e);const i=e.items.map(t=>a.find(e=>e.id===t.id)||0!==a.filter(e=>t.parentId&&t.parentId===e.id).length||!this._pageDataUtils.getItemEditEnable(t.id)||a.find(e=>e.parentId===t.id)?new W:this._pageDataUtils.getViewBoxById(t.id)).filter(t=>!t.isEmpty()),r=new z(this._adsorptionGizmo.absorptionResult.x??0,this._adsorptionGizmo.absorptionResult.y??0);this._adsorptionGizmo.boxTranslationAdsorption(t,this.result.box,i);const s=new z(this._adsorptionGizmo.absorptionResult.x??0,this._adsorptionGizmo.absorptionResult.y??0);t.add(r).subtract(s)}const i=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(s.add(t).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition()));if(i){const t=i.clone().subtract(this.interactionParam.lastWorldPosition);a.forEach(e=>{t.x=M(t.x,5),t.y=M(t.y,5),t.z=M(t.z,5),this._pageDataUtils.moveItem(e.id,t)}),this.interactionParam.lastWorldPosition.copyFrom(i),this.interactionParam.lastPoint.copyFrom(e)}break}case"scale":if(o.length()){const t=this.cursorPoint.add(o).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition());if(!s||!this.scaleParam||!o.length())return;const e=this.scaleParam.farthestCorner;(s.x-e.x)*(this.cursorPoint.x-e.x)>0&&(s.y-e.y)*(this.cursorPoint.y-e.y)>0||(t.x=e.x+(s.x-e.x)/Math.abs(s.x-e.x)*4,t.y=e.y+(s.y-e.y)/Math.abs(s.y-e.y)*4);const i=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t);if(i){const t=this._pageDataUtils.getSelectedItems()[0]??void 0,e=this._pageDataUtils.getItemTransformById(t?.id??""),r=(new N).extractRotation(e.matrix).invert(),{corner:s,center:n,shift:o,lastScalar:c}=this.scaleParam,h=(new j).subtractVectors(s,n).applyMatrix(r),l=h.clone().multiply(c),p=i.clone().subtract(o).subtract(n).applyMatrix(r),d=new j(1,1,1),m=U([G(h.x,0)?1:Math.abs(p.x/h.x),G(h.y,0)?1:Math.abs(p.y/h.y)]),g=p.toArray()[m],u=l.toArray()[m];if(G(c.x,c.y)&&G(c.z,c.x)){const t=G(u,0)?1:Math.abs(g/u);d.set(t,t,t)}else if(0===m){d.x=G(u,0)?1:Math.abs(g/u);const t=h.y*g/h.x;d.y=G(l.y,0)?1:t/l.y;const e=h.z*g/h.x;d.z=G(l.z,0)?1:e/l.z}else if(1===m){d.y=G(u,0)?1:Math.abs(g/u);const t=h.x*g/h.y;d.x=G(l.x,0)?1:t/l.x;const e=h.z*g/h.y;d.z=G(l.z,0)?1:e/l.z}else{d.z=G(u,0)?1:Math.abs(g/u);const t=h.x*g/h.z;d.x=G(l.x,0)?1:t/l.x;const e=h.y*g/h.z;d.y=G(l.y,0)?1:e/l.y}const y=d.clone().subtract(new j(1,1,0)).divide(2).add(new j(1,1,.5)),f=n.clone().add((new j).subtractVectors(s,n).multiply(new j(c.x,c.y,1)));this.scaleParam.lastScalar.multiply(y);const x=n.clone().add((new j).subtractVectors(s,n).multiply(new j(this.scaleParam.lastScalar.x,this.scaleParam.lastScalar.y,1))),w=(new j).subtractVectors(x,f);w.x=M(w.x,5),w.y=M(w.y,5),w.z=M(w.z,5),this.scaleParam.center.add(w),this.scaleParam.corner.add(w),a.forEach(t=>{this._pageDataUtils.scaleTextItem(t.id,y.x),this._pageDataUtils.moveItem(t.id,w)}),this.interactionParam.lastWorldPosition.copyFrom(i)}}break;case"width-scale":{const t=s.clone(),e=s.clone().add(o);if(o.length()){const i=(new z).subtractVectors(t,n),r=(new z).subtractVectors(e,n),o=Math.max(r.dot(i)/i.length(),1),c=i.length(),h=(o/c-1)/2+1,l=n.clone().add(i.clone().normalize().scale(c*h)),p=(new z).subtractVectors(l,t);s.add(p);const d=this._pageDataUtils.interactionUtils.getWorldSizeByViewSize(p);d.x=M(d.x,5),d.y=M(d.y,5),d.z=M(d.z,5),a.forEach(t=>{this._pageDataUtils.moveItem(t.id,d)}),a.forEach(t=>{this._pageDataUtils.scaleTextItemWidth(t.id,h)})}break}}this.interactionParam.lastPoint.copyFrom(e),this.refreshCursorResult()}endAction(t){this.ignoreInteraction=!1;const e=new z(t.offsetX,t.offsetY),i=new z(t.clientX,t.clientY);return this._pageDataUtils.pushUndoRedoData(),this._adsorptionGizmo.clearAbsorptionResult(),this.refreshInteractionParam(e,i),this.refreshCursorResult(),this.type}interruption(){return this.interactionParam.type="none",this._adsorptionGizmo.clearAbsorptionResult(),this.type}actionKey(t){}endActionKey(t){}cancelPreparation(){}refreshResults(){if(!this.interactive)return;const t=this._pageDataUtils.getPageData()?.activeData?.selectedItems,e=this._pageDataUtils.getSDKItem(t?.[0]??"");if(1!==t?.length||"text"!==e?.type)return void(this.result={type:"empty"});const i=this._pageDataUtils.getViewBoxById(t[0]);if(i.isEmpty())this.result={type:"empty"};else{const t=[new L(i.corners[0],i.corners[1]).at(.5),new L(i.corners[2],i.corners[3]).at(.5)],r=new L(i.getCenter(),new L(i.corners[0],i.corners[3]).at(.5)),s=r.at((r.length()+22)/r.length());this.result={type:"valid",box:i.clone(),widthScaleCorners:t,rotationCorner:s,rotation:-e.property.rotation[2]*T}}}refreshInteractionParam(t,e){if("empty"===this.result.type)return this.interactionParam.active=!1,this.interactionParam.type="none",this.interactionParam.lastPoint=new z,this.interactionParam.startPoint=new z,void(this.interactionParam.lastWorldPosition=new j);if("edit"===this.interactionParam.type)return;const{rotateInteractMode:i,scaleInteractionDistance:r,rotationCornerInteractionDistance:s,rotationTopCenterInteractionDistance:n}=Dn.config.gestureHandlerConfig.textGizmoConfig,o=this.result.box.getCenter();for(const e of this.result.widthScaleCorners){if((new W).setFromCenterAndSize(e,new z(6,18)).containsPoint(t))return this.interactionParam.active=!0,this.interactionParam.type="width-scale",this.interactionParam.anchor=o,this.interactionParam.lastPoint=t.clone(),this.interactionParam.startPoint=e.clone(),void(this.interactionParam.lastWorldPosition=new j)}const a=this.result.box.corners.findIndex(e=>e.distanceTo(t)<r);if(a>=0){const t=this.result.box.corners[a],i=this.result.box.corners[(a+2)%4];return this.interactionParam.active=!0,this.interactionParam.type="scale",this.interactionParam.anchor=i.clone(),this.interactionParam.lastPoint=e.clone(),void(this.interactionParam.startPoint=t.clone())}if(this.result.box.containsPoint(t,!1))return this.interactionParam.active=!0,this.interactionParam.type="translation",this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=t.clone(),void(this.interactionParam.lastWorldPosition=new j);switch(i){case"top-center":if(t.distanceTo(this.result.rotationCorner)<n)return this.interactionParam.active=!0,this.interactionParam.type="rotation",this.interactionParam.anchor=o,this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=this.result.rotationCorner.clone(),void(this.interactionParam.lastWorldPosition=new j);break;case"corner":{const i=this.result.box.corners.find(e=>e.distanceTo(t)<s);if(i)return this.interactionParam.active=!0,this.interactionParam.type="rotation",this.interactionParam.anchor=o,this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=i.clone(),void(this.interactionParam.lastWorldPosition=new j);break}}this.interactionParam.active=!1,this.interactionParam.type="none",this.interactionParam.lastPoint=new z,this.interactionParam.startPoint=new z,this.interactionParam.lastWorldPosition=new j}refreshCursorResult(){const t=(B((new z).subtractVectors(this.interactionParam.startPoint,this.interactionParam.anchor))+Math.PI/4)*E;switch(this.interactionParam.type){case"edit":case"none":case"translation":this.cursorResult={type:"normal",angle:0};break;case"scale":case"width-scale":this.cursorResult={type:"scale",angle:t};break;case"rotation":this.cursorResult={type:"rotation",angle:t}}}getRenderObjects(){const t=[];if(!this.interactive||"empty"===this.result.type)return[];this.graphics.clear();const{box:e,widthScaleCorners:i,rotationCorner:r,rotation:s}=this.result,{boxLineWidth:n,boxLineColor:o,rotateInteractMode:a,rotationCornerWidth:c,scaleCornerStrokeWidth:h,scaleCornerStrokeColor:l,rotationCornerRadius:p,rotationCornerFillColor:d,rotationCornerStrokeWidth:m,rotationCornerStrokeColor:g}=Dn.config.gestureHandlerConfig.textGizmoConfig;if(this.graphics.lineStyle(n,o),this.graphics.drawBox(e),"edit"!==this.interactionParam.type)switch(e.getSize().y>25&&i.forEach(t=>{const e=(new W).setFromCenterAndSize(t,new z(8,15));this.graphics.beginFill(16777215),this.graphics.fillBox(e),this.graphics.endFill(),this.graphics.lineStyle(h,l),this.graphics.drawBox(e)}),a){case"top-center":this.rotationSprite.width=c,this.rotationSprite.height=c,this.rotationSprite.anchor.set(.5,.5),this.rotationSprite.x=r.x,this.rotationSprite.y=r.y,this.rotationSprite.rotation=s,t.push(this.rotationSprite);break;case"corner":e.corners.forEach(t=>{this.graphics.lineStyle(m,g),this.graphics.beginFill(d),this.graphics.drawCircle(t.x,t.y,p),this.graphics.endFill()})}else if("edit"===this.interactionParam.type&&"none"===this.textAreaElement.style.display){const t=this._pageDataUtils.getSelectedItems(),i=this._pageDataUtils.interactionUtils.viewportParam,r=t[0],s=r?.property,n=e.clone().rotate(s.rotation[2]*T),o=n.min.clone(),a=n.getSize();this.textAreaElement.value=s.text??"",this.textAreaElement.style.textAlign=this.getTextAlign(s.textAlign),this.textAreaElement.style.fontFamily=s.fontFamily,this.textAreaElement.style.fontSize=s.fontSize*i.scale+"px",this.textAreaElement.style.fontWeight=s.fontWeight,this.textAreaElement.style.display="block",this.textAreaElement.style.wordBreak="break-all",this.textAreaElement.style.whiteSpace="pre-wrap",this.textAreaElement.style.overflowWrap="break-word",this.textAreaElement.style.left=`${o.x}px`,this.textAreaElement.style.top=`${o.y}px`,this.textAreaElement.style.width=`${a.x}px`,this.textAreaElement.style.height=`${a.y}px`,this.textAreaElement.style.lineHeight=s.lineHeight*i.scale+"px",this.textAreaElement.style.transformOrigin="center center",this.textAreaElement.style.paintOrder="stroke fill",void 0!==s.rotation[2]&&(this.textAreaElement.style.transform=`\n rotateZ(${-s.rotation[2]}deg)\n `),this.textAreaElement.addEventListener("input",this.handleInput),this.textAreaElement.addEventListener("blur",this.handleBlur),window.setTimeout(()=>{this.textAreaElement.focus()},50)}else if("edit"===this.interactionParam.type&&"block"===this.textAreaElement.style.display){const t=this._pageDataUtils.getSelectedItems()[0],i=this._pageDataUtils.interactionUtils.viewportParam,r=t.property,s=e.clone().rotate(r.rotation[2]*T),n=s.min.clone(),o=s.getSize();switch(this.textAreaElement.style.left=`${n.x}px`,this.textAreaElement.style.top=`${n.y}px`,this.textAreaElement.style.width=`${o.x}px`,this.textAreaElement.style.height=`${o.y}px`,this.textAreaElement.style.fontFamily=r.fontFamily,this.textAreaElement.style.textAlign=this.getTextAlign(r.textAlign),Dn.config.mode){case"editor":this.textAreaElement.style.fontSize=r.fontSize*i.scale+"px",this.textAreaElement.style.lineHeight=r.lineHeight*i.scale+"px",this.textAreaElement.style.transform=`rotateZ(${-r.rotation[2]}deg)`;break;case"template":{const e=this._pageDataUtils.getPlayerItemById(t.id),s=new j(1,1,1);e?.transform.getMatrix().decompose(new j,new H,s);const a=e.transform.scale,{size:[c,h],isPublishScene:l}=this._pageDataUtils.getTextOriginSize(t.id),p=l?2:0,d=this._pageDataUtils.interactionUtils.getPixelSizeByWorldSize(new j(0,h,0)).y,m=r.fontSize/(r.lineHeight/d)-p*i.scale,g=new z(a.x/c,a.y/h);this.textAreaElement.style.left=`${n.x+(g.x-1)*o.x/g.x/2}px`,this.textAreaElement.style.top=`${n.y+(g.y-1)*o.y/g.y/2}px`,this.textAreaElement.style.width=o.x/g.x+"px",this.textAreaElement.style.height=o.y/g.y+"px",this.textAreaElement.style.transform=`scale(${g.x}, ${g.y}) rotateZ(${-r.rotation[2]}deg)`,this.textAreaElement.style.fontSize=`${m}px`,this.textAreaElement.style.lineHeight=`${d}px`;break}}}return t.push(this.graphics),t}initInteractionPlane(t){switch(this.interactionParam.type){case"scale":{if("empty"===this.result.type)return;const e=1==this._pageDataUtils.getSelectedItems().length?this._pageDataUtils.getSelectedItems()[0]:void 0;let i,r,s;if(e){const t=this._pageDataUtils.getItemTransformById(e.id);i=(new j).copyFrom(this._pageDataUtils.getPlayerItemById(e.id).transform.anchor).applyMatrix(t.matrix),r=(new j).setFromMatrixPosition(t.matrix),s=(new K).setFromQuaternion((new H).setFromRotationMatrix(t.matrix))}this._pageDataUtils.interactionUtils.initInteractionPlane(r,s);const n=this.interactionParam.startPoint,{box:o}=this.result,a=o.corners[0].clone();let c=a.distanceTo(n);o.corners.forEach(t=>{t.distanceTo(n)>c&&(a.copyFrom(t),c=t.distanceTo(n))}),this.scaleParam={shift:new j,center:new j,corner:new j,lastScalar:new j(1,1,1),farthestCorner:a},this.scaleParam.center=i??r;const h=this._pageDataUtils.getViewportLeftTopPosition();if(n){const t=n.clone().subtract(h);this.scaleParam.corner=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new j}this.scaleParam.shift=(this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new j).subtract(this.scaleParam.corner);break}case"width-scale":case"translation":case"rotation":this._pageDataUtils.interactionUtils.initInteractionPlane()}}getTextAlign(t){switch(t){case m.TextAlignment.middle:return"center";case m.TextAlignment.right:return"right";default:return"left"}}};import{Texture as Or}from"@pixi/core";var Hr=class extends sr{constructor(t,e){super(),c(this,"_pageDataUtils"),c(this,"_app"),c(this,"maskRenderTexture",null),c(this,"maskSprite",null),c(this,"_config",{}),c(this,"boxGraphics",new cr.Graphics),c(this,"type","mask"),c(this,"mode","paint"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"result",{status:"init",lines:[]}),this._pageDataUtils=t,this._app=e}get interactive(){return Dn.config.gestureHandlerConfig.maskGizmoEnabled}set interactive(t){t!==Dn.config.gestureHandlerConfig.maskGizmoEnabled&&(t||(this.result.status="init"),Dn.config.gestureHandlerConfig.maskGizmoEnabled=t)}get config(){return{...Dn.config.gestureHandlerConfig.maskGizmoConfig,...this._config}}set config(t){this._config={...this._config,...t}}setMode(t){this.mode=t}initialize(){}preparationAction(t){if(this.interactive)return this.result.point=new z(t.offsetX,t.offsetY),this.type}preAction(t){if(this.interactive)return this.result.point=new z(t.offsetX,t.offsetY),this.result.lines.push({type:this.mode,brushSize:this.config.brushSize,points:[]}),this.type}action(t){if(!this.interactive||"init"===this.result.status)return;const e=this.result.box,i=new z((t.offsetX-e.min.x)/(e.max.x-e.min.x),(t.offsetY-e.min.y)/(e.max.y-e.min.y));this.result.lines[this.result.lines.length-1]?.points.push(i)}endAction(){if(this.interactive)return this.type}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){if(this.interactive){const t=this._pageDataUtils.getPageData();if(Gr(t,"You must call SDK#run() first"),1!==t.activeData.selectedItems.length)console.warn("Mask Gizmo can edit one picture at a time.");else{if("init"===this.result.status){const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]);this.result={status:"done",box:e.clone(),lines:[]}}else{const e=this.result.box,i=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]),r=i.getCenter().subtract(e.getCenter()),s=i.getSize().x/e.getSize().x;e.translate(r),e.scale(s)}this.refreshCursorResult()}}else this.result={status:"init",lines:[]}}getRenderObjects(){return this.interactive?this.refreshRenderObjects():[]}cleanupRenderTexture(){this.maskRenderTexture&&(this.maskRenderTexture.destroy(!0),this.maskRenderTexture=null),this.maskSprite&&(this.maskSprite.destroy(),this.maskSprite=null)}refreshRenderObjects(){if(this.boxGraphics.clear(),this.cleanupRenderTexture(),!this.interactive||"init"===this.result.status)return[];const{brushColor:t,brushAlpha:e,boxLineWidth:i,boxLineColor:r,boxLineAlpha:s}=this.config,n=this.result.box,o=Math.ceil(n.max.x-n.min.x),a=Math.ceil(n.max.y-n.min.y);this.maskRenderTexture=cr.RenderTexture.create({width:o,height:a}),this.maskSprite=new cr.Sprite(this.maskRenderTexture),this.maskSprite.width=o,this.maskSprite.height=a,this.maskSprite.position.set(n.min.x,n.min.y),this.maskSprite.alpha=e;const{min:c,max:h}=n,l=new W(new z(c.x,c.y),new z(h.x,c.y)),p=new W(new z(c.x,c.y),new z(c.x,h.y)),d=new W(new z(h.x,c.y),new z(h.x,c.y)),m=new W(new z(c.x,h.y),new z(h.x,h.y));this.boxGraphics.fillBox(l),this.boxGraphics.fillBox(p),this.boxGraphics.fillBox(d),this.boxGraphics.fillBox(m),this.boxGraphics.lineStyle(i,r,s),this.boxGraphics.drawBox(n),this.boxGraphics.endFill();const g=this._pageDataUtils.interactionUtils.viewportParam;for(const e of this.result.lines){if(!e)continue;const i=new cr.Graphics;i.blendMode="paint"===e.type?cr.BLEND_MODES.NORMAL:cr.BLEND_MODES.DST_OUT,i.lineStyle({width:e.brushSize*g.scale,color:t,cap:cr.LINE_CAP.ROUND,join:cr.LINE_JOIN.ROUND,native:!1,alignment:.5});for(let t=0;t<e.points.length;t++){const r=e.points[t];if(!r)continue;const s=r.x*(n.max.x-n.min.x),o=r.y*(n.max.y-n.min.y);0===t?i.moveTo(s,o):i.lineTo(s,o)}i.endFill(),this._app.renderer.render(i,{renderTexture:this.maskRenderTexture,clear:!1})}return[this.boxGraphics,this.maskSprite]}refreshCursorResult(){const{point:t,box:e}=this.result;if(this.cursorResult={type:"normal",angle:0},t&&e&&t.x>=e.min.x&&t.x<=e.max.x&&t.y>=e.min.y&&t.y<=e.max.y){const t=this._pageDataUtils.interactionUtils.viewportParam;this.cursorResult={type:"circle",angle:0,radius:this.config.brushSize*t.scale/2}}}clearMask(){this.result.lines=[]}getMask(){if(0===this.result.lines.length)return null;const t=this.result.box;if(!t)return null;const e=Math.ceil(t.max.x-t.min.x),i=Math.ceil(t.max.y-t.min.y),r=document.createElement("canvas");r.width=e,r.height=i;const s=r.getContext("2d");if(!s)return null;s.fillStyle="#FFFFFF",s.fillRect(0,0,e,i);const{maskColor:n,maskAlpha:o}=this.config,a="#"+n.toString(16).padStart(6,"0");s.strokeStyle=a,s.globalAlpha=o,s.lineCap="round",s.lineJoin="round";const c=this._pageDataUtils.interactionUtils.viewportParam.scale;for(const t of this.result.lines)if(t&&0!==t.points.length){s.lineWidth=t.brushSize*c,s.globalCompositeOperation="paint"===t.type?"source-over":"destination-out",s.beginPath();for(let r=0;r<t.points.length;r++){const n=t.points[r];if(!n)continue;const o=n.x*e,a=n.y*i;0===r?s.moveTo(o,a):s.lineTo(o,a)}s.stroke()}return r.toDataURL("image/png")}},jr=class extends sr{constructor(t){super(),c(this,"type","loading"),c(this,"_pageDataUtils"),c(this,"_idMap",new Map),c(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t}addId(t,e,i){const r=this._pageDataUtils.getItemBoxById(t),s=V(r,e??r);"string"==typeof t&&(this._idMap.set(t,{status:"init",loadingBox:s,graphics:new cr.Graphics,ticker:new cr.Ticker}),this._pageDataUtils.addLoadingItems([t]),i&&this._pageDataUtils.removeSelectedItems([t]))}deleteId(t){const e=this._idMap.get(t);if(e){const{graphics:i,ticker:r}=e;i.destroy(),r.destroy(),this._idMap.delete(t),this._pageDataUtils.removeLoadingItems([t])}}initialize(){}preparationAction(){}preAction(){}action(){}endAction(){}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){}getRenderObjects(){return 0===this._idMap.size?[]:this.refreshRenderObjects()}refreshRenderObjects(){if(0===this._idMap.size)return[];const t=[];for(const e of this._idMap.keys()){const i=this._idMap.get(e);if(!i)continue;if(t.push(i.graphics),"done"===i.status){i.ticker.update();continue}i.status="done";let r=.006,s=.5;i.ticker.add(()=>{const t=this._pageDataUtils.getViewBoxById(e),{min:n,max:o}=R(t,i.loadingBox);s>.6?r=-.003:s<.4&&(r=.006),s+=r,i.graphics.clear(),i.graphics.beginFill(0,s),i.graphics.drawRect(n.x,n.y,o.x-n.x,o.y-n.y),i.graphics.endFill()}),i.ticker.start()}return t}},Nr=class extends sr{constructor(t,e){super(),c(this,"result",{type:"invalid"}),c(this,"interactionParam",{type:"none"}),c(this,"graphics",new cr.Graphics),c(this,"isShiftDown",!1),c(this,"_isLockScale",!1),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"type","picture-expand"),c(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return Dn.config.gestureHandlerConfig.pictureExpandGizmoEnabled}set interactive(t){t!==Dn.config.gestureHandlerConfig.pictureExpandGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture expand gizmo can not open."):Dn.config.gestureHandlerConfig.pictureExpandGizmoEnabled=t)}get isLockScale(){return this._isLockScale}set isLockScale(t){t!==this.isLockScale&&(this._isLockScale=t)}preparationAction(t){if(!this.interactive)return;const e=new z(t.offsetX,t.offsetY),i=new z(t.clientX,t.clientY);return this.refreshInteractionType(e,i),this.type}preAction(t,e){if(this.interactive&&"none"!==this.interactionParam.type)return this.type}action(t){var e;if(!this.interactive||"none"===this.interactionParam.type||"invalid"===this.result.type)return;const i=new z(t.clientX,t.clientY),{startMouse:r,box:s}=this.interactionParam,n=(new z).subtractVectors(i,r),{itemBox:o}=this.result,{min:a,max:c}=o;switch(this.interactionParam.type){case"move":{const{min:t,max:e}=s,i=c.x-e.x,r=a.x-t.x,h=c.y-e.y,l=a.y-t.y;n.x=Math.min(Math.max(n.x,i),r),n.y=Math.min(Math.max(n.y,h),l);const p=s.clone().translate(n);this.result.normalizeExpandBox=V(o,p),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}case"scale":{const{index:t}=this.interactionParam,{min:i,max:r}=s,h=s.corners[t],l=s.corners[(t+2)%4],p=new z(h.x+n.x,h.y+n.y);if(h.x>=r.x?p.x=Math.max(p.x,c.x):h.x<=i.x?p.x=Math.min(p.x,a.x):(console.warn("resultCorner has wrong, we have move it to the nearest corner"),p.x=Math.abs(p.x-i.x)>Math.abs(p.x-r.x)?r.x:i.x),h.y>=r.y?p.y=Math.max(p.y,c.y):h.y<=i.y?p.y=Math.min(p.y,a.y):(console.warn("resultCorner has wrong, we have move it to the nearest corner"),p.y=Math.abs(p.y-i.y)>Math.abs(p.y-r.y)?r.y:i.y),this.isShiftDown||this.isLockScale){const t=this.getExpandBox(),{x:n,y:o}=t.getSize(),{x:d,y:m}=s.getSize();if((e=this.interactionParam).lockedAspect??(e.lockedAspect=n/o),Math.abs(p.x-l.x)/d>Math.abs(p.y-l.y)/m){const t=Math.abs(p.x-l.x)/this.interactionParam.lockedAspect;p.y=(h.y-l.y)/Math.abs(h.y-l.y)*t+l.y,h.y>=r.y?p.y=Math.max(p.y,c.y):h.y<=i.y?p.y=Math.min(p.y,a.y):(console.warn("resultCorner has wrong, we have move it to the nearest corner"),p.y=Math.abs(p.y-i.y)>Math.abs(p.y-r.y)?r.y:i.y)}else{const t=Math.abs(p.y-l.y)*this.interactionParam.lockedAspect;p.x=(h.x-l.x)/Math.abs(h.x-l.x)*t+l.x,h.x>=r.x?p.x=Math.max(p.x,c.x):h.x<=i.x?p.x=Math.min(p.x,a.x):(console.warn("resultCorner has wrong, we have move it to the nearest corner"),p.x=Math.abs(p.x-i.x)>Math.abs(p.x-r.x)?r.x:i.x)}}this.result.normalizeExpandBox=V(o,(new W).setFromVec2ArrayWithOutCorners([p,l])),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}case"direction-scale":{const{index:t,point:e}=this.interactionParam,i=s.corners[t].clone();e.x>=c.x?(n.x=Math.max(s.corners[t].x+n.x,c.x)-i.x,n.y=0):e.x<=a.x&&(n.x=Math.min(s.corners[t].x+n.x,a.x)-i.x,n.y=0),e.y>=c.y?(n.y=Math.max(s.corners[t].y+n.y,c.y)-i.y,n.x=0):e.y<=a.y&&(n.y=Math.min(s.corners[t].y+n.y,a.y)-i.y,n.x=0);const r=s.corners.map((e,i)=>[t,(t+1)%4].includes(i)?e.clone().add(n):e.clone());this.result.normalizeExpandBox=V(o,(new W).setFromVec2Array(r)),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}}}endAction(t){if(!this.interactive||"none"===this.interactionParam.type)return;const e=new z(t.offsetX,t.offsetY),i=new z(t.clientX,t.clientY);return this.refreshInteractionType(e,i),this.type}interruption(){this.interactionParam={type:"none"}}actionKey(t){this.isShiftDown=t.shiftKey}endActionKey(t){this.isShiftDown=t.shiftKey,"lockedAspect"in this.interactionParam&&delete this.interactionParam.lockedAspect}cancelPreparation(){this.interactionParam={type:"none"}}refreshResults(){if(this.interactive){const t=this._pageDataUtils.getPageData();if(Gr(t,"You must call SDK#run() first"),1!==t.activeData.selectedItems.length)console.warn("Picture Expand Gizmo can edit one picture at a time.");else if("invalid"===this.result.type){const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]);this.result={type:"valid",itemBox:e.clone(),normalizeExpandBox:new W(new z,new z(1,1))}}else{const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]),i=e.getCenter().subtract(this.result.itemBox.getCenter()),r=e.getSize().x/this.result.itemBox.getSize().x;this.result.itemBox.translate(i),this.result.itemBox.scale(r)}}else this.result={type:"invalid"}}refreshRenderObjects(){if(this.graphics.clear(),!this.interactive||"invalid"===this.result.type)return[];const{maskColor:t,maskAlpha:e,expandBoxLineWidth:i,expandBoxLineColor:r,expandBoxLineAlpha:s,expandBoxCornerRadius:n,expandBoxCornerFillColor:o,expandBoxCornerLineWidth:a,expandBoxCornerLineColor:c,expandBoxCornerLineAlpha:h,gridLineWidth:l,gridLineColor:p,gridLineAlpha:d,gridCount:m}=Dn.config.gestureHandlerConfig.pictureExpandGizmoConfig,{normalizeExpandBox:g,itemBox:u}=this.result,y=R(u,g);this.graphics.beginFill(t,e),this.graphics.fillBox(y),this.graphics.endFill();const{min:f,max:x}=y,w=y.getSize().x/(m+1),v=y.getSize().y/(m+1);this.graphics.lineStyle(l,p,d);for(let t=1;t<=m;t++){const e=new L(new z(f.x+w*t,f.y),new z(f.x+w*t,x.y)),i=new L(new z(f.x,f.y+v*t),new z(x.x,f.y+v*t));this.graphics.drawLine(e),this.graphics.drawLine(i)}return this.graphics.lineStyle(i,r,s),this.graphics.drawBox(y),this.graphics.beginFill(o),this.graphics.lineStyle(a,c,h),y.corners.forEach(t=>{this.graphics.drawCircle(t.x,t.y,n)}),this.graphics.endFill(),[this.graphics]}refreshCursorResult(t,e=0){switch(t){case"scale":case"direction-scale":this.cursorResult={type:"scale",angle:e};break;case"move":case"none":this.cursorResult={type:"normal",angle:0}}}getRenderObjects(){return this.interactive?this.refreshRenderObjects():[]}refreshInteractionType(t,e){if(this.interactionParam.type="none",!this.interactive||"invalid"===this.result.type)return;const{normalizeExpandBox:i,itemBox:r}=this.result,s=R(r,i);let n=!1,o=0;s.corners.forEach((i,r)=>{n||i.distanceTo(t)<Dn.config.gestureHandlerConfig.pictureExpandGizmoConfig.scaleInteractionDistance&&(n=!0,this.interactionParam={type:"scale",index:r,box:s.clone(),startMouse:e},o=Math.PI/2*r)}),s.corners.forEach((i,r)=>{if(n)return;const a=new L(i.clone(),s.corners[(r+1)%4]),c=t.distanceToLine(a);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){n=!0;const t=a.at(c.t);this.interactionParam={type:"direction-scale",index:r,point:t,box:s.clone(),startMouse:e},o=Math.PI/2*r+Math.PI/4}}),s.containsPoint(t)&&!n&&(this.interactionParam={type:"move",point:t.clone(),box:s.clone(),startMouse:e},n=!0),this.refreshCursorResult(this.interactionParam.type,o*E)}getExpandInfo(){const[t]=this._pageDataUtils.getSelectedItems();if(this.interactive&&"invalid"!==this.result.type&&t)return{expandBox:this.getExpandBox(),itemBox:this._pageDataUtils.getItemBoxById(t.id)}}getExpandBox(){const[t]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!t)return;const e=this._pageDataUtils.getItemBoxById(t.id),{normalizeExpandBox:i}=this.result;return R(e,i)}setExpandBox(t,e){const[i]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!i)return;const r=new W(t,e),s=this._pageDataUtils.getItemBoxById(i.id),{min:n,max:o}=V(s,r);this.result.normalizeExpandBox.set(new z(Math.min(n.x,0),Math.min(n.y,0)),new z(Math.max(o.x,1),Math.max(o.y,1)));const a=this.getExpandBox();return this._eventEmitter.emit("expandBoxChange",a),a}},Kr={fontSize:14,fill:16777215,align:"center",lineHeight:16},$r=class extends sr{constructor(t,e){super(),c(this,"type","sprite-text-edit"),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"graphics",new cr.Graphics),c(this,"editGraphics",new cr.Graphics),c(this,"preSelectedText",new cr.Text("",Kr)),c(this,"result",[]),c(this,"interactionParam",{preSelected:-1,selected:-1}),c(this,"clearPreSelected",!1),this._pageDataUtils=t,this._eventEmitter=e,this.preSelectedText.resolution=3}get interactive(){return Dn.config.gestureHandlerConfig.spriteTextEditGizmoEnabled}set interactive(t){t!==Dn.config.gestureHandlerConfig.spriteTextEditGizmoEnabled&&(Dn.config.gestureHandlerConfig.spriteTextEditGizmoEnabled=t)}preparationAction(t){const e=new z(t.offsetX,t.offsetY);return this.interactionParam.preSelected=-1,this.result.forEach((t,i)=>{if(this.interactionParam.preSelected>=0)return;R(this._pageDataUtils.getViewBoxById(t.id),t.box).containsPoint(e)&&(this.interactionParam.preSelected=i)}),this.type}preAction(){const t=this.result[this.interactionParam.preSelected];if(t){const e=t?{id:t.id,index:t.index,text:t.text}:void 0;this._eventEmitter.emit("spriteTextClick",e)}return this.result.forEach(e=>{e.isEditing=e.id===t?.id&&e.index===t.index}),this.interactionParam.preSelected=-1,this.type}action(t){}endAction(t){return this.type}interruption(){return this.type}actionKey(t){}endActionKey(t){}cancelPreparation(){}initResult(t){t.forEach(t=>{const e=this._pageDataUtils.getItemBoxById(t.id);t.info.forEach((i,r)=>{const{text:s,box:n,hasChanged:o}=i,a=n.map(t=>new z(...t).add(e.min)),c=(new W).setFromVec2Array(a),h=V(e,c);this.result.push({id:t.id,index:r,hasChanged:o,text:s,box:h,isEditing:!1})})})}clearResult(){this.result=[]}setSelected(t,e){const i=this.result.findIndex(i=>i.id===t&&i.index===e);if(i<0)console.warn(`item ${t} does not have index ${e} text info.`);else{this.interactionParam.selected=i;const t=this.result[this.interactionParam.selected],e=t?{id:t.id,index:t.index,text:t.text}:void 0;this._eventEmitter.emit("spriteTextClick",e)}}setText(t,e,i){const r=this.result.find(i=>i.id===t&&i.index===e);r?r.text=i:console.warn(`item ${t} does not have index ${e} text info.`)}setChangedState(t,e,i){const r=this.result.find(i=>i.id===t&&i.index===e);r?r.hasChanged=i:console.warn(`item ${t} does not have index ${e} text info.`)}setEditState(t,e,i){const r=this.result.find(i=>i.id===t&&i.index===e);r?r.isEditing=i:console.warn(`item ${t} does not have index ${e} text info.`)}refreshResults(){if(this.graphics.clear(),this.editGraphics.clear(),this.preSelectedText.text="",!this.interactive||0===this.result.length)return;const{scale:t}=this._pageDataUtils.interactionUtils.viewportParam,{editBoxColor:e,editBoxAlpha:i,editBoxPreSelectedColor:r,editBoxPreSelectedAlpha:s,hasChangedEditBoxColor:n,hasChangedEditBoxAlpha:o,hasChangedEditBoxPreSelectedColor:a,hasChangedEditBoxPreSelectedAlpha:c,editBoxLineColor:h,editBoxLineAlpha:l,editBoxLinePreSelectedAlpha:p,editBoxLinePreSelectedColor:d,hasChangedEditBoxLineColor:m,hasChangedEditBoxLineAlpha:g,hasChangedEditBoxLinePreSelectedColor:u,hasChangedEditBoxLinePreSelectedAlpha:y}=Dn.config.gestureHandlerConfig.spriteTextEditGizmoConfig;this.result.forEach((h,l)=>{const p=l===this.interactionParam.preSelected&&!this.clearPreSelected,{box:d,id:m,hasChanged:g,isEditing:u}=h,y=R(this._pageDataUtils.getViewBoxById(m),d);if(g){const t=g?p?a:n:p?r:e,h=g?p?c:o:p?s:i;this.editGraphics.beginFill(t,h),this.editGraphics.fillBox(y),this.editGraphics.endFill()}else{const t=g?p?a:n:p?r:e,h=g?p?c:o:p?s:i;this.graphics.beginFill(t,h),this.graphics.fillBox(y),this.graphics.endFill()}const f=y.getCenter(),x=y.getSize();if(u){const e=this.processText(h.text,Kr,x.x/t,Math.floor(x.y/t/16));this.preSelectedText.style.wordWrapWidth=x.x/t,this.preSelectedText.text=e,this.preSelectedText.scale.x=t,this.preSelectedText.scale.y=t,this.preSelectedText.anchor.set(.5,.5),this.preSelectedText.x=f.x,this.preSelectedText.y=f.y}}),this.result.forEach((t,e)=>{const i=e===this.interactionParam.preSelected&&!this.clearPreSelected,{box:r,id:s,hasChanged:n}=t,o=R(this._pageDataUtils.getViewBoxById(s),r);if(n){const t=n?i?u:m:i?d:h,e=n?i?y:g:i?p:l;o.corners.forEach((i,r)=>{const s=i.clone(),n=o.corners[(r+1)%4].clone(),a=(new z).subtractVectors(n,s).angle()*E;if([180,270].includes(a)){const t=n.clone();n.copyFrom(s),s.copyFrom(t)}this.editGraphics.lineStyle(1,t,e),this.editGraphics.moveTo(...s.toArray()),this.editGraphics.lineTo(...n.toArray())})}else{const t=n?i?u:m:i?d:h,e=n?i?y:g:i?p:l;o.corners.forEach((i,r)=>{const s=i.clone(),n=o.corners[(r+1)%4].clone(),a=(new z).subtractVectors(n,s).angle()*E;if([180,270].includes(a)){const t=n.clone();n.copyFrom(s),s.copyFrom(t)}this.graphics.lineStyle(1,t,e),this.graphics.moveTo(...s.toArray()),this.graphics.lineTo(...n.toArray())})}})}getRenderObjects(){const t=!!this.result.find(t=>t.isEditing);this.clearPreSelected=!1;const e=[];return this.interactive?(e.push(this.graphics,this.editGraphics),t&&e.push(this.preSelectedText),e):e}processText(t,e,i,r){const s=[];let n="";const o=t.split(""),a=new cr.Text("",e);for(let t=0;t<o.length;t++){const e=o[t],c=n+e;if(a.text=c,a.width>i){if(s.push(n),s.length>=r){const t=s[r-1];t.length>2?s[r-1]=t.slice(0,-2)+"...":s[r-1]="...";break}n=e}else n=c;t===o.length-1&&n&&s.push(n)}return s.slice(0,r).join("\n")}};import{Sprite as Yr}from"@pixi/sprite";var Jr=class extends sr{constructor(t,e){super(),c(this,"type","video-play"),c(this,"result",{id:"",box:new W}),c(this,"interactionParam",{type:"none"}),c(this,"logoSprite"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),this._pageDataUtils=t,this._eventEmitter=e;const{logoUrl:i,width:r,height:s}=Dn.config.gestureHandlerConfig.videoPlayGizmoConfig;this.logoSprite=Yr.from(i),this.logoSprite.width=r,this.logoSprite.height=s}get interactive(){return Dn.config.gestureHandlerConfig.videoPlayGizmoEnabled}set interactive(t){t!==Dn.config.gestureHandlerConfig.videoPlayGizmoEnabled&&(Dn.config.gestureHandlerConfig.videoPlayGizmoEnabled=t)}preparationAction(t){if(!this.interactive)return;const e=new z(t.offsetX,t.offsetY);return this.result.box.containsPoint(e)?this.interactionParam.type="preSelected":this.interactionParam.type="none",this.refreshCursorResult(),"none"===this.interactionParam.type?void 0:this.type}preAction(t,e){const i=this._pageDataUtils.getVideoItemPlayTime(this.result.id);return this._eventEmitter.emit("videoPlay",{id:this.result.id,time:i}),this.interactionParam.type="none",this.refreshCursorResult(),this.type}action(t){}endAction(t){}interruption(){}actionKey(t){}endActionKey(t){}cancelPreparation(){}refreshCursorResult(){switch(this.interactionParam.type){case"none":this.cursorResult={type:"normal",angle:0};break;case"preSelected":this.cursorResult={type:"pointer",angle:0}}}refreshResults(){if(!this.interactive)return;this.result={id:"",box:new W};const t=this._pageDataUtils.getSelectedItems();if(1!==t.length||"video"!==t[0]?.type)return;const e=t[0].id,{width:i,height:r,logoShift:s}=Dn.config.gestureHandlerConfig.videoPlayGizmoConfig,n=this._pageDataUtils.getViewBoxById(e),o=n.getSize();if(o.x<50||o.y<50)this.result.box.makeEmpty();else{const{max:t}=n,o=new z(t.x-s[0],t.y-s[1]),a=new z(i,r);this.result.id=e,this.result.box.setFromCenterAndSize(o,a)}}getRenderObjects(){if(!this.interactive||this.result.box.isEmpty())return[];const t=this.result.box.getCenter();return this.logoSprite.anchor.set(.5,.5),this.logoSprite.x=t.x,this.logoSprite.y=t.y,[this.logoSprite]}};import{Graphics as Xr}from"@pixi/graphics";import{generateGUID as Zr}from"@galacean/effects";var qr=class extends sr{constructor(t,e){super(),c(this,"type","item-create"),c(this,"_createType","none"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"graphics",new Xr),c(this,"dragStartPoint",null),c(this,"dragCurrentPoint",null),c(this,"isDragging",!1),c(this,"frameBox",null),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return Dn.config.gestureHandlerConfig.itemCreateGizmoEnabled}set interactive(t){t!==Dn.config.gestureHandlerConfig.itemCreateGizmoEnabled&&(t&&this._pageDataUtils.clearSelectedItems(),Dn.config.gestureHandlerConfig.itemCreateGizmoEnabled=t,this._createType=t?this._createType:"none")}get createType(){return this._createType}set createType(t){t!==this._createType&&(this._createType=t,this.refreshCursorResult())}preparationAction(t){return this.interactive?this.type:void 0}preAction(t,e){if(this.interactive)return"frame"===this._createType?(this.dragStartPoint=new z(t.offsetX,t.offsetY),this.dragCurrentPoint=this.dragStartPoint.clone(),this.isDragging=!0,this.frameBox=null,this.type):this.type}action(t){if("frame"===this._createType&&this.isDragging&&this.dragStartPoint){this.dragCurrentPoint=new z(t.offsetX,t.offsetY);const e=Math.min(this.dragStartPoint.x,this.dragCurrentPoint.x),i=Math.min(this.dragStartPoint.y,this.dragCurrentPoint.y),r=Math.max(this.dragStartPoint.x,this.dragCurrentPoint.x),s=Math.max(this.dragStartPoint.y,this.dragCurrentPoint.y);this.frameBox=new W(new z(e,i),new z(r,s))}}endAction(t){const e=Zr();if("frame"===this._createType){let i=!1;if(this.isDragging&&this.dragStartPoint){i=this.dragStartPoint.distanceTo(new z(t.offsetX,t.offsetY))>=10}const r=i&&this.frameBox&&!this.frameBox.isEmpty()?this._pageDataUtils.interactionUtils.getPixelPositionByViewPoint(this.frameBox.getCenter()):this._pageDataUtils.interactionUtils.getPixelPositionByViewPoint(new z(t.offsetX,t.offsetY));if(i&&this.frameBox&&!this.frameBox.isEmpty()){const t=this.frameBox.getSize(),i={type:"frame",id:e,name:"画板",property:{width:t.x,height:t.y,position:[r.x,r.y],layoutMode:"free"}};this._pageDataUtils.addFrameItem(i)}else{const t={type:"frame",id:e,name:"画板",property:{width:1048,height:1048,position:[r.x,r.y],layoutMode:"free"}};this._pageDataUtils.addFrameItem(t)}return this.resetDragState(),void this._eventEmitter.emit("itemCreate",{type:this._createType,id:e,position:r.toArray()})}if("text"===this._createType){const i=this._pageDataUtils.interactionUtils.getPixelPositionByViewPoint(new z(t.offsetX,t.offsetY)).toArray();return void this._eventEmitter.emit("itemCreate",{type:this.createType,id:e,position:i})}if("none"!==this._createType){const i=this._pageDataUtils.interactionUtils.getPixelPositionByViewPoint(new z(t.offsetX,t.offsetY)).toArray();this._eventEmitter.emit("itemCreate",{type:this.createType,id:e,position:i})}}interruption(){return this.resetDragState(),this.type}resetDragState(){this.isDragging=!1,this.dragStartPoint=null,this.dragCurrentPoint=null,this.frameBox=null,this.graphics.clear()}actionKey(t){}endActionKey(t){}cancelPreparation(){}refreshResults(){if(this.graphics.clear(),"frame"===this._createType&&this.isDragging&&this.frameBox&&!this.frameBox.isEmpty()){const{min:t,max:e}=this.frameBox,i=e.x-t.x,r=e.y-t.y,{itemCreateGizmoConfig:s}=Dn.config.gestureHandlerConfig;this.graphics.lineStyle(s.frameBorderWidth,s.frameBorderColor,s.frameBorderAlpha),this.graphics.drawRect(t.x,t.y,i,r),this.graphics.beginFill(s.frameFillColor,s.frameFillAlpha),this.graphics.drawRect(t.x,t.y,i,r),this.graphics.endFill()}}getRenderObjects(){return"frame"===this._createType&&this.isDragging?(this.refreshResults(),[this.graphics]):[]}refreshCursorResult(){switch(this._createType){case"text":this.cursorResult={type:"text-create",angle:0};break;case"frame":this.cursorResult={type:"frame-create",angle:0};break;case"none":case"sprite-generator":case"video-generator":this.cursorResult={type:"normal",angle:0}}}},Qr=class{constructor(t){c(this,"wireframeApplication"),c(this,"gizmos",[]),c(this,"activeGizmo"),c(this,"selectorGizmo"),c(this,"transformGizmo"),c(this,"controlGizmo"),c(this,"preferenceGizmo"),c(this,"pictureCutGizmo"),c(this,"pictureExpandGizmo"),c(this,"textGizmo"),c(this,"maskGizmo"),c(this,"loadingGizmo"),c(this,"spriteTextEditGizmo"),c(this,"videoPlayGizmo"),c(this,"itemCreateGizmo"),c(this,"_ignoreInteraction",!1),c(this,"clickButtons",0),c(this,"container"),c(this,"_emitter"),c(this,"clickTime",0),c(this,"firstClick",!0),c(this,"dblclickTimeSpan",500),c(this,"spaceEmit",!1),c(this,"interactType","select"),this.gizmos=[];const{width:e,height:i}=t.getBoundingClientRect();this.wireframeApplication=new rr({backgroundAlpha:0,width:e,height:i,resolution:2,autoDensity:!0,antialias:!0}),this.container=t,this.wireframeApplication.view.style.position="absolute",this.wireframeApplication.view.id="wireframeApplicationCanvas",t.appendChild(this.wireframeApplication.view),this.wireframeApplication.stage.sortableChildren=!0,async function(){await Promise.all(Object.entries(Ur).map(([t,e])=>{const{url:i}=e;if(i)return fetch(i).then(t=>t.text()).then(i=>Ur[t]={...e,content:i})})).catch(t=>{console.error(t)})}()}set ignoreInteraction(t){t!==this._ignoreInteraction&&(this._ignoreInteraction=t,t&&(this.activeGizmo?.cancelPreparation(),this.activeGizmo=void 0))}get ignoreInteraction(){return this._ignoreInteraction}resize(){this.wireframeApplication&&(this.wireframeApplication.resizeTo=this.container,this.render())}refresh(){this.gizmos.forEach(t=>{t.refreshResults()})}render(){if(this.refresh(),!this.wireframeApplication?.stage)return;this.wireframeApplication?.stage?.removeChildren();const t=(this.ignoreInteraction?[this.preferenceGizmo]:this.gizmos).flatMap(t=>t.getRenderObjects());this.wireframeApplication?.stage?.addChild(...t),this.wireframeApplication?.render();const e=this.activeGizmo instanceof Tr||this.activeGizmo instanceof Lr||this.activeGizmo instanceof Nr||this.activeGizmo instanceof Hr||this.activeGizmo instanceof Wr||this.activeGizmo instanceof nr||this.activeGizmo instanceof Jr||this.activeGizmo instanceof qr?this.activeGizmo.cursorResult:void 0;this.setCursor(e)}async init(t,e){if(null===this.wireframeApplication)return void setTimeout(async()=>{await this.init(t,e)},50);this.gizmos=[],this.controlGizmo=new nr(t),this.selectorGizmo=new ar(t);const i=new Br;this.transformGizmo=new Tr(t,i,this.selectorGizmo),this.preferenceGizmo=new kr(t),this.pictureCutGizmo=new Lr(t,e),this.pictureExpandGizmo=new Nr(t,e),this.textGizmo=new Wr(t,i,this.selectorGizmo,e,this.wireframeApplication?.view.parentElement),this.textGizmo.rotationSprite.texture=await Or.fromURL(Dn.config.gestureHandlerConfig.textGizmoConfig.rotationCornerTexture),this.maskGizmo=new Hr(t,this.wireframeApplication),this.loadingGizmo=new jr(t),this.spriteTextEditGizmo=new $r(t,e),this.videoPlayGizmo=new Jr(t,e),this.itemCreateGizmo=new qr(t,e),this.gizmos.push(this.itemCreateGizmo,this.maskGizmo,this.spriteTextEditGizmo,this.pictureCutGizmo,this.pictureExpandGizmo,this.loadingGizmo,this.videoPlayGizmo,this.transformGizmo,this.textGizmo,this.selectorGizmo,this.controlGizmo,this.preferenceGizmo,i),this._emitter=e,this.initEvents(),this.registerViewEvent()}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=t=>{this.onMouseDown(t)},this.wireframeApplication.view.onmousemove=t=>{0===t.buttons&&this.onMouseMove(t)},this.wireframeApplication.view.onmouseout=()=>{this.selectorGizmo?.cancelPreparation(),this.render()},this.wireframeApplication.view.onwheel=t=>{this.onWheel(t)},this.wireframeApplication.view.oncontextmenu=t=>{t.stopPropagation(),t.preventDefault()}}onMouseDown(t){if(!this.ignoreInteraction){switch(this.clickButtons=t.buttons,this.interactType){case"select":if(4===this.clickButtons&&(this.activeGizmo=this.controlGizmo,this.controlGizmo.preAction(t)),this.firstClick=!!this.firstClick&&Date.now()-this.clickTime<this.dblclickTimeSpan,this.firstClick){if(this.gizmos.forEach(e=>{if(e.interactive)if(void 0===this.activeGizmo){const i=e.preparationAction(t);this.activeGizmo=this.gizmos.find(t=>t.type===i)}else e.cancelPreparation()}),this.activeGizmo&&["transform","text"].includes(this.activeGizmo.type)){const e=this.activeGizmo.preAction(t,!0);this.activeGizmo=this.gizmos.find(t=>t.type===(e??"null"))}else if(this.activeGizmo&&!["picture-cut","picture-expand","mask","sprite-text-edit","video-play"].includes(this.activeGizmo.type)){this.activeGizmo=void 0;const e=this.selectorGizmo?.preAction(t,!0);this.activeGizmo=this.gizmos.find(t=>t.type===(e??"null"))}this.firstClick=!1}else{void 0===this.activeGizmo&&this.gizmos.forEach(e=>{if(!e.interactive||this.activeGizmo)return;const i=e.preparationAction(t);this.activeGizmo=this.gizmos.find(t=>t.type===i)});const e=this.activeGizmo?.preAction(t);e&&!["selector","transform"].includes(e)&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.activeGizmo=this.gizmos.find(t=>t.type===e),this.clickTime=Date.now(),this.firstClick=!0}break;case"hand":this.activeGizmo=this.controlGizmo,this.activeGizmo.preAction(t)}this.render(),this._emitter?.emit("itemOnDragStart",this.activeGizmo?.type??"null"),document.addEventListener("mousemove",this.onMouseMove),document.addEventListener("mouseup",this.onMouseUp)}}onMouseMove(t){if(!this.ignoreInteraction){if(0!==t.buttons)this.activeGizmo?.action(t),"selector"!==this.activeGizmo?.type&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this._emitter?.emit("itemOnDrag",this.activeGizmo?.type??"null");else switch(this.interactType){case"select":this.activeGizmo=void 0,this.spaceEmit?(this.activeGizmo=this.controlGizmo,this.controlGizmo.interactionType="mouse"):this.gizmos.forEach(e=>{if(e.interactive)if(void 0===this.activeGizmo){const i=e.preparationAction(t);i&&!["selector","transform"].includes(i)&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.activeGizmo=this.gizmos.find(t=>t.type===i)}else e.cancelPreparation()});break;case"hand":this.activeGizmo=this.controlGizmo,this.activeGizmo.preparationAction(t)}this.render()}}onWheel(t){this.ignoreInteraction||(t.preventDefault(),this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.spriteTextEditGizmo&&(this.spriteTextEditGizmo.clearPreSelected=!0),this.controlGizmo?.action(t))}onMouseUp(t){if(this.ignoreInteraction)return;const e=this.activeGizmo?.endAction(t);this.activeGizmo=this.gizmos.find(t=>t.type===e),void 0===this.activeGizmo&&1===this.clickButtons&&this.gizmos.forEach(e=>{if(e.interactive)if(void 0===this.activeGizmo){const i=e.preparationAction(t);this.activeGizmo=this.gizmos.find(t=>t.type===i)}else e.cancelPreparation()}),this.clickButtons=0,this._emitter?.emit("itemOnDragEnd",this.activeGizmo?.type??"null"),this.render(),document.removeEventListener("mousemove",this.onMouseMove),document.removeEventListener("mouseup",this.onMouseUp)}onKeyDown(t){this.ignoreInteraction||("escape"===t.code.toLocaleLowerCase()&&"select"!==this.interactType&&this.setInteractType("select"),"space"!==t.code.toLocaleLowerCase()||this.activeGizmo?.active?this.gizmos.forEach(e=>{e.actionKey(t)}):(this.spaceEmit=!0,this.activeGizmo=this.controlGizmo,this.controlGizmo.interactionType="hand"===this.interactType||this.spaceEmit?"mouse":"wheel"),this.render())}onKeyUp(t){this.ignoreInteraction||(this.gizmos.forEach(e=>{e.endActionKey(t)}),"space"===t.code.toLocaleLowerCase()&&(this.spaceEmit=!1,this.controlGizmo.interactionType="hand"===this.interactType||this.spaceEmit?"mouse":"wheel"),this.render())}dispose(){this.container.removeChild(this.wireframeApplication.view),this.wireframeApplication.destroy(),this.gizmos=[],this.activeGizmo=void 0}setCursor(t){let e="default";if("circle"===t?.type){const i=1,r=t.radius||10;e=`url("data:image/svg+xml,${encodeURIComponent(`<svg width="${2*r}" height="${2*r}" xmlns="http://www.w3.org/2000/svg"><circle cx="${r}" cy="${r}" r="${r}" fill="rgba(255, 255, 255, 0.6)" stroke="#6A34FF" stroke-width="${i}" /></svg>`)}") ${r} ${r}, auto`}else if(t?.type&&["scale","rotation","hand","active-hand","pointer","text-create","frame-create"].includes(t.type)){const i=Ur[t.type];if("svg"===i.type){const r=16;e=encodeURIComponent(i.content.replace("rotate(0.00)",`rotate(${t.angle??0})`)),e=`url("data:image/svg+xml,${e}") ${r} ${r}, auto`}else e=i.content}this.wireframeApplication.view.style.cursor=e}openPictureCutGizmo(){if(!this.pictureCutGizmo)return;const t=JSON.parse(JSON.stringify(Dn.config));this.pictureCutGizmo.interactive=!0,this.pictureCutGizmo.interactive&&(this.pictureExpandGizmo.interactive=!1,this.maskGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.textGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const e=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}closePictureCutGizmo(){if(!this.pictureCutGizmo)return;const t=JSON.parse(JSON.stringify(Dn.config));this.pictureCutGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0,this.textGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}setInteractType(t){t!==this.interactType&&(this.interactType=t,this.controlGizmo.interactionType="hand"===this.interactType||this.spaceEmit?"mouse":"wheel")}getCutInfo(){return this.pictureCutGizmo?.getCutInfo()}setCutBox(t,e){const i=this.pictureCutGizmo?.setCutBox(t,e);return this.render(),i}openPictureExpandGizmo(){if(!this.pictureExpandGizmo)return;const t=JSON.parse(JSON.stringify(Dn.config));this.pictureExpandGizmo.interactive=!0,this.pictureExpandGizmo.interactive&&(this.pictureCutGizmo.interactive=!1,this.maskGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.textGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const e=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}closePictureExpandGizmo(){if(!this.pictureExpandGizmo)return;const t=JSON.parse(JSON.stringify(Dn.config));this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0,this.textGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}getExpandInfo(){return this.pictureExpandGizmo?.getExpandInfo()}setExpandBox(t,e){const i=this.pictureExpandGizmo?.setExpandBox(t,e);return this.render(),i}openMaskGizmo(t){if(!this.maskGizmo)return;const e=JSON.parse(JSON.stringify(Dn.config));this.maskGizmo.interactive=!0,this.maskGizmo.config={brushSize:t},this.maskGizmo.interactive&&(this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const i=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",e,i)}clearMaskGizmo(){this.maskGizmo&&(this.maskGizmo.clearMask(),this.render())}closeMaskGizmo(){if(!this.maskGizmo)return;const t=JSON.parse(JSON.stringify(Dn.config));this.maskGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}setMaskGizmoConfig(t){this.maskGizmo&&(this.maskGizmo.config=t)}getMask(){if(this.maskGizmo)return this.maskGizmo.getMask()}setMaskGizmoMode(t){this.maskGizmo&&this.maskGizmo.setMode(t)}openLoadingGizmo(t,e,i){if(!this.loadingGizmo)return;const r=JSON.parse(JSON.stringify(Dn.config));this.loadingGizmo.addId(t,e,i),this.loadingGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const s=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",r,s)}closeLoadingGizmo(t){if(!this.loadingGizmo)return;const e=JSON.parse(JSON.stringify(Dn.config));this.loadingGizmo.deleteId(t);const i=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",e,i)}setPictureCutGizmoLockScale(t){this.pictureCutGizmo.isLockScale=t}setPictureExpandGizmoLockScale(t){this.pictureExpandGizmo.isLockScale=t}setTransformGizmoLockScale(t){this.transformGizmo.isLockScale=t}openSpriteTextGizmo(t){if(!this.spriteTextEditGizmo)return;const e=JSON.parse(JSON.stringify(Dn.config));this.spriteTextEditGizmo.interactive=!0,this.spriteTextEditGizmo.initResult(t),this.spriteTextEditGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const i=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",e,i)}closeSpriteTextEditGizmo(){if(!this.spriteTextEditGizmo)return;const t=JSON.parse(JSON.stringify(Dn.config));this.spriteTextEditGizmo.interactive=!1,this.spriteTextEditGizmo.clearResult(),this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}setSpriteTextSelectedIndex(t,e){this.spriteTextEditGizmo?.setSelected(t,e)}setSpriteTextSelectedText(t,e,i){this.spriteTextEditGizmo?.setText(t,e,i)}setSpriteTextChangedState(t,e,i){this.spriteTextEditGizmo?.setChangedState(t,e,i)}setSpriteTextEditState(t,e,i){this.spriteTextEditGizmo?.setEditState(t,e,i)}openItemCreateGizmo(t){if(!this.itemCreateGizmo)return;const e=JSON.parse(JSON.stringify(Dn.config));this.itemCreateGizmo.interactive=!0,this.itemCreateGizmo.createType=t;const i=JSON.parse(JSON.stringify(Dn.config));this.itemCreateGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.spriteTextEditGizmo.interactive=!1),this.render(),this._emitter?.emit("sdkConfigChange",e,i)}closeItemCreateGizmo(){if(!this.itemCreateGizmo)return;const t=JSON.parse(JSON.stringify(Dn.config));this.itemCreateGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Dn.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}};import{AssetManager as ts,glContext as es}from"@galacean/effects";import{assertExist as is}from"@galacean/effects";var rs=class{constructor(t){c(this,"plane",new $),c(this,"ray",new Y),c(this,"viewportParam",{width:0,height:0,scale:1,translation:new z,rulerWidth:0}),c(this,"cameraParam",{position:new j,rotation:new j,focusPosition:new j,focusRotation:new j,viewProjectionMatrix:new N,inverseViewProjectionMatrix:new N}),c(this,"pageDataUtils"),this.pageDataUtils=t}refreshViewParam(){const t=this.pageDataUtils.getPageData();is(t,"You must run SDK first");const e=new z(this.pageDataUtils.container.offsetWidth,this.pageDataUtils.container.offsetHeight),{zoom:i,translation:r}=t.property;this.viewportParam.width=e.x,this.viewportParam.height=e.y,this.viewportParam.scale=i,this.viewportParam.translation=new z(...r),this.viewportParam.rulerWidth=0}refreshCameraParam(){const{player:t}=this.pageDataUtils,e=t?.getCompositions()?.[0]?.camera;if(e){const t=N.fromArray(e.getViewProjectionMatrix().toArray()),i=N.fromArray(e.getViewMatrix().toArray()).invert(),r=new H;i.decompose(this.cameraParam.position,r,new j),this.cameraParam.rotation=(new K).setFromQuaternion(r).toDegreeVector3(),this.cameraParam.focusPosition=new j(...this.cameraParam.position.toVector2().toArray(),this.cameraParam.position.z>0?0:2*this.cameraParam.position.z),this.cameraParam.focusPosition.applyEuler((new K).setFromDegreeVector3(this.cameraParam.rotation.clone()),this.cameraParam.position),this.cameraParam.focusRotation=(new K).setFromQuaternion(r.invert()).toDegreeVector3(),this.cameraParam.viewProjectionMatrix=t,this.cameraParam.inverseViewProjectionMatrix=N.fromArray(e.getInverseViewProjectionMatrix().toArray())}}refrehCameraParamByCameraInfo(t){const{near:e,far:i,fov:r,aspect:s,position:n,clipMode:o}=t,a=(new N).perspective(r*Math.PI/180,s,e,i,1===o),c=(new N).compose(new j(...n),new H,new j(1,1,1)).invert(),h=(new N).multiplyMatrices(a,c),l=h.clone().invert();this.cameraParam.position=new j(...n),this.cameraParam.rotation=(new K).toDegreeVector3(),this.cameraParam.focusPosition=new j(n[0],n[1],this.cameraParam.position.z>0?0:2*this.cameraParam.position.z),this.cameraParam.focusPosition.applyEuler((new K).setFromDegreeVector3(this.cameraParam.rotation.clone()),this.cameraParam.position),this.cameraParam.focusRotation=(new K).toDegreeVector3(),this.cameraParam.viewProjectionMatrix=h,this.cameraParam.inverseViewProjectionMatrix=l}initInteractionPlane(t,e){t??(t=this.cameraParam.focusPosition),e??(e=(new K).setFromDegreeVector3(this.cameraParam.rotation));const i=new j(0,0,1).applyEuler(e);this.plane.setFromNormalAndCoplanarPoint(t,i)}getWorldSizeByViewSize(t,e=!0,i){const r=e||!i?(new K).setFromDegreeVector3(this.cameraParam.rotation):(new K).setFromQuaternion((new H).setFromRotationMatrix(this.pageDataUtils.getItemTransformById(i).matrix)),s=i?(new j).setFromMatrixPosition(this.pageDataUtils.getItemTransformById(i).matrix):this.cameraParam.focusPosition,n="editor"===Dn.config.mode?1:this.viewportParam.scale;t.multiply(n);const o=this.projectPoint(s.clone()),a=this.getWorldPositionByViewPoint(o.add(t));if(!a)return console.warn("size is out of bounds."),new j(0,0,0);const c=(new K).setFromQuaternion((new H).setFromEuler(r).invert());return(e||!i?a.applyEuler(c,s):a).subtract(s)}getViewSizeByPixelSize(t){const{scale:e}=this.viewportParam,i="template"===Dn.config.mode?1:e;return t.clone().multiply(i)}projectPoint(t){const{width:e,height:i,scale:r}=this.viewportParam,{viewProjectionMatrix:s}=this.cameraParam,n="editor"===Dn.config.mode?1:r;return(new z).copyFrom(t.applyMatrix(s).toVector2()).toViewCoordinate(e*n,i*n)}getWorldPositionByViewPoint(t){const{position:e,inverseViewProjectionMatrix:i}=this.cameraParam,r=this.getNDCPositionByScreenPosition(t),s=(new J).setFromCamera(r,{position:e,inverseViewProjectMatrix:i}).rayCastPlane(this.plane);return s?.point}getNDCPositionByScreenPosition(t){const{width:e,height:i,scale:r}=this.viewportParam,s="editor"===Dn.config.mode?1:r;return new z(t.x/(e*s)*2-1,1-t.y/(i*s)*2)}getNDCSizeByPixelSize(t){const{width:e,height:i}=this.viewportParam;return new z(t.x/e*2,-t.y/i*2)}getPixelSizeByWorldSize(t){const e=this.projectPoint(new j),i=this.projectPoint(t).subtract(e);return i.abs(),i}getPixelSizeByNDCSize(t){const{width:e,height:i}=this.viewportParam;return new z(t.x/2*e,-t.y/2*i)}getViewPositionWWithOutTransform(t){const{scale:e}=this.viewportParam,i="editor"===Dn.config.mode?1:e;return t.divide(i)}getViewPositionByPixelPoint(t){if("template"===Dn.config.mode)return t.clone();const{width:e,height:i,scale:r,translation:s}=this.viewportParam;return t.clone().scaleByCenter(new z(r,r),new z(e/2,i/2)).add(s)}getPixelPositionByViewPoint(t){if("template"===Dn.config.mode)return t.clone();const{width:e,height:i,scale:r,translation:s}=this.viewportParam;return t.clone().subtract(s.clone()).scaleByCenter(new z(1/r,1/r),new z(e/2,i/2))}},ss={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"},ns={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 os(t,e,i,r){const s=e.getContext("2d");Fr(s),s.clearRect(0,0,e.width,e.height),i&&(s.save(),s.fillStyle=i,s.fillRect(0,0,e.width,e.height),s.restore()),r&&s.drawImage(r,0,0,r.width,r.height,0,0,e.width,e.height),s.drawImage(t,0,0,t.width,t.height,0,0,e.width,e.height)}function as(t,e){return String(t).padStart(e,"0")}async function cs(){return new Promise(async(t,e)=>{try{await function(t,e={}){return new Promise((i,r)=>{const s=document.querySelector(`script[src="${t}"]`);if(s)return"true"===s.dataset.loaded?void i(s):(s.addEventListener("load",()=>{i(s)}),void s.addEventListener("error",()=>{r(new Error(`Script already failed: ${t}`))}));const n=document.createElement("script");n.src=t,n.async=!0,Object.keys(e).forEach(t=>{n.setAttribute(t,e[t]??"")}),n.onload=()=>{n.dataset.loaded="true",i(n)},n.onerror=()=>{r(new Error(`Failed to load script: ${t}`))},document.head.appendChild(n)})}(ss.SCRIPT,{crossOrigin:"anonymous"});const e={locateFile:(t,e)=>t.endsWith("createWebPCore.wasm")?ss.WASM:e+t};t(await window.createWebPCore(e))}catch(t){e(t)}})}function hs(t){for(const e of t.getCompositions())for(const t of e.textures)t.isDestroyed||t.dispose();t.disposed||t.destroyCurrentCompositions()}function ls(t=[750,750],e="AI 设计师画布"){const i=b(),r={id:b(),dataType:m.DataType.TimelineAsset,tracks:[]},s={id:b(),item:{id:i},dataType:m.DataType.CompositionComponent,items:[],timelineAsset:{id:r.id},sceneBindings:[]},n={id:i,name:e,duration:999,startTime:0,endBehavior:m.EndBehavior.forward,previewSize:[...t],camera:{fov:60,far:40,near:.1,clipMode:1,position:[0,0,8],rotation:[0,0,0],aspect:t[0]/t[1]},components:[{id:s.id}]},o={version:m.JSONSceneVersion.LATEST,playerVersion:{web:"2.7.3",native:"10.7.6"},type:"ge",compositionId:i,compositions:[],images:[],plugins:[],bins:[],textures:[],items:[],components:[],materials:[],shaders:[],geometries:[],animations:[],miscs:[]};return o.miscs.push(r),o.compositions.push(n),o.components.push(s),o}function ps(t,e,i,r,s,n,o){const a=b(),c={id:t,name:n,dataType:m.DataType.VFXItemData,components:[{id:a}],delay:0,duration:999,endBehavior:m.EndBehavior.restart,renderLevel:m.RenderLevel.BPlus,type:m.ItemType.sprite,visible:!0,transform:{position:{x:e.x,y:e.y,z:e.z},eulerHint:{x:i.x,y:i.y,z:i.z},size:{x:r.x,y:r.y},scale:{x:s.x,y:s.y,z:s.z},anchor:{x:0,y:0}},content:void 0},h={id:a,item:{id:t},dataType:m.DataType.SpriteComponent,options:{startColor:[1,1,1,1]},renderer:{renderMode:m.RenderMode.MESH}};o&&(h.renderer.texture={id:o});const l={id:b(),dataType:m.DataType.ActivationPlayableAsset},p={id:b(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:l.id}}]},d={id:b(),dataType:m.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:c,components:[h],tracks:[p,{id:b(),dataType:m.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:d.id}}]}],playableAssets:[l,d]}}function ds(t,e,i,r=new z(1,1),s=new j){const n=JSON.parse(JSON.stringify(i)),o={id:t,name:e,duration:999,type:m.ItemType.null,visible:!0,endBehavior:m.EndBehavior.restart,delay:0,renderLevel:m.RenderLevel.BPlus,content:{options:{startColor:[1,1,1,1]}},components:[],transform:{position:n,eulerHint:{x:s.x,y:s.y,z:s.z},size:{x:1,y:1},scale:{x:r.x,y:r.y,z:1}},dataType:m.DataType.VFXItemData},a={id:b(),dataType:m.DataType.ActivationPlayableAsset};return{item:o,components:[],tracks:[{id:b(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:a.id}}]}],playableAssets:[a]}}function ms(t,e,i,r,s,n){const o=b(),a={id:t,name:e,dataType:m.DataType.VFXItemData,components:[{id:o}],delay:0,duration:999,endBehavior:m.EndBehavior.restart,renderLevel:m.RenderLevel.BPlus,type:m.ItemType.text,visible:!0,transform:{position:{x:i.x,y:i.y,z:i.z},eulerHint:{x:r.x,y:r.y,z:r.z},scale:{x:s.x,y:s.y,z:1},anchor:{x:0,y:0}},content:void 0},c={id:o,item:{id:t},dataType:m.DataType.TextComponent,options:n,renderer:{renderMode:1}},h={id:b(),dataType:m.DataType.ActivationPlayableAsset};return{item:a,components:[c],tracks:[{id:b(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:h.id}}]}],playableAssets:[h]}}function gs(t,e,i,r,s,n,o=!1,a=!1,c=1,h=1,l,p){const d=b(),g={id:t,name:n,dataType:m.DataType.VFXItemData,components:[{id:d}],delay:0,duration:999,endBehavior:m.EndBehavior.restart,renderLevel:m.RenderLevel.BPlus,type:m.ItemType.video,visible:!0,transform:{position:{x:e.x,y:e.y,z:e.z},eulerHint:{x:i.x,y:i.y,z:i.z},size:{x:r.x,y:r.y},scale:{x:s.x,y:s.y,z:s.z},anchor:{x:0,y:0}},content:void 0},u={id:d,item:{id:t},dataType:m.DataType.VideoComponent,options:{startColor:[1,1,1,1],muted:o,video:{id:p},volume:c,playbackRate:h,transparent:a},renderer:{renderMode:m.RenderMode.MESH}};l&&(u.renderer.texture={id:l});const y={id:b(),dataType:m.DataType.ActivationPlayableAsset},f={id:b(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:y.id}}]},x={id:b(),dataType:m.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:g,components:[u],tracks:[f,{id:b(),dataType:m.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:x.id}}]}],playableAssets:[y,x]}}function us(t,e){t.items.push(e.item),t.miscs.push(...e.tracks,...e.playableAssets),t.components.push(...e.components);const i=t.compositions.find(e=>e.id===t.compositionId)??t.compositions[0],r=t.components.find(t=>t.id===i.components[0]?.id);if(r){r.items.push({id:e.item.id});const i={id:b(),dataType:m.DataType.ObjectBindingTrack,children:[],clips:[]};for(const t of e.tracks)i.children.push({id:t.id});t.miscs.find(t=>t.id===r.timelineAsset.id).tracks.push({id:i.id}),r.sceneBindings.push({key:{id:i.id},value:{id:e.item.id}}),t.miscs.push(i)}}function ys(t,e,i){var r;const s=t.items.findIndex(t=>t.id===e);if(s<0)return;fs(t,e);const n=t.items.find(t=>t.id===i);if(!n)return;t.items[s].parentId=i;const{position:o={x:0,y:0,z:0},eulerHint:a=new j,scale:c=new j(1,1,1)}=n.transform;(r=t.items[s]).transform??(r.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}}),t.items[s].transform.position.x-=o.x,t.items[s].transform.position.y-=o.y,t.items[s].transform.position.z-=o.z,t.items[s].transform.eulerHint.x-=a.x,t.items[s].transform.eulerHint.y-=a.y,t.items[s].transform.eulerHint.z-=a.z,t.items[s].transform.scale.x/=0===c.x?1:c.x,t.items[s].transform.scale.y/=0===c.y?1:c.y,t.items[s].transform.scale.z/=0===c.z?1:c.z}function fs(t,e){var i;const r=t.items.findIndex(t=>t.id===e);if(!t.items[r]?.parentId)return;const s=t.items.find(e=>e.id===t.items[r].parentId);if(!s)return void delete t.items[r].parentId;const{position:n={x:0,y:0,z:0},eulerHint:o=new j,scale:a=new j(1,1,1)}=s.transform;(i=t.items[r]).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}}),t.items[r].transform.position.x+=n.x,t.items[r].transform.position.y+=n.y,t.items[r].transform.position.z+=n.z,t.items[r].transform.eulerHint.x+=o.x,t.items[r].transform.eulerHint.y+=o.y,t.items[r].transform.eulerHint.z+=o.z,t.items[r].transform.scale.x*=0===a.x?1:a.x,t.items[r].transform.scale.y*=0===a.y?1:a.y,t.items[r].transform.scale.z*=0===a.z?1:a.z}function xs(t,e){let i;return t.components.forEach(r=>{if(r.item.id===e)if(r.dataType===m.DataType.SpriteComponent&&r.renderer.texture){const e=t.textures?.find(t=>t.id===r.renderer.texture?.id);e&&(i=t.images.find(t=>t.id===e.source.id)?.url)}else if(r.dataType===m.DataType.VideoComponent&&r.renderer.texture){const e=t.textures?.find(t=>t.id===r.renderer.texture?.id);e&&(i=t.videos?.find(t=>t.id===e.source.id)?.url)}}),i}import{VFXItem as ws,SpriteComponent as vs,spec as Is,TextComponent as Ps}from"@galacean/effects";import{VideoComponent as bs}from"@galacean/effects-plugin-multimedia";var Ss=class{static createEmpty(t,e=null,i="NewVFXItem"){const r=Cs.createVFXItem(t,e,i);return r.type=Is.ItemType.null,r}static createSprite(t,e=null,i="NewSpite"){const r=Cs.createVFXItem(t,e,i,vs);return r.type=Is.ItemType.sprite,r}static createText(t,e=null,i="NewText"){const r=Cs.createVFXItem(t,e,i,Ps);return r.type=Is.ItemType.text,r}static createVideo(t,e=null,i="NewVideo"){const r=Cs.createVFXItem(t,e,i,bs);return r.type=Is.ItemType.video,r}},Cs=class{static createVFXItem(t,e=null,i="NewVFXItem",...r){const s=new ws(t.getEngine());s.name=i;for(const t of r)s.addComponent(t);return t.addItem(s),t.rootComposition.items.push(s),e&&s.setParent(e),s}};import{Color as Ds}from"@galacean/effects-plugin-model";var zs=class{constructor(t,e,i,r){c(this,"sdk"),c(this,"player"),c(this,"container"),c(this,"emitter"),c(this,"interactionUtils"),this.player=t,this.sdk=r,this.container=e,this.emitter=i}init(){this.interactionUtils=new rs(this)}getPageData(){return this.sdk.pageData}getCurrentComposition(){return this.player.getCompositions()[0]}isItemSelected(t){return!!this.sdk.pageData?.activeData.selectedItems?.find(e=>e===t)}getItemEditEnable(t){const e=this.getSDKItem(t);if(!e||!this.sdk.pageData||this.getViewProperty()?.ignoreInteraction)return!1;const i=this.sdk.pageData.time,{duration:r,delay:s,endBehavior:n,isLocked:o}=e;return i>=s&&(i<s+r||n===m.EndBehavior.restart)&&!o}getItemShow(t){const e=this.getSDKItem(t);if(!this.sdk.pageData||!e?.visible)return!1;const i=this.sdk.pageData.time,{duration:r,delay:s,endBehavior:n}=e;return i>=s&&(i<s+r||n===m.EndBehavior.restart||n===m.EndBehavior.freeze)}addSelectedItems(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=this.sdk.pageData.activeData.selectedItems??[];t.forEach(t=>{X(e,t)}),this.sdk.pageData.activeData.selectedItems=[...e],this.emitter.emit("selectedItemChange",e),this.emitter.emit("pageDataChange",this.sdk.pageData)}removeSelectedItems(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=this.sdk.pageData.activeData.selectedItems??[];for(const i of t){const t=e.findIndex(t=>t===i);t>=0&&e.splice(t,1)}this.sdk.pageData.activeData.selectedItems=[...e],this.emitter.emit("selectedItemChange",e),this.emitter.emit("pageDataChange",this.sdk.pageData)}clearSelectedItems(t=!1){this.sdk.pageData&&(t?(this.sdk.pageData.activeData.selectedItems=[],this.emitter.emit("selectedItemChange",[])):this.sdk.pageData.activeData.selectedItems=[],this.emitter.emit("pageDataChange",this.sdk.pageData))}getSelectedItems(){const t=this.sdk.pageData?.activeData.selectedItems;return this.sdk.pageData?.items.filter(e=>t?.find(t=>t===e.id))??[]}addPreSelectedItem(t){w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=t,this.emitter.emit("preSelectedItemChange",t)}clearPreSelectedItem(){w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=void 0,this.emitter.emit("preSelectedItemChange",void 0)}getPreSelectedItem(){const t=this.getPageData();w(t,"You must call SDK#run() first");const e=t.activeData.preSelectedItem;return e?this.getSDKItem(e):void 0}addLoadingItems(t){var e;w(this.sdk.pageData,"You must call SDK#run() first"),(e=this.sdk.pageData.activeData).loadingItems??(e.loadingItems=[]);const i=this.sdk.pageData.activeData.loadingItems;t.forEach(t=>{X(i,t)}),this.emitter.emit("loadingItemChange",i)}removeLoadingItems(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=this.sdk.pageData.activeData.loadingItems??[];for(const i of t){const t=e.findIndex(t=>t===i);t>=0&&e.splice(t,1)}this.emitter.emit("loadingItemChange",e)}clearLoadingItems(){this.sdk.pageData&&(this.sdk.pageData.activeData.loadingItems=[],this.emitter.emit("loadingItemChange",[]))}getLoadingItems(){const t=this.sdk.pageData?.activeData.loadingItems;return this.sdk.pageData?.items.filter(e=>t?.find(t=>t===e.id))??[]}getSDKItem(t){const e=this.sdk.pageData?.items.find(e=>e.id===t);return e||void 0}getPlayerSizeByParent(t,e){const[i,r]=t,[s=1624,n=750]=e;let o=r,a=o/n*s;return a>i&&(o=i/a*r,a=i),[a,o]}async loadScene(t){hs(this.player);const e=this.getViewProperty(t);if(!e||!this.sdk.pageData)return void console.warn(`This page does not have ${t} view property.`);const{scene:i,size:r}=e;if("template"===Dn.config.mode){const t=this.container.parentElement?.offsetWidth??300,e=this.container.parentElement?.offsetHeight??300,[i,s]=this.getPlayerSizeByParent([t,e],r);this.container.style.width=`${i}px`,this.container.style.height=`${s}px`}this.sdk.pageData.activeData={view:t,selectedItems:[],preSelectedItem:void 0},this.player.resize();const s=JSON.parse(JSON.stringify(i)),n=await this.player.loadScene(s,{autoplay:!1});this.player.gotoAndStop(this.sdk.pageData.time),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addSDKItemsByItems(this.sdk.pageData.items,n.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}refreshPageTime(t){w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.time=t}pageZoom(t,e,i){var r;w(this.sdk.pageData,"You must call SDK#run() first"),(r=this.sdk.pageData.property).zoom??(r.zoom=1);const{zoom:s,translation:[n=0,o=0]}=this.sdk.pageData.property,{width:a,height:c,scale:h}=this.interactionUtils.viewportParam,l=i?t:_(t,-.1,.1),p=M(_(s+l,Dn.config.pageConfig.minZoom,Dn.config.pageConfig.maxZoom),2);switch(this.sdk.pageData.property.zoom=p,Dn.config.mode){case"editor":{const t=this.interactionUtils.getNDCSizeByPixelSize(new z(n,o)),i=e??new z(a/2,c/2),r=this.interactionUtils.getNDCPositionByScreenPosition(i),s=(r.x-t.x)/h,l=(r.y-t.y)/h,d=new z(r.x-s*p,r.y-l*p),m=(new N).compose(new j(d.x,d.y,0),new H,new j(p,p,1));this.sdk.pageData.property.translation=this.interactionUtils.getPixelSizeByNDCSize(d).toArray(),this.setCurrenCameraViewportMatrix(m);break}case"template":this.container.style.scale=`${p}`}this.refreshInteractionParam();const d=this.getCurrentComposition();this.addSDKItemsByItems(this.sdk.pageData.items,d.items),this.emitter.emit("zoomChange",p),this.emitter.emit("viewportTransform",{zoom:p,translation:[n,o]}),this.emitter.emit("pageDataChange",this.sdk.pageData)}setPageZoom(t,e,i){w(this.sdk.pageData,"You must call SDK#run() first");const{zoom:r}=this.sdk.pageData.property,s=t-r;this.pageZoom(s,e,i)}refreshInteractionParam(){this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam()}pageMove(t){w(this.sdk.pageData,"You must call SDK#run() first");const{translation:[e=0,i=0],zoom:r}=this.sdk.pageData.property,s=e+t.x,n=i+t.y;switch(this.sdk.pageData.property.translation=[s,n],Dn.config.mode){case"template":this.container.style.translate=`${s}px ${n}px`;break;case"editor":{const t=this.interactionUtils.getNDCSizeByPixelSize(new z(s,n)),e=(new N).compose(new j(t.x,t.y,0),new H,new j(r,r,1));this.setCurrenCameraViewportMatrix(e);break}}this.refreshInteractionParam();const o=this.getCurrentComposition();this.addSDKItemsByItems(this.sdk.pageData.items,o.items),this.emitter.emit("viewportTransform",{zoom:r,translation:[s,n]}),this.emitter.emit("pageDataChange",this.sdk.pageData)}setPageMove(t){w(this.sdk.pageData,"You must call SDK#run() first");const{translation:e}=this.sdk.pageData.property,i=(new z).subtractVectors(t,new z(...e));this.pageMove(i)}setCurrenCameraViewportMatrix(t){const e=this.getCurrentComposition();if(!e)return;const{camera:i}=e;i.setViewportMatrix(t)}rotateItem(t,e){const i=this.getPlayerItemById(t);i&&(i.rotate(...e.toArray()),this.transformSceneItem(t,"rotation",e.toArray()),this.refreshSDKItem(t),this.emitter.emit("itemPropertyChange",{id:t,property:"rotation"}))}moveItem(t,e){const i=this.getPlayerItemById(t);if(i){const r=(new N).copyFrom(i.transform.getParentMatrix()??new N);r.setPosition(new j);const s=e.clone().applyMatrix(r.invert());i.translate(...s.toArray()),i.transform.updateLocalMatrix(),this.transformSceneItem(t,"position",s.toArray()),this.refreshSDKItem(t),this.emitter.emit("itemPropertyChange",{id:t,property:"translation"})}}scaleItem(t,e){const i=this.getPlayerItemById(t);i&&(i.scale(...e.toArray()),this.transformSceneItem(t,"scale",e.toArray()),this.refreshSDKItem(t),this.emitter.emit("itemPropertyChange",{id:t,property:"size"}))}scaleTextItemWidth(t,e){const i=this.getSDKItem(t);if(at(i)){const{width:t}=i.property;this.setItemProperty({itemId:i.id,type:"text",propertyName:"width",propertyValue:t*e})}}scaleTextItem(t,e){const i=this.getSDKItem(t);if(at(i)){const{width:t,lineHeight:r,fontSize:s}=i.property;this.setItemProperty({itemId:i.id,type:"text",propertyName:"width",propertyValue:t*e}),this.setItemProperty({itemId:i.id,type:"text",propertyName:"fontSize",propertyValue:s*e}),this.setItemProperty({itemId:i.id,type:"text",propertyName:"lineHeight",propertyValue:r*e})}}getItemTransformById(t){const e={matrix:new N,parentMatrix:new N},i=this.getPlayerItemById(t);if(void 0!==i?.transform){i.transform.updateLocalMatrix();const t=N.fromArray(i.composition?.transform.getWorldMatrix().elements??[]).invert();e.matrix=t.clone().multiply(N.fromArray(i.transform.getWorldMatrix().elements)),e.parentMatrix=t.clone().multiply(N.fromArray(i.transform.parentTransform?.getWorldMatrix().elements??(new N).toArray()))}return e}addSDKItemsByItems(t,e,i){const r=e=>{e.forEach(e=>{const r=t.find(t=>t.id===e.getInstanceId());r?this.updateSDKItemFromPlayerItem(r,e):t.push(this.createSDKItemByPlayerItem(e,i))})};for(const i of e)Dn.config.pageConfig.filterItemNames.includes(i.name)||(r([i]),this.addSDKItemsByItems(t,i.children,i.getInstanceId()))}createSDKItemByPlayerItem(t,e){w(this.sdk.pageData,"You must call SDK#run() first");const{transform:i,composition:r,isVisible:s}=t,n={position:[0,0],rotation:[0,0,0],scale:[1,1],width:0,height:0};let o=!0;const{scale:a}=this.interactionUtils.viewportParam,c="editor"===Dn.config.mode?1:a,h=this.getViewportLeftTopPosition();if(t.type!==m.ItemType.null){i.updateLocalMatrix();const e=(new N).copyFrom(r?.transform.getWorldMatrix()??(new N).identity()).invert().multiply(i.getWorldMatrix()),s=new j,o=new H,c=new j;e.decompose(s,o,c);const h=(new K).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(s,h);const l=this.interactionUtils.projectPoint(s),p="editor"===Dn.config.mode?this.interactionUtils.getPixelPositionByViewPoint(l).toArray().map(t=>M(t,2)):l.divide(a).toArray().map(t=>M(t,2)),d=h.toArray().map(t=>M(t,2)),m=c.toArray().map(t=>M(t,2)),g=i.size.toArray(),u=this.getPixelSizeByWorldSize([m[0]*g[0],m[1]*g[1],m[2]],t).map(t=>M(t,2));n.position=p,n.rotation=d,n.width=u[0],n.height=u[1],n.scale=[m[0],m[1]]}else{const e=this.getViewBoxByPlayerItem(t,t.children),i=this.interactionUtils.getViewPositionWWithOutTransform(e.getCenter().subtract(h)),r="editor"===Dn.config.mode?this.interactionUtils.getPixelPositionByViewPoint(i).toArray().map(t=>M(t,2)):i.toArray();n.position=r;const s=e.getSize().divide(c).toArray();n.width=s[0],n.height=s[1]}switch(t.type){case m.ItemType.sprite:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(!("renderer"in t)||!("texture"in t.renderer)||!t.renderer.texture)return;const i=e.textures?.find(e=>e.id===t.renderer.texture.id);if(i&&"source"in i&&i.source){const t=e?.images.find(t=>t.id===i.source.id);o=!!t?.template;const r=t?.url??"";r&&Object.assign(n,{image:r})}})}break}case m.ItemType.video:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(!("renderer"in t)||!("texture"in t.renderer)||!t.renderer.texture)return;const i=e.textures?.find(e=>e.id===t.renderer.texture.id);if(i&&"source"in i&&i.source){const t=e?.videos?.find(t=>t.id===i.source.id),r=t?.url??"";r&&Object.assign(n,{video:r})}})}break}case m.ItemType.text:case m.ItemType.richtext:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(![m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType))return;const{textAlign:e,textColor:i,text:r,fontWeight:s,fontFamily:o,fontSize:a,fontStyle:c,outline:h,textWidth:l,lineHeight:p,textHeight:d}=t.options,g=h?.outlineColor?tt(h.outlineColor):void 0,u=tt(i),y=h?.outlineWidth,f=!!h;Object.assign(n,{outlineEnabled:f,textAlign:e,textColor:u,fontWeight:s,text:r,fontFamily:o,fontSize:a,fontStyle:c,outlineColor:g,outlineWidth:y,textWidth:l,lineHeight:p,textHeight:d})})}break}}const l=this.getSDKItem(t.getInstanceId())?.isLocked,p={id:t.getInstanceId(),name:t.name,parentId:t.parentId??e,children:[],duration:t.duration,delay:t.defination.delay,endBehavior:t.endBehavior,visible:s,isLocked:l,isCoreEditable:o};let d;const g=this.getSDKItem(t.getInstanceId()),u=g?.type,y=u;if("generator"===y){const t=g?.generatorType??"video";d=new dt({...p,property:{...n,generatorType:t}})}else d="sprite"===y?new st({...p,property:n}):"text"===y?new ot({...p,property:n}):"video"===y?new ct({...p,property:n}):"group"===y?new lt({...p,property:n}):this.createSDKItemBySpecType(t.type,p,n);return d}createSDKItemBySpecType(t,e,i){switch(t){case m.ItemType.sprite:return new st({...e,property:i});case m.ItemType.text:return new ot({...e,property:i});case m.ItemType.video:return new ct({...e,property:i});case m.ItemType.null:return new lt({...e,property:i});default:return console.warn(`SDKItem type ${t} not fully implemented, using GroupItem`),new lt({...e,property:i})}}getViewBoxById(t){const e=new W,i=this.getPlayerItemById(t),r=this.getChildrenPlayerItems(i);return i&&r?this.getViewBoxByPlayerItem(i,r):e}getItemViewAnchor(t){const e=this.getPlayerItemById(t);if(e?.transform?.anchor){const t=(new j).copyFrom(e.transform.anchor).applyMatrix((new N).copyFrom(e.transform.getWorldMatrix())),i=this.getViewportLeftTopPosition();return this.interactionUtils.projectPoint(t).add(i).round(2)}}getChildrenPlayerItems(t){const e=[];return t?(e.push(...this.player.getCompositions()[0].items.filter(e=>e.parentId===t.getInstanceId())),e.push(...e.flatMap(t=>this.getChildrenPlayerItems(t))),e):[]}getChildrenSceneItemIds(t,e){const i=[];return i.push(...e.items.filter(e=>e.parentId===t).map(t=>t.id)),i.push(...i.flatMap(t=>this.getChildrenSceneItemIds(t,e))),i}getViewBoxByPlayerItem(t,e){const i=new W;switch(t.type){case m.ItemType.sprite:case m.ItemType.plugin:case m.ItemType.video:case m.ItemType.richtext:case m.ItemType.text:case m.ItemType.shape:{const{transform:r,composition:s}=t;r.updateLocalMatrix();const{size:n}=r,o=(new N).copyFrom(s?.transform.getWorldMatrix()??new N).invert().multiply(r.getWorldMatrix()),{x:a,y:c}=n.clone().divide(2),h=new j(a,c,0).applyMatrix(o),l=new j(a,-c,0).applyMatrix(o),p=new j(-a,-c,0).applyMatrix(o),d=new j(-a,c,0).applyMatrix(o),m=this.getViewportLeftTopPosition(),g=this.interactionUtils.projectPoint(h).add(m).round(2),u=this.interactionUtils.projectPoint(l).add(m).round(2),y=this.interactionUtils.projectPoint(p).add(m).round(2),f=this.interactionUtils.projectPoint(d).add(m).round(2);i.setFromVec2Array([g,u,y,f]);const x=e?.map(t=>this.getViewBoxById(t.getInstanceId()));x&&x.map(t=>i.union(t));break}case m.ItemType.null:{const t=e?.map(t=>this.getViewBoxById(t.getInstanceId()));t&&t.map(t=>i.union(t));break}}return i}getViewportLeftTopPosition(){if(!this.sdk.pageData||"editor"===Dn.config.mode)return new z;const{zoom:t,translation:e}=this.sdk.pageData.property,{offsetWidth:i,offsetHeight:r}=this.container.parentElement,{offsetWidth:s,offsetHeight:n}=this.container,o=new z(i,r),a=new z(s,n).multiply(t);return o.clone().divide(2).subtract(a.clone().divide(2)).add(e)}getViewportByViewPoint(t){if(!this.sdk.pageData)return t;const{zoom:e}=this.sdk.pageData.property,i="editor"===Dn.config.mode?1:e,{width:r,height:s}=this.interactionUtils.viewportParam,n=new z(r,s).multiply(i),o=this.getViewportLeftTopPosition(),a=t.clone().subtract(o);return new z(a.x/n.x*2-1,1-a.y/n.y*2)}async setItemProperty(t){w(this.sdk.pageData,"You must call SDK#run() first"),"propertyName"in t?await this.setSingleItemSingleProperty(t):"property"in t&&await this.setSingleItemMultipleProperties(t)}async setSingleItemSingleProperty(t){const{itemId:e,propertyName:i,propertyValue:r}=t;await this.updatePlayerItemProperty(e,i,r),this.updateJSONItemProperty(e,i,r),this.refreshSDKItem(e)}async setSingleItemMultipleProperties(t){const{itemId:e,property:i}=t;for(const[t,r]of Object.entries(i))void 0!==r&&(await this.updatePlayerItemProperty(e,t,r),this.updateJSONItemProperty(e,t,r));this.refreshSDKItem(e)}async updatePlayerItemProperty(t,e,i){const r=this.getPlayerItemById(t),s=this.getSDKItem(t);if(!r||!s)return void console.warn(`Id ${t} is not a valid item id.`);["name","duration","delay","endBehavior","visible","isLocked","parentId"].includes(e)?this.updatePlayerItemBaseProperty(r,e,i):await this.updatePlayerItemPropertyAttribute(r,s,e,i)}updatePlayerItemBaseProperty(t,e,i){switch(e){case"name":"string"==typeof i&&(t.name=i);break;case"duration":"number"==typeof i&&(t.duration=i);break;case"delay":"number"==typeof i&&(t.defination.delay=i);break;case"endBehavior":Object.values(m.EndBehavior).includes(i)&&(t.endBehavior=i);break;case"visible":"boolean"==typeof i&&t.setVisible(i);break;case"isLocked":break;case"parentId":t.parentId=i;const e=this.getPlayerItemById(i);t.parent=e}}async updatePlayerItemPropertyAttribute(t,e,i,r){switch(i){case"textAlign":[m.TextAlignment.left,m.TextAlignment.middle,m.TextAlignment.right].includes(r)&&t.getComponent(I)?.setTextAlign(r);break;case"color":if(t.type===m.ItemType.text&&Array.isArray(r)&&4===r.length){const e=et(r);t.getComponent(I)?.setTextColor(e)}break;case"fontFamily":if("string"==typeof r){const e=r.split("/"),i=e[e.length-1]?.split(".")[0];if(await ts.loadFontFamily([{fontURL:r,fontFamily:i}]),i){const e=t.getComponent(I);e&&(e.setFontFamily(i),e.isDirty=!0)}}break;case"text":if("string"==typeof r){const e=t.getComponent(I);if(e&&(e.setText(r),"editor"===Dn.config.mode)){const i=e.getLineCount(r),s=Math.ceil(e.textLayout.lineHeight*i);e.setTextHeight(s);const n=e.textLayout.width,o=this.interactionUtils.getViewSizeByPixelSize(new z(n,s)),a=this.interactionUtils.getWorldSizeByViewSize(o);t.transform.setScale(t.transform.scale.x,Math.abs(a.y),1)}}break;case"fontWeight":[m.TextWeight.normal,m.TextWeight.bold,m.TextWeight.lighter].includes(r)&&t.getComponent(I)?.setFontWeight(r);break;case"lineHeight":{const e=t.getComponent(I);if(e){e.setLineHeight(r);const i=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(i);const s=e.textLayout.width,n=this.interactionUtils.getViewSizeByPixelSize(new z(s,i)),o=this.interactionUtils.getWorldSizeByViewSize(n);t.transform.setScale(t.transform.scale.x,Math.abs(o.y),1)}break}case"outlineColor":if(Array.isArray(r)&&4===r.length){const e=t.getComponent(I);if(e&&"function"==typeof e.setOutlineColor){const t=et(r);e.setOutlineColor(t)}}break;case"outlineWidth":if("number"==typeof r){const e=t.getComponent(I);e&&"function"==typeof e.setOutlineWidth&&e.setOutlineWidth(r)}break;case"outlineEnabled":if("boolean"==typeof r){const e=t.getComponent(I);e&&"function"==typeof e.setOutlineEnabled&&e.setOutlineEnabled(r)}break;case"fontSize":if("number"==typeof r&&t.type===m.ItemType.text){const e=t.getComponent(I);if(e){const i=e.textStyle.fontSize;if(e.setFontSize(r),"editor"===Dn.config.mode){e.setLineHeight(e.textLayout.lineHeight*r/i);const s=e.getLineCount(e.text),n=Math.ceil(e.textLayout.lineHeight*s);e.setTextHeight(n);const o=e.textLayout.width,a=this.interactionUtils.getViewSizeByPixelSize(new z(o,n)),c=this.interactionUtils.getWorldSizeByViewSize(a);t.transform.setScale(t.transform.scale.x,Math.abs(c.y),1)}}}break;case"width":if(t.type===m.ItemType.text){const e=t.getComponent(I);if(e){e.setTextWidth(r);const i=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(i);const s=e.textLayout.width,n=this.interactionUtils.getViewSizeByPixelSize(new z(s,i)),o=this.interactionUtils.getWorldSizeByViewSize(n);t.transform.setScale(t.transform.scale.x,Math.abs(o.y),1)}}else if([m.ItemType.sprite,m.ItemType.video].includes(t.type)){const e=this.interactionUtils.getWorldSizeByViewSize(new z(r,0)).x,i=t.transform.size.toArray();t.transform.setSize(Math.abs(e),i[1])}break;case"height":{const e=this.interactionUtils.getWorldSizeByViewSize(new z(0,r)).y,i=t.transform.size.toArray();t.transform.setSize(i[0],Math.abs(e));break}case"image":"string"==typeof r&&t.type===m.ItemType.sprite&&t.getComponent(v)?.setTexture(await P.fromImage(r,this.player.renderer.engine));break;case"video":"string"==typeof r&&t.type===m.ItemType.video&&t.getComponent(C)?.setTexture(await P.fromVideo(r,this.player.renderer.engine));break;case"muted":if("boolean"==typeof r&&t.type===m.ItemType.video){const e=t.getComponent(C);e&&e.setMuted(r)}break;case"playbackRate":if("number"==typeof r&&t.type===m.ItemType.video){const e=t.getComponent(C);e&&e.setPlaybackRate(r)}break;case"volume":if("number"==typeof r&&t.type===m.ItemType.video){const e=t.getComponent(C);e&&e.setVolume(r)}break;case"position":if(Array.isArray(r)&&2===r.length){const i=r.map((t,i)=>t-(e.property.position[i]??0)),s=this.interactionUtils.getViewSizeByPixelSize(new z(...i)),n=this.interactionUtils.getWorldSizeByViewSize(s,!0,t.getInstanceId());this.moveItem(t.getInstanceId(),n)}break;case"rotation":if(Array.isArray(r)&&3===r.length){const i=r.map((t,i)=>t-(e.property.rotation[i]??0));this.rotateItem(t.getInstanceId(),new j(...i).negate())}break;case"scale":if(Array.isArray(r)&&2===r.length){const i=e.property.scale,s=r.map((t,e)=>t/(i[e]??1));this.scaleItem(t.getInstanceId(),new j(...s,1))}break;case"visible":if("boolean"==typeof r&&(t.setVisible(r),Dn.config.pageConfig.groupVisible)){this.getChildrenPlayerItems(t).forEach(t=>{t.setVisible(r)})}break;default:console.log("ignore property name ",i),i in e.property&&(e.property[i]=r)}["position","rotation","size"].includes(i)||this.player.gotoAndStop(this.sdk.pageData.time)}updateJSONItemProperty(t,e,i){const r=["name","duration","delay","endBehavior","visible","isLocked","parentId"];this.sdk.pageData.viewProperties.forEach(s=>{if(!this.sdk.pageData?.property.asyncMode&&s.id!==this.sdk.pageData?.activeData.view)return;const{scene:n}=s;r.includes(e)?this.updateSceneItemBaseProperty(n,t,e,i):this.updateSceneItemPropertyAttribute(n,t,e,i)})}updateSceneItemBaseProperty(t,e,i,r){const s=t.items.find(t=>t.id===e);if(s)switch(i){case"name":s.name=r;break;case"duration":s.duration=r;break;case"delay":s.delay=r;break;case"endBehavior":s.endBehavior=r;break;case"visible":s.visible=r;break;case"parentId":s.parentId=r}}updateSceneItemPropertyAttribute(t,e,i,r){var s,n,o,a,c,h,l,p;const d=t.items.find(t=>t.id===e);if(d)switch(i){case"position":if(Array.isArray(r)&&2===r.length){const t=this.sdk.pageData.items.find(t=>t.id===e),i=t?.property.position,s=r.map((t,e)=>t-(i?.[e]??0)),n=this.interactionUtils.getViewSizeByPixelSize(new z(...s)),o=this.interactionUtils.getWorldSizeByViewSize(n,!0,e);d.transform&&(d.transform.position.x+=o.x,d.transform.position.y+=o.y,d.transform.position.z+=o.z)}break;case"rotation":if(Array.isArray(r)&&3===r.length){const t=this.sdk.pageData.items.find(t=>t.id===e),i=t?.property.rotation,s=r.map((t,e)=>t-(i?.[e]??0));d.transform&&(d.transform.eulerHint.x+=s[0],d.transform.eulerHint.y+=s[1],d.transform.eulerHint.z+=s[2])}break;case"scale":if(Array.isArray(r)&&2===r.length){const t=this.sdk.pageData.items.find(t=>t.id===e),i=t?.property.scale,s=r.map((t,e)=>t/(i?.[e]??0));d.transform&&(d.transform.scale.x*=s[0],d.transform.scale.y*=s[1])}break;case"width":if(d.type===m.ItemType.text){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(i?.options&&d){i.options.textWidth=r;const t=this.getPlayerItemById(e);if(t){const e=t.getComponent(I),r=e.textLayout.width,n=Math.ceil(e.lineCount*e.lineCount);i.options.textHeight=n;const o=this.interactionUtils.getViewSizeByPixelSize(new z(r,n)),a=this.interactionUtils.getWorldSizeByViewSize(o);(s=d.transform).scale??(s.scale={x:1,y:1,z:1}),d.transform.scale={x:Math.abs(a.x),y:Math.abs(a.y),z:1}}}}else if("number"==typeof r){const t=[r,0],i=this.interactionUtils.getViewSizeByPixelSize(new z(...t)),s=this.interactionUtils.getWorldSizeByViewSize(i,!0,e);d.transform&&((n=d.transform).size??(n.size={x:1,y:1}),d.transform.size.x=Math.abs(s.x))}break;case"height":if("number"==typeof r){const t=[0,r],i=this.interactionUtils.getViewSizeByPixelSize(new z(...t)),s=this.interactionUtils.getWorldSizeByViewSize(i,!0,e);d.transform&&((o=d.transform).size??(o.size={x:1,y:1}),d.transform.size.y=Math.abs(s.y))}break;case"visible":if("boolean"==typeof r&&(d.visible=r,Dn.config.pageConfig.groupVisible)){this.getChildrenSceneItemIds(e,t).forEach(e=>{const i=t.items.find(t=>t.id===e);i&&(i.visible=r)})}break;case"textAlign":if([m.TextAlignment.left,m.TextAlignment.middle,m.TextAlignment.right].includes(r)){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options&&"textAlign"in i.options&&(i.options.textAlign=r)}break;case"color":if(Array.isArray(r)&&4===r.length){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(i?.options){const t=et(r);i.options.textColor=[...t]}}break;case"fontFamily":if("string"==typeof r){const i=r.split("/"),s=i[i.length-1]?.split(".")[0],n=t.fonts?.find(t=>"family"in t&&t.family===s||"fontFamily"in t&&t.fontFamily===s);!n&&t.fonts&&s&&t.fonts.push({fontFamily:s,fontURL:r});const o=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));o&&(o.options.fontFamily=s)}break;case"lineHeight":if("number"==typeof r){const i=t.items.find(t=>t.id===e),s=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(i&&s?.options){s.options.lineHeight=r;const t=this.getPlayerItemById(e);if(t){const e=t.getComponent(I),r=e.textLayout.width,n=Math.ceil(e.textLayout.lineHeight*e.lineCount);s.options.textHeight=n;const o=this.interactionUtils.getViewSizeByPixelSize(new z(r,n)),c=this.interactionUtils.getWorldSizeByViewSize(o);(a=i.transform).scale??(a.scale={x:1,y:1,z:1}),i.transform.scale={x:Math.abs(c.x),y:Math.abs(c.y),z:1}}}}break;case"text":if("string"==typeof r){const i=t.items.find(t=>t.id===e),s=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(s?.options&&i){s.options.text=r;const t=this.getPlayerItemById(e);if(t&&"editor"===Dn.config.mode){const e=t.getComponent(I),n=e.getLineCount(r),o=e.textLayout.lineHeight,a=e.textLayout.width,h=Math.ceil(o*n);s.options.textHeight=h;const l=this.interactionUtils.getViewSizeByPixelSize(new z(a,h)),p=this.interactionUtils.getWorldSizeByViewSize(l);(c=i.transform).scale??(c.scale={x:1,y:1,z:1}),i.transform.scale={x:Math.abs(p.x),y:Math.abs(p.y),z:1}}}}break;case"fontWeight":if("string"==typeof r){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options&&(i.options.fontWeight=r)}break;case"outlineColor":if(Array.isArray(r)&&4===r.length){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options&&((h=i.options).outline??(h.outline={}),i.options.outline.outlineColor=[...et(r)])}break;case"outlineWidth":if("number"==typeof r){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options&&((l=i.options).outline??(l.outline={}),i.options.outline.outlineWidth=r)}break;case"outlineEnabled":if("boolean"==typeof r){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType)),s=this.getPlayerItemById(e),n=s?.getComponent(I);if(i?.options&&s&&n)if(r){const{outlineWidth:t,outlineColor:e}=n.textStyle;i.options.outline={outlineWidth:t,outlineColor:[...e]}}else delete i.options.outline}break;case"fontSize":if("number"==typeof r){const i=t.items.find(t=>t.id===e),s=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(s?.options&&i){s.options.fontSize=r;const t=this.getPlayerItemById(e);if(t&&"editor"===Dn.config.mode){const e=t.getComponent(I);e.setFontSize(r);const n=e.textLayout.lineHeight;s.options.lineHeight=n;const o=Math.ceil(e.textLayout.lineHeight*e.lineCount);s.options.textHeight=o;const a=e.textLayout.width,c=this.interactionUtils.getViewSizeByPixelSize(new z(a,o)),h=this.interactionUtils.getWorldSizeByViewSize(c);(p=i.transform).scale??(p.scale={x:1,y:1,z:1}),i.transform.scale={x:Math.abs(h.x),y:Math.abs(h.y),z:1}}}}break;case"image":if("string"==typeof r){const i=t.components.filter(t=>t.item.id===e),s=new Map;i.forEach(i=>{if(!("renderer"in i))return;const n=t.textures?.find(t=>t.id===i.renderer.texture.id);if(n&&"source"in n&&n.source){const o=t?.images.find(t=>t.id===n.source.id);o?.url&&(o.url=r,delete o.webp),o&&"template"in o&&o.template.background&&(o.template.background.url=r);const a=this.player.renderer.engine.findObject({id:n.id});a?.dispose();const c=this.getPlayerItemById(e)?.getComponent(v).renderer.texture.getInstanceId();s.set(n.id,c),n.id=c,i.renderer.texture.id=c}}),t.components.forEach(t=>{if(!("renderer"in t))return;const e=s.get(t.renderer.texture?.id);if(e){t.renderer.texture.id=e;const i=this.getPlayerItemById(t.item.id),r=this.player.renderer.engine.findObject({id:e}),s=i?.getComponent(v);s?.setTexture(r)}})}break;case"video":if("string"==typeof r){const i=t.components.filter(t=>t.item.id===e),s=new Map;i.forEach(i=>{if(!("renderer"in i))return;const n=t.textures?.find(t=>t.id===i.renderer.texture.id);if(n&&"source"in n&&n.source){const o=t?.videos.find(t=>t.id===n.source.id);o&&(o.url=r);const a=this.player.renderer.engine.findObject({id:n.id});a?.dispose();const c=this.getPlayerItemById(e)?.getComponent(C).renderer.texture.getInstanceId();s.set(n.id,c),n.id=c,i.renderer.texture.id=c}}),t.components.forEach(t=>{if(!("renderer"in t))return;const e=s.get(t.renderer.texture?.id);if(e){t.renderer.texture.id=e;const i=this.getPlayerItemById(t.item.id),r=this.player.renderer.engine.findObject({id:e}),s=i?.getComponent(v);s?.setTexture(r)}})}break;case"muted":if("boolean"==typeof r){const i=t.components.find(t=>t.item.id===e&&t.dataType===m.DataType.VideoComponent);i?.options&&(i.options.muted=r)}break;case"playbackRate":if("number"==typeof r){const i=t.components.find(t=>t.item.id===e&&t.dataType===m.DataType.VideoComponent);i?.options&&(i.options.playbackRate=r)}break;case"volume":if("number"==typeof r){const i=t.components.find(t=>t.item.id===e&&t.dataType===m.DataType.VideoComponent);i?.options&&(i.options.volume=r)}break;default:console.warn(`Target property ${i} can not be changed.`)}else console.log(`Item ${e} is not exsited.`)}setSpriteSize(t,e){var i;const r=this.getPlayerItemById(t),s=this.interactionUtils.getViewSizeByPixelSize(new z(...e)),n=this.interactionUtils.getWorldSizeByViewSize(s),o=this.getActiveTargetScene(),a=o?.items.find(e=>e.id===t);r&&a&&(r.transform.setSize(n.x,Math.abs(n.y)),a.transform??(a.transform={position:{x:0,y:0,z:0},scale:{x:1,y:1,z:1},eulerHint:{x:0,y:0,z:0},size:{x:n.x,y:n.y}}),(i=a.transform).size??(i.size={x:1,y:1}),a.transform.size={x:Math.abs(n.x),y:Math.abs(n.y)},this.refreshSDKItem(t))}transformSceneItem(t,e,i){w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.viewProperties.forEach(r=>{if(!this.sdk.pageData?.property.asyncMode&&r.id!==this.sdk.pageData?.activeData.view)return;const{scene:s}=r;switch(e){case"position":if(Array.isArray(i)&&3===i.length){const e=s.items.find(e=>e.id===t);e?.transform&&(e.transform.position.x+=i[0],e.transform.position.y+=i[1],e.transform.position.z+=i[2])}break;case"rotation":if(Array.isArray(i)&&3===i.length){const e=s.items.find(e=>e.id===t);e?.transform&&(e.transform.eulerHint.x+=i[0],e.transform.eulerHint.y+=i[1],e.transform.eulerHint.z+=i[2])}break;case"scale":if(Array.isArray(i)&&3===i.length){const e=s.items.find(e=>e.id===t);e?.transform&&(e.transform.scale.x*=i[0],e.transform.scale.y*=i[1],e.transform.scale.z*=i[2])}}})}refreshSDKItem(t){const e=this.sdk.pageData;w(e,"You must call SDK#run() first");const i=e.items.findIndex(e=>e.id===t);if(i<0)return void console.warn(`item ${t} is not existed.`);const r=e.items[i],s=this.getPlayerItemById(t);s&&r&&this.updateSDKItemFromPlayerItem(r,s)}updateSDKItemFromPlayerItem(t,e){const{transform:i,composition:r,isVisible:s,name:n,duration:o,endBehavior:a}=e;if(t.name=n,t.duration=o,t.delay=e.defination.delay,t.endBehavior=a,t.parentId=e.parentId,e.type!==m.ItemType.null){i.updateLocalMatrix();const n=(new N).copyFrom(r?.transform.getWorldMatrix()??(new N).identity()).invert().multiply(i.getWorldMatrix()),o=new j,a=new H,c=new j;n.decompose(o,a,c);const h=(new K).setFromQuaternion(a);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(o,h);const l=this.interactionUtils.projectPoint(o),{scale:p}=this.interactionUtils.viewportParam,d="editor"===Dn.config.mode?this.interactionUtils.getPixelPositionByViewPoint(l).toArray().map(t=>M(t,2)):l.divide(p).toArray().map(t=>M(t,2)),m=h.toArray().map(t=>M(t,2)),g=c.toArray().map(t=>M(t,2)),u=i.size.toArray(),y=this.getPixelSizeByWorldSize([g[0]*u[0],g[1]*u[1],g[2]],e).map(t=>M(t,2));t.property.position=d,t.property.rotation=m,t.property.width=y[0],t.property.height=y[1],t.property.scale=[g[0],g[1]],t.visible=s}else{const i=e.children.map(t=>t.getInstanceId()),r=this.getViewportLeftTopPosition(),n=this.getViewBoxByPlayerItem(e,e.children),o="editor"===Dn.config.mode?1:this.interactionUtils.viewportParam.scale,a=this.interactionUtils.getViewPositionWWithOutTransform(n.getCenter().subtract(r)),c="editor"===Dn.config.mode?this.interactionUtils.getPixelPositionByViewPoint(a).toArray().map(t=>M(t,2)):a.toArray();"group"===t.type&&(t.property.children=i),t.property.position=c;const h=n.getSize().divide(o).toArray();t.property.width=h[0],t.property.height=h[1],t.visible=s}switch(e.type){case m.ItemType.sprite:if(nt(t)){const i=this.getViewProperty()?.scene;if(i){i.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(!("renderer"in e)||!("texture"in e.renderer)||!e.renderer.texture)return;const r=i.textures?.find(t=>t.id===e.renderer.texture.id);if(r&&"source"in r&&r.source){const e=i?.images.find(t=>t.id===r.source.id);t.isCoreEditable=!!e?.template,t.property.image=e?.url??""}})}}break;case m.ItemType.video:if(ht(t)){const i=this.getViewProperty()?.scene;if(i){i.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(!("renderer"in e)||!("texture"in e.renderer)||!e.renderer.texture)return;const r=i.textures?.find(t=>t.id===e.renderer.texture.id);if(r&&"source"in r&&r.source){const e=i?.videos?.find(t=>t.id===r.source.id);t.isCoreEditable=!0,t.property.video=e?.url??""}})}}break;case m.ItemType.text:case m.ItemType.richtext:if(at(t)){const i=this.getViewProperty()?.scene;if(t.isCoreEditable=!0,i){i.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(![m.DataType.TextComponent,m.DataType.RichTextComponent].includes(e.dataType))return;const{textAlign:i,textColor:r,text:s,fontWeight:n,fontFamily:o,fontSize:a,fontStyle:c,outline:h,textWidth:l,lineHeight:p,textHeight:d}=e.options,g=h?.outlineColor?tt(h.outlineColor):void 0,u=tt(r),y=h?.outlineWidth,f=!!h;Object.assign(t.property,{outlineEnabled:f,textAlign:i,textColor:u,fontWeight:n,text:s,fontFamily:o,fontSize:a,fontStyle:c,outlineColor:g,outlineWidth:y,textWidth:l,lineHeight:p,textHeight:d})})}}}}getPlayerItemById(t){return this.player.getCompositions()[0]?.items.find(e=>e.getInstanceId()===t)}getPixelSizeByWorldSize(t,e){w(this.sdk.pageData,"You must call SDK#run() first");const i=[0,0],r=e.composition?.camera,s=this.getViewProperty()?.size;if(r&&s){const{z:n}=e.transform.getWorldPosition(),{x:o,y:a}=r.getInverseVPRatio(n);i[0]=Math.abs(t[0]*s[0]/o/2),i[1]=Math.abs(t[1]*s[1]/a/-2)}else console.warn("camera is not existed.");return i}getWorldSizeByPixelSize(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=[0,0],i=this.player.getCompositions()[0],r=i?.camera,s=this.getViewProperty()?.size;if(r&&s){const{x:i,y:n}=r.getInverseVPRatio(0);e[0]=Math.abs(2*t[0]*i/s[0]),e[1]=Math.abs(-2*t[1]*n/s[1])}else console.warn("camera is not existed.");return e}getActiveTargetScene(){const t=this.getViewProperty()?.scene;if(t)return t;console.warn("Target scene is not exsited.")}refreshSceneAndPageData(){w(this.sdk.pageData,"You must call SDK#run() first");const t=this.player.getCompositions()[0];this.refreshItemRenderOrder(t),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.addSDKItemsByItems(this.sdk.pageData.items,t.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}async addSpriteItem(t,e=!1,i){if(i??(i=this.getActiveTargetScene()),!i)return;const{name:r="图片",property:{width:s,height:n,scale:o=[1,1],image:a,rotation:c=0,position:h},parentId:l,id:p=b(),extension:d}=t,g=[s,n],u=Array.isArray(c)?[...c]:[0,0,c];u[2]=-u[2];const y=new j(...o??[1,1],1),f=this.getWorldSizeByPixelSize(g),x=new j(...u),I=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new z(...h)))??new j,S=i.images.findIndex(t=>t.url===a);let C,D={};const A=e?t.textureId:b();if(a)if(S<0||"editor"===Dn.config.mode){e||(C=await P.fromImage(a,this.player.renderer.engine,{magFilter:es.LINEAR,minFilter:es.LINEAR_MIPMAP_LINEAR,generateMipmap:!0,id:A}));const t={id:b(),url:a,renderLevel:m.RenderLevel.BPlus};D={id:A,source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:es.LINEAR,minFilter:es.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},i.images.push(t),i.textures??(i.textures=[]),i.textures.push(D)}else if(!e){const t=i.textures?.find(t=>t.source.id===i.images[S].id);D={id:t?.id},C=this.player.renderer.engine.findObject({id:t.id})}const _=new st({id:p,name:r,parentId:l,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!0,property:{position:[...h],rotation:[...u],width:s,height:n,scale:[...o],image:a??""},extension:d});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(_);const T=ps(p,I,x,new z(...f),y,r,A);i.items.find(t=>t.id===l)&&(T.item.parentId=l),us(i,T);const E=this.player.getCompositions()[0],B=Ss.createSprite(E,null,r);if(B.setInstanceId(T.item.id),B.duration=999,B.defination.delay=0,B.endBehavior=m.EndBehavior.restart,B.transform.setSize(...f),B.transform.setPosition(...I.toArray()),B.transform.setRotation(...x.toArray()),B.transform.setScale(...y.toArray()),C&&!e){B.getComponent(v).setTexture(C)}return this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),T.item.id}addGroupItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{name:i="空节点",property:{position:r=[0,0],children:s=[],scale:n=[1,1]},id:o=b(),extension:a}=t,c=s.filter(t=>!this.getPlayerItemById(t)),h=s.filter(t=>!!this.getPlayerItemById(t));if(c.length&&console.warn(`item ${c.join("、")} is not existed.`),0===h.length)return;const l=new j(...this.getWorldSizeByPixelSize(r),0),p=new lt({id:o,name:i,children:h.map(t=>this.getPlayerItemById(t).getInstanceId()),duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!1,property:{position:r,rotation:[0,0,0],scale:[...n]},extension:a});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(p);const d=ds(o,i,l);us(e,d),h.forEach(t=>{ys(e,t,o)});const g=this.player.getCompositions()[0],u=Ss.createEmpty(g,null,i);return u.setInstanceId(d.item.id),u.duration=999,u.defination.delay=0,u.endBehavior=m.EndBehavior.restart,u.transform.setPosition(...l.toArray()),h.forEach(t=>{const e=this.getPlayerItemById(t);e.setParent(u),e.parentId=d.item.id,e.translate(...l.clone().negate().toArray())}),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),d.item.id}async addTextItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{id:i=b(),parentId:r,name:s="文本",property:{lineHeight:n,width:o,height:a=n,fontFamily:c,position:h=[0,0],fontSize:l,fontWeight:p=m.TextWeight.normal,fontStyle:d=m.FontStyle.normal,textAlign:g=m.TextAlignment.left,text:u,color:y,outlineColor:f,outlineWidth:x,rotation:v=0,fontUrl:P,outlineEnabled:S},extension:C}=t,D=Array.isArray(v)?[...v]:[0,0,v];D[2]=-D[2],P&&!e.fonts?.find(t=>t.fontFamily===c)&&(e.fonts??(e.fonts=[]),e.fonts.push({fontFamily:c,fontURL:P}));const A=et(y),_=f?et(f):void 0,T={text:u,fontFamily:c,fontSize:l,textColor:A,fontWeight:p,letterSpace:0,textAlign:g,fontStyle:d,textWidth:o,textHeight:a,lineHeight:n,textBaseline:m.TextBaseline.top,textOverflow:m.TextOverflow.visible,outline:S?{outlineColor:_,outlineWidth:x}:void 0},E=new ot({id:i,name:s,parentId:r,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!0,property:{position:h,rotation:D,width:o,height:a??n??l,scale:[1,1],text:u,fontFamily:c,fontSize:l,fontWeight:p,fontStyle:d,textAlign:g,color:y,lineHeight:n,outlineEnabled:S,outlineColor:f,outlineWidth:x},extension:C});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(E);const B=this.player.getCompositions()[0],k=Ss.createText(B,null,s);k.setInstanceId(i),k.duration=999,k.defination.delay=0,k.endBehavior=m.EndBehavior.restart;const M=k.getComponent(I),U={options:T,renderer:{renderMode:1},dataType:m.DataType.TextComponent,item:{id:k.getInstanceId()},id:M.getInstanceId()};M.fromData(U),U.options.textHeight=Math.ceil(n*M.lineCount),M.fromData(U),M.setFontScale(3),await ts.loadFontFamily([{fontURL:P,fontFamily:c}]),M.setFontFamily(c);const G=[o,T.textHeight],F=this.getWorldSizeByPixelSize(G),R=new j(...D),V=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new z(...h)))??new j,L=ms(i,s,V,R,new z(...F),T);return e.items.find(t=>t.id===r)&&(L.item.parentId=r),us(e,L),k.transform.setScale(...F,1),k.transform.setPosition(...V.toArray()),k.transform.setRotation(...R.toArray()),w(this.sdk.pageData,"You must call SDK#run() first"),this.player.gotoAndStop(this.sdk.pageData.time),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),L.item.id}async addVideoItem(t,e,i){if(i??(i=this.getActiveTargetScene()),!i)return;const{name:r="视频",property:{width:s,height:n,scale:o=[1,1],video:a,rotation:c=0,position:h,muted:l=!0,transparent:p=!1,volume:d=1,playbackRate:g=1},parentId:u,id:y=b(),extension:f}=t,x=[s,n],v=Array.isArray(c)?[...c]:[0,0,c];v[2]=-v[2];const I=new j(...o??[1,1],1),S=this.getWorldSizeByPixelSize(x),D=new j(...v),A=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new z(...h)))??new j;i.videos??(i.videos=[]);const _=i.videos.findIndex(t=>t.url===a);let T,E="",B={};const k=e?t.textureId:b();if(a)if(_<0||"editor"===Dn.config.mode){e||(T=await P.fromVideo(a,this.player.renderer.engine,{magFilter:es.LINEAR,minFilter:es.LINEAR,generateMipmap:!1,id:k}));const t={id:b(),url:a,renderLevel:m.RenderLevel.BPlus};E=t.id,B={id:k,source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:es.LINEAR,minFilter:es.LINEAR,generateMipmap:!1},i.videos.push(t),i.textures??(i.textures=[]),i.textures.push(B)}else if(!e){const t=i.textures?.find(t=>t.source.id===i.videos[_].id);E=t?.source.id,B={id:t?.id},T=this.player.renderer.engine.findObject({id:t.id})}const M=new ct({id:y,name:r,parentId:u,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!0,property:{position:[...h],rotation:[...v],width:s,height:n,scale:[...o],video:a??"",muted:l,transparent:p,volume:d,playbackRate:g},extension:f});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(M);const U=gs(y,A,D,new z(...S),I,r,l,p,d,g,k,E);i.items.find(t=>t.id===u)&&(U.item.parentId=u),us(i,U);const G=this.player.getCompositions()[0],F=Ss.createVideo(G,null,r);if(F.setInstanceId(U.item.id),F.duration=999,F.defination.delay=0,F.endBehavior=m.EndBehavior.restart,F.transform.setSize(...S),F.transform.setPosition(...A.toArray()),F.transform.setRotation(...D.toArray()),F.transform.setScale(...I.toArray()),T&&!e){const t=F.getComponent(C);t.setTexture(T),t.setLoop(!0),t.setMuted(l),t.setVolume(d),t.setPlaybackRate(g)}return this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),U.item.id}addGeneratorItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return"";const{id:i=b(),name:r=("video"===t.property.generatorType?"视频生成器":"图片生成器"),property:{width:s,height:n,position:o,rotation:a=0,generatorType:c="image"},extension:h}=t,l=[s,n],p=Array.isArray(a)?[...a]:[0,0,a];p[2]=-p[2];const d=new j(1,1,1),g=this.getWorldSizeByPixelSize(l),u=new j(...p),y=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new z(...o)))??new j,f=new dt({id:i,name:r,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,visible:!0,isLocked:!1,isCoreEditable:!0,property:{position:[...o],rotation:[0,0,0],width:s,height:n,scale:[1,1],generatorType:c},extension:h});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(f);const x=this.player.getCompositions()[0],I=Ss.createSprite(x,null,r);return I.getComponent(v).setColor(new Ds(0,0,0,.3)),I.setInstanceId(i),I.duration=999,I.defination.delay=0,I.endBehavior=m.EndBehavior.restart,I.transform.setSize(...g),I.transform.setPosition(...y.toArray()),I.transform.setRotation(...u.toArray()),I.transform.setScale(...d.toArray()),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),i}async setGeneratorResource(t,e){const i=this.getActiveTargetScene();if(!i)return"";const r=this.getSDKItem(t);if(!r||!mt(r))return console.warn(`GeneratorItem ${t} not found`),"";const s="video"===r.generatorType?r.toVideoCreateInfo(e,!0):r.toSpriteCreateInfo(e,!0);this.deleteItem(t);return"video"===r.generatorType?await this.addVideoItem(s,!1,i):await this.addSpriteItem(s,!1,i)}async convertVideoGeneratorToVideo(t,e){return this.setGeneratorResource(t,e)}deleteItem(t){const e=this.getActiveTargetScene();if(!e)return;!function(t,e){const i=t.items.find(t=>t.id===e);if(!i)return void console.warn(`item ${e} is not exsited.`);t.items=t.items.filter(t=>t.id!==e),t.items.forEach(t=>{t.parentId===e&&(t.transform??(t.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}}),t.transform.position.x+=i.transform.position.x,t.transform.position.y+=i.transform.position.y,t.transform.position.z+=i.transform.position.z,t.transform.eulerHint.x+=i.transform.eulerHint.x,t.transform.eulerHint.y+=i.transform.eulerHint.y,t.transform.eulerHint.z+=i.transform.eulerHint.z,t.transform.scale.x*=0!==i.transform.scale.x?i.transform.scale.x:1,t.transform.scale.y*=0!==i.transform.scale.y?i.transform.scale.y:1,t.transform.scale.z*=0!==i.transform.scale.z?i.transform.scale.z:1),delete t.parentId});const r=t.components.filter(t=>t.item.id===e);t.components=t.components.filter(t=>!r.map(t=>t.id).includes(t.id)),r.forEach(e=>{if(e.dataType===m.DataType.SpriteComponent&&e.renderer.texture&&!t.components.find(t=>t.renderer?.texture?.id===e.renderer.texture.id)){const i=t.textures?.find(t=>t.id===e.renderer.texture?.id);i&&(t.textures=t.textures?.filter(t=>t.id!==i.id),t.images=t.images.filter(t=>t.id!==i.source.id))}});const s=[];let n,o;const a=t.compositions.find(e=>e.id===t.compositionId)??t.compositions[0];if(+t.version>=3.3){const i=t.components.find(t=>t.id===a.components[0].id);i.items=i.items.filter(t=>t.id!==e),o=i.timelineAsset.id,n=i.sceneBindings.find(t=>t.value.id===e)?.key.id,i.sceneBindings=i.sceneBindings.filter(t=>t.value.id!==e),n&&s.push(n)}else a.items=a.items.filter(t=>t.id!==e),o=a.timelineAsset.id,n=a.sceneBindings.find(t=>t.value.id===e)?.key.id,a.sceneBindings=a.sceneBindings.filter(t=>t.value.id!==e),n&&s.push(n);const c=t.miscs.findIndex(t=>t.id===o);c>=0&&(t.miscs[c].tracks=t.miscs[c].tracks.filter(t=>t.id!==n));const h=t.miscs.find(t=>t.id===n);h&&(h.children.forEach(e=>{s.push(e.id);const i=t.miscs.find(t=>t.id===e.id);i&&s.push(...i.clips.map(t=>t.asset.id))}),s.push(...h.children.map(t=>t.id))),t.miscs=t.miscs.filter(t=>!s.includes(t.id))}(e,t);const i=this.player.getCompositions()[0].items.find(e=>e.getInstanceId()===t);if(i){const t=i.getWorldTransform(),e=t.getWorldPosition(),r=t.getRotation(),s=t.getWorldScale();i.children.forEach(t=>{t.scale(...s.toArray()),t.rotate(...r.toArray()),t.translate(...e.toArray()),t.parent=void 0,t.parentId=void 0}),i.dispose()}this.getPageData().items=this.getPageData().items.filter(e=>e.id!==t)}setItemParent(t,e,i){const r=this.getPlayerItemById(e),s=this.getPlayerItemById(t);if(r?.type!==m.ItemType.null||!s)return void console.log("Id info is error, can not set parent.");i??(i=this.getActiveTargetScene()),ys(i,t,e);const n=r.getWorldTransform(),o=n.getWorldPosition(),a=n.getRotation(),c=n.getWorldScale();s.scale(1/c.x,1/c.y,1/c.z),s.rotate(...a.clone().negate().toArray()),s.translate(...o.clone().negate().toArray()),s.setParent(r),s.parentId=r.getInstanceId(),this.refreshSDKItem(t),this.refreshSDKItem(e)}deleteItemParent(t,e,i){const r=this.getPlayerItemById(e),s=this.getPlayerItemById(t);r?.type===m.ItemType.null&&s?(i??(i=this.getActiveTargetScene()),fs(i,t),s.parent=void 0,s.parentId=void 0,this.refreshSDKItem(t),this.refreshSDKItem(e)):console.log("Id info is error, can not set parent.")}setItemName(t,e,i){const r=this.getPlayerItemById(t);r?(i??(i=this.getActiveTargetScene()),function(t,e,i){const r=t.items.find(t=>t.id===e);r?r.name=i:console.warn(`item ${e} is not exsited.`)}(i,t,e),r.name=e,this.refreshSDKItem(t)):console.warn(`Item ${t} is not exsited.`)}get undoRedo(){return this.sdk.undoRedo}saveUndoRedoOldData(){const t=this.getPageData()?.activeData?.selectedItems;if(t){const e=t.map(t=>this.getItemCreateInfo(t));this.undoRedo.oldData=e}}pushUndoRedoData(){const t=this.getSelectedItems().map(t=>this.getItemCreateInfo(t.id));if(t.length&&this.undoRedo.oldData?.length){const e=this.undoRedo.oldData,i=t,r=q(e,i);if(console.log("undo redo push data \nisEqual:",r,"\noldData:",e,"\nnewData:",i),!r){const t={type:"update",oldData:e,newData:i};this.undoRedo.push(t),this.emitter.emit("undoRedoChange",t)}}}getItemCreateInfo(t,e=!1){w(this.sdk.pageData,"You must call SDK#run() first");const i=this.getPlayerItemById(t),r=this.getViewProperty()?.scene,s=this.getSDKItem(t);if(!s||!i||!r)return void console.warn(`item ${t} is not existed.`);const{transform:n}=i,o=n.getWorldScale();if(e&&i.parent){const t=i.parent.transform;o.divide(t.getWorldScale())}const{property:{width:a,height:c,position:h,rotation:l}}=s,p=[M(a/o.x,2),M(c/o.y,2)],d=s.getAllExtension();switch(s.type){case"sprite":return{type:"sprite",name:s.name,parentId:e?i.parent?.getInstanceId():void 0,id:t,property:{image:xs(r,t),width:p[0],height:p[1],scale:[o.x,o.y],rotation:l[2],position:[...h]},extension:d};case"group":{const r=i.children.map(t=>t.getInstanceId());return{type:"group",id:t,parentId:e?i.parent?.getInstanceId():void 0,name:i.name,property:{children:r,scale:[o.x,o.y],rotation:l[2],position:[...h]},extension:d}}case"text":{const n=r.components.find(e=>e.item.id===t),o=r.fonts?.find(t=>t.fontFamily===n.options.fontFamily)?.fontURL;return{type:"text",id:t,parentId:e?i.parent?.getInstanceId():void 0,name:s.name,property:{width:n.options.textWidth,height:n.options.textHeight??n.options.lineHeight,lineHeight:n.options.lineHeight,fontFamily:n.options.fontFamily,position:[...h],rotation:[...l],fontSize:n.options.fontSize,fontWeight:n.options.fontWeight,fontStyle:n.options.fontStyle,textAlign:n.options.textAlign,text:n.options.text,color:n.options.textColor?.map((t,e)=>e>2?t:M(255*t,0)),outlineColor:n.options.outline?.outlineColor?.map((t,e)=>e>2?t:M(255*t,0)),outlineWidth:n.options.outline?.outlineWidth,outlineEnabled:!!n.options.outline,fontUrl:o},extension:d}}case"video":{const n=r.components.find(e=>e.item.id===t);return{type:"video",name:s.name,parentId:e?i.parent?.getInstanceId():void 0,id:t,property:{video:xs(r,t),width:p[0],height:p[1],scale:[o.x,o.y],rotation:[...l],position:[...h],muted:n.options.muted,transparent:n.options.transparent,playbackRate:n.options.playbackRate,volume:n.options.volume},extension:d}}case"generator":return{type:"generator",name:s.name,parentId:e?i.parent?.getInstanceId():void 0,id:t,property:{generatorType:s.generatorType,width:p[0],height:p[1],scale:[o.x,o.y],rotation:[...l],position:[...h]},extension:d};case"effects":return{type:"effects",name:s.name,parentId:e?i.parent?.getInstanceId():void 0,id:t,property:{width:p[0],height:p[1],scale:[o.x,o.y],rotation:[...l],position:[...h],effects:s.effects},extension:d};default:return void console.warn(`getItemCreateInfo: unsupported item type ${s.type}`)}}getChildrenIds(t){return this.getPageData()?.items.filter(e=>e.parentId===t)?.map(t=>t.id)??[]}createScreenShotSceneByIds(t){const e=new W;let i;const r=(t,e,r)=>{const{id:s=b(),name:n="图片",property:{image:o,scale:a=[1,1],rotation:c=0}}=t,h=Array.isArray(c)?[...c]:[0,0,c];h[2]=-h[2];const l=i.images.findIndex(t=>t.url===o);let p={};if(o)if(l<0){const t={id:b(),url:o,renderLevel:m.RenderLevel.BPlus};p={id:b(),source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:es.LINEAR,minFilter:es.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},i.images.push(t),i.textures??(i.textures=[]),i.textures.push(p)}else{const t=i.textures?.find(t=>t.source.id===i.images[l].id);p={id:t?.id}}const d=ps(s,new j(r.x,r.y,0),new j(...h),e,new j(a[0]??1,a[1]??1,1),n,p.id);us(i,d)},s=(t,e,r)=>{const{id:s=b(),name:n="文本",property:{lineHeight:o,width:a,height:c=o,fontFamily:h,fontSize:l,fontWeight:p=m.TextWeight.normal,fontStyle:d=m.FontStyle.normal,textAlign:g=m.TextAlignment.left,text:u,color:y,rotation:f=0,fontUrl:x,outlineColor:w,outlineWidth:v,outlineEnabled:I}}=t,P=Array.isArray(f)?[...f]:[0,0,f];P[2]=-P[2],x&&!i.fonts?.find(t=>t.fontFamily===h)&&(i.fonts??(i.fonts=[]),i.fonts.push({fontFamily:h,fontURL:x}));const S=w?et(w):void 0,C=y?et(y):void 0,D={text:u,fontFamily:h,fontSize:l,textColor:C,fontWeight:p,letterSpace:0,textAlign:g,fontStyle:d,textWidth:a,textHeight:c??o,lineHeight:o,outline:I?{outlineColor:S,outlineWidth:v}:void 0},A=ms(s,n,new j(...r.toArray(),0),new j(...P),new z(e.x,e.y),D);us(i,A)},n=(t,e,r)=>{const{id:s=b(),name:n="视频",property:{video:o,scale:a=[1,1],rotation:c=0,muted:h=!0,transparent:l=!1,playbackRate:p=1,volume:d=1}}=t,g=Array.isArray(c)?[...c]:[0,0,c];g[2]=-g[2],i.videos??(i.videos=[]);const u=i.videos.findIndex(t=>t.url===o);let y,f={};if(o)if(u<0){const t={id:b(),url:o,renderLevel:m.RenderLevel.BPlus};y=t.id,f={id:b(),source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:es.LINEAR,minFilter:es.LINEAR,generateMipmap:!1},i.videos.push(t),i.textures??(i.textures=[]),i.textures.push(f)}else{const t=i.textures?.find(t=>t.source.id===i.videos[u].id);y=t.resource.id,f={id:t?.id}}const x=gs(s,new j(r.x,r.y,0),new j(...g),e,new j(a[0]??1,a[1]??1,1),n,h,l,d,p,f.id,y);us(i,x)};if(Array.isArray(t)){t.map(t=>this.getItemBoxById(t)).map(t=>e.union(t));const o=e.getSize();i=ls(o.toArray());const a=(new N).compose(new j(0,0,8),new H,new j(1,1,1)).invert(),c=(new N).perspective(60*T,o.x/o.y,.1,40,!0),h=(new N).multiplyMatrices(c,a),l=h.clone().invert(),p=h.projectPoint(new j).z,d=new j(0,0,p).applyMatrix(l),m=new j(2,2,p).applyMatrix(l),g=Math.abs(m.x-d.x)/o.x,u=Math.abs(m.y-d.y)/o.y;t.forEach(t=>{const i=this.getItemCreateInfo(t,!1);if(!i||"group"===i.type)return;const o=this.getItemBoxById(t),a="text"===i.type?[i.property.width,i.property.height??i.property.lineHeight]:[i.property.width,i.property.height],c=new z(...a).multiply(new z(g,u)).abs(),h=o.getCenter().subtract(e.getCenter()).multiply(new z(g,-u));switch(i.type){case"sprite":r(i,c,h);break;case"text":s(i,c,h);break;case"video":n(i,c,h)}})}else{const e=this.getItemBoxById(t),o=this.getItemCreateInfo(t,!1),a=e.clone().getSize();i=ls(a.toArray());const c=(new N).compose(new j(0,0,8),new H,new j(1,1,1)).invert(),h=(new N).perspective(60*T,a.x/a.y,.1,40,!0),l=(new N).multiplyMatrices(h,c),p=l.clone().invert(),d=l.projectPoint(new j).z,m=new j(0,0,d).applyMatrix(p),g=new j(2,2,d).applyMatrix(p),u=(new j).subtractVectors(g,m);if(o)switch(o.type){case"sprite":r(o,new z(u.x,u.y),new z);break;case"text":s(o,new z(u.x,u.y),new z);break;case"video":n(o,new z(u.x,u.y),new z)}}return i}createSceneByCreateInfos(t,e,i){const r=new W;e?r.setFromVec2Array([new z,new z(...e)]):r.copyFrom(this.getBoundingBoxByCreateInfos(t));const s=r.getSize(),n=ls(s.toArray(),i),o=(new N).compose(new j(0,0,8),new H,new j(1,1,1)).invert(),a=(new N).perspective(60*T,s.x/s.y,.1,40,!0),c=(new N).multiplyMatrices(a,o),h=c.clone().invert(),l=c.projectPoint(new j).z,p=new j(0,0,l).applyMatrix(h),d=new j(2,2,l).applyMatrix(h),g=Math.abs(d.x-p.x)/s.x,u=Math.abs(d.y-p.y)/s.y,y=new Map;return t.forEach(t=>{const e=this.getBoundingBoxByCreateInfo(t),i=e.getSize().multiply(new z(g,u)).abs(),s=e.getCenter().subtract(r.getCenter()).multiply(new z(g,-u));switch(t.type){case"sprite":((t,e,i)=>{const{id:r=b(),name:s="图片",property:{image:o,scale:a=[1,1],rotation:c=0}}=t,h=Array.isArray(c)?[...c]:[0,0,c];h[2]=-h[2];const l=n.images.findIndex(t=>t.url===o);let p={};if(o)if(l<0){const t={id:b(),url:o,renderLevel:m.RenderLevel.BPlus};p={id:b(),source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:es.LINEAR,minFilter:es.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},n.images.push(t),n.textures??(n.textures=[]),n.textures.push(p)}else{const t=n.textures?.find(t=>t.source.id===n.images[l].id);p={id:t?.id}}const d=ps(r,new j(i.x,i.y,0),new j(...h),e,new j(a[0],a[1],1),s,p.id);us(n,d)})(t,i,s);break;case"text":((t,e,i)=>{const{id:r=b(),name:s="文本",property:{lineHeight:o,width:a,height:c=o,fontFamily:h,fontSize:l,fontWeight:p=m.TextWeight.normal,fontStyle:d=m.FontStyle.normal,textAlign:g=m.TextAlignment.left,text:u,color:y,rotation:f=0,fontUrl:x,outlineColor:w,outlineWidth:v,outlineEnabled:I}}=t,P=Array.isArray(f)?[...f]:[0,0,f];P[2]=-P[2],x&&!n.fonts?.find(t=>t.fontFamily===h)&&(n.fonts??(n.fonts=[]),n.fonts.push({fontFamily:h,fontURL:x}));const S={text:u,fontFamily:h,fontSize:l,textColor:y,fontWeight:p,letterSpace:0,textAlign:g,fontStyle:d,textWidth:a,textHeight:c??o,lineHeight:o,outline:I?{outlineWidth:v,outlineColor:w}:void 0},C=ms(r,s,new j(...i.toArray(),0),new j(...P),new z(e.x,e.y),S);us(n,C)})(t,i,s);break;case"group":(t=>{const{id:e=b(),name:i="编组",property:{scale:r=[1,1],children:s,rotation:o=0,position:a=[0,0]}}=t,c=Array.isArray(o)?[...o]:[0,0,o];c[2]=-c[2];const h=new z(...a).multiply(new z(g,-u)),l=ds(e,i,new j(h.x,h.y,0),new z(...r),new j(...c));us(n,l),y.set(e,s)})(t);break;case"video":((t,e,i)=>{const{id:r=b(),name:s="视频",property:{video:o,scale:a=[1,1],rotation:c=0,muted:h=!0,transparent:l=!1,playbackRate:p=1,volume:d=1}={}}=t,g=Array.isArray(c)?[...c]:[0,0,c];g[2]=-g[2],n.videos??(n.videos=[]);const u=n.videos.findIndex(t=>t.url===o);let y={},f="";if(o)if(u<0){const t={id:b(),url:o,renderLevel:m.RenderLevel.BPlus};f=t.id,y={id:b(),source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:es.LINEAR,minFilter:es.LINEAR,generateMipmap:!1},n.videos.push(t),n.textures??(n.textures=[]),n.textures.push(y)}else{const t=n.textures?.find(t=>t.source.id===n.videos[u].id);f=t.source.id,y={id:t?.id}}const x=gs(r,new j(i.x,i.y,0),new j(...g),e,new j(a[0],a[1],1),s,h,l,d,p,y.id,f);us(n,x)})(t,i,s)}}),y.forEach((t,e)=>{const i=n.items.find(t=>t.id===e),r=i?.transform;if(r){const{position:i,scale:s,size:o}=r,a={x:s.x*(o?.x??1),y:s.y*(o?.y??1)};t.forEach(t=>{const s=n.items.find(e=>e.id===t);s&&(s.parentId=e,s.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}}),s.transform.position.x-=i.x,s.transform.position.y-=i.y,r.scale&&(s.transform.scale.x/=a.x,s.transform.scale.y/=a.y))})}}),n}updateItemOrder(t,e){w(this.sdk.pageData,"You must call SDK#run() first");const i=this.getCurrentComposition();if(!i)return void console.warn("Composition not found.");const r=i.items.find(e=>e.getInstanceId()===t);if(!r)return void console.warn(`Item with id ${t} not found.`);const s=r.parent,n=s.children.filter(t=>!this.isPluginItem(t)),o=s.children.filter(t=>this.isPluginItem(t)),a=n.findIndex(e=>e.getInstanceId()===t);if(-1===a)return void console.warn(`Item with id ${t} not found in siblings.`);let c=a;switch(e){case 0:c=n.length-1;break;case 1:c=0;break;case 2:c=Math.min(a+1,n.length-1);break;case 3:c=Math.max(a-1,0)}if(c===a)return;const[h]=n.splice(a,1);h&&n.splice(c,0,h),s.children=[...o,...n],this.refreshItemRenderOrder(i),this.addSDKItemsByItems(this.sdk.pageData.items,i.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}isPluginItem(t){return"ModelPluginItem"===t.name}refreshItemRenderOrder(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=(()=>{const e=[],i=t=>{for(const r of t)this.isPluginItem(r)||(e.push(r),r.children.length>0&&i(r.children))},r=[...t.rootItem.children].filter(t=>"ModelPluginItem"!==t.name);return i(r),e})();t.items.length=0,t.items.push(...e);for(let e=0;e<t.items.length;e++){const i=t.items[e];i.renderOrder=e,i.setActive(!1),i.setActive(!0)}const i=this.getViewProperty();if(i){const{scene:e}=i,r=e.compositions.find(t=>t.id===e.compositionId)??e.compositions[0];if(r){const i=r.components.map(t=>e.components.find(e=>e.id===t.id)).find(t=>t?.dataType===m.DataType.CompositionComponent);i&&(i.items=t.items.filter(t=>!Dn.config.pageConfig.filterItemNames.includes(t.name)).map(t=>({id:t.getInstanceId()})))}}this.syncPageDataItemsOrder(t)}syncPageDataItemsOrder(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=t.items.filter(t=>!Dn.config.pageConfig.filterItemNames.includes(t.name)).map(t=>t.getInstanceId()),i=new Map;for(const t of this.sdk.pageData.items)i.set(t.id,t);const r=[];for(const t of e){const e=i.get(t);e&&(r.push(e),i.delete(t))}for(const t of i.values())r.push(t);this.sdk.pageData.items=r}getViewProperty(t){return w(this.sdk.pageData,"You must call SDK#run() first"),t??(t=this.sdk.pageData.activeData.view),this.sdk.pageData.viewProperties.find(e=>e.id===t)}viewportFit(t,e){switch(Dn.config.mode){case"template":{const{scale:t,translation:e}=this.interactionUtils.viewportParam;this.pageMove(e.clone().negate()),this.pageZoom(1-t,void 0,!0);break}case"editor":{w(this.sdk.pageData,"You must call SDK#run() first"),t??(t={left:0,right:0,top:0,bottom:0});const{left:i=0,top:r=0,right:s=0,bottom:n=0}=t,o=new W;e?o.copyFrom(e):this.sdk.pageData.items.forEach(t=>{const e=this.getViewBoxById(t.id);o.union(e)});const{offsetWidth:a,offsetHeight:c}=this.container.parentElement,{scale:h,translation:l}=this.interactionUtils.viewportParam;if(o.isEmpty())this.pageMove(l.clone().negate()),this.pageZoom(1-h,void 0,!0);else{o.scale(1.1);const t=o.getCenter(),e=o.getSize(),p=a-i-s,d=c-r-n,m=new z(a/2+i/2-s/2,c/2+r/2-n/2),g=e.x/p*d>e.y?1/(e.x/p):1/(e.y/d),u=(new z).subtractVectors(m,t);this.setPageMove((new z).addVectors(l,u)),this.setPageZoom(g*h,new z(p/2+i,d/2+r),!0)}break}}}getItemBoxById(t){const e=t=>{const e=new W,i=this.getSDKItem(t);if(i){const{position:t,width:r,height:s,rotation:n}=i.property;e.setFromCenterAndSize(new z(...t),new z(r,s)).rotate(n[2]*T)}return e};if(Array.isArray(t)){const i=[];return i.push(...t.map(e)),i}return e(t)}async setItemFontFamily(t,e,i){w(this.sdk.pageData,"You must call SDK#run() first");const r=this.getPlayerItemById(t),s=this.getActiveTargetScene();if(!r||!s||r.type!==m.ItemType.text)return void console.warn(`text item ${t} is not exsited.`);s.fonts??(s.fonts=[]);!s.fonts.find(t=>"family"in t&&t.family===e||"fontFamily"in t&&t.fontFamily===e)&&s.fonts&&(s.fonts.push({fontFamily:e,fontURL:i}),await ts.loadFontFamily([{fontURL:i,fontFamily:e}]));const n=s.components.find(e=>e.item.id===t&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(e.dataType));n&&(n.options.fontFamily=e),r.getComponent(I).setFontFamily(e),r.getComponent(I).isDirty=!0,this.player.gotoAndStop(this.sdk.pageData.time),this.refreshSDKItem(t)}changeItemPropertyByCreateInfo(t){const e=t=>{const e=this.getItemCreateInfo(t.id);if(!e)return void console.warn(`item create info ${t.id} is not exsited.`);const i=e.property,r=t.property;Object.keys(t.property).forEach(async t=>{if(Vr(i,r)||["type","id","size"].includes(t))return;const s=e.type;await this.setItemProperty({itemId:e.id,type:s,propertyName:t,propertyValue:r[t]})})};Array.isArray(t)?t.map(e):e(t)}getViewBoxByBox(t){const{translation:e,scale:i,width:r,height:s}=this.interactionUtils.viewportParam,n=new z(r/2,s/2);return t.clone().scale(i,n).translate(e)}playVideoItem(t){const e=this.getPlayerItemById(t);if(e?.type!==m.ItemType.video)return;e.getComponent(C).playVideo()}pauseVideoItem(t){const e=this.getPlayerItemById(t);if(e?.type!==m.ItemType.video)return;e.getComponent(C).pauseVideo()}getBoundingBoxByCreateInfo(t){const e=new W;if("group"===t.type)return e;const i=new z(...t.property.position),r="text"===t.type?[t.property.width,t.property.height??t.property.lineHeight]:[t.property.width??750,t.property.height??1624],s=new z(...r),n=Array.isArray(t.property.rotation)?t.property.rotation[2]:t.property.rotation??0;return e.setFromCenterAndSize(i,s).rotate(n*T),e}getBoundingBoxByCreateInfos(t){const e=new W,i=new Map,r=new Map;return t.forEach((e,s)=>{const n=e.id??b();switch(r.set(s,n),e.type){case"sprite":case"video":case"text":i.set(n,this.getBoundingBoxByCreateInfo(e));break;case"group":{const r=new W;e.property.children.forEach(e=>{const i=t.find(t=>t.id===e);i&&r.union(this.getBoundingBoxByCreateInfo(i))}),i.set(n,r);break}}}),i.forEach((t,i)=>{e.union(t)}),e}getVideoItemPlayTime(t){const e=this.getPlayerItemById(t);if(e?.type!==m.ItemType.video)return 0;return e.getComponent(C).getCurrentTime()}setVideoItemPlayTime(t,e){const i=this.getPlayerItemById(t);if(i?.type!==m.ItemType.video)return;i.getComponent(C).setCurrentTime(e)}getPixelPositionByViewPosition(t){return this.interactionUtils.getPixelPositionByViewPoint(t)}getItemParentScale(t){const e=new j(1,1,1),i=this.getPlayerItemById(t);if(!i)return console.warn(`Item ${t} is not exsited.`),e;const r=i.parent?.transform;return r?(r.getMatrix().decompose(new j,new H,e),e):(console.warn(`Item ${t} does not have parent.`),e)}getJSONItem(t){const e=this.getActiveTargetScene(),i=e?.items.filter(e=>e.id===t);return i?.[0]}getJSONComponent(t){const e=this.getActiveTargetScene(),i=e?.components.filter(e=>e.item.id===t);return i?.[0]}getTextOriginSize(t){w(this.sdk.pageData,"You must call SDK#run() first");let e=!1;const{scene:i}=this.sdk.pageData,r=i.compositions.length?i:this.getActiveTargetScene();if(!r)return console.warn("Scene is not existed."),{size:[0,0],isPublishScene:e};const s=new z,n=this.getJSONComponent(t);if(n?.dataType===m.DataType.TextComponent&&"options"in n&&n.options.size)s.set(n.options.size[0],n.options.size[1]),e=!0;else{const i=r.compositions.find(t=>t.id===r.compositionId)??r.compositions[0],n=i.previewSize??[750,1624],{fov:o,near:a,far:c,clipMode:h,position:l=[0,0,8]}=i.camera,p=(new N).perspective(o*Math.PI/180,n[0]/n[1],a,c,h===m.CameraClipMode.portrait),d=(new N).compose(new j(...l),new H,new j(1,1,1)).invert(),g=(new N).multiplyMatrices(p,d),u=g.clone().invert(),y=this.getPlayerItemById(t),f=y?.getComponent(I);if(!f)return{size:[0,0],isPublishScene:e};const x=new rs(this);x.refrehCameraParamByCameraInfo({fov:o,near:a,far:c,clipMode:h,position:l,aspect:n[0]/n[1]}),x.viewportParam.width=n[0],x.viewportParam.height=n[1];const{width:w,height:v}=f.textLayout,P=(t,e)=>{const i=t.x/n[0]*2-1,r=1-t.y/n[1]*2;return new j(i,r,e)},b=(new j).applyProjectionMatrix(g).z,S=P(new z(0,0),b).applyProjectionMatrix(u),C=P(new z(w,v),b).applyProjectionMatrix(u);s.copyFrom(C.clone().subtract(S).abs())}return{size:[s.x,s.y],isPublishScene:e}}async asyncAddItemByCreateInfos(t){const e=t.map(t=>Object.assign({},t,t.id?{}:{id:b()})),i=new Map;for(const t of e){const e=t.id,{type:r}=t,s="sprite"===r?t.property.image:"video"===r?t.property.video:void 0;if(("sprite"===r||"video"===r)&&s){const n=b();i.set(e,{id:n,url:s,type:"sprite"===r?"image":"video"}),Object.assign(t,{textureId:n})}}await Promise.all(e.map(async t=>{const{type:e}=t;switch(e){case"sprite":await this.addSpriteItem(t,!0);break;case"video":await this.addVideoItem(t,!0);break;case"text":await this.addTextItem(t);break;case"group":this.addGroupItem(t)}}));const r=e.map(t=>t.id),s=this.player.getCompositions()[0];this.addSDKItemsByItems(this.sdk.pageData.items,s.items),this.emitter.emit("pageDataChange",this.sdk.pageData);return(async()=>{if(!i.size)return;const t=[];i.forEach((e,i)=>{t.push({...e,textureId:e.id,id:i})});await Promise.all(t.map(async t=>{const e=this.getPlayerItemById(t.id);if(e)try{if("image"===t.type){const i=this.player.renderer.engine.findObject({id:t.textureId})??await P.fromImage(t.url,this.player.renderer.engine,{id:t.textureId});e.getComponent(v)?.setTexture(i)}else if("video"===t.type){const i=this.player.renderer.engine.findObject({id:t.textureId})??await P.fromVideo(t.url,this.player.renderer.engine,{id:t.textureId}),r=e.getComponent(C);if(r){const{muted:t=!0,playbackRate:s=1,volume:n=1}=this.getJSONComponent(e.getInstanceId()).options??{};r.setTexture(i),r.setLoop(!0),r.setMuted(t),r.setVolume(n),r.pauseVideo(),r.setPlaybackRate(s)}}}catch(e){console.error(`Failed to load texture for item ${t.id}:`,e)}}))})(),r}async addItemByCreateInfos(t){const e=t.map(t=>Object.assign({},t,t.id?{}:{id:b()})).map(t=>t.id);for(const e of t)switch(e.type){case"sprite":await this.addSpriteItem(e,!1);break;case"text":await this.addTextItem(e);break;case"group":this.addGroupItem(e);break;case"video":await this.addVideoItem(e,!1);break;case"generator":this.addGeneratorItem(e);break;case"frame":this.addFrameItem(e)}return e}async addEffectsItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{id:i=b(),name:r="特效",property:{scale:s=[1,1],effects:n,rotation:o=0,position:a},parentId:c,extension:h}=t,l=Array.isArray(o)?o:[0,0,o];l[2]=-l[2];const p=new j(1,1,1),d=new j(...l),g=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new z(...a)))??new j;let u;if("string"==typeof n){const t=await fetch(n,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}, statusText: ${t.statusText}`);u=await t.json()}if(!u)return void console.error("Failed to load effects scene.");const y=u.compositions.find(t=>t.id===u.compositionId)??u.compositions[0];y||console.warn("Composition not found in effects scene.");const f=y?.previewSize??[750,1624],x=this.getWorldSizeByPixelSize(f),v=new gt({id:i,name:r,parentId:c,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!0,property:{position:[...a],rotation:[...l],width:x[0],height:x[1],scale:[...s],effects:n},extension:h});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(v);const I=this.player.getCompositions()[0],P=Ss.createSprite(I,null,r);return P.setInstanceId(i),P.duration=999,P.defination.delay=0,P.endBehavior=m.EndBehavior.restart,P.transform.setSize(...x),P.transform.setPosition(...g.toArray()),P.transform.setRotation(...d.toArray()),P.transform.setScale(...p.toArray()),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),i}addFrameItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return"";const{id:i=b(),name:r="画板",property:{width:s,height:n,position:o,rotation:a=0,scale:c=[1,1],layoutMode:h="free"},parentId:l,extension:p}=t,d=[s,n],g=Array.isArray(a)?[...a]:[0,0,a];g[2]=-g[2];const u=new j(1,1,1),y=this.getWorldSizeByPixelSize(d),f=new j(...g),x=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new z(...o)))??new j,v=new ft({id:i,name:r,parentId:l,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,visible:!0,isLocked:!1,isCoreEditable:!0,property:{position:[...o],rotation:[...g],width:s,height:n,scale:[...c],layoutMode:h},extension:p});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(v);const I=this.player.getCompositions()[0],P=Ss.createSprite(I,null,r);return P.setInstanceId(i),P.duration=999,P.defination.delay=0,P.endBehavior=m.EndBehavior.restart,P.transform.setSize(...y),P.transform.setPosition(...x.toArray()),P.transform.setRotation(...f.toArray()),P.transform.setScale(...u.toArray()),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),i}makeItemAlign(t,e){if(e??(e=this.getSelectedItems().map(t=>t.id)),e.length<2)return void console.warn("Items length less than 2, fucntion can not make item align.");const i=e.map(t=>({id:t,box:this.getViewBoxById(t)})),r=i.reduce((t,{box:e})=>(t.union(e),t),new W);i.forEach(({id:e,box:i})=>{const s=new z;switch(t){case"left":s.set(r.min.x-i.min.x,0);break;case"right":s.set(r.max.x-i.max.x,0);break;case"horizontal-center":s.set(r.getCenter().x-i.getCenter().x,0);break;case"top":s.set(0,r.min.y-i.min.y);break;case"bottom":s.set(0,r.max.y-i.max.y);break;case"vertical-center":s.set(0,r.getCenter().y-i.getCenter().y)}const n=this.interactionUtils.getWorldSizeByViewSize(s);this.moveItem(e,n)})}makeItemDistribute(t,e){e??(e=this.getSelectedItems().map(t=>t.id));const i=e.length;if(i<3)return void console.warn("Items length less than 3, fucntion can not make item align.");const r=e.map(t=>({id:t,box:this.getViewBoxById(t)})),s="horizontal-spacing"===t?"x":"y";r.sort((t,e)=>t.box.getCenter()[s]-e.box.getCenter()[s]);const n=r[0],o=(r[i-1].box.getCenter()[s]-n.box.getCenter()[s])/(i-1);r.forEach(({id:t,box:e},i)=>{const r=n.box.getCenter()[s]+o*i,a=new z;a[s]=r-e.getCenter()[s];const c=this.interactionUtils.getWorldSizeByViewSize(a);this.moveItem(t,c)})}setItemLockState(t,e){const i=this.getSDKItem(t);i?i.isLocked=e:console.warn(`Item ${t} is not exsited.`)}getItemLockState(t){const e=this.getSDKItem(t);return e?e.isLocked:(console.warn(`Item ${t} is not exsited.`),!0)}};import As from"jszip";import _s from"jszip";var Ts,Es,Bs,ks,Ms,Us,Gs,Fs,Rs,Vs,Ls,Ws,Os,Hs,js,Ns,Ks,$s,Ys,Js,Xs,Zs,qs="ready",Qs="executable",tn="dispose",en={APNG:"APNG",MP4:"MP4",WebM:"WebM",Images:"Images",WebP:"WebP",GIF:"GIF",AlphaMaskVideo:"AlphaMaskVideo"},rn="idle",sn="convertImage",nn="transcoding",on="audio",an="jpeg",cn="webp",hn="png",ln=(en.MP4,en.WebP,en.APNG,en.GIF,en.AlphaMaskVideo,en.Images,en.MP4,en.WebP,en.APNG,en.GIF,en.AlphaMaskVideo,en.Images,"default"),pn="exporting",dn="success",mn="error",gn={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"},un={highest:"1",high:"3",medium:"6",low:"9"},yn=class{constructor(t){c(this,"sampleRate"),c(this,"duration"),c(this,"channels");const{sampleRate:e=44100,duration:i=1,channels:r=2}=t??{};this.sampleRate=e,this.duration=i,this.channels=r}getBuffer(){const t=this.sampleRate*this.duration*this.channels*2,e=44+t,i=new ArrayBuffer(e),r=new DataView(i);let s=0;const n=t=>{for(let e=0;e<t.length;e++)r.setUint8(s++,t.charCodeAt(e))},o=t=>{r.setUint32(s,t,!0),s+=4},a=t=>{r.setUint16(s,t,!0),s+=2};n("RIFF"),o(e-8),n("WAVE"),n("fmt "),o(16),a(1),a(this.channels),o(this.sampleRate),o(this.sampleRate*this.channels*2),a(2*this.channels),a(16),n("data"),o(t);for(let e=0;e<t;e++)r.setUint8(s++,0);return new Uint8Array(i)}},fn=["@vvfx/sdk","exporter"],xn=class extends x{constructor(t){super(),c(this,"status",qs),c(this,"stage",rn),c(this,"player"),p(this,Ts),p(this,Es),p(this,Bs,0),p(this,ks),p(this,Ms),p(this,Us),p(this,Gs),p(this,Fs,[]),p(this,Rs),p(this,Vs),p(this,Ls,[]),p(this,Ws,0),p(this,Os),p(this,Hs,[]),p(this,js,0),p(this,Ns,0),p(this,Ks,0),p(this,$s,0),p(this,Ys,[]),p(this,Js,[]),p(this,Xs,null),p(this,Zs,!0),d(this,Ts,ir({loggerInTranscoding:!1,multiThreading:!1},t)),this.onInit()}setMediaType(t){t!==l(this,Ts).mediaType&&(l(this,Ts).mediaType=t,this.onReset(),this.clearAllListeners(),this.onInit())}setOptions(t){const e=ir({},l(this,Ts),t);l(this,Ts).mediaType!==e.mediaType&&this.setMediaType(e.mediaType),d(this,Ts,e)}get canceled(){return this.status===tn}get config(){const t=this.player?.getCompositions()??[],e=t?.[0],i=e?.name??(new Date).getTime().toString(),r=e?.getDuration()??0,s=e?.startTime??0,n=l(this,Os)?.time;return{name:i,startTime:s,oldTotalTime:r,newTotalTime:n,fps:l(this,Os)?.fps??30,backgroundColor:l(this,Os)?.backgroundColor??"#000000",loop:l(this,Os)?.loop??!0,audioEnable:l(this,Os)?.audioEnable??!1}}get mp4Config(){return l(this,Os)?.mp4Config}get gifConfig(){return l(this,Os)?.gifConfig}get apngConfig(){return l(this,Os)?.apngConfig}get progress(){const t=l(this,Ns)||1,e=l(this,Ks)||1,i=Math.min(t/e,1),r=Math.min(l(this,js),t)/t*.4,s=Math.min(l(this,$s),t)/t*.6,n=Math.min(r+s,1);l(this,Hs)[l(this,Ws)]=i;const o=l(this,Hs).reduce((t,e,i)=>i<l(this,Ws)?t+(e||0):t,0)+n*i;return Math.min((a=o,Math.round(100*a)/100),1);var a}get transImageType(){return l(this,Ts).mediaType===en.MP4?an:l(this,Ts).mediaType===en.WebP?cn:hn}async onInit(){try{Rr("log",[...fn,"ready"],"starting"),this.status=qs,await this.loadHelper(l(this,Ts).mediaType),this.status=Qs,Rr("log",[...fn,"ready"],"success"),this.emit("ready",l(this,Ts).mediaType)}catch(t){this.status=tn,this.onError(t)}finally{return this.status}}onReset(){this.stage=rn,clearTimeout(l(this,Es)),window.cancelAnimationFrame(l(this,Bs)),d(this,Bs,0),d(this,Es,void 0),this.player?.pause(),this.clearTaskInfo(),this.setProgress()}onError(t){Rr("log",[...fn,"error"],t),this.onFinish(!1,l(this,Ys),l(this,Js),l(this,Xs)),this.emit("error",t),this.dispose()}onFinish(t,e,i,r){Rr("log",[...fn,"finish"],t?"success":"failed"),this.emit("progress",1),this.emit("finish",t,e,i,r)}async loadHelper(t){const e="WebP"===t&&!l(this,Us),i=[en.MP4,en.APNG,en.GIF,en.AlphaMaskVideo].includes(t)&&!l(this,Ms);e&&d(this,Us,await cs()),i&&(d(this,Ms,await async function(t){try{const[{FFmpeg:e},{toBlobURL:i}]=await Promise.all([import("@ffmpeg/ffmpeg").catch(t=>{const e=t instanceof Error?t.message:"Unknown error";throw new Error(`Failed to load @ffmpeg/ffmpeg: ${e}`)}),import("@ffmpeg/util").catch(t=>{const e=t instanceof Error?t.message:"Unknown error";throw new Error(`Failed to load @ffmpeg/util: ${e}`)})]),{multiThreading:r}=t??{},s=new e,n=!!r,o={classWorkerURL:await i(ns.CLASSWORKER,"text/javascript"),coreURL:"",wasmURL:""};return n?(o.coreURL=await i(ns.MT.CORE,"text/javascript"),o.wasmURL=await i(ns.MT.WASM,"application/wasm"),o.workerURL=await i(ns.MT.WORKER,"text/javascript")):(o.coreURL=await i(ns.DEFAULT.CORE,"text/javascript"),o.wasmURL=await i(ns.DEFAULT.WASM,"application/wasm")),await s.load(o),s}catch(t){throw t instanceof Error?t:new Error(`Unknown error occurred while loading FFmpeg: ${String(t)}`)}}({multiThreading:l(this,Ts).multiThreading})),w(l(this,Ms)),l(this,Ms).on("log",({message:t})=>{if(l(this,Ts).loggerInTranscoding&&Rr("log",[...fn,"transcoding log"],t),this.canceled||this.stage!==nn)return;const e=/frame=\s*(\d+)/.exec(t),i=e?.[1],r=Number(i);r>=l(this,$s)&&this.setProgress({currentTaskInTranscodingFrameIndex:r})}))}getAllTaskFrames(t){return t.reduce((t,e)=>{const{scene:i,fps:r}=e,s=i.compositions?.[0]?.duration??0;return t+Math.round(s*(r??30))},0)}setProgress(t){void 0!==t?.completedTaskPercentArray&&d(this,Hs,t.completedTaskPercentArray),void 0!==t?.currentTaskFrameIndex&&d(this,js,t.currentTaskFrameIndex),void 0!==t?.currentTaskTotalFrames&&d(this,Ns,t.currentTaskTotalFrames),void 0!==t?.currentTaskInTranscodingFrameIndex&&d(this,$s,t.currentTaskInTranscodingFrameIndex),void 0!==t?.allTaskFrames&&d(this,Ks,t.allTaskFrames),this.emit("progress",this.progress)}forwardPlayerTime(t,e=!1){w(this.player);const{oldTotalTime:i,startTime:r}=this.config;w(i);const s=1e3*i-1e3*i%15;return t=Math.min(t,s/1e3),e?this.player.gotoAndPlay(t-r):this.player.gotoAndStop(t-r),t}getWavAudio(t){d(this,Rs,new yn),l(this,Ms)?l(this,Ms).writeFile(t,l(this,Rs).getBuffer()):Rr("log",[...fn,"getWavAudio"],"ffmpegCore is not ready")}async getImagesZip(t,e){const i=new _s,r=i.folder(t);return w(r),l(this,Ls).forEach((t,i)=>{r.file(t,e[i])}),i.generateAsync({type:"arraybuffer"})}getWebP(){w(l(this,Us));const t=Math.round(1e3/this.config.fps/1),e="out.webp",i=`${l(this,Ls).join(` -d ${t} `)} -d ${t} -o ${e} -loop ${this.config.loop?0:1}`.split(" "),r=l(this,Us).cwrap("main","string",["number","number"]),[s,n]=function(t,e){const i=t._malloc(e.length*Uint32Array.BYTES_PER_ELEMENT);return e.forEach((e,r)=>{const s=t._malloc(e.length+1);t.writeAsciiToMemory(e,s),t.setValue(i+Uint32Array.BYTES_PER_ELEMENT*r,s,"i32")}),[e.length,i]}(l(this,Us),i);Fr(s&&n,"getWebP has error"),r(s,n);const o=l(this,Us).FS.readFile(e);return l(this,Ls).forEach(t=>{l(this,Us)?.FS.unlink(t)}),o}async getAPNG(){w(l(this,Ms));this.stage=nn;const t="export.apng",{fps:e,scale:i="-1:-1",quality:r="highest"}=this.apngConfig??{},s=[`scale=${i}:force_original_aspect_ratio=decrease:flags=lanczos`];e&&s.push(`fps=${e}`);if(0!==await l(this,Ms).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-vf",s.join(","),"-plays",this.config.loop?"0":"1","-compression_level",un[r],"-y",t]))throw new Error("the command executed by ffmpeg to generate a apng failed.");return t}async getGIF(){w(l(this,Ms));this.stage=nn;const t="export.gif",{fps:e,scale:i="-1:-1",quality:r="highest"}=this.gifConfig??{},s=[`scale=${i}:${gn[r]}`];e&&s.unshift(`fps=${e}`);if(0!==await l(this,Ms).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-loop",this.config.loop?"0":"-1","-vf",s.join(","),"-y",t]))throw new Error("the command executed by ffmpeg to generate a gif failed.");return t}async getMP4(t,e){w(l(this,Ms));this.stage=nn;const i="export.mp4";let r;const s=e?",setpts=PTS/"+Math.round(t/e*100)/100:"",n=e??t,{isExportLastFrameJPEG:o}=this.mp4Config??{};this.config.audioEnable&&!l(this,Rs)&&(d(this,Vs,"audio.wav"),this.getWavAudio(l(this,Vs)));if(0!==await l(this,Ms).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]))throw new Error("the command executed by ffmpeg to generate a mp4 failed.");if(l(this,Vs)&&l(this,Rs)){this.stage=on,r="export-with-audio.mp4";if(0!==await l(this,Ms).exec(["-i",i,"-i",l(this,Vs),"-c:v","copy","-c:a","aac","-t",`${n}`,"-y",r]))throw new Error("the command executed by ffmpeg to generate a audio of video failed.")}const a=r??i;let c="";return o&&(c=`image-${as(l(this,Ns),4)}.${this.transImageType}`),r&&l(this,Ms).deleteFile(i).catch(()=>{Rr("log",[...fn,"ffmpeg delete file error"])}),{video:a,lastFrame:c}}async getAlphaMaskVideo(t,e){w(l(this,Ms));this.stage=nn;const i="export.mp4",r=e?",setpts=PTS/"+Math.round(t/e*100)/100:"";return await l(this,Ms).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]),i}async getVideoByType(t,e){w(l(this,Ms));const i=l(this,Ts).mediaType===en.APNG,r=l(this,Ts).mediaType===en.GIF,s=l(this,Ts).mediaType===en.AlphaMaskVideo,n=l(this,Ts).mediaType===en.MP4;let o="",a="";try{if(i&&(o=await this.getAPNG()),r&&(o=await this.getGIF()),n){const{video:i,lastFrame:r}=await this.getMP4(t,e);o=i,a=r}s&&(o=await this.getAlphaMaskVideo(t,e)),this.stage=rn}catch(t){throw Rr("log",[...fn,"getVideoByType","failed"],t),t}let c=null,h=null;try{w(o);const t=await l(this,Ms).readFile(o);if(c="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t),a){const t=await l(this,Ms).readFile(a).catch(()=>{Rr("log",[...fn,"ffmpeg read extra file error"])});h="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t)}}finally{l(this,Ms).deleteFile(o).catch(()=>{Rr("log",[...fn,"ffmpeg delete file error"])});for(const t of l(this,Ls))t&&l(this,Ms).deleteFile(t)}return{data:c,extra:h}}onRecordWebM(t){const e=new MediaRecorder(t.captureStream(this.config.fps),{mimeType:"video/webm;codecs=vp9"});d(this,Gs,e),l(this,Gs).start(0);const i=[];l(this,Gs).ondataavailable=t=>{t.data.size>0&&i.push(t.data)},d(this,Fs,i)}async onExportImageFrame(t){try{if(this.canceled)return;const{canvas:e,imageBuffers:i,startTime:r,oldTotalTime:s,newTotalTime:n}=t;w(this.player),w(l(this,ks));const o=l(this,js)+1;this.stage=sn,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:o}),l(this,Ts).loggerInTranscoding&&Rr("log",[...fn,"converting log"],`converting ${o} frame image`),o>=1&&this.forwardPlayerTime(o/this.config.fps+r),os(l(this,ks),e,this.config.backgroundColor);let a=e;l(this,Ts).mediaType===en.AlphaMaskVideo&&(w(l(this,Ts).extraCanvas),function(t,e){e.width=2*t.width,e.height=t.height;const i=t.getContext("2d");if(!i)throw new Error("inputCtx is null");const r=e.getContext("2d");if(!r)throw new Error("ctx is null");r.clearRect(0,0,e.width,e.height);const s=i.getImageData(0,0,t.width,t.height),n=i.getImageData(0,0,t.width,t.height),o=s.data;for(let t=0;t<o.length;t+=4){const e=Math.max(0,(o[t+3]??0)-5)/250*255;e<=0?(o[t]=0,o[t+1]=0,o[t+2]=0,o[t+3]=255):(o[t]=(o[t]??0)*e/255,o[t+1]=(o[t+1]??0)*e/255,o[t+2]=(o[t+2]??0)*e/255,o[t+3]=255)}r.putImageData(s,0,0);const a=n.data;for(let t=0;t<a.length;t+=4){const e=Math.max(0,(a[t+3]??0)-5)/250*255;a[t]=e,a[t+1]=e,a[t+2]=e,a[t+3]=255}r.putImageData(n,t.width,0)}(e,l(this,Ts).extraCanvas),a=l(this,Ts).extraCanvas);const c=await async function(t,e,i){return new Promise((r,s)=>{t.toBlob(t=>{t?r(t.arrayBuffer()):s("toBlob failed")},e,i)})}(a,`image/${this.transImageType}`,1),h=`image-${as(o,4)}.${this.transImageType}`;l(this,Ts).mediaType===en.Images?i.push(c):l(this,Ts).mediaType===en.WebP?(w(l(this,Us)),l(this,Us).FS.writeFile(h,new Uint8Array(c))):(w(l(this,Ms)),await l(this,Ms).writeFile(h,new Uint8Array(c))),l(this,Ls).push(h);if(o===l(this,Ns)){this.player?.pause(),await new Promise(t=>{window.requestAnimationFrame(t)});let t=null,e=null;if("Images"===l(this,Ts).mediaType)t=await this.getImagesZip(this.config.name,i);else if("WebP"===l(this,Ts).mediaType)t=this.getWebP();else if([en.MP4,en.APNG,en.GIF,en.AlphaMaskVideo].includes(l(this,Ts).mediaType)){const{data:i,extra:r}=await this.getVideoByType(s,n)??null;t=i,e=r}t&&(Rr("log",[...fn,"done"],"success"),this.emit("done",l(this,Os),!0,t,e))}else d(this,Bs,window.requestAnimationFrame(()=>{this.canceled||this.onExportImageFrame({canvas:e,imageBuffers:i,startTime:r,oldTotalTime:s,newTotalTime:n})}))}catch(t){Rr("log",[...fn,"onExportImageFrame","failed"],t),this.emit("done",l(this,Os),!1,void 0,void 0)}}async onExportWebMFrame(t){try{if(this.canceled)return;w(this.player),w(l(this,ks));const e=l(this,js)+1;if(this.stage=sn,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:e}),l(this,Ts).loggerInTranscoding&&Rr("log",[...fn,"converting log"],`converting ${e} frame image`),os(l(this,ks),t,this.config.backgroundColor),1===e&&(this.player.play(),this.onRecordWebM(t)),e<l(this,Ns))d(this,Bs,window.requestAnimationFrame(()=>{this.canceled||this.onExportWebMFrame(t)}));else{this.player?.pause(),l(this,Gs)?.stop();const t=new Blob(l(this,Fs),{type:"video/webm"}),e=await t.arrayBuffer();Rr("log",[...fn,"done"],"success"),this.emit("done",l(this,Os),!0,e,void 0)}}catch(t){Rr("log",[...fn,"done"],"failed",t),this.emit("done",l(this,Os),!1,void 0,void 0)}}async runTask(t){try{if(this.canceled)return;w(this.player),w(l(this,ks));const{size:e,startTime:i,containerCanvas:r}=t,{oldTotalTime:s,newTotalTime:n}=this.config,[o,a]=e;if(l(this,ks).width=o,l(this,ks).height=a,r.width=o,r.height=a,this.player.resize(),d(this,Ls,[]),[en.MP4,en.APNG,en.Images,en.WebP,en.GIF,en.AlphaMaskVideo].includes(l(this,Ts).mediaType)){const t={canvas:r,imageBuffers:[],startTime:i,oldTotalTime:s,newTotalTime:n};await this.onExportImageFrame(t)}else"WebM"===l(this,Ts).mediaType&&await this.onExportWebMFrame(r)}catch(t){Rr("log",[...fn,"run task error"],t),this.emit("done",l(this,Os),!1,void 0,void 0)}}clearTaskInfo(){d(this,Ws,0),d(this,Os,void 0),d(this,Hs,[]),d(this,js,0),d(this,Ns,0),d(this,Ks,0),d(this,$s,0),d(this,Ys,[]),d(this,Js,[]),d(this,Xs,[]),d(this,Zs,!0)}clearFFMpegCore(){if(l(this,Ms)){for(const t of l(this,Ls))t&&l(this,Ms).deleteFile(t);d(this,Ls,[]),l(this,Ms).terminate(),d(this,Ms,void 0)}}clearImage2WebPCore(){l(this,Us)&&(l(this,Us).FS.quit(),d(this,Us,void 0))}clearMediaRecorder(){l(this,Gs)&&(l(this,Gs).stop(),d(this,Gs,void 0)),d(this,Fs,[])}clearAllListeners(){for(const t of this.getListeners("ready"))this.off("ready",t);for(const t of this.getListeners("progress"))this.off("progress",t);for(const t of this.getListeners("done"))this.off("done",t);for(const t of this.getListeners("finish"))this.off("finish",t);for(const t of this.getListeners("error"))this.off("error",t)}onCancel(){this.canceled||(this.onFinish(!1,l(this,Ys),l(this,Js),l(this,Xs)),this.status=tn,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),Rr("log",fn,"canceled"))}async onExport(t){const e=t.length;try{if(this.status===qs)return Rr("log",[...fn],"readying"),void this.on("ready",()=>{this.onExport(t)});if(this.status===tn){if(await this.onInit()===tn)throw new Error("init environment failed")}if(this.clearTaskInfo(),!l(this,ks)){const t=document.createElement("canvas");t.dataset.key="player-canvas",d(this,ks,t)}this.player||(this.player=new u({canvas:l(this,ks),pixelRatio:2,transparentBackground:!0,env:"editor",renderOptions:{willCaptureImage:!0}}),this.player.on("rendererror",t=>{this.onError(t)}),this.player.on("webglcontextlost",t=>{this.onError(t)}));let e=null;e??(e=document.querySelector('canvas[data-key="container-canvas"]')),e??(e=document.createElement("canvas")),e.dataset.key="container-canvas",e.style.display="none",this.setProgress({allTaskFrames:this.getAllTaskFrames(t)});const i=[],r=[],s=[];let n=!0;for(const[o,a]of t.entries()){if(this.canceled){n=!1;break}d(this,Ws,o),d(this,Os,a);const{size:t,scene:c}=a;await new Promise(async h=>{try{if(!this.player)throw new Error("player not found");Rr("log",[...fn,"export"],"start",a),hs(this.player);const l=JSON.parse(JSON.stringify(c));await this.player.loadScene(l,{env:"editor",autoplay:!1});const p=this.config.oldTotalTime,d=0;this.player.pause(),this.setProgress({currentTaskFrameIndex:0,currentTaskTotalFrames:Math.round(p*this.config.fps)});const m=(t,e,c,l)=>{this.off("done",m),i[o]=a,e&&c?(r[o]=c,s[o]=l??null):n=!1,h()};this.on("done",m);const g={size:t,startTime:d,containerCanvas:e};await this.runTask(g)}catch(t){Rr("log",[...fn,"export error"],t),n=!1,h()}})}d(this,Ys,i),d(this,Js,r),d(this,Xs,s),d(this,Zs,n)}catch(t){this.onError(t),d(this,Zs,!1)}e>=1&&l(this,Zs)?this.onFinish(!0,l(this,Ys),l(this,Js),l(this,Xs)):this.onFinish(!1,l(this,Ys),l(this,Js),l(this,Xs))}dispose(){this.status=tn,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),this.player?.dispose(),this.player=void 0,l(this,ks)?.remove(),d(this,ks,void 0),d(this,Vs,void 0),d(this,Rs,void 0)}};Ts=new WeakMap,Es=new WeakMap,Bs=new WeakMap,ks=new WeakMap,Ms=new WeakMap,Us=new WeakMap,Gs=new WeakMap,Fs=new WeakMap,Rs=new WeakMap,Vs=new WeakMap,Ls=new WeakMap,Ws=new WeakMap,Os=new WeakMap,Hs=new WeakMap,js=new WeakMap,Ns=new WeakMap,Ks=new WeakMap,$s=new WeakMap,Ys=new WeakMap,Js=new WeakMap,Xs=new WeakMap,Zs=new WeakMap;var wn={[en.MP4]:{suffix:"mp4",error:"export mp4 is error"},[en.GIF]:{suffix:"gif",error:"export gif is error"},[en.Images]:{suffix:"zip",error:"export Images is error"},[en.APNG]:{suffix:"apng",error:"export APNG is error"},[en.WebP]:{suffix:"webp",error:"export WebP is error"},[en.AlphaMaskVideo]:{suffix:"mp4",error:"export AlphaMaskVideo is error"},[en.WebM]:{suffix:"webm",error:"export WebM is error"}},vn=class extends x{constructor(t){super(),c(this,"_options"),c(this,"_status",ln),c(this,"_exportMedia"),this._options=t,this._exportMedia=new xn(t)}get status(){return this._status}setOptions(t){const e=ir({},this._options,t);this._options=e,this._exportMedia.setOptions(e)}downloadByMediaBuffers(t,e,i){const{suffix:r,error:s}=wn[this._options.mediaType];if(!e?.length||!r)return void Rr("info",["@vvfx/sdk","downloadByMediaBuffers is error","buffers or suffix is empty"]);const n=t[0]?.folderName,o=new As;e.forEach((e,s)=>{if(!e)return;const{name:n}=t[s]??{};n&&(o.file(`${n}.${r}`,e),i?.[s]?.byteLength&&o.file(`${n}.jpeg`,i[s]))}),o.generateAsync({type:"blob"}).then(t=>{!function(t,e,i="application/octet-stream"){const r=new Blob(Array.isArray(t)?t:[t],{type:i}),s=URL.createObjectURL(r),n=document.createElement("a");n.href=s,n.download=e,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(s)}(t,`${n}.zip`,"application/zip")}).catch(t=>{Rr("error",["@vvfx/sdk"],s??"export media is error",t)})}onExportProgress(t){this.emit("progress",t)}onExportDone(t,e,i,r){this.emit("done",t,e,i,r)}onExportError(t){this._status=mn,Rr("error",["@vvfx/sdk"],"export is error",t)}onExport(t){this._status=pn,this._exportMedia.onExport(t),this._exportMedia.on("progress",this.onExportProgress.bind(this)),this._exportMedia.on("done",this.onExportDone.bind(this)),this._exportMedia.once("finish",(e,i,r,s)=>{this._status=e?dn:mn,this.emit("complete",e,i,r,s),!this._options.isOutputBuffer&&r&&0!==r.length&&this.downloadByMediaBuffers(t,r,s)}),this._exportMedia.on("error",this.onExportError.bind(this))}onCancel(){this._status=mn,this._exportMedia.onCancel(),this.emit("complete",!1,[],[],[])}dispose(){this._exportMedia.dispose()}},In=class{constructor(){c(this,"enabled",!0),c(this,"_player"),c(this,"_container"),this._container=document.createElement("canvas"),this._player=new u({canvas:this._container,manualRender:!0,pixelRatio:2,env:"editor",renderOptions:{willCaptureImage:!0}})}async generate(t,e,i,r,s){if(!this.enabled)return void console.warn("Screen shot is not opened, use #SDK.setConfig() open this feature.");hs(this._player);const[n,o]=e;this._container.width=n,this._container.height=o,this._player.resize();const a=JSON.parse(JSON.stringify(t));await this._player.loadScene(a),this._player.gotoAndStop(r);const[c,h]=i,l=document.createElement("canvas");l.width=c,l.height=h;const p=l.getContext("2d");s??(s=[255,255,255,1]),p&&(p.fillStyle=`rgba(${s.join(",")})`,p.fillRect(0,0,c,h),this.drawImageCover(p,this._player.canvas,0,0,c,h,.5,.5));const d=l.toDataURL("image/png");return hs(this._player),d}dispose(){this._player.dispose()}drawImageCover(t,e,i,r,s,n,o,a,c){2===arguments.length&&(i=r=0,s=t.canvas.width,n=t.canvas.height),o="number"==typeof o?_(o,0,1):.5,a="number"==typeof a?_(a,0,1):.5,c??(c={left:0,top:0,width:e instanceof HTMLVideoElement?e.videoWidth:e.width,height:e instanceof HTMLVideoElement?e.videoHeight:e.height});const h=c.width,l=c.height,p=Math.min(s/h,n/l);let d=h*p,m=l*p,g=1;d<s&&(g=s/d),Math.abs(g-1)<1e-14&&m<n&&(g=n/m),d*=g,m*=g;const u=Math.max(h/(d/s),0),y=Math.max(l/(m/n),0),f=Math.min((h-u)*o,h),x=Math.min((l-y)*a,l);t.drawImage(e,f+c.left,x+c.top,u,y,i,r,s,n)}},Pn={topAdsorption:"T",leftAdsorption:"L",rightAdsorption:"R",bottomAdsorption:"B",centerAdsorption:"C",bottomCenterAdsorption:"BC"},bn=class{constructor(){c(this,"_player"),c(this,"_container"),c(this,"size",[0,0]),this._container=document.createElement("canvas"),this._player=new u({canvas:this._container,manualRender:!0})}async adjustment(t,e,i,r,s,n){if(!Dn.config.sizeAdaptConfig.enabled)return console.warn("Size adapt is not opened, use #SDK.setConfig() open this feature."),t;this._player??(this._player=new u({canvas:this._container,manualRender:!0})),s??(s=[0,0,0,0]),n??(n=i[0]<i[1]?"y":"x"),this.size=[...r],this._container.width=this.size[0],this._container.height=this.size[1],hs(this._player),this._player.resize();const o=JSON.parse(JSON.stringify(t));await this._player.loadScene(o,{reusable:!0,autoplay:!1}),this._player.gotoAndStop(e);const a=this._player.getCompositions()[0];if(a){const[e,o]=r,c=i[0]/i[1],h=e/o;c>h&&this.keepDistribute(t,a,h/c,r);const[l,p,d,m]=s,g=e-d-m,u=o-l-p,y=[(d-m)/2,(l-p)/2],f=(new W).setFromCenterAndSize(new z(e,o).divide(2),new z(e,o)),x=(new W).setFromCenterAndSize(new z(e,o).divide(2).add(new z(...y)),new z(g,u));this.keepAdsorption("topAdsorption",t,a,y,f,x,n),this.keepAdsorption("bottomAdsorption",t,a,y,f,x,n),this.keepAdsorption("leftAdsorption",t,a,y,f,x,n),this.keepAdsorption("rightAdsorption",t,a,y,f,x,n),this.keepAdsorption("centerAdsorption",t,a,y,f,x,n),this.keepDoubleAdsorption("bottomCenterAdsorption",t,a,y,f,x,n)}return t}keepDistribute(t,e,i,r){const s=t=>{const i=(new N).copyFrom(e.camera.getViewProjectionMatrix());return(new z).copyFrom(t.applyMatrix(i).toVector2()).toViewCoordinate(r[0],r[1])};["topAdsorption","centerAdsorption","bottomAdsorption"].forEach(n=>{e.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===Pn[n]&&!t.parentId).forEach(n=>{const o=e.items.filter(t=>t.parentId===n.getInstanceId()),a=o.find(t=>"check-area"===t.name),c=a?this.getViewBoxByHeadlessPlayerItem(a,[],s):this.getViewBoxByHeadlessPlayerItem(n,o,s),h=n.transform.position.clone(),l=c.getCenter(),p=new z(...r.map(t=>t/2)),d=l.y-p.y;((t,i,s)=>{const{z:n}=t.transform.getWorldPosition(),{x:o,y:a}=e.camera.getInverseVPRatio(n);t.transform.translate(2*i*o/r[0],-2*s*a/r[1],0)})(n,0,d/i-d),n.transform.updateLocalMatrix();const m=n.transform.position.clone().subtract(h).toArray();this.transformSceneItem(t,n.getInstanceId(),"position",m)})})}keepAdsorption(t,e,i,r,s,n,o){const{x:a,y:c}=s.getSize(),h=(t,e,r)=>{const{z:s}=t.transform.getWorldPosition(),{x:n,y:o}=i.camera.getInverseVPRatio(s);t.transform.translate(2*e*n/a,-2*r*o/c,0)},l=t=>{const e=(new N).copyFrom(i.camera.getViewProjectionMatrix());return(new z).copyFrom(t.applyMatrix(e).toVector2()).toViewCoordinate(a,c)},p=Pn[t];i.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===p&&!t.parentId).forEach(s=>{const a=i.items.filter(t=>t.parentId===s.getInstanceId()),c=a.find(t=>"check-area"===t.name),p=s.transform.position.clone(),d=["leftAdsorption","rightAdsorption"].includes(t)?"x":"y",m=["leftAdsorption","topAdsorption"].includes(t)?1:-1,g=["leftAdsorption","topAdsorption"].includes(t)?"min":"max",u=["leftAdsorption","topAdsorption"].includes(t)?"max":"min",y=3===s.name.split("-").length,f=Number(s.name.split("-")[1]),x=new z,w=[1,1],v=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(s,a,l);h(s,...r);const I="y"===o?"x":"y";v.getSize()[I]>n.getSize()[I]&&(w[0]=n.getSize()[I]/v.getSize()[I],w[1]=n.getSize()[I]/v.getSize()[I],s.scale(...w,1)),s.transform.updateLocalMatrix();const P=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(s,a,l),b=new z;if(!n.containsBox(P)){const{min:t,max:e}=P,{min:i,max:r}=n;b.x+=t.x<i.x?i.x-t.x:0,b.x+=e.x>r.x?r.x-e.x:0,b.y+=t.y<i.y?i.y-t.y:0,b.y+=e.y>r.y?r.y-e.y:0,h(s,...b.toArray()),s.transform.updateLocalMatrix()}const S=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(s,a,l);if(!Number.isNaN(f)&&y)if("centerAdsorption"!==t){const t=Math.abs(S[u][d]-n[g][d]),e=n.getSize()[d]*f;t>e&&(x[d]=(e-t)*m,h(s,...x.toArray()),s.transform.updateLocalMatrix())}else{const t=S.getSize()[o],e=n.getSize()[o];if(t/e>f){const i=e*f/t;s.scale(i,i,1),w[0]*=i,w[1]*=i}}const C=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(s,a,l),D=i.items.filter(t=>"T"===t.name.split("-")[0]?.toLocaleUpperCase()&&!t.parentId),A=new W;if(D.forEach(t=>{const e=i.items.filter(e=>e.parentId===t.getInstanceId()),r=e.find(t=>"check-area"===t.name),s=r?this.getViewBoxByHeadlessPlayerItem(r,[],l):this.getViewBoxByHeadlessPlayerItem(t,e,l);A.union(s)}),!A.isEmpty()&&A.max.y>C.min.y)if("centerAdsorption"===t){const t=A.max.y-C.min.y;h(s,0,t),s.transform.updateLocalMatrix()}else if(["leftAdsorption","rightAdsorption"].includes(t)){const t=C.getSize().y,e=n.getSize().y-(A.max.y-n.min.y);let i=A.max.y-C.min.y;if(t>e){const r=e/t;w[0]*=r,w[1]*=r,s.scale(r,r,1),s.transform.updateLocalMatrix(),i-=(t-e)/2}h(s,0,i),s.transform.updateLocalMatrix()}const _=s.transform.position.clone().subtract(p).toArray();this.transformSceneItem(e,s.getInstanceId(),"position",_),this.transformSceneItem(e,s.getInstanceId(),"scale",w)})}keepDoubleAdsorption(t,e,i,r,s,n,o){const{x:a,y:c}=s.getSize(),h=(t,e,r)=>{const{z:s}=t.transform.getWorldPosition(),{x:n,y:o}=i.camera.getInverseVPRatio(s);t.transform.translate(2*e*n/a,-2*r*o/c,0)},l=t=>{const e=(new N).copyFrom(i.camera.getViewProjectionMatrix());return(new z).copyFrom(t.applyMatrix(e).toVector2()).toViewCoordinate(a,c)},p=Pn[t];i.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===p&&!t.parentId).forEach(t=>{const s=i.items.filter(e=>e.parentId===t.getInstanceId()),a=s.find(t=>"check-area"===t.name),c=t.transform.position.clone(),p=3===t.name.split("-").length,d=Number(t.name.split("-")[1]),m=[1,1],g=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,s,l);h(t,...r);const u="y"===o?"x":"y";g.getSize()[u]>n.getSize()[u]&&(m[0]=n.getSize()[u]/g.getSize()[u],m[1]=n.getSize()[u]/g.getSize()[u],t.scale(...m,1)),t.transform.updateLocalMatrix();const y=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,s,l);if(!Number.isNaN(d)&&p){const e=y.getSize()[u],i=n.getSize()[u];if(e/i>d){const r=i*d/e;t.scale(r,r,1),m[0]*=r,m[1]*=r}}const f=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,s,l),x=new z;if(!n.containsBox(f)){const{min:e,max:i}=f,{min:r,max:s}=n;x.x+=e.x<r.x?r.x-e.x:0,x.x+=i.x>s.x?s.x-i.x:0,x.y+=e.y<r.y?r.y-e.y:0,x.y+=i.y>s.y?s.y-i.y:0,h(t,...x.toArray()),t.transform.updateLocalMatrix()}const w=t.transform.position.clone().subtract(c).toArray();this.transformSceneItem(e,t.getInstanceId(),"position",w),this.transformSceneItem(e,t.getInstanceId(),"scale",m)})}getViewBoxByHeadlessPlayerItem(t,e,i){const r=new W,{transform:s,composition:n}=t;switch(t.type){case m.ItemType.sprite:case m.ItemType.plugin:case m.ItemType.video:case m.ItemType.richtext:case m.ItemType.text:case m.ItemType.shape:{s.setValid(!0),s.updateLocalMatrix();const{size:t}=s,o=(new N).copyFrom(n?.transform.getWorldMatrix()??new N).invert().multiply(s.getWorldMatrix()),{x:a,y:c}=t.clone().divide(2),h=new j(a,c,0).applyMatrix(o),l=new j(a,-c,0).applyMatrix(o),p=new j(-a,-c,0).applyMatrix(o),d=new j(-a,c,0).applyMatrix(o),m=i(h).round(2),g=i(l).round(2),u=i(p).round(2),y=i(d).round(2);r.setFromVec2Array([m,g,u,y]);const f=e?.map(t=>{const e=n?.items.filter(e=>e.parentId===t.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(t,e,i)});f&&f.map(t=>r.union(t));break}case m.ItemType.null:{const t=e?.map(t=>{const e=n?.items.filter(e=>e.parentId===t.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(t,e,i)});t&&t.map(t=>r.union(t));break}}return r}transformSceneItem(t,e,i,r){const s=t.items.find(t=>t.id===e);switch(i){case"position":{const t=r;Array.isArray(r)&&3===t.length&&s?.transform&&(s.transform.position.x+=t[0],s.transform.position.y+=t[1],s.transform.position.z+=t[2]);break}case"rotation":if(Array.isArray(r)&&3===r.length){const t=r;s?.transform&&(s.transform.eulerHint.x+=t[0],s.transform.eulerHint.y+=t[1],s.transform.eulerHint.z+=t[2])}break;case"size":Array.isArray(r)&&2===r.length&&s?.transform&&(s.transform.scale.x*=r[0],s.transform.scale.y*=r[1])}}dispose(){this._player?.dispose()}},Sn=class{constructor(){c(this,"index",-1),c(this,"operations",[]),c(this,"oldData")}get canUndo(){return this.index>-1}get canRedo(){return this.index<this.operations.length-1}push(t){this.index++,this.operations[this.index]=t,this.operations.length=this.index+1}undo(){if(this.index<0)return;const t=this.operations[this.index];return this.index--,t}redo(){if(!(this.index>=this.operations.length-1))return this.index++,this.operations[this.index]}clear(){this.operations=[]}},Cn=class t{constructor(e,i="template"){c(this,"_eventEmitter",new x),c(this,"_pageData"),c(this,"_screenShot"),c(this,"_exporter"),c(this,"_pageDataUtils"),c(this,"_sizeAdapt"),c(this,"_gestureHandler"),c(this,"disposables",[]),c(this,"_isSwitchScene",!1),c(this,"_undoRedo",new Sn),c(this,"player"),c(this,"_container"),c(this,"_playerContainer"),c(this,"on",this._eventEmitter.on),this._container=e,t.config.mode=i,this.initPlayer(i),this._eventEmitter.on("pageDataChange",t=>{this._pageData=t,this._gestureHandler.render()}),this._eventEmitter.on("preSelectedItemChange",t=>{w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=t,this._gestureHandler.render()}),this._eventEmitter.on("selectedViewChange",t=>{w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.view=t;const e=this.getViewProperty(t);this._gestureHandler.ignoreInteraction=!!e?.ignoreInteraction}),this._eventEmitter.on("sdkConfigChange",(t,e)=>{this.setExportConfig(e.exportConfig)}),this._eventEmitter.on("itemCreate",()=>{this._gestureHandler.closeItemCreateGizmo()}),this._pageDataUtils=new zs(this.player,this._playerContainer,this._eventEmitter,this),this._gestureHandler=new Qr(e),this._screenShot=new In,this._sizeAdapt=new bn;const r=new ResizeObserver(()=>{if(!this._pageData)return;const i=[e.offsetWidth,e.offsetHeight],r=this.getViewProperty(this._pageData.activeData.view??0);if(r){if("template"===t.config.mode){const{size:t}=r,[e,s]=this._pageDataUtils.getPlayerSizeByParent(i,t);this._playerContainer.style.width=`${e}px`,this._playerContainer.style.height=`${s}px`,this.player.resize()}this._pageDataUtils.refreshInteractionParam(),this._gestureHandler.resize()}});r.observe(e),this.disposables.push(()=>{r.disconnect()})}get container(){return this._container}get pageData(){return this._pageData}get initExporterEnabled(){return"template"===t.config.mode&&t.config.exportConfig.enabled}get exportStatus(){return this?._exporter?.status}get undoRedo(){return this._undoRedo}get exportOptions(){if(!this.pageData)return[];const t=this.pageData.viewProperties.filter(t=>!t.ignoreInteraction),e=t[0]?.scene?.compositions?.[0]?.name??"videos",i=[];return t.map((t,r)=>{const{size:s,scene:n,export:{name:o,...a}}=t,c=s?.[0]&&s?.[1]?` (${r+1})_${s[0]}×${s[1]}`:` (${r+1})`;let h="";return h=o?function(t,e){if(!e.includes(t))return t;let i=1,r=`${t} (${i})`;for(;e.includes(r);)i++,r=`${t} (${i})`;return r}(o,i):`${e}${c}`,i.push(h),{folderName:e,name:h,size:s,scene:JSON.parse(JSON.stringify(n)),...a}})}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(t=>{t()})}initPlayer(e){const i=document.createElement("div"),[r,s]="editor"===e?[this._container.clientWidth,this._container.clientHeight]:[this._container.offsetWidth,this._container.offsetHeight];this._playerContainer=i,this._playerContainer.id="player-container",this._playerContainer.style.position="absolute",this._playerContainer.style.backgroundRepeat="no-repeat",this._playerContainer.style.backgroundPosition="center center",this._playerContainer.style.width=`${r}px`,this._playerContainer.style.height=`${s}px`,this._container.appendChild(i),this.player=new u({container:this._playerContainer,pixelRatio:2,interactive:!0,env:"editor"}),this.player.on("update",()=>{if(w(this._pageData,"You must call SDK#run() first"),this._isSwitchScene)return;const t=this.player.getCompositions()[0]?.time;if(this._pageData.playing)if(void 0!==t)this._pageData.time===t&&this.player.pause(),this._pageData.time=t,this._pageDataUtils.refreshPageTime(t);else{this._pageData.playing=!1,this.setPlayProgress(100);const t=this.getViewProperty(this._pageData.activeData.view??0)?.scene,e=t?.compositions.find(e=>e.id===t.compositionId);this._pageData.time=e?.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.player.on("rendererror",t=>{console.error("player render error ",t)}),this.player.on("webglcontextlost",()=>{this._eventEmitter.emit("viewLost");const e=this.player?.canvas;e&&e.parentElement?.removeChild(e),this.player.pause(),this.player.dispose(),this._gestureHandler.dispose(),setTimeout(async()=>{this.initPlayer(t.config.mode),this._pageDataUtils=new zs(this.player,this._playerContainer,this._eventEmitter,this),this._gestureHandler=new Qr(this._container),await this.runByPageData(this.pageData),this._eventEmitter.emit("viewRebuildFinish")},300)})}setSDKMode(e){if(e===t.config.mode)return;t.config.mode=e;const[i,r]="template"===e?[this._container.offsetWidth,this._container.offsetHeight]:[document.documentElement.clientWidth,document.documentElement.clientHeight];if(!this._playerContainer){const t=document.createElement("div");this._container.appendChild(t),this._playerContainer=t,this._playerContainer.id="player-container",this._playerContainer.style.position="absolute",this._playerContainer.style.backgroundRepeat="no-repeat",this._playerContainer.style.backgroundPosition="center center"}"editor"===e&&(this._playerContainer.style.left="0px",this._playerContainer.style.top="0px"),this._playerContainer.style.width=`${i}px`,this._playerContainer.style.height=`${r}px`,this.player??(this.player=new u({container:this._playerContainer,interactive:!0,pixelRatio:2,env:"editor"})),this.player.resize()}async getInitParam(t){const e=JSON.parse(JSON.stringify(t));if("editor"===e.mode){const t=[this._playerContainer.offsetWidth,this._playerContainer.offsetHeight];return{scene:ls(t),viewParams:[{size:t,export:{audioEnable:!1}}],options:{asyncMode:!1,safeAreaPreview:!1,adsorption:!0}}}{if("string"==typeof e.scene)try{const t=await fetch(e.scene,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}, statusText: ${t.statusText}`);const i=await t.json(),r=i.compositions.find(t=>t.id===i.compositionId)??i.compositions[0],s=e.viewParams?.length?e.viewParams:[{size:r.previewSize??[750,1624],export:{audioEnable:!1}}];return{...e,scene:i,viewParams:s}}catch(t){throw new Error(`Failed to fetch scene data from ${e.scene}: ${t instanceof Error?t.message:String(t)}`)}const t=e.scene.compositions.find(t=>t.id===e.scene.compositionId)??e.scene.compositions[0],i=e.viewParams?.length?e.viewParams:[{size:t.previewSize??[750,1624],export:{audioEnable:!1}}];return{...e,scene:e.scene,viewParams:i}}}initExporter(t){this.initExporterEnabled&&(this._exporter=new vn(t),this._exporter.on("progress",t=>{this._eventEmitter.emit("exportProgress",t)}),this._exporter.on("done",(t,e,i)=>{this._eventEmitter.emit("exportDone",t,e,i)}),this._exporter.on("complete",(t,e,i,r)=>{this._eventEmitter.emit("exportComplete",t,e,i,r)}))}async initSDK(e){var i;const{scene:r,viewParams:s,options:n}=e,o=[];if(t.config.pageConfig.staticPreview){const t=JSON.parse(JSON.stringify(r)),e=t.compositions.find(e=>e.id===t.compositionId)??t.compositions[0];if(e){const[i,r]=e.previewSize??[1080,1920],s=e.duration??0;o.push({size:[i,r],safeArea:[0,0,0,0],previewSafeAreas:[],id:0,scene:t,ignoreInteraction:!0,export:{time:s,audioEnable:!1}})}}for(let e=0;e<s.length;e++){const n=s[e];if(!n)continue;let a=JSON.parse(JSON.stringify(r));const c=a.compositions.find(t=>t.id===a.compositionId)??a.compositions[0];w(c);const h=c.previewSize??[750,1624],l=h,p=n.size??h;c.previewSize=p;const d=c.duration??0,m=n.safeArea??[0,0,0,0];t.config.sizeAdaptConfig.enabled&&(a=await this._sizeAdapt.adjustment(a,d,l,p,m,n.adaptionDirection)),(i=n.export).time??(i.time=d),o.push({...n,size:p,safeArea:m,previewSafeAreas:[...n.previewSafeAreas??[]],id:e+1,scene:a,ignoreInteraction:!1})}const a=o[0]?.scene;if(!a)return void console.warn("SDK need one view property at least.");const c=a.compositions.find(t=>t.id===a.compositionId)??a.compositions[0],h={...n,zoom:1,translation:[0,0],asyncMode:n.asyncMode??!1},l=(c?.duration??0)-.1,p=t.config.pageConfig.staticPreview?1:0;this._pageData={scene:JSON.parse(JSON.stringify(r)),time:l,property:h,activeData:{view:o[p].id,selectedItems:[]},items:[],viewProperties:o,playing:!1},this._pageDataUtils.init(),await this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),this._gestureHandler.ignoreInteraction=!!o[1]?.ignoreInteraction,t.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(this._pageData.activeData.view),this._pageDataUtils.refreshPageTime(l)}async run(e){this.setSDKMode(e.mode),t.config.pageConfig.staticPreview="template"===e.mode&&t.config.pageConfig.staticPreview;const i=await this.getInitParam(e);await this.initSDK(i),this._eventEmitter.emit("pageDataChange",this.pageData),this.initExporter(t.config.exportConfig)}getActiveItems(){return w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.selectedItems}setPreSelectedItem(t){w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=t}getPreSelectedItem(){return w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem??""}setSelectedItems(t){this._pageDataUtils.clearPreSelectedItem(),this._pageDataUtils.clearSelectedItems(),this._pageDataUtils.addSelectedItems([...t])}async setItemProperty(t){w(this._pageData,"You must call SDK#run() first");const e=this.getViewProperty(this._pageData.activeData.view??0)?.ignoreInteraction;e?console.warn("Static scene cannot change."):(await this._pageDataUtils.setItemProperty(t),this._gestureHandler.render(),this._eventEmitter.emit("pageDataChange",this.pageData))}async generateScreenShot(t,e=[300,400],i,r){w(this._pageData,"You must call SDK#run() first");const s=this.getViewProperty(t);if(!s)return"";const{scene:n,size:[o,a]}=s,c=n.compositionId,h=n.compositions.find(t=>t.id===c);i??(i=h?.duration??0);const l=JSON.parse(JSON.stringify(n));return await this._screenShot.generate(l,[o,a],e,i,r)}async switchScene(t){if(w(this._pageData,"You must call SDK#run() first"),t===this._pageData.activeData.view)return;this._isSwitchScene=!0;const e=this._pageData.viewProperties[t];if(e){const t=this._pageData.playing;this._pageData.activeData={view:e.id,selectedItems:[],preSelectedItem:void 0},await this._pageDataUtils.loadScene(e.id),t&&(this._pageData.playing=t,this.player.gotoAndPlay(this._pageData.time))}else console.warn("target scene does not exist.");this._eventEmitter.emit("selectedViewChange",t),this._eventEmitter.emit("pageDataChange",this.pageData),this._isSwitchScene=!1}getPageConfig(){return w(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,translation:this._pageData.property.translation}}setPageConfig(e){w(this._pageData,"You must call SDK#run() first");const{adsorption:i,safeAreaPreview:r,zoom:s}=this._pageData.property;this._pageData.property={...this._pageData.property,...e},this._pageData.property.zoom!==s&&this._pageDataUtils.setPageZoom(this._pageData.property.zoom),i!==e.adsorption&&(t.config.gestureHandlerConfig.adsorptionGizmoEnabled=e.adsorption),r!==e.safeAreaPreview&&(t.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaEnabled=e.safeAreaPreview),this._gestureHandler.render()}async setPlayProgress(t){w(this._pageData,"You must call SDK#run() first");const e=(this.player.getCompositions()[0]?.getDuration()??2)*t/100;this._pageData.time=e;!this.player.getCompositions().length&&(hs(this.player),await this._pageDataUtils.loadScene(this._pageData.activeData.view??0));this._pageData.playing?this.player.gotoAndPlay(e):(this.player.gotoAndStop(e),this._eventEmitter.emit("progress",{duration:this.player.getCompositions()[0]?.getDuration()??2,time:e,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!0})),this._pageDataUtils.refreshPageTime(e)}getSDKItem(t){return this._pageDataUtils.getSDKItem(t)}getSDKItems(t){return t?t.map(t=>this.getSDKItem(t)).filter(t=>!!t):this.pageData?.items??[]}async setPlayState(t){w(this._pageData,"You must call SDK#run() first");const e="play"===t;if(this._pageData.playing!==e){if(this._pageData.playing=e,this._gestureHandler.ignoreInteraction=e,e){const t=this.player.getCompositions(),e=this.getViewProperty(this._pageData.activeData.view??0),i=JSON.parse(JSON.stringify(e.scene));await this.player.loadScene(i,{autoplay:!1}),this.player.gotoAndPlay(this._pageData.time),this.destroyCompositions(t)}else this.player.gotoAndStop(this._pageData.time);this._gestureHandler.render()}}getViewThumbnail(){return w(this._pageData,"You must call SDK#run() first"),this._pageData.viewProperties.map(async t=>({id:t.id,thumbnail:await this.generateScreenShot(t.id)}))}getViewScene(){return w(this._pageData,"You must call SDK#run() first"),this._pageData.viewProperties.map(t=>({id:t.id,thumbnail:t.scene}))}destroyCompositions(t){t.forEach(t=>{t.dispose();const e=this.player.getCompositions(),i=e.indexOf(t);i>-1&&e.splice(i,1)})}downloadByMediaBuffersOfExporter(t,e,i){w(this._exporter,"You must init exporter first"),this._exporter.downloadByMediaBuffers(t,e,i)}onExport(){t.config.exportConfig.enabled&&(w(this.pageData,"You must call SDK#run() first"),w(this._exporter,"You must init exporter first"),this._exporter.onExport(this.exportOptions))}cancelExport(){w(this._exporter,"You must init exporter first"),this._exporter.onCancel()}async loadPageData(t){w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData={view:this._pageData.viewProperties[this._pageData.viewProperties.length-1].id,selectedItems:[],preSelectedItem:void 0},this._pageData.viewProperties.push(...t.viewProperties),this._pageDataUtils.init(),await this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),await this._pageDataUtils.loadScene(this.pageData?.activeData.view??0),this._eventEmitter.emit("pageDataChange",this.pageData)}async runByPageData(t){const e=JSON.parse(JSON.stringify(t));e.property.zoom=1,e.property.translation=[0,0],this._pageData=e,this._pageDataUtils.init(),await 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.pageData)}async reloadPageDataByScene(t){w(this._pageData,"You must call SDK#run() first");let e=JSON.parse(JSON.stringify(t));if("string"==typeof e)try{const t=await fetch(e,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}, statusText: ${t.statusText}`);e=await t.json()}catch(t){throw new Error(`Failed to fetch scene data from ${e}: ${t instanceof Error?t.message:String(t)}`)}this._pageData.time=e.compositions.find(t=>t.id===e.compositionId)?.duration??2,this._pageData.viewProperties.forEach(t=>{t.scene=JSON.parse(JSON.stringify(e))}),this._pageDataUtils.init(),await 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(e,i){var r;w(this._pageData);const s=[],n=this._pageData.viewProperties[this._pageData.viewProperties.length-1]?.id??this._pageData.viewProperties.length-1;for(let o=0;o<e.length;o++){const a=e[o];if(!a)continue;let c=JSON.parse(JSON.stringify(i??this._pageData.scene));const h=c.compositions.find(t=>t.id===c.compositionId)??c.compositions[0];w(h);const{previewSize:l=[750,1624]}=h,p=l,d=a.size??l;h.previewSize=d;const m=h.duration??0,g=a.safeArea??[0,0,0,0];t.config.sizeAdaptConfig.enabled&&(c=await this._sizeAdapt.adjustment(c,m,p,d,g,a.adaptionDirection)),(r=a.export).time??(r.time=m),s.push({...a,size:d,safeArea:g,previewSafeAreas:[...a.previewSafeAreas??[]],id:n+1+o,scene:c,ignoreInteraction:!1})}this._pageData.viewProperties.push(...s),this._eventEmitter.emit("pageDataChange",this.pageData)}async deleteViewParams(t){t.sort((t,e)=>t-e);for(let e=0;e<t.length;e++){const i=t[e];w(this._pageData);const r=i-e,s=this._pageData.viewProperties.findIndex(t=>t.id===r);if(!0===this._pageData.viewProperties[s]?.ignoreInteraction){console.warn("target view ignore interaction, it can not be deleted.");continue}if(s<0){console.warn("Target view is not existed.");continue}this._pageData.viewProperties.splice(s,1);const n=this._pageData.activeData.view??0;r===n?(this._pageData.activeData.view=0,await this._pageDataUtils.loadScene(0)):r<n&&(this._pageData.activeData.view=n-1),this._pageData.viewProperties.forEach(t=>{t.id>r&&(t.id-=1)})}this._eventEmitter.emit("selectedViewChange",this._pageData?.activeData?.view??0),this._eventEmitter.emit("pageDataChange",this.pageData)}setExportParam(t,e){w(this._pageData),this._pageData.viewProperties.forEach(i=>{void 0!==e&&i.id!==e||Object.assign(i.export,t)})}setPageZoom(t,e,i){w(this._pageData),this._pageData.property.zoom=t,this._pageDataUtils.setPageZoom(this._pageData.property.zoom,e,i),this._gestureHandler.render()}setPageMove(t){w(this._pageData),this._pageData.property.translation=t.toArray(),this._pageDataUtils.setPageMove(t.clone()),this._gestureHandler.render()}setStaticPreviewEnabled(e){t.config.pageConfig.staticPreview=e}setStaticPreviewName(e){t.config.pageConfig.staticPreviewName=e}setAsyncEnabled(e){t.config.pageConfig.asncMode=e}setGroupVisibleEnabled(e){t.config.pageConfig.groupVisible=e}addFilterItemNames(e){"string"==typeof e?X(t.config.pageConfig.filterItemNames,e):e.forEach(e=>{X(t.config.pageConfig.filterItemNames,e)})}setPreferenceBackgroundColor(e){t.config.gestureHandlerConfig.preferenceGizmoConfig.markColor=e[0]<<16|e[1]<<8|e[2],t.config.gestureHandlerConfig.preferenceGizmoConfig.markAlpha=e[3]??.3,this._gestureHandler.render()}setSafeAreaColor(e){t.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaBoxColor=e[0]<<16|e[1]<<8|e[2],t.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaBoxAlpha=e[3]??.3,this._gestureHandler.render()}setSizeAdaptEnabled(e){t.config.sizeAdaptConfig.enabled=e}setScreenShotEnabled(e){t.config.screenShotConfig.enabled=e}setExportConfig(e){const i=ir({},t.config.exportConfig,e);t.config.exportConfig=i,this._exporter?this._exporter.setOptions(i):this.initExporter(i)}setSelectorGizmoPreSelectConfig(e,i){void 0!==e&&(t.config.gestureHandlerConfig.selectorGizmoConfig.preSelectedColor=e),void 0!==i&&(t.config.gestureHandlerConfig.selectorGizmoConfig.preSelectedWidth=i),this._gestureHandler.render()}setTranformGizmoWireframeConfig(e){void 0!==e.wireframeAlpha&&(t.config.gestureHandlerConfig.transformGizmoConfig.wireframeAlpha=e.wireframeAlpha),void 0!==e.wireframeColor&&(t.config.gestureHandlerConfig.transformGizmoConfig.wireframeColor=e.wireframeColor),void 0!==e.wireframeWidth&&(t.config.gestureHandlerConfig.transformGizmoConfig.wireframeWidth=e.wireframeWidth),this._gestureHandler.render()}getSDKConfig(){return t.config}setSDKConfig(e){const i=Object.assign({},t.config);this._eventEmitter.emit("sdkConfigChange",i,e),t.config=e}setSDKBackground(t,e){switch(t){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"),e&&(this._container.style.backgroundColor=e);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"),e&&(this._container.style.backgroundImage=`url(${e})`);break;case"chess-board":e??(e="#CCCCCC"),this._container.style.backgroundColor=e,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(t,e){return await this._pageDataUtils.addSpriteItem(t,!1,e)}async addVideoItem(t,e){return await this._pageDataUtils.addVideoItem(t,!1,e)}openPictureCutGizmo(){this._gestureHandler.openPictureCutGizmo()}closePictureCutGizmo(){this._gestureHandler.closePictureCutGizmo()}getCutInfo(){return this._gestureHandler.getCutInfo()}setCutBox(t,e){return this._gestureHandler.setCutBox(t,e)}openPictureExpandGizmo(){this._gestureHandler.openPictureExpandGizmo()}closePictureExpandGizmo(){this._gestureHandler.closePictureExpandGizmo()}getExpandInfo(){return this._gestureHandler.getExpandInfo()}setExpandBox(t,e){return this._gestureHandler.setExpandBox(t,e)}openMaskGizmo(t){this._gestureHandler.openMaskGizmo(t)}clearMaskGizmo(){this._gestureHandler.clearMaskGizmo()}closeMaskGizmo(){this._gestureHandler.closeMaskGizmo()}getMask(){return this._gestureHandler.getMask()}setMaskGizmoConfig(t){this._gestureHandler.setMaskGizmoConfig(t)}setMaskGizmoMode(t){this._gestureHandler.setMaskGizmoMode(t)}openLoadingGizmo(t,e,i){this._gestureHandler.openLoadingGizmo(t,e,i)}closeLoadingGizmo(t){this._gestureHandler.closeLoadingGizmo(t)}groupItems(t,e){return this._pageDataUtils.addGroupItem(t,e)}setItemParent(t,e){this._pageDataUtils.setItemParent(t,e)}deleteItemParent(t,e){this._pageDataUtils.deleteItemParent(t,e)}async addTextItem(t,e){return await this._pageDataUtils.addTextItem(t,e)}async addItemByCreateInfos(t,e=!1){if(e){return await this._pageDataUtils.asyncAddItemByCreateInfos(t)}return await this._pageDataUtils.addItemByCreateInfos(t)}deleteItems(t){if(w(this._pageData,"You must call SDK#run() first"),Array.isArray(t)){t.forEach(t=>{this._pageDataUtils.deleteItem(t)});const e=this._pageData.activeData.selectedItems.filter(e=>!t.includes(e));this._pageData.activeData.selectedItems=[...e],this._eventEmitter.emit("selectedItemChange",e)}else{this._pageDataUtils.deleteItem(t);const e=this._pageData.activeData.selectedItems.filter(e=>e!==t);this._pageData.activeData.selectedItems=[...e],this._eventEmitter.emit("selectedItemChange",e)}this._pageDataUtils.interactionUtils.refreshViewParam(),this._pageDataUtils.interactionUtils.refreshCameraParam(),this._pageData.items=[];const e=this._pageDataUtils.getCurrentComposition();this._pageDataUtils.addSDKItemsByItems(this._pageData.items,e.items),this._eventEmitter.emit("pageDataChange",this._pageData)}getItemCreateInfo(t){return this._pageDataUtils.getItemCreateInfo(t,!1)}getItemCreateInfos(t){const e=[];return t??(t=this._pageData?.items.map(t=>t.id)??[]),t.forEach(i=>{const r=this._pageDataUtils.getSDKItem(i),s=this._pageDataUtils.getItemCreateInfo(i,!(!r?.parentId||!t.includes(r?.parentId)));s&&e.push(s)}),e}async createScreenShotSceneByIds(t,e=0){const i=this._pageDataUtils.createScreenShotSceneByIds(t);if(!i)return;const r=i?.compositions[0]?.previewSize??[750,1624];return await this._screenShot.generate(i,r,r,e)}getChildrenIds(t){return this._pageDataUtils.getChildrenIds(t)}updateItemOrder(t,e){w(this._pageData,"You must call SDK#run() first");const i=this.getViewProperty(this._pageData.activeData.view??0)?.ignoreInteraction;i?console.warn("Static scene cannot change."):(this._pageDataUtils.updateItemOrder(t,e),this._gestureHandler.render())}exportJSON(t){w(this._pageData,"You must call SDK#run() first");const e=[];if(Array.isArray(t))t.forEach(t=>{const i=this.getViewProperty(t);i?e.push(i.scene):console.warn(`view id ${t} is not exsited.`)});else if(void 0!==t){const i=this.getViewProperty(t);i?e.push(i.scene):console.warn(`view id ${t} is not exsited.`)}else e.push(...this._pageData.viewProperties.map(t=>t.scene));return e}getViewBoxById(t){return this._pageDataUtils.getViewBoxById(t)}setItemExtension(t,e){w(this._pageData,"You must call SDK#run() first");const i=this._pageDataUtils.getSDKItem(t);return i?(Object.entries(e).forEach(([t,e])=>{i.setExtension(t,e)}),this._eventEmitter.emit("pageDataChange",this.pageData),!0):(console.warn(`Item ${t} not found`),!1)}getItemExtension(t,e){w(this._pageData,"You must call SDK#run() first");const i=this._pageDataUtils.getSDKItem(t);if(!i)return void console.warn(`Item ${t} not found`);if(!e||0===e.length)return i.getAllExtension();const r={};return e.forEach(t=>{i.hasExtension(t)&&(r[t]=i.getExtension(t))}),r}deleteItemExtensions(t,e){w(this._pageData,"You must call SDK#run() first");const i=this._pageDataUtils.getSDKItem(t);return i?(e.forEach(t=>{i.deleteExtension(t)}),this._eventEmitter.emit("pageDataChange",this.pageData),!0):(console.warn(`Item ${t} not found`),!1)}hasItemExtension(t,e){w(this._pageData,"You must call SDK#run() first");const i=this._pageDataUtils.getSDKItem(t);return!!i&&i.hasExtension(e)}getItemExtensionKeys(t){w(this._pageData,"You must call SDK#run() first");const e=this._pageDataUtils.getSDKItem(t);if(e)return e.getExtensionKeys();console.warn(`Item ${t} not found`)}getViewProperty(t){return this._pageDataUtils.getViewProperty(t)}pageMove(t){this._pageDataUtils.pageMove(new z(...t))}pageZoom(t,e){this._pageDataUtils.pageZoom(t,e?new z(...e):void 0)}setPictureCutGizmoLockScale(t){this._gestureHandler.setPictureCutGizmoLockScale(t)}setPictureExpandGizmoLockScale(t){this._gestureHandler.setPictureExpandGizmoLockScale(t)}viewportFit(t,e){this._pageDataUtils.viewportFit(t,e)}getItemBoxById(t){return this._pageDataUtils.getItemBoxById(t)}async setItemFontFamily(t,e,i){await this._pageDataUtils.setItemFontFamily(t,e,i),this._eventEmitter.emit("itemPropertyChange",{id:t,property:"fontFamily"})}createSceneByCreateInfos(t,e){return this._pageDataUtils.createSceneByCreateInfos(t,e.size,e.name)}setSpriteSize(t,e){this._pageDataUtils.setSpriteSize(t,e),this._gestureHandler.render()}setItemPropertyByCreateInfo(t){this._pageDataUtils.changeItemPropertyByCreateInfo(t),this._gestureHandler.render()}setTransformGizmoLockScale(t){this._gestureHandler.setTransformGizmoLockScale(t)}getViewBoxByBox(t){return this._pageDataUtils.getViewBoxByBox(t)}openSpriteTextEditGizmo(t){this._gestureHandler.openSpriteTextGizmo(t)}closeSpriteTextEditGizmo(){this._gestureHandler.closeSpriteTextEditGizmo()}setSpriteTextSelectedIndex(t,e){this._gestureHandler.setSpriteTextSelectedIndex(t,e)}setSpriteTextSelectedText(t,e,i){this._gestureHandler.setSpriteTextSelectedText(t,e,i)}getBoundingBoxByItemCreateInfo(t){return this._pageDataUtils.getBoundingBoxByCreateInfo(t)}getBoundingBoxByItemCreateInfos(t){return this._pageDataUtils.getBoundingBoxByCreateInfos(t)}setSpriteTextChangedState(t,e,i){this._gestureHandler.setSpriteTextChangedState(t,e,i)}setSpriteTextEditState(t,e,i){this._gestureHandler.setSpriteTextEditState(t,e,i)}getVideoItemPlayTime(t){return this._pageDataUtils.getVideoItemPlayTime(t)}setVideoItemPlayTime(t,e){this._pageDataUtils.setVideoItemPlayTime(t,e)}getPixelPositionByViewPosition(t){return this._pageDataUtils.getPixelPositionByViewPosition(t)}hitTest(t,e){return this._gestureHandler.selectorGizmo?.hitTest(new z(t,e))}setInteractType(t){this._gestureHandler.setInteractType(t)}makeItemAlign(t,e){this._pageDataUtils.makeItemAlign(t,e),this._gestureHandler.render()}makeItemDistribute(t,e){this._pageDataUtils.makeItemDistribute(t,e),this._gestureHandler.render()}addGeneratorItem(t){return this._pageDataUtils.addGeneratorItem(t)}async addEffectsItem(t){return await this._pageDataUtils.addEffectsItem(t)}addFrameItem(t){return this._pageDataUtils.addFrameItem(t)}async setGeneratorResource(t,e){return w(this._pageData,"You must call SDK#run() first"),this._pageDataUtils.setGeneratorResource(t,e)}setGeneratorResourceFromObject(t){this.setGeneratorResource(t.itemId,t.url)}setVideoGeneratorResource(t){return this.setGeneratorResource(t.itemId,t.url)}setSpriteGeneratorResource(t){return this.setGeneratorResource(t.itemId,t.url)}setItemLockState(t,e){this._pageDataUtils.setItemLockState(t,e)}getItemLockState(t){this._pageDataUtils.getItemLockState(t)}openItemCreateGizmo(t){this._gestureHandler.openItemCreateGizmo(t)}closeItemCreateGizmo(){this._gestureHandler.closeItemCreateGizmo()}setItemName(t,e){this._pageDataUtils.setItemName(t,e)}setSafeAreaPreviewVisible(t,e,i){const r=this.getViewProperty(t);r?.previewSafeAreas.forEach(t=>{e in t&&(t.visible=i)}),this._eventEmitter.emit("pageDataChange",this.pageData)}};c(Cn,"config",{mode:"template",pageConfig:{asncMode:!1,minZoom:.01,maxZoom:20,staticPreview:!0,staticPreviewName:"标准模板",filterItemNames:["check-area","ModelPluginItem"],groupVisible:!0},asyncLoadConfig:{enabled:!0,loadingTextureUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*BzgbTb8dBhoAAAAARwAAAAgAev-aAQ/original"},screenShotConfig:{enabled:!0},exportConfig:{enabled:!0,mediaType:"MP4",loggerInTranscoding:!1},sizeAdaptConfig:{enabled:!0},gestureHandlerConfig:{enabled:!0,adsorptionGizmoEnabled:!0,adsorptionGizmoConfig:{lineWidth:.8,lineColor:775935,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:{videoPreSelectedPlay:!0,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,pictureLogoUrl:"https://mdn.alipayobjects.com/huamei_ppzin5/afts/img/EMCfRoZQj8cAAAAAOmAAAAgADjdkAQFr/original",groupLogoUrl:"https://mdn.alipayobjects.com/huamei_ppzin5/afts/img/Yo69Sr7boqYAAAAAH3AAAAgADjdkAQFr/original",textLogoUrl:"https://mdn.alipayobjects.com/huamei_ppzin5/afts/img/Yo69Sr7boqYAAAAAH3AAAAgADjdkAQFr/original",videoLogoUrl:"https://mdn.alipayobjects.com/huamei_ppzin5/afts/img/Yo69Sr7boqYAAAAAH3AAAAgADjdkAQFr/original",sizeTextColor:6710886,nameTextColor:6710886,infoShowEnabled:!0},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,gridLineWidth:1,gridLineColor:16777215,gridLineAlpha:1,gridCount:2},pictureExpandGizmoEnabled:!1,pictureExpandGizmoConfig:{maskColor:6960383,maskAlpha:.2,expandBoxLineWidth:2,expandBoxLineColor:6960383,expandBoxLineAlpha:1,expandBoxCornerRadius:5,expandBoxCornerLineWidth:2,expandBoxCornerLineColor:6960383,expandBoxCornerLineAlpha:1,expandBoxCornerFillColor:16777215,scaleInteractionDistance:8,directionScaleInteractionDistance:5,gridLineWidth:1,gridLineColor:16777215,gridLineAlpha:1,gridCount:2},textGizmoEnbaled:!0,textGizmoConfig:{rotateInteractMode:"corner",boxLineWidth:2,boxLineColor:7026175,rotationCornerWidth:30,rotationCornerTexture:"https://mdn.alipayobjects.com/huamei_ppzin5/afts/img/Zc9ZSqNEjnQAAAAAQBAAAAgADjdkAQFr/original",rotationTopCenterInteractionDistance:14,rotationCornerRadius:5,rotationCornerFillColor:16777215,rotationCornerStrokeWidth:2,rotationCornerStrokeColor:7026175,rotationCornerInteractionDistance:14,scaleCornerRadius:5,scaleCornerFillColor:16777215,scaleCornerStrokeWidth:2,scaleCornerStrokeColor:7026175,scaleInteractionDistance:7,widthScaleInteractionDistance:4},maskGizmoEnabled:!1,maskGizmoConfig:{brushSize:20,brushColor:6960383,brushAlpha:.5,maskColor:65280,maskAlpha:1,boxLineWidth:1,boxLineColor:6960383,boxLineAlpha:1},spriteTextEditGizmoEnabled:!1,spriteTextEditGizmoConfig:{textColor:16777215,preSelectedTextColor:16777215,boxLineWidth:3,dashLineDash:8,dashLineGap:8,editBoxAlpha:.15,editBoxColor:3900150,editBoxLineAlpha:1,editBoxLineColor:3900150,editBoxPreSelectedAlpha:.25,editBoxPreSelectedColor:3900150,editBoxLinePreSelectedAlpha:1,editBoxLinePreSelectedColor:3900150,hasChangedEditBoxAlpha:.2,hasChangedEditBoxColor:2278750,hasChangedEditBoxLineAlpha:1,hasChangedEditBoxLineColor:2278750,hasChangedEditBoxPreSelectedAlpha:.3,hasChangedEditBoxPreSelectedColor:2278750,hasChangedEditBoxLinePreSelectedAlpha:1,hasChangedEditBoxLinePreSelectedColor:2278750,editBoxSelectedAlpha:.6,editBoxSelectedColor:16776960},videoPlayGizmoEnabled:!0,videoPlayGizmoConfig:{autoShow:!0,logoUrl:"https://mdn.alipayobjects.com/huamei_banz2t/afts/img/A*jW1LRYu9OLwAAAAAHoAAAAgAeiCuAQ/original",logoShift:[25,25],width:30,height:30},itemCreateGizmoEnabled:!1,itemCreateGizmoConfig:{frameBorderColor:2193663,frameBorderWidth:1,frameBorderAlpha:.8,frameFillColor:2193663,frameFillAlpha:.15}}});var Dn=Cn;export{it as BaseItem,W as Box2,gt as EffectsItem,ft as FrameItem,dt as GeneratorItem,lt as GroupItem,yt as ItemOrderAction,Dn as SDK,D as SDKItemType,st as SpriteItem,ot as TextItem,z as Vector2,ct as VideoItem,wt as createSDKItem,b as generateGUID,rt as isBaseItem,ut as isEffectsItem,xt as isFrameItem,mt as isGeneratorItem,pt as isGroupItem,nt as isSpriteItem,at as isTextItem,ht as isVideoItem,m as spec};
1
+ var t=Object.defineProperty,e=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,r=t=>{throw TypeError(t)},n=(e,i)=>{for(var s in i)t(e,s,{get:i[s],enumerable:!0})},o=(r,n,o,a)=>{if(n&&"object"==typeof n||"function"==typeof n)for(let c of i(n))s.call(r,c)||c===o||t(r,c,{get:()=>n[c],enumerable:!(a=e(n,c))||a.enumerable});return r},a=(t,e,i)=>(o(t,e,"default"),i&&o(i,e,"default")),c=(e,i,s)=>((e,i,s)=>i in e?t(e,i,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[i]=s)(e,"symbol"!=typeof i?i+"":i,s),h=(t,e,i)=>e.has(t)||r("Cannot "+i),l=(t,e,i)=>(h(t,e,"read from private field"),i?i.call(t):e.get(t)),p=(t,e,i)=>e.has(t)?r("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,i),d=(t,e,i,s)=>(h(t,e,"write to private field"),s?s.call(t,i):e.set(t,i),i);import"@galacean/effects";import{spec as m,VFXItem as u,Player as g,math as f,Composition as y,EventEmitter as x,assertExist as w,SpriteComponent as I,TextComponent as v,Texture as P,generateGUID as C,version as S}from"@galacean/effects";import"@galacean/effects-plugin-rich-text";import{RichTextComponent as b}from"@galacean/effects-plugin-rich-text";import"@galacean/effects-plugin-model";import"@galacean/effects-plugin-multimedia";import{VideoComponent as D}from"@galacean/effects-plugin-multimedia";import"@galacean/effects-plugin-spine";import"@galacean/effects-plugin-ffd";var z=(t=>(t.SPRITE="sprite",t.TEXT="text",t.VIDEO="video",t.GROUP="group",t.GENERATOR="generator",t.EFFECTS="effects",t.FRAME="frame",t))(z||{}),A=(m.ItemType.sprite,m.ItemType.text,m.ItemType.video,m.ItemType.null,m.ItemType.composition,m.ItemType.composition,m.ItemType.sprite,class t extends f.Vector2{subtract(t){return this.x-=t.x,this.y-=t.y,this}toViewCoordinate(t,e){return this.x=(this.x+1)/2*t,this.y=(1-(this.y+1)/2)*e,this}clone(){return new t(this.x,this.y)}distanceTo(t){const e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)}scaleByCenter(e,i=new t){const s=(new t).subtractVectors(i,this).multiply(e);return this.subtractVectors(i,s)}round(t=0){const e=Math.pow(10,t);return this.x=Math.round(this.x*e)/e,this.y=Math.round(this.y*e)/e,this}distanceToLine(e){const i=Math.pow(e.length(),2),{start:s,end:r}=e;if(0===i)return{d:(new t).subtractVectors(this,s).length(),t:0};const n=_(((this.x-s.x)*(r.x-s.x)+(this.y-s.y)*(r.y-s.y))/i,0,1);return{d:(new t).subtractVectors(this,e.at(n)).length(),t:n}}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}rotateAround(t,e){const i=Math.cos(e),s=Math.sin(e),r=this.x-t.x,n=this.y-t.y;return this.x=r*i-n*s+t.x,this.y=r*s+n*i+t.y,this}}),T=1e-6;function _(t,e,i){const s=isNaN(e)?-1/0:e,r=isNaN(i)?1/0:i,n=Math.min(s,r),o=Math.max(s,r);return Math.min(Math.max(t,n),o)}var B=Math.PI/180,E=180/Math.PI;function k(t){return Math.atan2(-t.y,-t.x)+Math.PI}function M(t,e){const i=Math.min(Math.max(t.dot(e)/t.length()/e.length(),-1),1);let s=Math.acos(i);return s=t.x*e.y-t.y*e.x>0?s:-s,s}function U(t,e,i=Math.round){if(Number.isInteger(t))return t;const s=Math.pow(10,e);return i(t*s)/s}function G(t){let e,i=0;return t.forEach((t,s)=>{if(0===s)e=Math.abs(t);else{const r=Math.abs(t);e<r&&(e=r,i=s)}}),i}function F(t,e){return Math.abs(t-e)<T||t===1/0&&e===1/0||t===-1/0&&e===-1/0}function L(t){return isNaN(t)||Math.abs(t)<T}function R(t,e){const i=new W,{min:s,max:r}=t,{min:n,max:o}=e,a=s.clone().add((new A).subtractVectors(r,s).multiply(n)),c=s.clone().add((new A).subtractVectors(r,s).multiply(o));return i.setFromVec2ArrayWithOutCorners([a,c]),i}function V(t,e){const i=new W,{min:s,max:r}=t,{min:n,max:o}=e,a=(new A).subtractVectors(n,s).divide((new A).subtractVectors(r,s)),c=(new A).subtractVectors(o,s).divide((new A).subtractVectors(r,s));return i.setFromVec2ArrayWithOutCorners([a,c]),i}var O=class t{constructor(t=new A,e=new A){c(this,"start",new A),c(this,"end",new A),this.start.copyFrom(t),this.end.copyFrom(e)}set(t,e){return this.start.copyFrom(t),this.end.copyFrom(e),this}copyFrom(t){return this.start.copyFrom(t.start),this.end.copyFrom(t.end),this}direction(){return(new A).subtractVectors(this.end,this.start).normalize()}getCenter(t=new A){return t.addVectors(this.start,this.end).multiply(.5)}delta(t=new A){return t.subtractVectors(this.end,this.start)}distanceSq(){return this.start.distanceSquared(this.end)}distance(){return this.start.distance(this.end)}at(t,e=new A){return this.delta(e).multiply(t).add(this.start)}closestPointToPointParameter(t,e){const i=new A,s=new A;i.subtractVectors(t,this.start),s.subtractVectors(this.end,this.start);const r=s.dot(s);let n=s.dot(i)/r;return e&&(n=_(n,0,1)),n}closestPointToPoint(t,e,i=new A){const s=this.closestPointToPointParameter(t,e);return this.delta(i).multiply(s).add(this.start)}equals(t){return t.start.equals(this.start)&&t.end.equals(this.end)}clone(){return(new t).copyFrom(this)}length(){return(new A).subtractVectors(this.end,this.start).length()}crossWithLine(t){const e=this.delta(),i=t.delta(),s=(new A).subtractVectors(t.start,this.start),r=(new A).subtractVectors(t.end,this.start),n=(new A).subtractVectors(this.start,t.start),o=(new A).subtractVectors(this.end,t.start),a=s.cross(e),c=r.cross(e),h=n.cross(i),l=o.cross(i);return a*c<0&&h*l<0}},W=class t{constructor(t=new A(1/0,1/0),e=new A(-1/0,-1/0)){c(this,"corners",[]),c(this,"min",new A(1/0,1/0)),c(this,"max",new A(-1/0,-1/0)),this.min=t.clone(),this.max=e.clone(),this.isEmpty()?this.corners=[]:this.corners=[new A(e.x,t.y),e.clone(),new A(t.x,e.y),t.clone()]}set(t,e){return this.min.copyFrom(t),this.max.copyFrom(e),this.corners=[new A(e.x,t.y),e.clone(),new A(t.x,e.y),t.clone()],this}setFromVec2Array(t){return this.min=(new A).copyFrom(t[0]),this.max=(new A).copyFrom(t[0]),t.forEach(t=>{this.min.min(t),this.max.max(t),this.corners.push(t.clone())}),this}setFromVec2ArrayWithOutCorners(t){return this.min=(new A).copyFrom(t[0]),this.max=(new A).copyFrom(t[0]),t.forEach(t=>{this.min=this.min.min(t),this.max=this.max.max(t)}),this.corners.push(new A(this.max.x,this.min.y)),this.corners.push(new A(this.max.x,this.max.y)),this.corners.push(new A(this.min.x,this.max.y)),this.corners.push(new A(this.min.x,this.min.y)),this}setFromCenterAndSize(t,e){const i=(new A).copyFrom(e).multiply(.5);return this.min.copyFrom(t).subtract(i),this.max.copyFrom(t).add(i),this.corners=[new A(this.max.x,this.min.y),this.max.clone(),new A(this.min.x,this.max.y),this.min.clone()],this}clone(){return(new t).copyFrom(this)}copyFrom(t){return this.corners=[],this.min.copyFrom(t.min),this.max.copyFrom(t.max),t.corners.forEach(t=>{this.corners.push(t.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 t=[];return this.corners.forEach(e=>{t.push(e.clone())}),t}getCenter(t=new A){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiply(.5)}getSize(t=new A){return this.isEmpty()?t.set(0,0):t.subtractVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.subtract(t),this.max.add(t),this}expandByScalar(t){return this.min.add(-t),this.max.add(t),this}containsPoint(t,e=!0){if(e)return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y);if(this.isEmpty())return!1;for(let e=0;e<this.corners.length;e++){const i=this.corners[e],s=this.corners[(e+1)%4],r=new A(s.x-i.x,s.y-i.y),n=new A(t.x-i.x,t.y-i.y);if(r.cross(n)<0)return!1}return!0}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e=new A){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}clampPoint(t,e=new A){return e.copyFrom(t).clamp(this.min,this.max)}distanceToPoint(t){return(new A).copyFrom(t).clamp(this.min,this.max).subtract(t).length()}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.min.x>this.max.x||this.min.y>this.max.y?this.makeEmpty():this}union(e){return e instanceof t?(this.min.min(e.min),this.max.max(e.max)):(this.min.min(e),this.max.max(e)),this.corners=[new A(this.max.x,this.min.y),this.max.clone(),new A(this.min.x,this.max.y),this.min.clone()],this}translate(t){return this.min.add(t),this.max.add(t),this.corners.forEach(e=>{e.add(t)}),this}scale(t,e){e??(e=this.getCenter());const i="number"==typeof t?new A(t,t):new A(t.x,t.y);return this.min.scaleByCenter(i,e),this.max.scaleByCenter(i,e),this.corners.forEach(t=>{t.scaleByCenter(i,e)}),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}intersectsBox(t,e=!0){if(e)return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y);if(!this.isEmpty())for(let e=0;e<this.corners.length;e++){const i=new O(this.corners[e],this.corners[(e+1)%4]);if(t.containsPoint(this.corners[e],!1))return!0;for(let e=0;e<t.corners.length;e++){const s=new O(t.corners[e],t.corners[(e+1)%4]);if(this.containsPoint(t.corners[e],!1))return!0;if(i.crossWithLine(s))return!0}}for(let e=0;e<t.corners.length;e++){const i=this.containsPoint(t.corners[e],!1),s=t.containsPoint(this.corners[e],!1);if(i||s)return!0}return!1}rotate(t,e){e??(e=this.getCenter());const i=this.corners.map(i=>i.rotateAround(e,t));return this.makeEmpty(),this.setFromVec2Array(i),this}},H=class t{constructor(t=new A,e=0){c(this,"center"),c(this,"radius"),this.center=t.clone(),this.radius=e}set(t,e){return this.center=(new A).copyFrom(t),this.radius=e,this}clone(){return(new t).copy(this)}copy(t){return this.center.copyFrom(t.center),this.radius=t.radius,this}makeEmpty(){return this.center=new A,this.radius=0,this}isEmpty(){return this.radius<=0}getCenter(t=new A){return t.copyFrom(this.center),t}getRadius(){return this.radius}expandByPoint(t){return this.radius=this.center.distanceTo(t),this}expandByScalar(t){return this.radius+=t,this}containsPoint(t){return this.center.distanceTo(t)<this.radius}containsBox(t){for(let e=0;e<4;e++)if(!this.containsPoint(t.corners[e]))return!1;return!0}intersectsBox(t){for(let e=0;e<4;e++)if(this.containsPoint(t.corners[e]))return!0;return!1}distanceToPoint(t){return this.center.distanceTo(t)-this.radius}},N=class extends f.Quaternion{},K=class t extends f.Vector3{clone(){return new t(this.x,this.y,this.z)}setFromMatrixColumn(t,e){return this.set(...t.elements.slice(4*e))}applyEuler(t,e){return this.applyQuaternion((new N).setFromEuler(t))}applyQuaternion(e,i=new t){const{x:s,y:r,z:n,w:o}=e,{x:a,y:c,z:h}=this.subtract(i),l=o*a+r*h-n*c,p=o*c+n*a-s*h,d=o*h+s*c-r*a,m=-s*a-r*c-n*h;return this.x=l*o+m*-s+p*-n-d*-r+i.x,this.y=p*o+m*-r+d*-s-l*-n+i.y,this.z=d*o+m*-n+l*-r-p*-s+i.z,this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}applyMatrix(e,i=new t){const s=e.elements,{x:r,y:n,z:o}=this.subtract(i);let a=1/(s[3]*r+s[7]*n+s[11]*o+s[15]);return a=isNaN(a)?1:a,this.x=(s[0]*r+s[4]*n+s[8]*o+s[12])*a+i.x,this.y=(s[1]*r+s[5]*n+s[9]*o+s[13])*a+i.y,this.z=(s[2]*r+s[6]*n+s[10]*o+s[14])*a+i.z,this}},j=class t extends f.Matrix4{static fromArray(e,i=0){return(new t).setFromArray(e,i)}clone(){const e=this.elements;return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}compose(t,e,i,s=K.ZERO){const r=this.elements,{x:n,y:o,z:a,w:c}=e,h=-s.x,l=-s.y,p=-s.z,d=n+n,m=o+o,u=a+a,g=n*d,f=n*m,y=n*u,x=o*m,w=o*u,I=a*u,v=c*d,P=c*m,C=c*u,{x:S,y:b,z:D}=i;return r[0]=(1-(x+I))*S,r[1]=(f+C)*S,r[2]=(y-P)*S,r[3]=0,r[4]=(f-C)*b,r[5]=(1-(g+I))*b,r[6]=(w+v)*b,r[7]=0,r[8]=(y+P)*D,r[9]=(w-v)*D,r[10]=(1-(g+x))*D,r[11]=0,r[12]=h*r[0]+l*r[4]+p*r[8]-h+t.x,r[13]=h*r[1]+l*r[5]+p*r[9]-l+t.y,r[14]=h*r[2]+l*r[6]+p*r[10]-p+t.z,this}extractRotation(t){const e=new K,i=t.elements,s=this.elements,r=1/e.setFromMatrixColumn(t,0).length(),n=1/e.setFromMatrixColumn(t,1).length(),o=1/e.setFromMatrixColumn(t,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]*n,s[5]=i[5]*n,s[6]=i[6]*n,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(t){const e=this.elements,i=t.x,s=t.y,r=t.z,n=Math.cos(i),o=Math.sin(i),a=Math.cos(s),c=Math.sin(s),h=Math.cos(r),l=Math.sin(r);if(t.order===f.EulerOrder.XYZ){const t=n*h,i=n*l,s=o*h,r=o*l;e[0]=a*h,e[4]=-a*l,e[8]=c,e[1]=i+s*c,e[5]=t-r*c,e[9]=-o*a,e[2]=r-t*c,e[6]=s+i*c,e[10]=n*a}else if(t.order===f.EulerOrder.YXZ){const t=a*h,i=a*l,s=c*h,r=c*l;e[0]=t+r*o,e[4]=s*o-i,e[8]=n*c,e[1]=n*l,e[5]=n*h,e[9]=-o,e[2]=i*o-s,e[6]=r+t*o,e[10]=n*a}else if(t.order===f.EulerOrder.ZXY){const t=a*h,i=a*l,s=c*h,r=c*l;e[0]=t-r*o,e[4]=-n*l,e[8]=s+i*o,e[1]=i+s*o,e[5]=n*h,e[9]=r-t*o,e[2]=-n*c,e[6]=o,e[10]=n*a}else if(t.order===f.EulerOrder.ZYX){const t=n*h,i=n*l,s=o*h,r=o*l;e[0]=a*h,e[4]=s*c-i,e[8]=t*c+r,e[1]=a*l,e[5]=r*c+t,e[9]=i*c-s,e[2]=-c,e[6]=o*a,e[10]=n*a}else if(t.order===f.EulerOrder.YZX){const t=n*a,i=n*c,s=o*a,r=o*c;e[0]=a*h,e[4]=r-t*l,e[8]=s*l+i,e[1]=l,e[5]=n*h,e[9]=-o*h,e[2]=-c*h,e[6]=i*l+s,e[10]=t-r*l}else if(t.order===f.EulerOrder.XZY){const t=n*a,i=n*c,s=o*a,r=o*c;e[0]=a*h,e[4]=-l,e[8]=c*h,e[1]=t*l+r,e[5]=n*h,e[9]=i*l-s,e[2]=s*l-i,e[6]=o*h,e[10]=r*l+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}setPosition(t){return this.elements[12]=t.x,this.elements[13]=t.y,this.elements[14]=t.z,this}},$=class extends f.Euler{constructor(t=0,e=0,i=0,s=f.EulerOrder.XYZ){super(t,e,i,s)}getInvertMatrixByEuler(){return(new j).makeRotationFromEuler(this).invert()}toDegreeVector3(t){return t?t.set(this.x*E,this.y*E,this.z*E):new K(this.x*E,this.y*E,this.z*E)}setFromDegreeVector3(t,e){return this.set(t.x*B,t.y*B,t.z*B,e??this.order)}},Y=class t{constructor(t=0,e=new K(0,0,1)){c(this,"distance"),c(this,"normal");const i=e.length();0===i&&(this.normal=new K(0,0,1)),this.distance=t/(i??1),this.normal=e.normalize()}static set(e,i){return new t(e,i)}set(t,e){const i=e.length();return 0===i&&(this.normal=new K(0,0,1)),this.distance=t/i,this.normal=e.normalize(),this}static copy(e){return new t(e.distance,e.normal.clone())}copy(t){return this.distance=t.distance,this.normal.copyFrom(t.normal),this}static setFromNormalAndCoplanarPoint(e,i){const s=-e.dot(i);return new t(s,i)}setFromNormalAndCoplanarPoint(t,e){return this.normal.copyFrom(e),this.distance=-t.dot(this.normal),this}clone(){return new t(this.distance,this.normal.clone())}distanceToPoint(t){return this.normal.dot(t)+this.distance}},J=class t extends f.Ray{constructor(t=new K,e=new K(1,0,0)){super(t,e),c(this,"origin"),c(this,"direction"),this.origin=t.clone(),this.direction=e.clone()}clone(){return new t(this.origin,this.direction)}rayCastPlane(t,e){const i=this.distanceToPlane(t);return isNaN(i)||this.at(i),i}at(t){return this.direction.clone().normalize().multiply(t).add(this.origin)}distanceToPlane(t){const e=t.normal.dot(this.direction);if(L(e))return L(t.distanceToPoint(this.origin))?0:NaN;const i=(-this.origin.dot(t.normal)-t.distance)/e;return i>0?i:NaN}},X=class{constructor(t=new J){c(this,"ray"),this.ray=t.clone()}setFromCamera(t,e){const i=e.position,s=new K(t.x,t.y,.5).applyMatrix(e.inverseViewProjectMatrix).subtract(i).normalize();return this.ray.set(i,s),this}rayCastPlane(t){const e=new K,i=this.ray.rayCastPlane(t,e);if(!isNaN(i))return{distance:i,point:this.ray.at(i)}}};function Q(t,e){t.includes(e)||t.push(e)}function Z(t){return"object"==typeof t&&!!t}function q(t,e){if(Z(t)&&Z(e)){if(Array.isArray(t)&&Array.isArray(e))return t.length===e.length&&t.every((t,i)=>q(t,e[i]));const i=[];for(const s in t)if(Object.prototype.hasOwnProperty.call(t,s)){if(!q(t[s],e[s]))return!1;i.push(s)}return Object.getOwnPropertyNames(e).length===i.length}return t===e}function tt(t){if(void 0!==t)return JSON.parse(JSON.stringify(t))}function et(t){return t.map((t,e)=>e<3?U(255*t,0):t)}function it(t){return t.map((t,e)=>e<3?U(t/255,4):t)}function st(t,e,i,s,r,n){const o=(new j).compose(e,new N,new K(1,1,1)).invert(),a=(new j).perspective(i*B,t.x/t.y,s,r,n),c=(new j).multiplyMatrices(a,o),h=c.clone().invert(),l=c.projectPoint(new K).z,p=new K(0,0,l).applyMatrix(h),d=new K(2,2,l).applyMatrix(h);return{xRatio:Math.abs(d.x-p.x)/t.x,yRatio:Math.abs(d.y-p.y)/t.y}}function rt(t,e="item doesn't exist"){if(null==t)throw new Error(e)}function nt(t,e="asserts failed"){if(!t)throw new Error(e)}function ot(t,e,...i){const s=e.reduce((t,e)=>t?`${t} ${e}`:e,""),r="color: #108ee9;";switch(t){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 at(t,e={}){return new Promise((i,s)=>{const r=document.querySelector(`script[src="${t}"]`);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: ${t}`))}));const n=document.createElement("script");n.src=t,n.async=!0,Object.keys(e).forEach(t=>{n.setAttribute(t,e[t]??"")}),n.onload=()=>{n.dataset.loaded="true",i(n)},n.onerror=()=>{s(new Error(`Failed to load script: ${t}`))},document.head.appendChild(n)})}function ct(t,e,i="application/octet-stream"){const s=new Blob(Array.isArray(t)?t:[t],{type:i}),r=URL.createObjectURL(s),n=document.createElement("a");n.href=r,n.download=e,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(r)}function ht(t,e){if(!e.includes(t))return t;let i=1,s=`${t} (${i})`;for(;e.includes(s);)i++,s=`${t} (${i})`;return s}function lt(t,e){if(Object.is(t,e))return!0;if(typeof t!=typeof e)return!1;if(null===t||"object"!=typeof t)return!1;if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(t instanceof RegExp&&e instanceof RegExp)return t.toString()===e.toString();if(Array.isArray(t)!==Array.isArray(e))return!1;const i=Object.keys(t),s=Object.keys(e);if(i.length!==s.length)return!1;for(const s of i){if(!Object.prototype.hasOwnProperty.call(e,s))return!1;if(!lt(t[s],e[s]))return!1}return!0}var pt=class{constructor(t){c(this,"id"),c(this,"name"),c(this,"parentId"),c(this,"duration"),c(this,"delay"),c(this,"endBehavior"),c(this,"visible"),c(this,"isLocked"),c(this,"isCoreEditable"),c(this,"extension",new Map),this.id=t.id,this.name=t.name,this.parentId=t.parentId,this.duration=t.duration??999,this.delay=t.delay??0,this.endBehavior=t.endBehavior??m.EndBehavior.freeze,this.visible=t.visible??!0,this.isLocked=t.isLocked??!1,this.isCoreEditable=t.isCoreEditable,t.extension&&Object.entries(t.extension).forEach(([t,e])=>{this.extension.set(t,e)})}setExtension(t,e){this.extension.set(t,e)}getExtension(t){return this.extension.get(t)}hasExtension(t){return this.extension.has(t)}deleteExtension(t){return this.extension.delete(t)}getExtensionKeys(){return Array.from(this.extension.keys())}getAllExtension(){return tt(Object.fromEntries(this.extension.entries()))}setExtensions(t){Object.entries(t).forEach(([t,e])=>{this.extension.set(t,e)})}clearExtension(){this.extension.clear()}toJSON(){return{id:this.id,name:this.name,type:this.type,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,property:tt(this.property),extension:this.getAllExtension()}}};function dt(t){return t instanceof pt}var mt=class t extends pt{constructor(t){super(t),c(this,"type","sprite"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],image:t.property?.image??""}}get image(){return this.property.image}set image(t){this.property.image=t}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}toCreateInfo(t){const e=this.getAllExtension(),i=tt(this.property);return Object.assign(i,{width:i.size[0],height:i.size[1]}),delete i.size,{type:"sprite",id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:i}}clone(){return new t({id:C(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:tt(this.property),extension:this.getAllExtension()})}toCreateInfoWithExtensions(t,e){const i=this.toCreateInfo(t);return e&&Object.assign(i,e),i}};function ut(t){return t instanceof mt}var gt=class t extends pt{constructor(t){super(t),c(this,"type","text"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],fontFamily:t.property?.fontFamily??"",color:t.property?.color??[0,0,0,1],fontWeight:t.property?.fontWeight??m.TextWeight.normal,text:t.property?.text??"",textAlign:t.property?.textAlign??m.TextAlignment.left,fontSize:t.property?.fontSize??24,fontStyle:t.property?.fontStyle??m.FontStyle.normal,lineHeight:t.property?.lineHeight??24,outlineColor:t.property?.outlineColor,outlineWidth:t.property?.outlineWidth,outlineEnabled:t.property?.outlineEnabled??!1,fontUrl:t.property?.fontUrl,letterSpacing:t.property?.letterSpacing??0}}get text(){return this.property.text}set text(t){this.property.text=t}get fontFamily(){return this.property.fontFamily}set fontFamily(t){this.property.fontFamily=t}get fontSize(){return this.property.fontSize}set fontSize(t){this.property.fontSize=t}get fontWeight(){return this.property.fontWeight}set fontWeight(t){this.property.fontWeight=t}get fontStyle(){return this.property.fontStyle}set fontStyle(t){this.property.fontStyle=t}get textAlign(){return this.property.textAlign}set textAlign(t){this.property.textAlign=t}get color(){return this.property.color}set color(t){this.property.color=t}get width(){return this.property.width}set width(t){this.property.width=t}get lineHeight(){return this.property.lineHeight}set lineHeight(t){this.property.lineHeight=t}get height(){return this.property.height}set height(t){this.property.height=t}get outlineColor(){return this.property.outlineColor}set outlineColor(t){this.property.outlineColor=t}get outlineWidth(){return this.property.outlineWidth}set outlineWidth(t){this.property.outlineWidth=t}get outlineEnabled(){return this.property.outlineEnabled??!1}set outlineEnabled(t){this.property.outlineEnabled=t}get position(){return this.property.position}set position(t){this.property.position=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}toCreateInfo(t){const e=this.getAllExtension();return{type:"text",id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:tt(this.property)}}clone(){return new t({id:C(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:tt(this.property),extension:this.getAllExtension()})}};function ft(t){return t instanceof gt}var yt=class t extends pt{constructor(t){super(t),c(this,"type","video"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],video:t.property?.video??"",muted:t.property?.muted??!0,transparent:t.property?.transparent??!0,playbackRate:t.property?.playbackRate??1,volume:t.property?.volume??0}}get video(){return this.property.video}set video(t){this.property.video=t}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}get muted(){return this.property.muted??!0}set muted(t){this.property.muted=t}get transparent(){return this.property.transparent??!0}set transparent(t){this.property.transparent=t}get volume(){return this.property.volume??0}set volume(t){this.property.volume=t}get playbackRate(){return this.property.playbackRate??1}set playbackRate(t){this.property.playbackRate=t}toCreateInfo(t){const e=this.getAllExtension();return{type:"video",id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:tt(this.property)}}clone(){return new t({id:C(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:tt(this.property),extension:this.getAllExtension()})}};function xt(t){return t instanceof yt}var wt=class t extends pt{constructor(t){super(t),c(this,"type","group"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,children:[...t.children??[]],scale:t.property?.scale??[1,1]}}get position(){return this.property.position}set position(t){this.property.position=t}get scale(){return this.property.scale}set scale(t){this.property.scale=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}toCreateInfo(t){const e=this.getAllExtension();return{type:this.type,id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:tt(this.property)}}clone(){return new t({id:C(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:tt(this.property),extension:this.getAllExtension()})}};function It(t){return t instanceof wt}var vt=class t extends pt{constructor(t){super(t),c(this,"type","generator"),c(this,"property"),this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],generatorType:t.property?.generatorType??"video"}}get generatorType(){return this.property.generatorType}set generatorType(t){this.property.generatorType=t}get image(){return""}set image(t){}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}toCreateInfo(t){const e=this.getAllExtension();return{type:"generator",id:this.id,name:this.name,parentId:t?this.parentId:void 0,extension:Object.keys(e).length>0?e:void 0,property:tt(this.property)}}toVideoCreateInfo(t,e){const i=this.getAllExtension(),s=tt(this.property);return delete s.generatorType,{type:"video",id:this.id,name:this.name,parentId:e?this.parentId:void 0,extension:Object.keys(i).length>0?i:void 0,property:{video:t,...s}}}toSpriteCreateInfo(t,e){const i=this.getAllExtension(),s=tt(this.property);return delete s.generatorType,{type:"sprite",id:this.id,name:this.name,parentId:e?this.parentId:void 0,extension:Object.keys(i).length>0?i:void 0,property:{image:t,...s}}}clone(){return new t({id:C(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:tt(this.property),extension:this.getAllExtension()})}};function Pt(t){return t instanceof vt}var Ct=class t extends pt{constructor(t){super(t),c(this,"type","effects"),c(this,"subCompositionItemId"),c(this,"property"),this.subCompositionItemId="",this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],effects:t.property?.effects??"",children:t.property?.children??[]}}get effects(){return this.property.effects}set effects(t){this.property.effects=t}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}get keyPropertyEditing(){return this.isCoreEditable}set keyPropertyEditing(t){this.isCoreEditable=t}toCreateInfo(t){const e={type:"effects",id:this.id,name:this.name,property:tt(this.property)};t&&this.parentId&&(e.parentId=this.parentId);const i=this.getAllExtension();return Object.keys(i).length>0&&(e.extension=i),e}clone(){return new t({id:C(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:tt(this.property),extension:this.getAllExtension()})}};function St(t){return t instanceof Ct}var bt=(t=>(t[t.BringToFront=0]="BringToFront",t[t.SendToBack=1]="SendToBack",t[t.BringForward=2]="BringForward",t[t.SendBackward=3]="SendBackward",t))(bt||{}),Dt=class t extends pt{constructor(t){super(t),c(this,"type","frame"),c(this,"subCompositionItemId"),c(this,"property"),this.subCompositionItemId="",this.property={position:t.property?.position??[0,0],rotation:t.property?.rotation??[0,0,0],width:t.property?.width??0,height:t.property?.height??0,scale:t.property?.scale??[1,1],layoutMode:t.property?.layoutMode??"free",children:[...t.children??[]],autoLayoutConfig:t.property?.autoLayoutConfig,layoutInfos:t.property?.layoutInfos??{}}}get children(){return this.property.children}get layoutMode(){return this.property.layoutMode}set layoutMode(t){this.property.layoutMode=t}get layoutInfos(){return this.property.layoutInfos}set layoutInfos(t){this.property.layoutInfos=t}get position(){return this.property.position}set position(t){this.property.position=t}get width(){return this.property.width}set width(t){this.property.width=t}get height(){return this.property.height}set height(t){this.property.height=t}get scale(){return this.property.scale}set scale(t){this.property.scale=t}get rotation(){return this.property.rotation[2]}set rotation(t){this.property.rotation[2]=t}get fullRotation(){return this.property.rotation}set fullRotation(t){this.property.rotation=t}addChild(t){return!this.property.children.includes(t)&&(this.property.children.push(t),!0)}addChildren(t){t.map(t=>this.addChild(t))}removeChild(t){const e=this.property.children.indexOf(t);return-1!==e&&(this.property.children.splice(e,1),!0)}removeChildren(t){this.property.children=this.property.children.filter(e=>!t.includes(e))}hasChild(t){return this.property.children.includes(t)}clearChildren(){this.property.children=[]}toCreateInfo(t){const e={type:"frame",id:this.id,name:this.name,property:tt(this.property)};t&&this.parentId&&(e.parentId=this.parentId);const i=this.getAllExtension();return Object.keys(i).length>0&&(e.extension=i),e}clone(){return new t({id:C(),name:this.name,parentId:this.parentId,duration:this.duration,delay:this.delay,endBehavior:this.endBehavior,isLocked:this.isLocked,isCoreEditable:this.isCoreEditable,property:tt(this.property),extension:this.getAllExtension()})}};function zt(t){return t instanceof Dt}function At(t,e){switch(t){case m.ItemType.sprite:return new mt(e);case m.ItemType.null:return new wt(e);case m.ItemType.text:return new gt(e);case m.ItemType.video:return new yt(e);default:return console.warn(`SDKItem type ${t} not implemented, falling back to GroupItem`),new wt(e)}}var Tt="object"==typeof global&&global&&global.Object===Object&&global,_t="object"==typeof self&&self&&self.Object===Object&&self,Bt=Tt||_t||Function("return this")(),Et=Bt.Symbol,kt=Object.prototype,Mt=kt.hasOwnProperty,Ut=kt.toString,Gt=Et?Et.toStringTag:void 0;var Ft=function(t){var e=Mt.call(t,Gt),i=t[Gt];try{t[Gt]=void 0;var s=!0}catch(t){}var r=Ut.call(t);return s&&(e?t[Gt]=i:delete t[Gt]),r},Lt=Object.prototype.toString;var Rt=function(t){return Lt.call(t)},Vt=Et?Et.toStringTag:void 0;var Ot=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Vt&&Vt in Object(t)?Ft(t):Rt(t)};var Wt=function(t){return null!=t&&"object"==typeof t},Ht=Array.isArray;var Nt=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};var Kt=function(t){return t};var jt,$t=function(t){if(!Nt(t))return!1;var e=Ot(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e},Yt=Bt["__core-js_shared__"],Jt=(jt=/[^.]+$/.exec(Yt&&Yt.keys&&Yt.keys.IE_PROTO||""))?"Symbol(src)_1."+jt:"";var Xt=function(t){return!!Jt&&Jt in t},Qt=Function.prototype.toString;var Zt=function(t){if(null!=t){try{return Qt.call(t)}catch(t){}try{return t+""}catch(t){}}return""},qt=/^\[object .+?Constructor\]$/,te=Function.prototype,ee=Object.prototype,ie=te.toString,se=ee.hasOwnProperty,re=RegExp("^"+ie.call(se).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var ne=function(t){return!(!Nt(t)||Xt(t))&&($t(t)?re:qt).test(Zt(t))};var oe=function(t,e){return null==t?void 0:t[e]};var ae=function(t,e){var i=oe(t,e);return ne(i)?i:void 0},ce=Object.create,he=function(){function t(){}return function(e){if(!Nt(e))return{};if(ce)return ce(e);t.prototype=e;var i=new t;return t.prototype=void 0,i}}();var le=function(t,e,i){switch(i.length){case 0:return t.call(e);case 1:return t.call(e,i[0]);case 2:return t.call(e,i[0],i[1]);case 3:return t.call(e,i[0],i[1],i[2])}return t.apply(e,i)};var pe=function(t,e){var i=-1,s=t.length;for(e||(e=Array(s));++i<s;)e[i]=t[i];return e},de=Date.now;var me=function(t){var e=0,i=0;return function(){var s=de(),r=16-(s-i);if(i=s,r>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}};var ue=function(t){return function(){return t}},ge=function(){try{var t=ae(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),fe=me(ge?function(t,e){return ge(t,"toString",{configurable:!0,enumerable:!1,value:ue(e),writable:!0})}:Kt),ye=/^(?:0|[1-9]\d*)$/;var xe=function(t,e){var i=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==i||"symbol"!=i&&ye.test(t))&&t>-1&&t%1==0&&t<e};var we=function(t,e,i){"__proto__"==e&&ge?ge(t,e,{configurable:!0,enumerable:!0,value:i,writable:!0}):t[e]=i};var Ie=function(t,e){return t===e||t!=t&&e!=e},ve=Object.prototype.hasOwnProperty;var Pe=function(t,e,i){var s=t[e];ve.call(t,e)&&Ie(s,i)&&(void 0!==i||e in t)||we(t,e,i)};var Ce=function(t,e,i,s){var r=!i;i||(i={});for(var n=-1,o=e.length;++n<o;){var a=e[n],c=s?s(i[a],t[a],a,i,t):void 0;void 0===c&&(c=t[a]),r?we(i,a,c):Pe(i,a,c)}return i},Se=Math.max;var be=function(t,e,i){return e=Se(void 0===e?t.length-1:e,0),function(){for(var s=arguments,r=-1,n=Se(s.length-e,0),o=Array(n);++r<n;)o[r]=s[e+r];r=-1;for(var a=Array(e+1);++r<e;)a[r]=s[r];return a[e]=i(o),le(t,this,a)}};var De=function(t,e){return fe(be(t,e,Kt),t+"")};var ze=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991};var Ae=function(t){return null!=t&&ze(t.length)&&!$t(t)};var Te=function(t,e,i){if(!Nt(i))return!1;var s=typeof e;return!!("number"==s?Ae(i)&&xe(e,i.length):"string"==s&&e in i)&&Ie(i[e],t)};var _e=function(t){return De(function(e,i){var s=-1,r=i.length,n=r>1?i[r-1]:void 0,o=r>2?i[2]:void 0;for(n=t.length>3&&"function"==typeof n?(r--,n):void 0,o&&Te(i[0],i[1],o)&&(n=r<3?void 0:n,r=1),e=Object(e);++s<r;){var a=i[s];a&&t(e,a,s,n)}return e})},Be=Object.prototype;var Ee=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Be)};var ke=function(t,e){for(var i=-1,s=Array(t);++i<t;)s[i]=e(i);return s};var Me=function(t){return Wt(t)&&"[object Arguments]"==Ot(t)},Ue=Object.prototype,Ge=Ue.hasOwnProperty,Fe=Ue.propertyIsEnumerable,Le=Me(function(){return arguments}())?Me:function(t){return Wt(t)&&Ge.call(t,"callee")&&!Fe.call(t,"callee")};var Re=function(){return!1},Ve="object"==typeof exports&&exports&&!exports.nodeType&&exports,Oe=Ve&&"object"==typeof module&&module&&!module.nodeType&&module,We=Oe&&Oe.exports===Ve?Bt.Buffer:void 0,He=(We?We.isBuffer:void 0)||Re,Ne={};Ne["[object Float32Array]"]=Ne["[object Float64Array]"]=Ne["[object Int8Array]"]=Ne["[object Int16Array]"]=Ne["[object Int32Array]"]=Ne["[object Uint8Array]"]=Ne["[object Uint8ClampedArray]"]=Ne["[object Uint16Array]"]=Ne["[object Uint32Array]"]=!0,Ne["[object Arguments]"]=Ne["[object Array]"]=Ne["[object ArrayBuffer]"]=Ne["[object Boolean]"]=Ne["[object DataView]"]=Ne["[object Date]"]=Ne["[object Error]"]=Ne["[object Function]"]=Ne["[object Map]"]=Ne["[object Number]"]=Ne["[object Object]"]=Ne["[object RegExp]"]=Ne["[object Set]"]=Ne["[object String]"]=Ne["[object WeakMap]"]=!1;var Ke=function(t){return Wt(t)&&ze(t.length)&&!!Ne[Ot(t)]};var je=function(t){return function(e){return t(e)}},$e="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ye=$e&&"object"==typeof module&&module&&!module.nodeType&&module,Je=Ye&&Ye.exports===$e&&Tt.process,Xe=function(){try{var t=Ye&&Ye.require&&Ye.require("util").types;return t||Je&&Je.binding&&Je.binding("util")}catch(t){}}(),Qe=Xe&&Xe.isTypedArray,Ze=Qe?je(Qe):Ke,qe=Object.prototype.hasOwnProperty;var ti=function(t,e){var i=Ht(t),s=!i&&Le(t),r=!i&&!s&&He(t),n=!i&&!s&&!r&&Ze(t),o=i||s||r||n,a=o?ke(t.length,String):[],c=a.length;for(var h in t)!e&&!qe.call(t,h)||o&&("length"==h||r&&("offset"==h||"parent"==h)||n&&("buffer"==h||"byteLength"==h||"byteOffset"==h)||xe(h,c))||a.push(h);return a};var ei=function(t,e){return function(i){return t(e(i))}};var ii=function(t){var e=[];if(null!=t)for(var i in Object(t))e.push(i);return e},si=Object.prototype.hasOwnProperty;var ri=function(t){if(!Nt(t))return ii(t);var e=Ee(t),i=[];for(var s in t)("constructor"!=s||!e&&si.call(t,s))&&i.push(s);return i};var ni=function(t){return Ae(t)?ti(t,!0):ri(t)},oi=ae(Object,"create");var ai=function(){this.__data__=oi?oi(null):{},this.size=0};var ci=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},hi=Object.prototype.hasOwnProperty;var li=function(t){var e=this.__data__;if(oi){var i=e[t];return"__lodash_hash_undefined__"===i?void 0:i}return hi.call(e,t)?e[t]:void 0},pi=Object.prototype.hasOwnProperty;var di=function(t){var e=this.__data__;return oi?void 0!==e[t]:pi.call(e,t)};var mi=function(t,e){var i=this.__data__;return this.size+=this.has(t)?0:1,i[t]=oi&&void 0===e?"__lodash_hash_undefined__":e,this};function ui(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var s=t[e];this.set(s[0],s[1])}}ui.prototype.clear=ai,ui.prototype.delete=ci,ui.prototype.get=li,ui.prototype.has=di,ui.prototype.set=mi;var gi=ui;var fi=function(){this.__data__=[],this.size=0};var yi=function(t,e){for(var i=t.length;i--;)if(Ie(t[i][0],e))return i;return-1},xi=Array.prototype.splice;var wi=function(t){var e=this.__data__,i=yi(e,t);return!(i<0)&&(i==e.length-1?e.pop():xi.call(e,i,1),--this.size,!0)};var Ii=function(t){var e=this.__data__,i=yi(e,t);return i<0?void 0:e[i][1]};var vi=function(t){return yi(this.__data__,t)>-1};var Pi=function(t,e){var i=this.__data__,s=yi(i,t);return s<0?(++this.size,i.push([t,e])):i[s][1]=e,this};function Ci(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var s=t[e];this.set(s[0],s[1])}}Ci.prototype.clear=fi,Ci.prototype.delete=wi,Ci.prototype.get=Ii,Ci.prototype.has=vi,Ci.prototype.set=Pi;var Si=Ci,bi=ae(Bt,"Map");var Di=function(){this.size=0,this.__data__={hash:new gi,map:new(bi||Si),string:new gi}};var zi=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};var Ai=function(t,e){var i=t.__data__;return zi(e)?i["string"==typeof e?"string":"hash"]:i.map};var Ti=function(t){var e=Ai(this,t).delete(t);return this.size-=e?1:0,e};var _i=function(t){return Ai(this,t).get(t)};var Bi=function(t){return Ai(this,t).has(t)};var Ei=function(t,e){var i=Ai(this,t),s=i.size;return i.set(t,e),this.size+=i.size==s?0:1,this};function ki(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var s=t[e];this.set(s[0],s[1])}}ki.prototype.clear=Di,ki.prototype.delete=Ti,ki.prototype.get=_i,ki.prototype.has=Bi,ki.prototype.set=Ei;var Mi=ki,Ui=ei(Object.getPrototypeOf,Object),Gi=Function.prototype,Fi=Object.prototype,Li=Gi.toString,Ri=Fi.hasOwnProperty,Vi=Li.call(Object);var Oi=function(t){if(!Wt(t)||"[object Object]"!=Ot(t))return!1;var e=Ui(t);if(null===e)return!0;var i=Ri.call(e,"constructor")&&e.constructor;return"function"==typeof i&&i instanceof i&&Li.call(i)==Vi};var Wi=function(){this.__data__=new Si,this.size=0};var Hi=function(t){var e=this.__data__,i=e.delete(t);return this.size=e.size,i};var Ni=function(t){return this.__data__.get(t)};var Ki=function(t){return this.__data__.has(t)};var ji=function(t,e){var i=this.__data__;if(i instanceof Si){var s=i.__data__;if(!bi||s.length<199)return s.push([t,e]),this.size=++i.size,this;i=this.__data__=new Mi(s)}return i.set(t,e),this.size=i.size,this};function $i(t){var e=this.__data__=new Si(t);this.size=e.size}$i.prototype.clear=Wi,$i.prototype.delete=Hi,$i.prototype.get=Ni,$i.prototype.has=Ki,$i.prototype.set=ji;var Yi=$i,Ji="object"==typeof exports&&exports&&!exports.nodeType&&exports,Xi=Ji&&"object"==typeof module&&module&&!module.nodeType&&module,Qi=Xi&&Xi.exports===Ji?Bt.Buffer:void 0,Zi=Qi?Qi.allocUnsafe:void 0;var qi=function(t,e){if(e)return t.slice();var i=t.length,s=Zi?Zi(i):new t.constructor(i);return t.copy(s),s},ts=Bt.Uint8Array;var es=function(t){var e=new t.constructor(t.byteLength);return new ts(e).set(new ts(t)),e};var is=function(t,e){var i=e?es(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.length)};var ss=function(t){return"function"!=typeof t.constructor||Ee(t)?{}:he(Ui(t))};var rs=function(t){return function(e,i,s){for(var r=-1,n=Object(e),o=s(e),a=o.length;a--;){var c=o[t?a:++r];if(!1===i(n[c],c,n))break}return e}}();var ns=function(t,e,i){(void 0!==i&&!Ie(t[e],i)||void 0===i&&!(e in t))&&we(t,e,i)};var os=function(t){return Wt(t)&&Ae(t)};var as=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var cs=function(t){return Ce(t,ni(t))};var hs=function(t,e,i,s,r,n,o){var a=as(t,i),c=as(e,i),h=o.get(c);if(h)ns(t,i,h);else{var l=n?n(a,c,i+"",t,e,o):void 0,p=void 0===l;if(p){var d=Ht(c),m=!d&&He(c),u=!d&&!m&&Ze(c);l=c,d||m||u?Ht(a)?l=a:os(a)?l=pe(a):m?(p=!1,l=qi(c,!0)):u?(p=!1,l=is(c,!0)):l=[]:Oi(c)||Le(c)?(l=a,Le(a)?l=cs(a):Nt(a)&&!$t(a)||(l=ss(c))):p=!1}p&&(o.set(c,l),r(l,c,s,n,o),o.delete(c)),ns(t,i,l)}};var ls=function t(e,i,s,r,n){e!==i&&rs(i,function(o,a){if(n||(n=new Yi),Nt(o))hs(e,i,a,s,t,r,n);else{var c=r?r(as(e,a),o,a+"",e,i,n):void 0;void 0===c&&(c=o),ns(e,a,c)}},ni)},ps=_e(function(t,e,i){ls(t,e,i)});import{Application as ds}from"@pixi/app";var ms=class{constructor(){c(this,"type"),c(this,"active"),this.type="null",this.active=!1}get interactive(){return this.active}set interactive(t){this.active=t}},us=class extends ms{constructor(t){super(),c(this,"type","control"),c(this,"_interactionType","mouse"),c(this,"active",!1),c(this,"lastPoint",new A),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"SDKUtils"),this.SDKUtils=t}get interactive(){return lo.config.gestureHandlerConfig.controlGizmoEnabled}set interactive(t){lo.config.gestureHandlerConfig.controlGizmoEnabled=!0}get interactionType(){return this._interactionType}set interactionType(t){t===this._interactionType&&(this._interactionType=t,this.refreshCursorResult())}get useCameraControl(){return"editor"===lo.config.mode}preparationAction(){}cancelPreparation(){}refreshResults(){}preAction(t){return"mouse"===this.interactionType&&(this.active=!0,this.lastPoint=new A(t.clientX,t.clientY)),this.refreshCursorResult(),"mouse"===this.interactionType?this.type:void 0}action(t){if(!lo.config.gestureHandlerConfig.controlGizmoEnabled)return void console.warn("Control gizmo is not opened, use #SDK.setControlConfig() open this feature.");const{metaKey:e,ctrlKey:i,shiftKey:s}=t;if(0===t.buttons){const{deltaX:r,deltaY:n,offsetX:o,offsetY:a}=t,c=new A(r,n);if(e||i){const t=this.useCameraControl?new A(o,a):new A,e=-c.y*lo.config.gestureHandlerConfig.controlGizmoConfig.zoomStep;this.SDKUtils.pageZoom(e,t)}else c.x=s&&0!==c.y?Math.sqrt(c.x**2+c.y**2)*c.y/Math.abs(c.y):c.x,c.y=s?0:c.y,this.SDKUtils.pageMove(c.negate())}else if(this.active&&t instanceof MouseEvent&&[1,4].includes(t.buttons)){const{clientX:e,clientY:i}=t,r=new A(e,i),n=(new A).subtractVectors(r,this.lastPoint);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.SDKUtils.pageMove(n),this.lastPoint.copyFrom(r)}}endAction(){return this.active=!1,this.refreshCursorResult(),"mouse"===this.interactionType?this.type:void 0}interruption(){return this.type}actionKey(){}endActionKey(){}refreshCursorResult(){"mouse"===this.interactionType?this.cursorResult={type:this.active?"active-hand":"hand",angle:0}:this.cursorResult={type:"normal",angle:0}}getRenderObjects(){return[]}};import{Graphics as gs}from"@pixi/graphics";var fs=class extends ms{constructor(t){super(),c(this,"result",{type:"null",box:new W}),c(this,"selectedItemIds",[]),c(this,"activeParentIds",[]),c(this,"cursorPoint",new A),c(this,"startPoint",new A),c(this,"firstClickPoint",new A),c(this,"graphics",new gs),c(this,"pageDataUtils"),c(this,"clearResult",!1),c(this,"type","selector"),this.pageDataUtils=t}get interactive(){return lo.config.gestureHandlerConfig.selectorGizmoEnabled}set interactive(t){lo.config.gestureHandlerConfig.selectorGizmoEnabled=!0}actionKey(){}endActionKey(){}getRenderObjects(){return this.interactive?this.clearResult?(this.result={type:"null",box:new W},this.clearResult=!1,[]):(this.refreshResults(),[this.graphics]):[]}cancelPreparation(){this.result.type="null"}preparationAction(t,e){if(this.result.box=new W,!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setSelectorConfig() open this feature.");const i=new A(t.offsetX,t.offsetY),s=this.hitTest(i);this.selectedItemIds=this.filterSelectedItems(s);const r=this.selectedItemIds[0]??"",n=[...this.pageDataUtils.getPageData().activeData.selectedItems,...this.pageDataUtils.getPageData().activeData.selectedItems.flatMap(t=>this.pageDataUtils.getChildrenIds(t))],o=this.pageDataUtils.getPageData()?.activeData.preSelectedItem;return r.length&&e&&!n.includes(r)||!e?(!r.length||this.pageDataUtils.isItemSelected(r)||n.includes(r)?(this.pageDataUtils.pauseVideoItem(o),this.pageDataUtils.pauseEffectsItem(o),this.pageDataUtils.clearPreSelectedItem()):(this.pageDataUtils.addPreSelectedItem(r),r!==o&&(this.pageDataUtils.playVideoItem(r),this.pageDataUtils.playEffectsItem(r),this.pageDataUtils.pauseVideoItem(o),this.pageDataUtils.pauseEffectsItem(o))),this.type):(this.pageDataUtils.pauseVideoItem(o),this.pageDataUtils.pauseEffectsItem(o),this.pageDataUtils.clearPreSelectedItem(),e)}preAction(t,e=!1,i){if(!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setSelectorConfig() open this feature.");const s=this.pageDataUtils.getPageData()?.activeData.preSelectedItem;switch(this.pageDataUtils.pauseVideoItem(s),this.pageDataUtils.pauseEffectsItem(s),this.pageDataUtils.clearPreSelectedItem(),t.buttons){case 1:{const s=new A(t.offsetX,t.offsetY);if(i??(i=this.firstClickPoint),e&&s.distanceTo(i)<4){const e=new A(t.offsetX,t.offsetY),i=this.hitTest(e);this.selectedItemIds=this.filterSelectedItems(i)}if(e||this.firstClickPoint.set(t.offsetX,t.offsetY),t.shiftKey){if(e){const t=this.selectedItemIds[0];if(t){const e=this.pageDataUtils.getSDKItem(t);e?.parentId&&this.pageDataUtils.removeSelectedItems([e.parentId])}}}else this.pageDataUtils.clearSelectedItems(0===this.selectedItemIds.length);if(0===this.selectedItemIds.length)return this.startPoint=new A(t.clientX,t.clientY),this.cursorPoint=new A(t.offsetX,t.offsetY),this.activeParentIds=[],this.active=!0,this.type;{const t=this.addSelectedItem(this.selectedItemIds[0]);return 1===t?.length&&"text"===this.pageDataUtils.getSDKItem(t[0])?.type?"text":"transform"}}case 2:{const e=[...this.pageDataUtils.getPageData().activeData.selectedItems,...this.pageDataUtils.getPageData().activeData.selectedItems.flatMap(t=>this.pageDataUtils.getChildrenIds(t))];return this.selectedItemIds.length&&!e.includes(this.selectedItemIds[0])&&(t.shiftKey||this.pageDataUtils.clearSelectedItems(),this.pageDataUtils.addSelectedItems([this.selectedItemIds[0]]),this.clearResult=!0),void this.pageDataUtils.saveUndoRedoOldData()}default:return}}action(t){const e=(new A).addVectors(this.cursorPoint,(new A).subtractVectors(new A(t.clientX,t.clientY),this.startPoint)),i=(new A).subtractVectors(this.cursorPoint,e),s=(new A).addVectors(this.cursorPoint,e).multiply(.5);i.x=Math.abs(i.x),i.y=Math.abs(i.y);const r=(new W).setFromCenterAndSize(s,i);this.result.type="region",this.result.box=r,this.pageDataUtils.clearSelectedItems();const n=this.pageDataUtils.getPageData().items?.filter(t=>this.pageDataUtils.getItemEditEnable(t.id)),o=[];i.length()>0&&n?.forEach(t=>{r.intersectsBox(this.pageDataUtils.getViewBoxById(t.id),!1)&&o.push(t.id)});const a=this.filterSelectedItems(o);this.pageDataUtils.addSelectedItems(a)}endAction(){this.active=!1,this.result.type="null"}addSelectedItem(t){this.pageDataUtils.addSelectedItems([t]);const e=this.pageDataUtils.getPageData()?.activeData?.selectedItems;return this.addActiveParentIds(e),this.clearResult=!0,this.pageDataUtils.saveUndoRedoOldData(),e}interruption(){this.active=!1,this.result.type="null"}hitTest(t){const e=this.pageDataUtils.getCurrentComposition();if(!e?.items)return[];const{x:i,y:s}=this.pageDataUtils.getViewportByViewPoint(t),r={ray:new J,regions:[]};try{r.regions=e.hitTest(i,s,!0),r.ray=e.getHitTestRay(i,s)}catch(t){console.warn(t)}this.refreshResultRegions(r);const n=this.reorderHitTestResult(r,e).filter(t=>"extra-camera"!==t&&this.pageDataUtils.getItemEditEnable(t));return this.preSelectedFrameOutBound(t,n)}refreshResultRegions(t){const e=this.pageDataUtils.getPageData()?.items.filter(t=>St(t)),i=new Map;e?.forEach(t=>{t.property.children?.forEach(e=>{i.set(e,t.id)})}),t.regions.forEach(t=>{t.id=i.get(t.id)??t.id})}reorderHitTestResult(t,e){if(0===t.regions.length||!e)return[];const{ray:i}=t,s=t.regions.reverse(),r=[];return s.forEach(t=>{let s;const n=(t,e)=>{for(const i of t){if(i.getInstanceId()===e&&(s=i),s)return;n(i.children,e)}};if(n(e.items,t.id),void 0===s)return;const o=s.getInstanceId(),a=i.origin.clone().distance(t.position.clone());if((s.type===m.ItemType.mesh||s.getComponent(I)?.renderer?.occlusion||s.getComponent(v)?.renderer?.occlusion||s.getComponent(D)?.renderer?.occlusion||s.getComponent(b)?.renderer?.occlusion)&&r.length>0){let t=!0;r.forEach((e,i)=>{if(t)return a<=e[1]?(r.splice(i,0,[o,a]),void(t=!1)):void(i===r.length-1&&r.push([o,a]))})}else r.push([o,a])}),r.map(t=>t[0])}filterSelectedItems(t){const e=[],i=t=>{const e=this.pageDataUtils.getSDKItem(t);return!e.parentId||"frame"===this.pageDataUtils.getSDKItem(e.parentId)?.type||this.activeParentIds.includes(e.parentId)?e.id:i(e.parentId)},s=this.pageDataUtils.getPageData()?.activeData.loadingItems??[];return t.forEach(t=>{const r=i(t);s.includes(r)||Q(e,r)}),e}addActiveParentIds(t){this.activeParentIds=[],t?.forEach(t=>{if(!this.pageDataUtils.getSDKItem(t))return;const e=t=>{this.activeParentIds.push(t);const i=this.pageDataUtils.getSDKItem(t);i.parentId&&e(i.parentId)};e(t)})}resetActiveParentIds(t){const e=this.pageDataUtils.getSDKItem(t);e&&(this.activeParentIds=this.activeParentIds.filter(t=>t===e.parentId))}refreshResults(){const{box:t}=this.result;this.graphics.clear();const e=this.pageDataUtils.getPreSelectedItem(),i=this.pageDataUtils.getViewBoxById(e?.id??""),{regionBoxColor:s,regionBoxAlpha:r,preSelectedWidth:n,preSelectedColor:o,regionWireframeWidth:a,regionWireframeColor:c,regionWireframeAlpha:h}=lo.config.gestureHandlerConfig.selectorGizmoConfig;if(i?.isEmpty()||(this.graphics.lineStyle(n,o),this.graphics.drawBox(i)),!t.isEmpty()&&"region"===this.result.type)this.graphics.lineStyle(a,c,h),this.graphics.drawBox(t),this.graphics.beginFill(s,r),this.graphics.fillBox(t),this.graphics.endFill()}preSelectedFrameOutBound(t,e){const i=this.pageDataUtils.getPageData()?.items.filter(t=>zt(t)).map(t=>({id:t.id,box:this.pageDataUtils.getViewBoxById(t.id)}));if(!i?.length)return e;let s=!1;return i.forEach(i=>{if(s)return;const{min:r}=i.box;(new W).setFromVec2Array([r.clone(),r.clone().add(new A(40,-20))]).containsPoint(t)&&(s=!0,e.splice(0,0,i.id))}),e}},ys={};n(ys,{Application:()=>Ps,utils:()=>Is});import{Vector2 as xs}from"@galacean/effects-plugin-model";var ws={};n(ws,{Application:()=>Ps,utils:()=>Is}),a(ws,zs),a(ws,As),a(ws,Ts),a(ws,_s),a(ws,Bs),a(ws,Es),a(ws,ks),a(ws,Ms),a(ws,Us),a(ws,Gs),a(ws,Fs),a(ws,Ls);import"@pixi/polyfill";import*as Is from"@pixi/utils";import{InteractionManager as vs}from"@pixi/interaction";import{Application as Ps}from"@pixi/app";import{Renderer as Cs,BatchRenderer as Ss}from"@pixi/core";import{AppLoaderPlugin as bs}from"@pixi/loaders";import{TickerPlugin as Ds}from"@pixi/ticker";import*as zs from"@pixi/constants";import*as As from"@pixi/core";import*as Ts from"@pixi/display";import*as _s from"@pixi/graphics";import*as Bs from"@pixi/loaders";import*as Es from"@pixi/interaction";import*as ks from"@pixi/math";import*as Ms from"@pixi/runner";import*as Us from"@pixi/sprite";import*as Gs from"@pixi/text";import*as Fs from"@pixi/ticker";import*as Ls from"@pixi/settings";function Rs(t,e,i,s){const r=[];let n="";const o=t.split(""),a=new ys.Text("",e);for(let t=0;t<o.length;t++){const e=o[t],c=n+e;if(a.text=c,a.width>i){if(r.push(n),r.length>=s){const t=r[s-1];t.length>2?r[s-1]=t.slice(0,-2)+"...":r[s-1]="...";break}n=e}else n=c;t===o.length-1&&n&&r.push(n)}return r.slice(0,s).join("\n")}function Vs(t,e={}){if(0===t.length){const t=e.padding??20;return{items:[],size:[2*t,2*t]}}const i=e.padding??20,s=e.gap??5,r=t.map(t=>{const e=t.box.getSize();return{...t,width:e.x,height:e.y}});let n;n=r.some(t=>void 0!==t.row)?function(t,e,i){if(0===t.length)return{items:[],size:[2*e,2*e]};const s=new Map;for(const e of t){const t=e.row??0;s.has(t)||s.set(t,[]),s.get(t).push(e)}const r=Array.from(s.keys()).sort((t,e)=>t-e),n=[];let o=e,a=e;for(const t of r){const r=s.get(t),c=r.filter(t=>void 0!==t.column),h=r.filter(t=>void 0===t.column),l=Math.max(...r.map(t=>t.box.getSize().y),0),p=new Map,d=[...c].sort((t,e)=>t.column-e.column);for(const t of d){let e=t.column;for(;p.has(e);)e++;p.set(e,t)}let m=0;for(const t of h){for(;p.has(m);)m++;p.set(m,t),m++}const u=Array.from(p.keys()).sort((t,e)=>t-e);for(const s of u){const r=p.get(s);let c=e;for(let t=0;t<s;t++){const e=p.get(t);c+=e?e.box.getSize().x+i:i}n.push({id:r.id,x:c+r.box.getSize().x/2,y:o+r.box.getSize().y/2,row:t,column:s}),a=Math.max(a,c+r.box.getSize().x+e)}o+=l+i}const c=Math.max(o-i+e,2*e);return{items:n,size:[Math.max(a,2*e),c]}}(r,i,s):function(t,e,i,s){if(0===t.length)return{items:[],size:[2*e,2*e]};const r=new Map;for(const e of t){const t=e.row??0;r.has(t)||r.set(t,[]),r.get(t).push(e)}const n=Array.from(r.keys()).sort((t,e)=>t-e),o=[];let a=e,c=e;for(const t of n){const n=r.get(t);let h=e,l=0,p=0,d=1;for(const r of n){const{x:n,y:m}=r.box.getSize();let u=void 0!==s?.maxRowWidth&&h+n+e>s.maxRowWidth&&h>e;u&&void 0!==s?.maxRowCount&&d>=s.maxRowCount&&(u=!1),u?(a+=l+i,h=e,l=m,p=0,d++):l=Math.max(l,m),o.push({id:r.id,x:h+n/2,y:a+m/2,row:t,column:p}),c=Math.max(c,h+n+e),h+=n+i,p++}n.length>0&&(a+=l+i)}const h=Math.max(a-i+e,2*e);return{items:o,size:[Math.max(c,2*e),h]}}(r,i,s,e.config);return{items:n.items.map(t=>({id:t.id,position:[t.x,t.y],row:t.row,column:t.column})),size:n.size}}function Os(t,e){return[e[0]-t[0],e[1]-t[1]]}function Ws(t,e){return e.items.map(e=>{const i=t.find(t=>t.id===e.id),s=i?.currentPosition??[0,0];return{id:e.id,displacement:Os(s,e.position),targetPosition:e.position}})}function Hs(t,e){if(t.rowChange?.isRowChange&&t.rowChange.rowBounds){const e=t.rowChange.rowBounds,i=t.rowChange.toRow<t.rowChange.fromRow?e.minY:e.maxY;return new O(new A(e.minX-20,i),new A(e.maxX+20,i))}if(t.siblingId){const i=e(t.siblingId);return"before"===t.direction?new O(new A(i.min.x-5,i.min.y-10),new A(i.min.x-5,i.max.y+10)):new O(new A(i.max.x+5,i.min.y-10),new A(i.max.x+5,i.max.y+10))}return new O}function Ns(t,e,i,s,r){const n=e.filter(t=>t.id!==r);if(0===n.length)return{row:0,column:0};const o=n.map(t=>{const e=i(t.id);return{id:t.id,box:e,center:e.getCenter(),layoutInfo:s(t)}}).filter(t=>!t.box.isEmpty());if(0===o.length)return{row:0,column:0};const a=t.y,c=t.x,h=new Map;let l=0,p=0;for(const t of o){const e=void 0!==t.layoutInfo?.row?Math.floor(t.layoutInfo.row):0;l=Math.max(l,e),p=Math.min(p,e),h.has(e)||h.set(e,[]),h.get(e).push(t)}const d=[];for(const[t,e]of h){const i=Math.min(...e.map(t=>t.box.min.y)),s=Math.max(...e.map(t=>t.box.max.y)),r=(i+s)/2,n=s-i;d.push({row:t,centerY:r,minY:i,maxY:s,height:n})}d.sort((t,e)=>t.centerY-e.centerY);let m=0,u=!1;for(let t=0;t<d.length;t++){const e=d[t];if(a>=e.minY&&a<=e.maxY){m=e.row,u=!0;break}}if(!u&&d.length>0){a<d[0].minY&&(m=p-1,u=!0)}if(!u&&d.length>0){a>d[d.length-1].maxY&&(m=l+1,u=!0)}if(!u){let t=1/0;for(const e of d){const i=Math.abs(a-e.centerY);i<t&&(t=i,m=e.row)}}const g=h.get(m)??[];if(0===g.length)return{row:m,column:0};g.sort((t,e)=>t.center.x-e.center.x);for(let t=0;t<g.length;t++){if(c<g[t].center.x)return{row:m,column:t}}return{row:m,column:g.length}}function Ks(t,e,i,s,r,n,o){const a=t.x,c=t.y,h=e.filter(t=>t.id!==i);if(0===h.length)return{index:0,direction:"after",row:-1,column:0};const l=h.map(t=>{const e=n(t.id);if(e.isEmpty())return null;const i=s.property.layoutInfos?.[t.id];return{item:t,box:e,row:Math.floor(i?.row??0),column:i?.column??0,centerX:e.getCenter().x}}).filter(t=>null!==t);if(0===l.length)return{index:0,direction:"after",row:-1,column:0};const p=new Map;for(const t of l)p.has(t.row)||p.set(t.row,[]),p.get(t.row).push(t);const d=new Map;for(const[t,e]of p){const i=Math.min(...e.map(t=>t.box.min.y)),s=Math.max(...e.map(t=>t.box.max.y)),r=Math.min(...e.map(t=>t.box.min.x)),n=Math.max(...e.map(t=>t.box.max.x));d.set(t,{minY:i,maxY:s,minX:r,maxX:n})}const m=Array.from(p.keys()).sort((t,e)=>t-e);let u=-1;for(const t of m){const e=d.get(t);if(c>=e.minY&&c<=e.maxY){u=t;break}}if(-1===u&&m.length>0){const t=m[0];u=c<d.get(t).minY?-1:m[m.length-1]}const g=d.get(r),f=u!==r,y=p.get(u)??[];if(0===y.length){let t=null;for(const[e,i]of p)if(e>u&&i.length>0){t=i[0]?.item??null;break}if(!t){const e=m[m.length-1],i=void 0!==e?p.get(e)??[]:[];t=i[i.length-1]?.item??null}if(t){const e=s.children.indexOf(t.id);if(-1!==e)return{index:-1===u?e:e+1,direction:-1===u?"before":"after",siblingId:t.id,row:u,column:-1===u?0:p.get(u)?.length??0,rowChange:f&&g?{fromRow:r,toRow:u,rowBounds:g,isRowChange:f}:void 0}}return{index:0,direction:"after",row:u,column:0,rowChange:f&&g?{fromRow:r,toRow:u,rowBounds:g,isRowChange:f}:void 0}}y.sort((t,e)=>t.centerX-e.centerX);for(const t of y)if(a<t.centerX){const e=s.children.indexOf(t.item.id);if(-1!==e)return{index:e,direction:"before",siblingId:t.item.id,row:u,column:t.column,rowChange:f&&g?{fromRow:r,toRow:u,rowBounds:g,isRowChange:!0}:void 0}}const x=y[y.length-1];if(x){const t=s.children.indexOf(x.item.id);if(-1!==t)return{index:t+1,direction:"after",siblingId:x.item.id,row:u,column:x.column+1,rowChange:f&&g?{fromRow:r,toRow:u,rowBounds:g,isRowChange:!0}:void 0}}return{index:0,direction:"after",row:-1,column:0,rowChange:f&&g?{fromRow:r,toRow:u,rowBounds:g,isRowChange:!0}:void 0}}function js(t,e,i){var s;(s=e.property).layoutInfos??(s.layoutInfos={});const r=e.property.layoutInfos[t.id];console.log(`[AutoLayout] 元素 ${t.id} (${t.name}): 行 ${r?.row??0} → ${i.row}, 列 ${r?.column??0} → ${i.column}`),e.property.layoutInfos[t.id]={...r,row:i.row,column:i.column}}function $s(t,e,i,s,r,n,o){if(i===r&&s===n)return;const a=JSON.parse(JSON.stringify(t.property.layoutInfos??{}));if(i===r)for(const[t,r]of Object.entries(a))t!==e&&r.row===i&&(s<n?r.column>s&&r.column<=n&&r.column--:s>n&&r.column>=n&&r.column<s&&r.column++);else{for(const[t,r]of Object.entries(a))t!==e&&r.row===i&&r.column>s&&r.column--;const t=Object.entries(a).filter(([t,i])=>t!==e&&i.row===r&&i.column>=n).sort((t,e)=>e[1].column-t[1].column);for(const[e,i]of t)i.column++}t.property.layoutInfos=a}Is.skipHello(),Cs.registerPlugin("interaction",vs),Cs.registerPlugin("batch",Ss),Ps.registerPlugin(Ds),Ps.registerPlugin(bs),ws.Graphics.prototype.drawBox=function(t){const e=t.getCorners();this.beginFill();for(let t=0;t<4;t++){const i=e[t],s=e[(t+1)%4],r=(new xs).subtractVectors(s,i).normalize();this.moveTo(i.x-r.x,i.y-r.y),this.lineTo(s.x+r.x,s.y-r.y)}this.endFill()},ws.Graphics.prototype.fillBox=function(t){const e=t.getSize();this.drawRect(t.min.x,t.min.y,e.x,e.y)},ws.Graphics.prototype.drawLine=function(t){if(this.beginFill(),t instanceof O)this.moveTo(t.start.x,t.start.y),this.lineTo(t.end.x,t.end.y);else for(let e=0;e<t.length-1;e++)this.moveTo(t[e].x,t[e].y),this.lineTo(t[e+1].x,t[e+1].y);this.endFill()},ws.Graphics.prototype.drawDashLine=function(t,e,i=16,s=8){const r=this.currentPath.points,n={x:r[r.length-2]||0,y:r[r.length-1]||0},o=Math.abs(t),a=Math.abs(e),c=Math.atan((e-n.y)/(t-n.x));for(;Math.abs(n.x)<o||Math.abs(n.y)<a;)n.x=Math.abs(n.x+i*Math.cos(c))<o?n.x+i*Math.cos(c):t,n.y=Math.abs(n.y+i*Math.sin(c))<a?n.y+i*Math.sin(c):e,this.lineTo(n.x,n.y),n.x=Math.abs(n.x+s*Math.cos(c))<o?n.x+s*Math.cos(c):t,n.y=Math.abs(n.y+s*Math.sin(c))<a?n.y+s*Math.sin(c):e,this.moveTo(n.x,n.y)},a(ys,ws);var Ys={fontSize:14,fill:6710886,align:"left"},Js={fontSize:14,fill:6710886,align:"right"},Xs=class extends ms{constructor(t,e,i){super(),c(this,"type","transform"),c(this,"wireframe"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"cursorPoint",new A),c(this,"lastPoint",new A),c(this,"startPoint",new A),c(this,"rotationAngle",0),c(this,"active",!1),c(this,"enableAdsorption",!0),c(this,"scaleParam"),c(this,"activeType","null"),c(this,"lastWorldPosition",new K),c(this,"_ignoreInteraction",!1),c(this,"firstClickPoint",new A),c(this,"frameBoxes",new Map),c(this,"toAddedFrameId"),c(this,"autoLayoutIndicator",null),c(this,"isAutoLayoutDragging",!1),c(this,"autoLayoutDragOriginalPosition",null),c(this,"pendingLayoutPosition",null),c(this,"autoLayoutGraphics",new ys.Graphics),c(this,"groupsNeedProcess",new Map),c(this,"_pageDataUtils"),c(this,"adsorptionGizmo"),c(this,"selectorGizmo"),c(this,"onSelectorGizmoTrigger",!1),c(this,"graphics",new ys.Graphics),c(this,"_isLockScale",!0),c(this,"isShiftDown",!1),c(this,"nameText",new ys.Text("",Ys)),c(this,"sizeText",new ys.Text("",Js)),c(this,"imageSprite"),c(this,"groupSprite"),c(this,"textSprite"),c(this,"videoSprite"),c(this,"frameSprite"),c(this,"effectsSprite"),this._pageDataUtils=t,this.selectorGizmo=i,this.adsorptionGizmo=e,this.wireframe={edges:[],anchor:new A,scaleCorners:[],rotationCorners:[],interactive:!0,cornerEnable:!0,directionEnable:!0,rotationEnabled:!0,scaleEnabled:!0,box:new W,totalBox:new W,childrenBoxes:[],activeType:"null",interactiveDirection:new A,scaleCorner:new A,scaleEdgeCorners:[]},this.imageSprite=ys.Sprite.from(lo.config.gestureHandlerConfig.transformGizmoConfig.pictureLogoUrl),this.imageSprite.width=15,this.imageSprite.height=15,this.groupSprite=ys.Sprite.from(lo.config.gestureHandlerConfig.transformGizmoConfig.groupLogoUrl),this.groupSprite.width=15,this.groupSprite.height=15,this.textSprite=ys.Sprite.from(lo.config.gestureHandlerConfig.transformGizmoConfig.textLogoUrl),this.textSprite.width=15,this.textSprite.height=15,this.videoSprite=ys.Sprite.from(lo.config.gestureHandlerConfig.transformGizmoConfig.videoLogoUrl),this.videoSprite.width=15,this.videoSprite.height=15,this.frameSprite=ys.Sprite.from(lo.config.gestureHandlerConfig.transformGizmoConfig.frameLogoUrl),this.frameSprite.width=15,this.frameSprite.height=15,this.effectsSprite=ys.Sprite.from(lo.config.gestureHandlerConfig.transformGizmoConfig.effectsLogoUrl),this.effectsSprite.width=15,this.effectsSprite.height=15}get interactive(){return lo.config.gestureHandlerConfig.transformGizmoEnabled}set interactive(t){lo.config.gestureHandlerConfig.transformGizmoEnabled=t,this.ignoreInteraction=t}get isLockScale(){return this._isLockScale}set isLockScale(t){t!==this.isLockScale&&(this._isLockScale=t)}get infoType(){const t=this._pageDataUtils.getSelectedItems();return 1===t.length?t[0].type:m.ItemType.base}get ignoreInteraction(){return this._ignoreInteraction}set ignoreInteraction(t){t!==this._ignoreInteraction&&(this._ignoreInteraction=t,this.wireframe.cornerEnable=t)}actionKey(t){this.isShiftDown=t.shiftKey}endActionKey(t){this.isShiftDown=t.shiftKey}getRenderObjects(){const t=[];if(!this.interactive)return t;if(this.refreshRenderObject(),t.push(this.graphics),this.infoType!==m.ItemType.base&&lo.config.gestureHandlerConfig.transformGizmoConfig.infoShowEnabled)switch(t.push(this.nameText),t.push(this.sizeText),this.infoType){case"sprite":t.push(this.imageSprite);break;case"group":t.push(this.groupSprite);break;case"text":lo.config.gestureHandlerConfig.textGizmoEnbaled||t.push(this.textSprite);break;case"video":t.push(this.videoSprite);break;case"generator":{const e=this._pageDataUtils.getSelectedItems()[0];"generator"===e.type&&"image"===e.generatorType?t.push(this.imageSprite):"generator"===e.type&&"video"===e.generatorType&&t.push(this.videoSprite);break}case"effects":t.push(this.effectsSprite);break;case"frame":t.push(this.frameSprite)}return this.renderAutoLayoutIndicator(),this.isAutoLayoutDragging&&this.autoLayoutIndicator&&t.push(this.autoLayoutGraphics),t}renderAutoLayoutIndicator(){if(this.autoLayoutGraphics.clear(),!this.isAutoLayoutDragging||!this.autoLayoutIndicator)return;const t=lo.config.gestureHandlerConfig.autoLayoutIndicatorConfig,e=t?.lineWidth??2,i=t?.lineColor??3900150;this.autoLayoutGraphics.lineStyle(e,i,1),this.autoLayoutGraphics.drawLine(this.autoLayoutIndicator.line);const s=this.autoLayoutIndicator.line.start,r=this.autoLayoutIndicator.line.end;this.autoLayoutGraphics.beginFill(i),this.autoLayoutGraphics.drawCircle(s.x,s.y,3),this.autoLayoutGraphics.drawCircle(r.x,r.y,3),this.autoLayoutGraphics.endFill()}cancelPreparation(){this.active=!1,this.wireframe.activeType="null"}preparationAction(t){if(!this.interactive)return void console.warn("Transform gizmo is not opened, use #SDK.openTransformGizmo() open this feature.");const e=new A(t.offsetX,t.offsetY),i=this.wireframe;this.refreshTransformType(e);const{interactiveDirection:s}=i;return this.refreshCursorResult(this.activeType,k(s)),"translation"===this.activeType&&(this.onSelectorGizmoTrigger="selector"===this.selectorGizmo.preparationAction(t,"transform")),this.active="null"!==this.activeType,this.active?this.type:void 0}preAction(t,e=!1){if(this._pageDataUtils.saveUndoRedoOldData(),this.active=1===t.buttons,this.startPoint=new A(t.clientX,t.clientY),this.lastPoint=new A(t.clientX,t.clientY),this.cursorPoint=new A(t.offsetX,t.offsetY),this.groupsNeedProcess.clear(),this.refreshFrameBoxes(),1!==t.buttons)return;if(e)return this.selectorGizmo.preAction(t,e,new A(t.offsetX,t.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 K,this.activeType=e?"null":this.activeType,this.type}action(t){if(!this.interactive)return void console.warn("Transform gizmo is not opened, use #SDK.openTransformGizmo() open this feature.");if(!this.active){this.active=!0,this.refreshWireframeBySelectedItems(),this.wireframe.activeType="translation",this.lastPoint.set(t.clientX,t.clientY),this.cursorPoint.set(t.offsetX,t.offsetY);const e=this.cursorPoint.clone().subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(e),this.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new K,this.groupsNeedProcess.clear(),this.refreshFrameBoxes()}const e=new A(t.clientX,t.clientY),i=(new A).subtractVectors(e,this.lastPoint);if(!this.wireframe.interactive||i.length()<=0)return;const s=this._pageDataUtils.getSelectedItems(),{anchor:r,activeType:n,interactiveDirection:o,scaleCorner:a}=this.wireframe,c=this._pageDataUtils.getPageData();w(c);let h=0;switch(n){case"rotation":{const t=r.clone(),e=new K,n=U(M((new A).subtractVectors(this.cursorPoint,t),(new A).subtractVectors(this.cursorPoint.add(i),t))*E,3);e.z=n,this.rotationAngle+=n,h=k(o)+this.rotationAngle*B,s.forEach(t=>{this._pageDataUtils.rotateItem(t.id,e)});break}case"translation":{const t=i.clone();if(this.enableAdsorption){const e=c.items.map(t=>s.find(e=>e.id===t.id)||0!==s.filter(e=>t.parentId&&t.parentId===e.id).length||!this._pageDataUtils.getItemEditEnable(t.id)||s.find(e=>e.parentId===t.id)?new W:this._pageDataUtils.getViewBoxById(t.id)).filter(t=>!t.isEmpty()),i=new A(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);this.adsorptionGizmo.boxTranslationAdsorption(t,this.wireframe.box,e);const r=new A(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);t.add(i).subtract(r)}const e=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(this.cursorPoint.add(t).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition()));if(e){const t=e.clone().subtract(this.lastWorldPosition);s.forEach(e=>{t.x=U(t.x,5),t.y=U(t.y,5),t.z=U(t.z,5),this._pageDataUtils.moveItem(e.id,t),this.refreshItemFrameRelationShip(e,this.cursorPoint.clone())}),this.lastWorldPosition.copyFrom(e)}break}case"scale":{const t=this.cursorPoint.add(i).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition());if(!a||!this.scaleParam)return;const e=s[0]??void 0,r=e&&1===s.length&&zt(e)?!this.isShiftDown:this.isShiftDown,n=this.scaleParam.farthestCorner;(a.x-n.x)*(this.cursorPoint.x-n.x)>0&&(a.y-n.y)*(this.cursorPoint.y-n.y)>0||!this.isLockScale||this.isShiftDown||(t.x=n.x+(a.x-n.x)/Math.abs(a.x-n.x)*4,t.y=n.y+(a.y-n.y)/Math.abs(a.y-n.y)*4);const c=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t);if(c){const t=this._pageDataUtils.getItemTransformById(e?.id??""),i=(new j).extractRotation(t.matrix).invert(),{corner:n,center:o,shift:a,lastScalar:h}=this.scaleParam,l=(new K).subtractVectors(n,o).applyMatrix(i),p=l.clone().multiply(h),d=c.clone().subtract(a).subtract(o).applyMatrix(i),m=new K(1,1,1);if(!this.isLockScale||r)m.x=F(p.x,0)?1:d.x/p.x,m.y=F(p.y,0)?1:d.y/p.y,m.z=F(p.z,0)?1:d.z/p.z;else{const t=G([F(l.x,0)?1:Math.abs(d.x/l.x),F(l.y,0)?1:Math.abs(d.y/l.y)]),e=d.toArray()[t],i=p.toArray()[t];if(F(h.x,h.y)&&F(h.z,h.x)){const t=F(i,0)?1:Math.abs(e/i);m.set(t,t,t)}else if(0===t){m.x=F(i,0)?1:Math.abs(e/i);const t=l.y*e/l.x;m.y=F(p.y,0)?1:t/p.y;const s=l.z*e/l.x;m.z=F(p.z,0)?1:s/p.z}else if(1===t){m.y=F(i,0)?1:Math.abs(e/i);const t=l.x*e/l.y;m.x=F(p.x,0)?1:t/p.x;const s=l.z*e/l.y;m.z=F(p.z,0)?1:s/p.z}else{m.z=F(i,0)?1:Math.abs(e/i);const t=l.x*e/l.z;m.x=F(p.x,0)?1:t/p.x;const s=l.y*e/l.z;m.y=F(p.y,0)?1:s/p.y}}const u=m.clone().subtract(new K(1,1,0)).divide(2).add(new K(1,1,.5)),g=o.clone().add((new K).subtractVectors(n,o).multiply(new K(h.x,h.y,1)));this.scaleParam.lastScalar.multiply(u);const f=o.clone().add((new K).subtractVectors(n,o).multiply(new K(this.scaleParam.lastScalar.x,this.scaleParam.lastScalar.y,1))),y=(new K).subtractVectors(f,g);if(y.x=U(y.x,5),y.y=U(y.y,5),y.z=U(y.z,5),this.scaleParam.center.add(y),this.scaleParam.corner.add(y),e&&zt(e)){const t=e.property.width,i=e.property.height,s=t*u.x,r=i*u.y;this._pageDataUtils.resizeFrameItem(e.id,[s,r],y)}else s.forEach(t=>{this._pageDataUtils.scaleItem(t.id,u),this._pageDataUtils.moveItem(t.id,y)});this.lastWorldPosition.copyFrom(c)}h=k(o);break}}s.forEach(t=>{this.updateAutoLayoutIndicator(t)}),this.refreshCursorResult(n,h),this.lastPoint.copyFrom(e)}endAction(t){const e=this._pageDataUtils.getSelectedItems(),i=1===e.length?e[0]:void 0;this.executeAutoLayoutReorder(i),this._pageDataUtils.pushUndoRedoData(),this.active=!1;const{clientX:s,clientY:r,offsetX:n,offsetY:o}=t,a=new A(s,r);if(a.distanceTo(this.startPoint)<4&&this.onSelectorGizmoTrigger){const t=this.selectorGizmo.hitTest(new A(n,o));this.isShiftDown||this._pageDataUtils.clearSelectedItems(0===t.length),this.selectorGizmo.addSelectedItem(t[0])}else{const t=(new A).subtractVectors(a,this.lastPoint);this.cursorPoint.add(t);const e=this.wireframe;"scale"===e.activeType&&this.refreshFrameChildren(),this.refreshTransformType(this.cursorPoint);const{activeType:i,interactiveDirection:s}=e;this.refreshCursorResult(i,k(s)),this.adsorptionGizmo.clearAbsorptionResult()}this.processGroupsNeedProcess(),this.toAddedFrameId=void 0,this.frameBoxes.clear(),this.onSelectorGizmoTrigger=!1,this.rotationAngle=0,this.lastPoint=new A,this.startPoint=new A,this.cursorPoint=new A}interruption(){this.active=!1,this.cursorResult.type="normal",this.adsorptionGizmo.clearAbsorptionResult(),this.groupsNeedProcess.size>0&&(console.log("Clearing groupsNeedProcess due to interruption."),this.groupsNeedProcess.clear()),this.isAutoLayoutDragging&&(this.autoLayoutIndicator=null,this.isAutoLayoutDragging=!1,this.autoLayoutDragOriginalPosition=null,this.pendingLayoutPosition=null)}refreshCursorResult(t,e=0){switch(t){case"scale":this.cursorResult={type:"scale",angle:(e+Math.PI/4)*E};break;case"rotation":this.cursorResult={type:"rotation",angle:(e+Math.PI/4)*E};break;case"translation":case"null":this.cursorResult={type:"normal",angle:0}}}refreshResults(){const t=this.wireframe.activeType;this.refreshWireframeBySelectedItems(),t!==this.wireframe.activeType&&this.refreshCursorResult(this.wireframe.activeType)}initInteractionPlane(t){const e=this._pageDataUtils.getSelectedItems();switch(this.wireframe.activeType){case"scale":{const i=1==e.length?e[0]:void 0;let s,r,n;if(i){const t=this._pageDataUtils.getItemTransformById(i.id);s=(new K).copyFrom(this._pageDataUtils.getPlayerItemById(i.id).transform.anchor).applyMatrix(t.matrix),r=(new K).setFromMatrixPosition(t.matrix),n=(new $).setFromQuaternion((new N).setFromRotationMatrix(t.matrix))}this._pageDataUtils.interactionUtils.initInteractionPlane(r,n);const{scaleCorner:o,box:a}=this.wireframe,c=a.corners[0].clone();let h=c.distanceTo(o);a.corners.forEach(t=>{t.distanceTo(o)>h&&(c.copyFrom(t),h=t.distanceTo(o))}),this.scaleParam={shift:new K,center:new K,corner:new K,lastScalar:new K(1,1,1),farthestCorner:c},this.scaleParam.center=s??r;const l=this._pageDataUtils.getViewportLeftTopPosition();if(["scale"].includes(this.wireframe.activeType)&&this.wireframe.scaleCorner){const t=this.wireframe.scaleCorner.clone().subtract(l);this.scaleParam.corner=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new K}this.scaleParam.shift=(this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new K).subtract(this.scaleParam.corner);break}case"translation":case"rotation":this._pageDataUtils.interactionUtils.initInteractionPlane()}}refreshRenderObject(){this.graphics.clear(),this.nameText.text="",this.sizeText.text="";const{wireframeAlpha:t,wireframeColor:e,wireframeWidth:i,cornerFillColor:s,cornerLineWidth:r,cornerLineColor:n,cornerLineAlpha:o,infoShowEnabled:a}=lo.config.gestureHandlerConfig.transformGizmoConfig;if(!this.wireframe.box.isEmpty()){this.graphics.lineStyle(i,e,t),this.wireframe.edges.forEach(t=>{this.graphics.drawLine(t)});const c=t=>{t.corners.forEach((e,i)=>{const s=new O(e,t.corners[(i+1)%4]);this.graphics.drawLine(s)})};if(this.wireframe.childrenBoxes.forEach(t=>{c(t)}),this.wireframe.cornerEnable&&(this.graphics.beginFill(s),this.graphics.lineStyle(r,n,o),this.wireframe.scaleCorners.forEach(t=>{this.graphics.drawCircle(t.center.x,t.center.y,t.radius)}),this.graphics.endFill()),this.infoType!==m.ItemType.base&&a){const t=this._pageDataUtils.getSelectedItems(),e=t[0],i=1===t.length?e.name:"",{width:s,height:r,rotation:n}=e.property,o=[s,r],a="group"===this.infoType?this.groupSprite:"sprite"===this.infoType?this.imageSprite:"text"===this.infoType?this.textSprite:"video"===this.infoType?this.videoSprite:"generator"===this.infoType&&"image"===e.generatorType?this.imageSprite:"generator"===this.infoType&&"video"===e.generatorType?this.videoSprite:"effects"===this.infoType?this.effectsSprite:"frame"===this.infoType?this.frameSprite:this.imageSprite,c=this.wireframe.box.corners[3],h=n[2]*B;a.anchor.set(0,1),a.x=c.x,a.y=c.y-5,a.rotation=-h;const{x:l}=this.wireframe.box.getSize(),p=c.clone().add(new A(20,0)).rotateAround(c,-h),d=this.wireframe.box.corners[0].clone().subtract(new A(0,20)).rotateAround(this.wireframe.box.corners[0].clone(),-h);this.sizeText.text=o.map(t=>U(t,0)).join(" * "),this.sizeText.anchor.set(1,0),this.sizeText.x=d.x,this.sizeText.y=d.y,this.sizeText.rotation=-h;const{width:m}=this.sizeText.getBounds();l<2*m&&(this.sizeText.text="");const u=` ${i}`,g=new A(0,4).rotateAround(new A,h);this.nameText.text=u,this.nameText.anchor.set(0,1),this.nameText.x=p.x+g.x,this.nameText.y=p.y-g.y,this.nameText.rotation=-h;const{width:f}=this.nameText.getBounds();if(20+f+m>l)if(l<2*m)this.sizeText.text="",this.nameText.text=Rs(u,Ys,l-20,1);else{const t=l-20-m-5;this.nameText.text=Rs(u,Ys,t,1)}}if(this.toAddedFrameId){const s=this.frameBoxes.get(this.toAddedFrameId);s&&(this.graphics.lineStyle(i,e,t),this.graphics.drawBox(s))}}}refreshTransformType(t){this.activeType="null";let e=!0;if(this.wireframe.interactiveDirection=new A,this.wireframe.scaleCorner=void 0,this.wireframe.scaleEdgeCorners=void 0,this.wireframe.interactive&&e&&this.wireframe.totalBox.containsPoint(t)){if(this.wireframe.scaleEnabled)for(let i=0,s=this.wireframe.scaleCorners.length;i<s;i++){if(this.wireframe.scaleCorners[i].containsPoint(t)){e=!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}}if(e&&this.wireframe.box.containsPoint(t,!1)&&(e=!1,this.activeType="translation",this.wireframe.activeType="translation"),this.wireframe.rotationEnabled)for(let i=0,s=this.wireframe.scaleCorners.length;i<s;i++){if(this.wireframe.rotationCorners[i].containsPoint(t)&&e){e=!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 t=this._pageDataUtils.getSelectedItems(),e="template"===lo.config.mode,i=1===t.length?t[0]:void 0,s="generator"===i?.type,r="frame"===i?.type&&"auto"===i?.layoutMode,n=1===t.length&&"group"!==i?.type&&!r&&!s,o=new W;if(this.wireframe.edges=[],this.wireframe.scaleCorners=[],this.wireframe.childrenBoxes=[],this.wireframe.rotationCorners=[],this.wireframe.rotationEnabled=e,this.wireframe.scaleEnabled=n||e,this.wireframe.cornerEnable=n||e,t.length>1)t.forEach(t=>{if(this._pageDataUtils.getItemShow(t.id)){const e=this._pageDataUtils.getViewBoxById(t.id);o.union(e),this.wireframe.childrenBoxes.push((new W).copyFrom(e).expandByScalar(1))}}),this.wireframe.anchor=o.getCenter(),this.wireframe.interactive=!0;else if(1===t.length){const e=t[0];if("text"!==e.type&&this._pageDataUtils.getItemShow(e.id)){const t=this._pageDataUtils.getViewBoxById(e.id);o.copyFrom(t),this.wireframe.anchor=this._pageDataUtils.getItemViewAnchor(e.id)??o.getCenter(),this.wireframe.interactive=this._pageDataUtils.getItemEditEnable(e.id)}}const a=o.isEmpty(),c=a?0:1,h=a?0:16;this.wireframe.activeType=t.length?this.wireframe.activeType:"null",this.wireframe.box.copyFrom(o).expandByScalar(c),this.wireframe.totalBox.copyFrom(o).expandByScalar(h);const l=this.wireframe.box.corners;l.forEach((t,e)=>{this.wireframe.edges.push(new O((new A).copyFrom(t),(new A).copyFrom(l[(e+1)%4])))});const{scaleCircleSize:p,rotationCircleSize:d}=lo.config.gestureHandlerConfig.transformGizmoConfig;1===t.length&&this.wireframe.box.corners.forEach(t=>{this.wireframe.scaleCorners.push(new H(t,p));const e=(new A).subtractVectors(t,this.wireframe.box.getCenter()),i=(new A).copyFrom(this.wireframe.box.getCenter()).add((new A).copyFrom(e).normalize().multiply(e.length()+d-p));this.wireframe.rotationCorners.push(new H(i,d))})}setAdsorptionEnabled(t){this.enableAdsorption=t}processGroupsNeedProcess(){0!==this.groupsNeedProcess.size&&(this.groupsNeedProcess.forEach(({groupId:t,frameId:e,childrenOutOfFrame:i})=>{const s=this._pageDataUtils.getSDKItem(t);s&&It(s)&&(s.property.children=s.property.children.filter(t=>!i.includes(t)),i.forEach(t=>{const e=this._pageDataUtils.getSDKItem(t);e&&(e.parentId=void 0)}),i.length>0&&e&&(console.log(`Moving ${i.length} children out of frame ${e}`),this._pageDataUtils.moveItemsOutOfFrame(i,e)))}),this.groupsNeedProcess.clear())}refreshFrameBoxes(){this.frameBoxes.clear();const t=this._pageDataUtils.getPageData()?.items.filter(t=>zt(t));t?.forEach(t=>{const e=this._pageDataUtils.getViewBoxById(t.id);this.frameBoxes.set(t.id,e)})}refreshItemFrameRelationShip(t,e){if(zt(t)||St(t))return;const i=(this._pageDataUtils.getPageData()?.items.filter(t=>zt(t))??[]).find(e=>e.children.includes(t.id)),s=!!i;let r;if(this.frameBoxes.forEach((t,i)=>{t.containsPoint(e)&&!r&&(r=i)}),this.toAddedFrameId=r,!r&&s){const e=[t.id];if(It(t)){const{children:i}=t.property;e.push(...i)}this._pageDataUtils.moveItemsOutOfFrame(e),t.parentId!==i.id&&t.parentId&&this._pageDataUtils.deleteItemParent(t.id,t.parentId)}if(r&&(!i||i.id!==r)){const e=[t.id];if(It(t)){const{children:i}=t.property;if(e.push(...i),0===i.length)this._pageDataUtils.deleteItem(t.id);else{const e=this.frameBoxes.get(r);if(!e)return;const s=[],n=[];if(i.forEach(t=>{const i=this._pageDataUtils.getViewBoxById(t);i&&e.intersectsBox(i)?s.push(t):n.push(t)}),0===s.length)return void console.log(`Group ${t.id} has no children in frame ${r}, skipping frame entry.`);n.length>0?(console.log(`Group ${t.id}: ${n.length} children out of frame, will process at drag end.`),this.groupsNeedProcess.set(t.id,{groupId:t.id,frameId:r,childrenOutOfFrame:n})):this.groupsNeedProcess.delete(t.id)}}else if(t.parentId){const e=this._pageDataUtils.getSDKItem(t.parentId);e&&It(e)&&this._pageDataUtils.deleteItemParent(t.id,t.parentId)}this._pageDataUtils.moveItemsToFrame(e,r)}return r}updateAutoLayoutIndicator(t){const e=t.parentId;if(!e)return this.autoLayoutIndicator=null,void(this.isAutoLayoutDragging=!1);const i=this._pageDataUtils.getSDKItem(e);if(!zt(i)||"auto"!==i.layoutMode)return this.autoLayoutIndicator=null,void(this.isAutoLayoutDragging=!1);if(this.isAutoLayoutDragging=!0,null===this.autoLayoutDragOriginalPosition){const e=i.property.layoutInfos?.[t.id];this.autoLayoutDragOriginalPosition={row:e?.row??0,column:e?.column??0}}const s=i.children.map(t=>this._pageDataUtils.getSDKItem(t)).filter(t=>void 0!==t),r=Ns(this.cursorPoint,s,t=>this._pageDataUtils.getViewBoxById(t),t=>{const e=this._pageDataUtils.getSDKItem(t.parentId??"");return zt(e)?e.property.layoutInfos?.[t.id]:void 0},t.id);if(r){const e=i.property.layoutInfos?.[t.id],n=e?.row??0;this.pendingLayoutPosition={...r};const o=Ks(this.cursorPoint,s,t.id,i,n,t=>this._pageDataUtils.getViewBoxById(t));if(o.siblingId){const t=Hs(o,t=>this._pageDataUtils.getViewBoxById(t));this.autoLayoutIndicator={frameId:i.id,insertIndex:o.index,insertDirection:o.direction,targetSiblingId:o.siblingId,line:t,targetRow:r.row,targetColumn:r.column}}else this.autoLayoutIndicator={frameId:i.id,insertIndex:s.length-1,insertDirection:"after",targetSiblingId:void 0,line:new O,targetRow:r.row,targetColumn:r.column}}else this.autoLayoutIndicator=null}executeAutoLayoutReorder(t){if(!this.isAutoLayoutDragging)return;const e=this.autoLayoutIndicator?.frameId;if(!e)return this.autoLayoutIndicator=null,this.isAutoLayoutDragging=!1,this.autoLayoutDragOriginalPosition=null,void(this.pendingLayoutPosition=null);const i=this._pageDataUtils.getSDKItem(e);if(!zt(i))return this.autoLayoutIndicator=null,this.isAutoLayoutDragging=!1,this.autoLayoutDragOriginalPosition=null,void(this.pendingLayoutPosition=null);t&&this.autoLayoutDragOriginalPosition&&this.pendingLayoutPosition&&($s(i,t.id,this.autoLayoutDragOriginalPosition.row,this.autoLayoutDragOriginalPosition.column,this.pendingLayoutPosition.row,this.pendingLayoutPosition.column),js(t,i,this.pendingLayoutPosition)),this._pageDataUtils.applyFrameAutoLayout(e),this.autoLayoutIndicator=null,this.isAutoLayoutDragging=!1,this.autoLayoutDragOriginalPosition=null,this.pendingLayoutPosition=null}refreshFrameChildren(){const t=this._pageDataUtils.getSelectedItems();1===t.length&&this._pageDataUtils.refreshFrameChildren(t[0].id)}};import{Graphics as Qs}from"@pixi/graphics";var Zs=class extends ms{constructor(){super(...arguments),c(this,"results",[]),c(this,"graphics",new Qs),c(this,"absorptionResult",{}),c(this,"type","adsorption")}get interactive(){return lo.config.gestureHandlerConfig.adsorptionGizmoEnabled}set interactive(t){lo.config.gestureHandlerConfig.adsorptionGizmoEnabled=t}preparationAction(){}getCursorState(){}preAction(){}action(){}cancelPreparation(){}actionKey(){}endActionKey(){}endAction(){}interruption(){}boxTranslationAdsorption(t,e,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(e.isEmpty())return;const n=new A(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(t),o=e.clone().translate(n),a=o.getCenter();this.absorptionResult={},i.forEach(t=>{if(t.isEmpty())return;t.corners.forEach(t=>{o.corners.forEach(e=>{this.getPointAbsorption(e,t,s,r)}),this.getPointAbsorption(a,t,s,r)});const e=t.getCenter();this.getPointAbsorption(a,e,s,r),o.corners.forEach(t=>{this.getPointAbsorption(t,e,s,r)})})}pointTranslationAdsorption(t,e,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 n=new A(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(t),o=e.clone().add(n);this.absorptionResult={},i.forEach(t=>{this.getPointAbsorption(o,t,s,r)})}getPointAbsorption(t,e,i=!0,s=!0){i&&Math.abs(t.x-e.x)<lo.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(t,e,"x"),s&&Math.abs(t.y-e.y)<lo.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(t,e,"y")}refreshPointAbsorptionResult(t,e,i){const s=t[i]-e[i],r="x"===i?"xPoints":"yPoints";if(this.absorptionResult&&void 0===this.absorptionResult[i])this.absorptionResult[i]=s,this.absorptionResult[r]=[{point:t,targets:[e]}];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:t,targets:[e]}];else{const i=this.absorptionResult[r].filter(e=>e.point.equals(t));void 0===i||0===i.length?this.absorptionResult[r]?.push({point:t,targets:[e]}):i[0]?.targets.push(e)}else this.absorptionResult[i]=s,this.absorptionResult[r]=[{point:t,targets:[e]}]}refreshResults(){if(void 0===this.absorptionResult)return;const{x:t,y:e,xPoints:i,yPoints:s}=this.absorptionResult,r=new A(t??0,e??0);void 0!==t&&void 0!==i&&i.forEach(t=>{const e=t.point.clone().subtract(r),i=e.clone(),s=e.clone();t.targets.forEach(t=>{i.x=t.x,i.y=Math.min(i.y,t.y),s.x=t.x,s.y=Math.max(s.y,t.y)}),this.results.push(new O(i,s))}),void 0!==e&&void 0!==s&&s.forEach(t=>{const e=t.point.clone().subtract(r),i=e.clone(),s=e.clone();t.targets.forEach(t=>{i.y=t.y,i.x=Math.min(i.x,t.x),s.y=t.y,s.x=Math.max(s.x,t.x)}),this.results.push(new O(i,s))})}refreshRenderObject(){this.graphics.clear();const{lineWidth:t,lineColor:e}=lo.config.gestureHandlerConfig.adsorptionGizmoConfig;this.results.forEach(i=>{this.graphics.lineStyle(t,e),this.graphics.drawLine(i)})}getRenderObjects(){return this.interactive?(this.refreshResults(),this.refreshRenderObject(),[this.graphics]):[]}clearAbsorptionResult(){this.results=[],this.absorptionResult={}}},qs=class extends ms{constructor(t){super(),c(this,"safeAreaSprites",new Map),c(this,"box",new W),c(this,"graphics",new ys.Graphics),c(this,"PageDataUtils"),c(this,"type","preference"),this.PageDataUtils=t}preparationAction(){}preAction(){}action(){}endAction(){}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){if(this.box=new W,!this.interactive)return void console.warn("Preference gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if("editor"===lo.config.mode)return;const t=this.PageDataUtils.getPageData();w(t);const{container:e}=this.PageDataUtils;if(e){const{zoom:i}=t.property,{offsetWidth:s,offsetHeight:r}=e,n=new A(s,r).multiply(i),o=this.PageDataUtils.getViewportLeftTopPosition().add(n.clone().divide(2));this.box=(new W).setFromCenterAndSize(o,n)}}refreshRenderObjects(){if("editor"===lo.config.mode)return;const{boxWidth:t,boxColor:e,markColor:i,markAlpha:s,safeAreaEnabled:r,safeAreaBoxColor:n,safeAreaBoxAlpha:o}=lo.config.gestureHandlerConfig.preferenceGizmoConfig;this.graphics=new ys.Graphics;const{offsetWidth:a,offsetHeight:c}=this.PageDataUtils.container.parentElement,h=new W(new A(0,0),new A(a,this.box.min.y)),l=new W(new A(0,this.box.min.y),new A(this.box.min.x,c)),p=new W(new A(this.box.min.x,this.box.max.y),new A(a,c)),d=new W(new A(this.box.max.x,this.box.min.y),new A(a,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(d),this.graphics.endFill(),r){const t=this.PageDataUtils.getViewProperty();if(t){const{size:e,safeArea:i,previewSafeAreas:s}=t,[r,a,c,h]=i,l=this.box.getSize(),p=r/e[1]*l.y,d=c/e[0]*l.x,m=h/e[0]*l.x,u=a/e[1]*l.y,{min:g,max:f}=this.box;this.graphics.beginFill(n,o);const y=new W(g,new A(f.x,g.y+p)),x=new W(new A(g.x,g.y+p),new A(g.x+d,f.y)),w=new W(new A(f.x-m,g.y+p),new A(f.x,f.y)),I=new W(new A(g.x+d,f.y-u),new A(f.x-m,f.y));this.graphics.fillBox(y),this.graphics.fillBox(x),this.graphics.fillBox(w),this.graphics.fillBox(I),this.graphics.endFill(),s.forEach(t=>{const{box:[i,s,r,n],color:o,url:a,visible:c}=t;if(!1===c)return;const h=this.box.getSize(),l=new A(r/e[0]*h.x,n/e[1]*h.y),p=new A(i/e[0]*h.x+l.x/2,s/e[1]*h.y+l.y/2).add(g),d=(new W).setFromCenterAndSize(p,l);if(a){let t=this.safeAreaSprites.get(a);t||(t=ys.Sprite.from(a),t.anchor.set(.5,.5),this.safeAreaSprites.set(a,t)),t.x=p.x,t.y=p.y,t.width=l.x,t.height=l.y,this.graphics.addChild(t)}else{const t=o?.[3]??.3,e=o?.slice(0,3)??[255,0,0],i=e[0]<<16|e[1]<<8|e[2];this.graphics.beginFill(i,t),this.graphics.fillBox(d),this.graphics.endFill()}})}}this.graphics.lineStyle(t,e),this.graphics.drawBox(this.box)}getRenderObjects(){return lo.config.gestureHandlerConfig.preferenceGizmoEnabled&&"editor"!==lo.config.mode?(this.refreshRenderObjects(),[this.graphics]):[]}get interactive(){return lo.config.gestureHandlerConfig.preferenceGizmoEnabled}set interactive(t){lo.config.gestureHandlerConfig.preferenceGizmoEnabled=t}},tr="https://mdn.alipayobjects.com/rms/uri/file/as/0.0.6",er={normal:{type:"preset",content:"default"},rotation:{type:"svg",content:"default",url:`${tr}/icons/cursor-rotate-32.svg`},circle:{type:"svg",content:"default",url:`${tr}/icons/cursor-rotate-32.svg`},scale:{type:"svg",content:"default",url:`${tr}/icons/cursor-scale-32.svg`},hand:{type:"preset",content:"grab"},pointer:{type:"preset",content:"pointer"},"text-create":{type:"preset",content:"text"},"active-hand":{type:"preset",content:"grabbing"},"frame-create":{type:"preset",content:"crosshair"},"text-rotation":{type:"svg",content:"default",url:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*R722QoloC44AAAAAKkAAAAgAev-aAQ/original"}};var ir=class{constructor(){c(this,"index",-1),c(this,"operations",[])}get canUndo(){return this.index>-1}get canRedo(){return this.index<this.operations.length-1}push(t){this.index++,this.operations[this.index]=t,this.operations.length=this.index+1}undo(){if(this.index<0)return;const t=this.operations[this.index];return this.index--,t}redo(){if(!(this.index>=this.operations.length-1))return this.index++,this.operations[this.index]}clear(){this.operations=[],this.index=-1}},sr=class{constructor(){c(this,"index",-1),c(this,"operations",[]),c(this,"oldData")}get canUndo(){return this.index>-1}get canRedo(){return this.index<this.operations.length-1}push(t){this.index++,this.operations[this.index]=t,this.operations.length=this.index+1}undo(){if(this.index<0)return;const t=this.operations[this.index];return this.index--,t}redo(){if(!(this.index>=this.operations.length-1))return this.index++,this.operations[this.index]}clear(){this.operations=[],this.index=-1}},rr=class t{constructor(e){c(this,"container",null),c(this,"config"),c(this,"offsetX",0),c(this,"offsetY",0),this.config={...t.DEFAULT_GRID_CONFIG,...e}}attach(t){this.container=t}detach(){this.container=null}applyPreset(e,i){if(!this.container)return!1;const s=t.PRESETS[e];if(!s)return console.warn(`Unknown background preset: ${e}`),!1;const r=this.container.parentElement;return!!r&&(this.clearBackground(r),(s.color||i)&&(r.style.backgroundColor=i??s.color??""),s.image&&(r.style.backgroundImage=s.image),s.repeat&&(r.style.backgroundRepeat=s.repeat),s.position&&(r.style.backgroundPosition=s.position,this.offsetX=0,this.offsetY=0),s.size&&(r.style.backgroundSize=s.size),!0)}setColorBackground(t){if(!this.container)return;const e=this.container.parentElement;e&&(this.clearBackground(e),e.style.backgroundColor=t)}setImageBackground(t){if(!this.container)return;const e=this.container.parentElement;e&&(this.clearBackground(e),e.style.backgroundImage=`url(${t})`)}updateTransform(t,e){if(!this.container)return;const i=this.container.parentElement;if(!i)return;this.offsetX+=t.x,this.offsetY+=t.y;const s=this.calculateZoomCycle(e),r=Math.max(this.config.minSize,this.config.baseSize*s);i.style.backgroundPosition=`${this.offsetX}px ${this.offsetY}px , ${this.offsetX+r/2}px ${this.offsetY+r/2}px`,i.style.backgroundSize=`${r}px ${r}px`}reset(){if(this.offsetX=0,this.offsetY=0,!this.container)return;const t=this.container.parentElement;t&&(t.style.backgroundPosition="",t.style.backgroundSize="")}clearBackground(t){t.style.removeProperty("background-color"),t.style.removeProperty("background-image"),t.style.removeProperty("background-repeat"),t.style.removeProperty("background-position"),t.style.removeProperty("background-size")}calculateZoomCycle(t){const{zoomCycle:e}=this.config,i=Math.log(t)/Math.log(e),s=Math.floor(i);return t/Math.pow(e,s)}};c(rr,"DEFAULT_GRID_CONFIG",{baseSize:16,zoomCycle:2,minSize:8}),c(rr,"PRESETS",{"dot-board":{color:"#F5F5F5",image:"radial-gradient(circle 1px at 8px 8px, #BBBBBB 50%, transparent 100%)",repeat:"repeat",position:"0 0",size:"16px 16px"},"chess-board":{color:"#CCCCCC",image:"linear-gradient(45deg, #FFFFFF 25%, transparent 25%, transparent 75%, #FFFFFF 75%),linear-gradient(45deg, #FFFFFF 25%, transparent 25%, transparent 75%, #FFFFFF 75%)",repeat:"repeat",position:"0 0, 8px 8px",size:"16px 16px"}});var nr=rr;import{assertExist as or}from"@galacean/effects";var ar=class{constructor(t){c(this,"plane",new Y),c(this,"ray",new J),c(this,"viewportParam",{width:0,height:0,scale:1,translation:new A,rulerWidth:0}),c(this,"cameraParam",{position:new K,rotation:new K,focusPosition:new K,focusRotation:new K,viewProjectionMatrix:new j,inverseViewProjectionMatrix:new j}),c(this,"pageDataUtils"),this.pageDataUtils=t}refreshViewParam(){const t=this.pageDataUtils.getPageData();or(t,"You must run SDK first");const e=new A(this.pageDataUtils.container.offsetWidth,this.pageDataUtils.container.offsetHeight),{zoom:i,translation:s}=t.property;this.viewportParam.width=e.x,this.viewportParam.height=e.y,this.viewportParam.scale=i,this.viewportParam.translation=new A(...s),this.viewportParam.rulerWidth=0}refreshCameraParam(){const{player:t}=this.pageDataUtils,e=t?.getCompositions()?.[0]?.camera;if(e){const t=j.fromArray(e.getViewProjectionMatrix().toArray()),i=j.fromArray(e.getViewMatrix().toArray()).invert(),s=new N;i.decompose(this.cameraParam.position,s,new K),this.cameraParam.rotation=(new $).setFromQuaternion(s).toDegreeVector3(),this.cameraParam.focusPosition=new K(...this.cameraParam.position.toVector2().toArray(),this.cameraParam.position.z>0?0:2*this.cameraParam.position.z),this.cameraParam.focusPosition.applyEuler((new $).setFromDegreeVector3(this.cameraParam.rotation.clone()),this.cameraParam.position),this.cameraParam.focusRotation=(new $).setFromQuaternion(s.invert()).toDegreeVector3(),this.cameraParam.viewProjectionMatrix=t,this.cameraParam.inverseViewProjectionMatrix=j.fromArray(e.getInverseViewProjectionMatrix().toArray())}}refrehCameraParamByCameraInfo(t){const{near:e,far:i,fov:s,aspect:r,position:n,clipMode:o}=t,a=(new j).perspective(s*Math.PI/180,r,e,i,1===o),c=(new j).compose(new K(...n),new N,new K(1,1,1)).invert(),h=(new j).multiplyMatrices(a,c),l=h.clone().invert();this.cameraParam.position=new K(...n),this.cameraParam.rotation=(new $).toDegreeVector3(),this.cameraParam.focusPosition=new K(n[0],n[1],this.cameraParam.position.z>0?0:2*this.cameraParam.position.z),this.cameraParam.focusPosition.applyEuler((new $).setFromDegreeVector3(this.cameraParam.rotation.clone()),this.cameraParam.position),this.cameraParam.focusRotation=(new $).toDegreeVector3(),this.cameraParam.viewProjectionMatrix=h,this.cameraParam.inverseViewProjectionMatrix=l}initInteractionPlane(t,e){t??(t=this.cameraParam.focusPosition),e??(e=(new $).setFromDegreeVector3(this.cameraParam.rotation));const i=new K(0,0,1).applyEuler(e);this.plane.setFromNormalAndCoplanarPoint(t,i)}getWorldSizeByViewSize(t,e=!0,i){const s=e||!i?(new $).setFromDegreeVector3(this.cameraParam.rotation):(new $).setFromQuaternion((new N).setFromRotationMatrix(this.pageDataUtils.getItemTransformById(i).matrix)),r=i?(new K).setFromMatrixPosition(this.pageDataUtils.getItemTransformById(i).matrix):this.cameraParam.focusPosition,n="editor"===lo.config.mode?1:this.viewportParam.scale;t.multiply(n);const o=this.projectPoint(r.clone()),a=this.getWorldPositionByViewPoint(o.add(t));if(!a)return console.warn("size is out of bounds."),new K(0,0,0);const c=(new $).setFromQuaternion((new N).setFromEuler(s).invert());return(e||!i?a.applyEuler(c,r):a).subtract(r)}getViewSizeByPixelSize(t){const{scale:e}=this.viewportParam,i="template"===lo.config.mode?1:e;return t.clone().multiply(i)}projectPoint(t){const{width:e,height:i,scale:s}=this.viewportParam,{viewProjectionMatrix:r}=this.cameraParam,n="editor"===lo.config.mode?1:s;return(new A).copyFrom(t.applyMatrix(r).toVector2()).toViewCoordinate(e*n,i*n)}getWorldPositionByViewPoint(t){const{position:e,inverseViewProjectionMatrix:i}=this.cameraParam,s=this.getNDCPositionByScreenPosition(t),r=(new X).setFromCamera(s,{position:e,inverseViewProjectMatrix:i}).rayCastPlane(this.plane);return r?.point}getNDCPositionByScreenPosition(t){const{width:e,height:i,scale:s}=this.viewportParam,r="editor"===lo.config.mode?1:s;return new A(t.x/(e*r)*2-1,1-t.y/(i*r)*2)}getNDCSizeByPixelSize(t){const{width:e,height:i}=this.viewportParam;return new A(t.x/e*2,-t.y/i*2)}getViewPositionWWithOutTransform(t){const{scale:e}=this.viewportParam,i="editor"===lo.config.mode?1:e;return t.divide(i)}getViewPositionByPixelPoint(t){if("template"===lo.config.mode)return t.clone();const{width:e,height:i,scale:s,translation:r}=this.viewportParam;return t.clone().scaleByCenter(new A(s,s),new A(e/2,i/2)).add(r)}getPixelPositionByViewPoint(t){if("template"===lo.config.mode)return t.clone();const{width:e,height:i,scale:s,translation:r}=this.viewportParam;return t.clone().subtract(r.clone()).scaleByCenter(new A(1/s,1/s),new A(e/2,i/2))}getPixelSizeByWorldSize(t){const e=this.projectPoint(new K),i=this.projectPoint(t).subtract(e);return i.abs(),i}getPixelSizeByNDCSize(t){const{width:e,height:i}=this.viewportParam;return new A(t.x/2*e,-t.y/2*i)}getPixelSizeByViewSize(t){const{scale:e}=this.viewportParam;return t.clone().divide(e)}};function cr(t,e,i){const s=C(),r=C(),n=C(),o={id:r,dataType:m.DataType.TimelineAsset,tracks:[]},a={id:n,item:{id:s},dataType:m.DataType.CompositionComponent,items:[],timelineAsset:{id:r},sceneBindings:[]},[c,h]=e,l={id:s,name:i+"_inner",duration:999,startTime:0,endBehavior:m.EndBehavior.forward,previewSize:[...e],camera:{fov:60,far:40,near:.1,clipMode:1,position:[0,0,8],rotation:[0,0,0],aspect:c/h},components:[{id:n}]};return{version:m.JSONSceneVersion["3_6"],playerVersion:{web:S,native:"10.7.6"},type:"ge",compositionId:s,compositions:[l],images:[],plugins:[],bins:[],textures:[],items:[],components:[a],materials:[],shaders:[],geometries:[],animations:[],miscs:[o]}}function hr(t=[750,750],e="AI 设计师画布"){const i=C(),s={id:C(),dataType:m.DataType.TimelineAsset,tracks:[]},r={id:C(),item:{id:i},dataType:m.DataType.CompositionComponent,items:[],timelineAsset:{id:s.id},sceneBindings:[]},n={id:i,name:e,duration:999,startTime:0,endBehavior:m.EndBehavior.forward,previewSize:[...t],camera:{fov:60,far:40,near:.1,clipMode:1,position:[0,0,8],rotation:[0,0,0],aspect:t[0]/t[1]},components:[{id:r.id}]},o={version:m.JSONSceneVersion["3_6"],playerVersion:{web:S,native:"10.7.6"},type:"ge",compositionId:i,compositions:[],images:[],plugins:[],bins:[],textures:[],items:[],components:[],materials:[],shaders:[],geometries:[],animations:[],miscs:[]};return o.miscs.push(s),o.compositions.push(n),o.components.push(r),o}function lr(t,e,i,s,r,n,o){const a=C(),c={id:t,name:n,dataType:m.DataType.VFXItemData,components:[{id:a}],delay:0,duration:999,endBehavior:m.EndBehavior.restart,renderLevel:m.RenderLevel.BPlus,type:m.ItemType.sprite,visible:!0,transform:{position:{x:e.x,y:e.y,z:e.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:a,item:{id:t},dataType:m.DataType.SpriteComponent,options:{startColor:[1,1,1,1]},renderer:{renderMode:m.RenderMode.MESH}};o&&(h.renderer.texture={id:o});const l={id:C(),dataType:m.DataType.ActivationPlayableAsset},p={id:C(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:l.id}}]},d={id:C(),dataType:m.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:c,components:[h],tracks:[p,{id:C(),dataType:m.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:d.id}}]}],playableAssets:[l,d]}}function pr(t,e,i,s,r,n){const o=C(),a={id:t,name:n,dataType:m.DataType.VFXItemData,components:[{id:o}],delay:0,duration:999,endBehavior:m.EndBehavior.restart,renderLevel:m.RenderLevel.BPlus,type:m.ItemType.sprite,visible:!0,transform:{position:{x:e.x,y:e.y,z:e.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:{isVideoGenerator:!0}},c={id:o,item:{id:t},dataType:m.DataType.SpriteComponent,options:{startColor:[1,1,1,0]},renderer:{renderMode:m.RenderMode.MESH}},h={id:C(),dataType:m.DataType.ActivationPlayableAsset},l={id:C(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:h.id}}]},p={id:C(),dataType:m.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,0]};return{item:a,components:[c],tracks:[l,{id:C(),dataType:m.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:p.id}}]}],playableAssets:[h,p]}}function dr(t,e,i,s=new A(1,1),r=new K,n=new A(1,1)){const o=JSON.parse(JSON.stringify(i)),a={id:t,name:e,duration:999,type:m.ItemType.null,visible:!0,endBehavior:m.EndBehavior.restart,delay:0,renderLevel:m.RenderLevel.BPlus,content:{options:{startColor:[1,1,1,1]}},components:[],transform:{position:o,eulerHint:{x:r.x,y:r.y,z:r.z},size:JSON.parse(JSON.stringify(n)),scale:{x:s.x,y:s.y,z:1}},dataType:m.DataType.VFXItemData},c={id:C(),dataType:m.DataType.ActivationPlayableAsset};return{item:a,components:[],tracks:[{id:C(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:c.id}}]}],playableAssets:[c]}}function mr(t,e,i,s,r,n){const o=C(),a={id:t,name:e,dataType:m.DataType.VFXItemData,components:[{id:o}],delay:0,duration:999,endBehavior:m.EndBehavior.restart,renderLevel:m.RenderLevel.BPlus,type:m.ItemType.text,visible:!0,transform:{position:{x:i.x,y:i.y,z:i.z},eulerHint:{x:s.x,y:s.y,z:s.z},scale:{x:r.x,y:r.y,z:1},anchor:{x:0,y:0}},content:void 0},c={id:o,item:{id:t},dataType:m.DataType.TextComponent,options:n,renderer:{renderMode:1}},h={id:C(),dataType:m.DataType.ActivationPlayableAsset};return{item:a,components:[c],tracks:[{id:C(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:h.id}}]}],playableAssets:[h]}}function ur(t,e,i,s,r,n,o=!1,a=!1,c=1,h=1,l,p){const d=C(),u={id:t,name:n,dataType:m.DataType.VFXItemData,components:[{id:d}],delay:0,duration:999,endBehavior:m.EndBehavior.restart,renderLevel:m.RenderLevel.BPlus,type:m.ItemType.video,visible:!0,transform:{position:{x:e.x,y:e.y,z:e.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},g={id:d,item:{id:t},dataType:m.DataType.VideoComponent,options:{startColor:[1,1,1,1],muted:o,video:{id:p},volume:c,playbackRate:h,transparent:a},renderer:{renderMode:m.RenderMode.MESH}};l&&(g.renderer.texture={id:l});const f={id:C(),dataType:m.DataType.ActivationPlayableAsset},y={id:C(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:f.id}}]},x={id:C(),dataType:m.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:u,components:[g],tracks:[y,{id:C(),dataType:m.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:x.id}}]}],playableAssets:[f,x]}}function gr(t,e,i,s,r){const n=JSON.parse(JSON.stringify(e)),o={id:t,name:r,duration:999,type:m.ItemType.null,visible:!0,endBehavior:m.EndBehavior.restart,delay:0,renderLevel:m.RenderLevel.BPlus,content:{options:{startColor:[1,1,1,1]}},components:[],transform:{position:n,eulerHint:{x:i.x,y:i.y,z:i.z},size:{x:1,y:1},scale:{x:s.x,y:s.y,z:1}},dataType:m.DataType.VFXItemData},a={id:C(),dataType:m.DataType.ActivationPlayableAsset};return{item:o,components:[],tracks:[{id:C(),dataType:m.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:m.EndBehavior.restart,asset:{id:a.id}}]}],playableAssets:[a]}}function fr(t,e){t.items.push(e.item),t.miscs.push(...e.tracks,...e.playableAssets),t.components.push(...e.components);const i=t.compositions.find(e=>e.id===t.compositionId)??t.compositions[0],s=t.components.find(t=>t.id===i.components[0]?.id);if(s){s.items.push({id:e.item.id});const i={id:C(),dataType:m.DataType.ObjectBindingTrack,children:[],clips:[]};for(const t of e.tracks)i.children.push({id:t.id});t.miscs.find(t=>t.id===s.timelineAsset.id).tracks.push({id:i.id}),s.sceneBindings.push({key:{id:i.id},value:{id:e.item.id}}),t.miscs.push(i)}}function yr(t,e,i){var s;const r=t.items.findIndex(t=>t.id===e);if(r<0)return;xr(t,e);const n=t.items.find(t=>t.id===i);if(!n)return;t.items[r].parentId=i;const{position:o={x:0,y:0,z:0},eulerHint:a=new K,scale:c=new K(1,1,1)}=n.transform;(s=t.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}}),t.items[r].transform.position.x-=o.x,t.items[r].transform.position.y-=o.y,t.items[r].transform.position.z-=o.z,t.items[r].transform.eulerHint.x-=a.x,t.items[r].transform.eulerHint.y-=a.y,t.items[r].transform.eulerHint.z-=a.z,t.items[r].transform.scale.x/=0===c.x?1:c.x,t.items[r].transform.scale.y/=0===c.y?1:c.y,t.items[r].transform.scale.z/=0===c.z?1:c.z}function xr(t,e){var i;const s=t.items.findIndex(t=>t.id===e);if(!t.items[s]?.parentId)return;const r=t.items.find(e=>e.id===t.items[s].parentId);if(!r)return void delete t.items[s].parentId;const{position:n={x:0,y:0,z:0},eulerHint:o=new K,scale:a=new K(1,1,1)}=r.transform;(i=t.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}}),t.items[s].transform.position.x+=n.x,t.items[s].transform.position.y+=n.y,t.items[s].transform.position.z+=n.z,t.items[s].transform.eulerHint.x+=o.x,t.items[s].transform.eulerHint.y+=o.y,t.items[s].transform.eulerHint.z+=o.z,t.items[s].transform.scale.x*=0===a.x?1:a.x,t.items[s].transform.scale.y*=0===a.y?1:a.y,t.items[s].transform.scale.z*=0===a.z?1:a.z}function wr(t,e){const i=t.items.find(t=>t.id===e);if(!i)return void console.warn(`item ${e} is not existed.`);t.items=t.items.filter(t=>t.id!==e),t.items.forEach(t=>{t.parentId===e&&(t.transform??(t.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}}),t.transform.position.x+=i.transform.position.x,t.transform.position.y+=i.transform.position.y,t.transform.position.z+=i.transform.position.z,t.transform.eulerHint.x+=i.transform.eulerHint.x,t.transform.eulerHint.y+=i.transform.eulerHint.y,t.transform.eulerHint.z+=i.transform.eulerHint.z,t.transform.scale.x*=0!==i.transform.scale.x?i.transform.scale.x:1,t.transform.scale.y*=0!==i.transform.scale.y?i.transform.scale.y:1,t.transform.scale.z*=0!==i.transform.scale.z?i.transform.scale.z:1),delete t.parentId});const s=t.components.filter(t=>t.item.id===e);t.components=t.components.filter(t=>!s.map(t=>t.id).includes(t.id)),s.forEach(e=>{switch(e.dataType){case m.DataType.SpriteComponent:if(e.renderer.texture){if(!t.components.find(t=>t.renderer?.texture?.id===e.renderer.texture.id)){const i=t.textures?.find(t=>t.id===e.renderer.texture?.id);i&&(t.textures=t.textures?.filter(t=>t.id!==i.id),t.images=t.images.filter(t=>t.id!==i.source.id))}}break;case m.DataType.VideoComponent:if(e.renderer.texture){if(!t.components.find(t=>t.renderer?.texture?.id===e.renderer.texture.id)){const i=t.textures?.find(t=>t.id===e.renderer.texture?.id);i&&(t.textures=t.textures?.filter(t=>t.id!==i.id),t.videos=t.videos?.filter(t=>t.id!==i.source.id))}}}});const r=[];let n,o;if(+t.version>=3.3){const i=t.components.filter(t=>t.dataType===m.DataType.CompositionComponent).find(t=>t.items.find(t=>t.id===e));i&&(i.items=i.items.filter(t=>t.id!==e),o=i.timelineAsset.id,n=i.sceneBindings.find(t=>t.value.id===e)?.key.id,i.sceneBindings=i.sceneBindings.filter(t=>t.value.id!==e),n&&r.push(n))}else{const i=t.compositions.find(t=>t.items.find(t=>t.id===e));i&&(i.items=i.items.filter(t=>t.id!==e),o=i.timelineAsset.id,n=i.sceneBindings.find(t=>t.value.id===e)?.key.id,i.sceneBindings=i.sceneBindings.filter(t=>t.value.id!==e),n&&r.push(n))}const a=t.miscs.findIndex(t=>t.id===o);a>=0&&(t.miscs[a].tracks=t.miscs[a].tracks.filter(t=>t.id!==n));const c=t.miscs.find(t=>t.id===n);return c&&(c.children.forEach(e=>{r.push(e.id);const i=t.miscs.find(t=>t.id===e.id);i&&r.push(...i.clips.map(t=>t.asset.id))}),r.push(...c.children.map(t=>t.id))),t.miscs=t.miscs.filter(t=>!r.includes(t.id)),t}function Ir(t,e){const i=t.items.find(t=>t.id===e);if(!i)return;const s={...i},r=t.components.filter(t=>t.item.id===e),n=t.components.filter(t=>t.dataType===m.DataType.CompositionComponent).find(t=>t.items.find(t=>t.id===e)),o=[],a=[];if(n){const i=n.sceneBindings.find(t=>t.value.id===e);if(i){const e=i.key.id,s=t.miscs.find(t=>t.id===e);if(s){(s.children||[]).map(t=>t.id).forEach(e=>{const i=t.miscs.find(t=>t.id===e);if(i){o.push({...i});const e=i.clips;e&&e.forEach(e=>{const i=t.miscs.find(t=>t.id===e.asset.id);i&&a.push({...i})})}}),o.push({...s});const e=s.clips;e&&e.forEach(e=>{const i=t.miscs.find(t=>t.id===e.asset.id);i&&a.push({...i})})}}}return wr(t,e),{item:s,components:r.map(t=>({...t})),tracks:o,playableAssets:a}}function vr(t,e){let i;return t.components.forEach(s=>{if(s.item.id===e)if(s.dataType===m.DataType.SpriteComponent&&s.renderer.texture){const e=t.textures?.find(t=>t.id===s.renderer.texture?.id);e&&(i=t.images.find(t=>t.id===e.source.id)?.url)}else if(s.dataType===m.DataType.VideoComponent&&s.renderer.texture){const e=t.textures?.find(t=>t.id===s.renderer.texture?.id);e&&(i=t.videos?.find(t=>t.id===e.source.id)?.url)}}),i}function Pr(t,e,i,s){const r=JSON.parse(JSON.stringify(e)),n=r.compositions?.[0]?.duration??5,o=m.EndBehavior.restart,a={options:{refId:r.compositionId??r.compositions[0].id,startColor:[1,1,1,1]}},c={id:i,components:[],name:"ref_"+r.compositions[0].name,duration:n,dataType:m.DataType.VFXItemData,parentId:s,type:m.ItemType.composition,visible:!0,endBehavior:o,delay:0,renderLevel:m.RenderLevel.BPlus,content:a,transform:{position:{x:0,y:0,z:0},eulerHint:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}};t.items.push(c);const h={id:C(),dataType:"ActivationPlayableAsset"},l={id:C(),dataType:"ActivationTrack",children:[],clips:[{start:0,duration:n,endBehavior:o,asset:{id:h.id}}]},p={id:C(),dataType:"SubCompositionPlayableAsset"},d={id:C(),dataType:"SubCompositionTrack",children:[],clips:[{start:0,duration:n,endBehavior:o,asset:{id:p.id}}]},u={id:C(),dataType:m.DataType.ObjectBindingTrack,children:[],clips:[]};t.miscs.push(u);const g=[],f=[];if(g.push(l,d),f.push(h,p),Number(t.version)<=3.3){const e=t.compositions.findIndex(e=>e.id===t.compositionId);if(e>=0){t.compositions[e].items.push({id:c.id});const i=t.miscs.find(i=>i.id===t.compositions[e].timelineAsset.id);i?.tracks.push({id:u.id}),t.compositions[e].sceneBindings.push({key:{id:u.id},value:{id:c.id}})}}else{const e=t.components.find(e=>e.id===t.compositions[0].components[0].id&&e.dataType===m.DataType.CompositionComponent);e.items.push({id:c.id});const i=t.miscs.find(t=>t.id===e.timelineAsset.id);i?.tracks.push({id:u.id}),e.sceneBindings.push({key:{id:u.id},value:{id:c.id}})}return g.forEach(t=>{t.path||u.children.push({id:t.id})}),t.miscs.push(...g),t.miscs.push(...f),Object.keys(t).forEach(e=>{"compositionId"!==e?("components"===e&&r.components.forEach(t=>{t.dataType!==m.DataType.CompositionComponent||t.item.id||r.compositions.forEach(e=>{e.components[0]?.id===t.id&&(t.item.id=e.id)})}),r[e]&&Array.isArray(r[e])&&(t[e]??(t[e]=[]),t[e].push(...r[e]))):t.compositionId??(t.compositionId=t.compositions[0].id)}),t}function Cr(t,e){const i=[];return e.forEach(e=>{const s=t.items.find(t=>t.id===e);if(s&&(wr(t,e),s.type===m.ItemType.composition)){const t=s?.content.options.refId;i.push(t)}}),i.forEach(e=>{Sr(t,e)}),t}function Sr(t,e){const i=t.components.find(t=>t.item.id===e);if(i){const s=i.timelineAsset.id;t.miscs=t.miscs.filter(t=>t.id!==s),t.compositions=t.compositions.filter(t=>t.id!==e),t.components=t.components.filter(t=>t.id!==i.id)}}function br(t,e){t.items.forEach(i=>{const s=i.id,r=e.get(s);if(r){i.id=r;t.components.filter(t=>t.item.id===s).forEach(t=>{t.item.id=r});t.components.filter(t=>t.dataType===m.DataType.CompositionComponent).forEach(t=>{t.items.forEach(t=>{t.id===s&&(t.id=r)}),t.sceneBindings.forEach(t=>{t.value.id===s&&(t.value.id=r)})})}})}function Dr(t,e,i){const s=t.items.find(t=>t.id===e);s?s.name=i:console.warn(`item ${e} is not existed.`)}function zr(t,e,i,s){const r=t.items.find(t=>t.id===e);if(!r)return console.warn(`moveItemBetweenCompositions: item ${e} not found`),!1;const n=function(t,e){if(+t.version>=3.3)return t.components.find(t=>t.dataType===m.DataType.CompositionComponent&&t.items.some(t=>t.id===e));{const i=t.compositions.find(t=>t.items?.some(t=>t.id===e));if(i)return t.components.find(t=>t.dataType===m.DataType.CompositionComponent&&t.item.id===i.id)}return}(t,e);if(!n)return console.warn(`moveItemBetweenCompositions: source composition not found for item ${e}`),!1;const o=i?function(t,e){return t.components.find(t=>t.dataType===m.DataType.CompositionComponent&&t.item.id===e)}(t,i):function(t){const e=t.compositions.find(e=>e.id===t.compositionId)??t.compositions[0];if(!e)return;return t.components.find(t=>t.dataType===m.DataType.CompositionComponent&&t.item.id===e.id)}(t);if(!o)return console.warn(`moveItemBetweenCompositions: target composition not found ${i??"(main)"}`),!1;if(n.id===o.id)return!0;const a=function(t,e,i){const s=[];let r=null;if(+t.version>=3.3){e.items=e.items.filter(t=>t.id!==i);const t=e.sceneBindings.findIndex(t=>t.value.id===i);if(t>=0){const i=e.sceneBindings[t];r=i.key.id,e.sceneBindings.splice(t,1)}}else{const s=t.compositions.find(i=>{const s=t.components.find(t=>t.dataType===m.DataType.CompositionComponent&&t.id===e.id);return s&&i.id===s.item.id});if(s){s.items=s.items.filter(t=>t.id!==i);const t=s.sceneBindings?.findIndex(t=>t.value.id===i);if(t>=0){const e=s.sceneBindings[t];r=e.key.id,s.sceneBindings.splice(t,1)}}}if(!r)return null;const n=e.timelineAsset.id,o=t.miscs.find(t=>t.id===n);o?.tracks&&(o.tracks=o.tracks.filter(t=>t.id!==r));const a=t.miscs.find(t=>t.id===r);a?.children&&a.children.forEach(t=>{s.push(t.id)});return{trackIds:s,objectBindingTrackId:r}}(t,n,e);return a?(function(t,e,i,s){e.items.push({id:i});const r={id:C(),dataType:m.DataType.ObjectBindingTrack,children:[],clips:[]};for(const t of s)r.children.push({id:t});e.sceneBindings.push({key:{id:r.id},value:{id:i}});const n=e.timelineAsset.id,o=t.miscs.find(t=>t.id===n);o?.tracks&&o.tracks.push({id:r.id});t.miscs.push(r)}(t,o,e,a.trackIds),s&&function(t,e){t.transform??(t.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.position&&(t.transform.position={...e.position});e.size&&(t.transform.size={...e.size});e.scale&&(t.transform.scale={...e.scale});e.rotation&&(t.transform.eulerHint={...e.rotation})}(r,s),!0):(console.warn(`moveItemBetweenCompositions: failed to remove item ${e} from source composition`),!1)}function Ar(t,e){const i=t.items.find(t=>t.id===e);if(i)return i.content.options.refId;console.warn(`Target composition item ${e} is not existed.`)}function Tr(t,e){const i=t.items.find(t=>t.id===e);if(!i)return void console.warn(`Target composition item ${e} is not existed.`);const s=i.content?.options?.refId;if(!s)return void console.warn(`Composition item ${e} has no refId.`);const r=t.compositions.find(t=>t.id===s);if(r)return r;console.warn(`Composition data with id ${s} not found.`)}function _r(t,e){const i=t.items.find(t=>t.id===e);if(!i)return void console.warn(`Target composition item ${e} is not existed.`);if(i.type!==m.ItemType.composition)return void console.warn(`Item ${e} is not a composition item.`);const s=i.content?.options?.refId;if(!s)return void console.warn(`Composition item ${e} has no refId.`);const r=t.compositions.find(t=>t.id===s);if(!r)return void console.warn(`Composition data with id ${s} not found.`);const n=t.components.find(t=>t.dataType===m.DataType.CompositionComponent&&t.item.id===s);if(!n)return void console.warn(`CompositionComponent for composition ${s} not found.`);const o=new Set,a=new Set,c=new Set,h=new Set,l=new Set,p=new Set,d=new Set,u=new Set,g=new Set,f=new Set;n.items.forEach(t=>o.add(t.id)),a.add(n.id),c.add(n.timelineAsset.id);const y=t.items.filter(t=>o.has(t.id)),x=t.components.filter(t=>t.item.id===s||!!o.has(t.item.id));x.forEach(t=>{if(a.add(t.id),t.dataType===m.DataType.SpriteComponent){const e=t;e.renderer?.texture?.id&&h.add(e.renderer.texture.id)}if(t.dataType===m.DataType.VideoComponent){const e=t;e.renderer?.texture?.id&&h.add(e.renderer.texture.id)}});const w=[];t.textures&&t.textures.forEach(t=>{if(t.id&&h.has(t.id)){w.push(t);const e=t.source?.id;if(e){1===t.sourceType?p.add(e):l.add(e)}}});const I=t.images.filter(t=>l.has(t.id)),v=t.videos?.filter(t=>p.has(t.id))??[],P=[],C=t.miscs.find(t=>t.id===n.timelineAsset.id);C&&P.push({...C,tracks:[]});n.sceneBindings.map(t=>t.key.id).forEach(t=>c.add(t)),n.sceneBindings.forEach(e=>{const i=e.key.id,s=t.miscs.find(t=>t.id===i);if(s){if(P.push({...s}),C){const t=P.findIndex(t=>t.id===C.id);t>=0&&(P[t].tracks=P[t].tracks||[],P[t].tracks.push({id:i}))}(s.children||[]).map(t=>t.id).forEach(e=>{c.add(e);const i=t.miscs.find(t=>t.id===e);if(i){P.push({...i});const e=i.clips;e&&e.forEach(e=>{if(e.asset?.id){c.add(e.asset.id);const i=t.miscs.find(t=>t.id===e.asset.id);i&&P.push({...i})}})}});const e=s.clips;e&&e.forEach(e=>{if(e.asset?.id){c.add(e.asset.id);const i=t.miscs.find(t=>t.id===e.asset.id);i&&P.push({...i})}})}});const S=t.shaders?.filter(t=>u.has(t.id))||[],b=t.materials?.filter(t=>d.has(t.id))||[],D=t.geometries?.filter(t=>g.has(t.id))||[],z=t.animations?.filter(t=>f.has(t.id))||[];return{version:m.JSONSceneVersion["3_6"],playerVersion:{...t.playerVersion},type:t.type,compositionId:s,compositions:[{...r}],items:y.map(t=>({...t})),components:x.map(t=>({...t})),miscs:P,images:I.map(t=>({...t})),textures:w,videos:v,shaders:S,materials:b,geometries:D,animations:z,plugins:t.plugins?[...t.plugins]:[],bins:t.bins?[...t.bins]:[]}}function Br(t){t.components.filter(t=>t.dataType===m.DataType.CompositionComponent).forEach(e=>{if(!e.items){e.items??(e.items=[]);const i=t.compositions.find(t=>t.id===e.item.id);i&&"items"in i&&i?.items&&(e.items.push(...i.items),delete i.items)}})}var Er={topAdsorption:"T",leftAdsorption:"L",rightAdsorption:"R",bottomAdsorption:"B",centerAdsorption:"C",bottomCenterAdsorption:"BC"};import{VFXItem as kr,SpriteComponent as Mr,spec as Ur,TextComponent as Gr,AssetManager as Fr,PrecompositionManager as Lr}from"@galacean/effects";import{VideoComponent as Rr}from"@galacean/effects-plugin-multimedia";var Vr=class{static createEmpty(t,e=null,i="NewVFXItem"){const s=Or.createVFXItem(t,e,i);return s.type=Ur.ItemType.null,s}static createSprite(t,e=null,i="NewSpite"){const s=Or.createVFXItem(t,e,i,Mr);return s.type=Ur.ItemType.sprite,s}static createText(t,e=null,i="NewText"){const s=Or.createVFXItem(t,e,i,Gr);return s.type=Ur.ItemType.text,s}static createVideo(t,e=null,i="NewVideo"){const s=Or.createVFXItem(t,e,i,Rr);return s.type=Ur.ItemType.video,s}static async createEffects(t,e,i=null,s="NewEffects"){const r=await Fr.loadPrecomposition(e,{autoplay:!1}),n=Lr.instantiate(r,t);return n.name=s,n.type=Ur.ItemType.composition,n}},Or=class{static createVFXItem(t,e=null,i="NewVFXItem",...s){const r=new kr(t.getEngine());r.name=i;for(const t of s)r.addComponent(t);return t.addItem(r),t.rootComposition.items.push(r),e&&r.setParent(e),r}};import{AssetManager as Wr,CompositionComponent as Hr,FrameComponent as Nr,getStandardJSON as Kr,glContext as jr}from"@galacean/effects";var $r={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"},Yr={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 Jr(t,e,i,s){const r=e.getContext("2d");nt(r),r.clearRect(0,0,e.width,e.height),i&&(r.save(),r.fillStyle=i,r.fillRect(0,0,e.width,e.height),r.restore()),s&&r.drawImage(s,0,0,s.width,s.height,0,0,e.width,e.height),r.drawImage(t,0,0,t.width,t.height,0,0,e.width,e.height)}function Xr(t,e){return String(t).padStart(e,"0")}function Qr(t){for(const e of t.getCompositions())for(const t of e.textures)t.isDestroyed||t.dispose();t.disposed||t.destroyCurrentCompositions()}import{Color as Zr}from"@galacean/effects-plugin-model";var qr=class{constructor(t,e,i,s){c(this,"sdk"),c(this,"player"),c(this,"container"),c(this,"emitter"),c(this,"interactionUtils"),this.player=t,this.sdk=s,this.container=e,this.emitter=i}init(){this.interactionUtils=new ar(this)}getPageData(){return this.sdk.pageData}getCurrentComposition(){return this.player.getCompositions()[0]}isItemSelected(t){return!!this.sdk.pageData?.activeData.selectedItems?.find(e=>e===t)}getItemEditEnable(t){const e=this.getSDKItem(t);if(!e||!this.sdk.pageData||this.getViewProperty()?.ignoreInteraction)return!1;const i=this.sdk.pageData.time,{duration:s,delay:r,endBehavior:n,isLocked:o}=e;return i>=r&&(i<r+s||n===m.EndBehavior.restart)&&!o}getItemShow(t){const e=this.getSDKItem(t);if(!this.sdk.pageData||!e?.visible)return!1;const i=this.sdk.pageData.time,{duration:s,delay:r,endBehavior:n}=e;return i>=r&&(i<r+s||n===m.EndBehavior.restart||n===m.EndBehavior.freeze)}addSelectedItems(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=this.sdk.pageData.activeData.selectedItems??[];t.forEach(t=>{Q(e,t)}),this.sdk.pageData.activeData.selectedItems=[...e],this.emitter.emit("selectedItemChange",e),this.emitter.emit("pageDataChange",this.sdk.pageData)}removeSelectedItems(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=this.sdk.pageData.activeData.selectedItems??[];for(const i of t){const t=e.findIndex(t=>t===i);t>=0&&e.splice(t,1)}this.sdk.pageData.activeData.selectedItems=[...e],this.emitter.emit("selectedItemChange",e),this.emitter.emit("pageDataChange",this.sdk.pageData)}clearSelectedItems(t=!1){this.sdk.pageData&&(t?(this.sdk.pageData.activeData.selectedItems=[],this.emitter.emit("selectedItemChange",[])):this.sdk.pageData.activeData.selectedItems=[],this.emitter.emit("pageDataChange",this.sdk.pageData))}getSelectedItems(){const t=this.sdk.pageData?.activeData.selectedItems;return this.sdk.pageData?.items.filter(e=>t?.find(t=>t===e.id))??[]}addPreSelectedItem(t){w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=t,this.emitter.emit("preSelectedItemChange",t)}clearPreSelectedItem(){w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=void 0,this.emitter.emit("preSelectedItemChange",void 0)}getPreSelectedItem(){const t=this.getPageData();w(t,"You must call SDK#run() first");const e=t.activeData.preSelectedItem;return e?this.getSDKItem(e):void 0}addLoadingItems(t){var e;w(this.sdk.pageData,"You must call SDK#run() first"),(e=this.sdk.pageData.activeData).loadingItems??(e.loadingItems=[]);const i=this.sdk.pageData.activeData.loadingItems;t.forEach(t=>{Q(i,t)}),this.emitter.emit("loadingItemChange",i)}removeLoadingItems(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=this.sdk.pageData.activeData.loadingItems??[];for(const i of t){const t=e.findIndex(t=>t===i);t>=0&&e.splice(t,1)}this.emitter.emit("loadingItemChange",e)}clearLoadingItems(){this.sdk.pageData&&(this.sdk.pageData.activeData.loadingItems=[],this.emitter.emit("loadingItemChange",[]))}getLoadingItems(){const t=this.sdk.pageData?.activeData.loadingItems;return this.sdk.pageData?.items.filter(e=>t?.find(t=>t===e.id))??[]}getSDKItem(t){const e=this.sdk.pageData?.items.find(e=>e.id===t);return e||void 0}getPlayerSizeByParent(t,e){const[i,s]=t,[r=1624,n=750]=e;let o=s,a=o/n*r;return a>i&&(o=i/a*s,a=i),[a,o]}async loadScene(t){Qr(this.player);const e=this.getViewProperty(t);if(!e||!this.sdk.pageData)return void console.warn(`This page does not have ${t} view property.`);const{scene:i,size:s}=e;if("template"===lo.config.mode){const t=this.container.parentElement?.offsetWidth??300,e=this.container.parentElement?.offsetHeight??300,[i,r]=this.getPlayerSizeByParent([t,e],s);this.container.style.width=`${i}px`,this.container.style.height=`${r}px`}this.sdk.pageData.activeData={view:t,selectedItems:[],preSelectedItem:void 0},this.player.resize();const r=JSON.parse(JSON.stringify(i)),n=await this.player.loadScene(r,{autoplay:"editor"===lo.config.mode});"template"===lo.config.mode&&this.player.gotoAndStop(this.sdk.pageData.time),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addSDKItemsByItems(this.sdk.pageData.items,n.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}refreshPageTime(t){w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.time=t}pageZoom(t,e,i){var s;w(this.sdk.pageData,"You must call SDK#run() first"),(s=this.sdk.pageData.property).zoom??(s.zoom=1);const{zoom:r,translation:[n=0,o=0]}=this.sdk.pageData.property,{width:a,height:c,scale:h}=this.interactionUtils.viewportParam,l=i?t:_(t,-.1,.1),p=U(_(r+l,lo.config.pageConfig.minZoom,lo.config.pageConfig.maxZoom),2);switch(this.sdk.pageData.property.zoom=p,lo.config.mode){case"editor":{const t=this.interactionUtils.getNDCSizeByPixelSize(new A(n,o)),i=e??new A(a/2,c/2),s=this.interactionUtils.getNDCPositionByScreenPosition(i),r=(s.x-t.x)/h,l=(s.y-t.y)/h,d=new A(s.x-r*p,s.y-l*p),m=(new j).compose(new K(d.x,d.y,0),new N,new K(p,p,1));this.sdk.pageData.property.translation=this.interactionUtils.getPixelSizeByNDCSize(d).toArray(),this.setCurrenCameraViewportMatrix(m);break}case"template":this.container.style.scale=`${p}`}this.refreshInteractionParam();const d=this.getCurrentComposition();this.addSDKItemsByItems(this.sdk.pageData.items,d.items),this.sdk.backgroundManager.updateTransform({x:0,y:0},p),this.emitter.emit("zoomChange",p),this.emitter.emit("viewportTransform",{zoom:p,translation:[n,o]}),this.emitter.emit("pageDataChange",this.sdk.pageData)}setPageZoom(t,e,i){w(this.sdk.pageData,"You must call SDK#run() first");const{zoom:s}=this.sdk.pageData.property,r=t-s;this.pageZoom(r,e,i)}refreshInteractionParam(){this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam()}pageMove(t){w(this.sdk.pageData,"You must call SDK#run() first");const{translation:[e=0,i=0],zoom:s}=this.sdk.pageData.property,r=e+t.x,n=i+t.y;switch(this.sdk.pageData.property.translation=[r,n],lo.config.mode){case"template":this.container.style.translate=`${r}px ${n}px`;break;case"editor":{const t=this.interactionUtils.getNDCSizeByPixelSize(new A(r,n)),e=(new j).compose(new K(t.x,t.y,0),new N,new K(s,s,1));this.setCurrenCameraViewportMatrix(e);break}}this.refreshInteractionParam();const o=this.getCurrentComposition();this.addSDKItemsByItems(this.sdk.pageData.items,o.items),this.sdk.backgroundManager.updateTransform({x:t.x,y:t.y},s),this.emitter.emit("viewportTransform",{zoom:s,translation:[r,n]}),this.emitter.emit("pageDataChange",this.sdk.pageData)}setPageMove(t){w(this.sdk.pageData,"You must call SDK#run() first");const{translation:e}=this.sdk.pageData.property,i=(new A).subtractVectors(t,new A(...e));this.pageMove(i)}setCurrenCameraViewportMatrix(t){const e=this.getCurrentComposition();if(!e)return;const{camera:i}=e;i.setViewportMatrix(t)}rotateItem(t,e,i=!1){const s=this.getPlayerItemById(t);s&&(s.rotate(...e.toArray()),this.transformSceneItem(t,"rotation",e.toArray()),this.refreshSDKItem(t),i||this.emitter.emit("itemPropertyChange",{id:t,propertyKeys:["rotation"]}))}moveItem(t,e,i=!1){const s=this.getPlayerItemById(t);if(s){const r=(new j).copyFrom(s.transform.getParentMatrix()??new j);r.setPosition(new K);const n=e.clone().applyMatrix(r.invert());s.translate(...n.toArray()),s.transform.updateLocalMatrix(),this.transformSceneItem(t,"position",n.toArray()),this.refreshSDKItem(t),i||this.emitter.emit("itemPropertyChange",{id:t,propertyKeys:["translation"]})}}scaleItem(t,e,i=!1){const s=this.getPlayerItemById(t);s&&(s.scale(...e.toArray()),this.transformSceneItem(t,"scale",e.toArray()),this.refreshSDKItem(t),i||this.emitter.emit("itemPropertyChange",{id:t,propertyKeys:["size"]}))}scaleTextItemWidth(t,e){const i=this.getSDKItem(t);if(ft(i)){const{width:t}=i.property;this.setItemProperty({itemId:i.id,type:"text",propertyName:"width",propertyValue:t*e})}}scaleTextItem(t,e){const i=this.getSDKItem(t);if(ft(i)){const{width:t,lineHeight:s,fontSize:r}=i.property;this.setItemProperty({itemId:i.id,type:"text",property:{width:t*e,fontSize:r*e,lineHeight:s*e}})}}getItemTransformById(t){const e={matrix:new j,parentMatrix:new j},i=this.getPlayerItemById(t);if(void 0!==i?.transform){i.transform.updateLocalMatrix();const t=j.fromArray(i.composition?.transform.getWorldMatrix().elements??[]).invert();e.matrix=t.clone().multiply(j.fromArray(i.transform.getWorldMatrix().elements)),e.parentMatrix=t.clone().multiply(j.fromArray(i.transform.parentTransform?.getWorldMatrix().elements??(new j).toArray()))}return e}addSDKItemsByItems(t,e,i){const s=e=>{e.forEach(e=>{const s=t.find(t=>t.id===e.getInstanceId());s?this.updateSDKItemFromPlayerItem(s,e):t.push(this.createSDKItemByPlayerItem(e,i))})};for(const i of e)lo.config.pageConfig.filterItemNames.includes(i.name)||this.getFilterItemIds().includes(i.getInstanceId())||(s([i]),this.addSDKItemsByItems(t,i.children,i.getInstanceId()))}getFilterItemIds(){return[...this.getPageData()?.items.filter(t=>"effects"===t.type).flatMap(t=>t.property.children)??[],...this.getPageData()?.items.filter(t=>"frame"===t.type).map(t=>t.subCompositionItemId)??[]]}createSDKItemByPlayerItem(t,e){w(this.sdk.pageData,"You must call SDK#run() first");const{transform:i,composition:s,isVisible:r}=t,n={position:[0,0],rotation:[0,0,0],scale:[1,1],width:0,height:0};let o=!0;const{scale:a}=this.interactionUtils.viewportParam,c="editor"===lo.config.mode?1:a,h=this.getViewportLeftTopPosition();if(t.type!==m.ItemType.null){i.updateLocalMatrix();const e=(new j).copyFrom(s?.transform.getWorldMatrix()??(new j).identity()).invert().multiply(i.getWorldMatrix()),r=new K,o=new N,c=new K;e.decompose(r,o,c);const h=(new $).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(r,h);const l=this.interactionUtils.projectPoint(r),p="editor"===lo.config.mode?this.interactionUtils.getPixelPositionByViewPoint(l).toArray().map(t=>U(t,2)):l.divide(a).toArray().map(t=>U(t,2)),d=h.toArray().map(t=>U(t,2)),m=c.toArray(),u=i.size.toArray(),g=this.getPixelSizeByWorldSize([m[0]*u[0],m[1]*u[1],m[2]],t).map(t=>U(t,2));n.position=p,n.rotation=d,n.width=g[0],n.height=g[1],n.scale=[m[0],m[1]]}else if(t.getComponent(Nr)){i.updateLocalMatrix();const e=(new j).copyFrom(s?.transform.getWorldMatrix()??(new j).identity()).invert().multiply(i.getWorldMatrix()),r=new K,o=new N,c=new K;e.decompose(r,o,c);const h=(new $).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(r,h);const l=this.interactionUtils.projectPoint(r),p="editor"===lo.config.mode?this.interactionUtils.getPixelPositionByViewPoint(l).toArray().map(t=>U(t,2)):l.divide(a).toArray().map(t=>U(t,2)),d=h.toArray().map(t=>U(t,2)),m=c.toArray(),u=i.size.toArray(),g=this.getPixelSizeByWorldSize([m[0]*u[0],m[1]*u[1],m[2]],t).map(t=>U(t,2));n.position=p,n.rotation=d,n.width=g[0],n.height=g[1],n.scale=[m[0],m[1]]}else{const e=this.getViewBoxByPlayerItem(t,t.children),i=this.interactionUtils.getViewPositionWWithOutTransform(e.getCenter().subtract(h)),s="editor"===lo.config.mode?this.interactionUtils.getPixelPositionByViewPoint(i).toArray().map(t=>U(t,2)):i.toArray();n.position=s;const r=e.getSize().divide(c).toArray();n.width=r[0],n.height=r[1]}switch(t.type){case m.ItemType.sprite:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(!("renderer"in t)||!("texture"in t.renderer)||!t.renderer.texture)return;const i=e.textures?.find(e=>e.id===t.renderer.texture.id);if(i&&"source"in i&&i.source){const t=e?.images.find(t=>t.id===i.source.id);o=!!t?.template;const s=t?.url??"";s&&Object.assign(n,{image:s})}})}break}case m.ItemType.video:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(!("renderer"in t)||!("texture"in t.renderer)||!t.renderer.texture)return;const i=e.textures?.find(e=>e.id===t.renderer.texture.id);if(i&&"source"in i&&i.source){const t=e?.videos?.find(t=>t.id===i.source.id),s=t?.url??"";s&&Object.assign(n,{video:s})}})}break}case m.ItemType.text:case m.ItemType.richtext:{const e=t.getComponent(v),{text:i,textLayout:{width:s,height:r,lineHeight:o,letterSpace:a,textAlign:c},textStyle:{fontSize:h,fontStyle:l,isOutlined:p,outlineColor:d,outlineWidth:m,textColor:u,textWeight:g,fontFamily:f}}=e;Object.assign(n,{outlineEnabled:p,textAlign:c,color:et(u),fontWeight:g,text:i,fontFamily:f,fontSize:h,fontStyle:l,outlineColor:et(d),outlineWidth:m,width:U(s,2),lineHeight:o,height:U(r,2),letterSpacing:a});break}}const l=this.getSDKItem(t.getInstanceId())?.isLocked,p={id:t.getInstanceId(),name:t.name,parentId:t.parentId??e,children:[],duration:t.duration,delay:t.definition.delay??0,endBehavior:t.endBehavior,visible:r,isLocked:l,isCoreEditable:o};let d;const u=this.getSDKItem(t.getInstanceId()),g=u?.type,f=g;if("generator"===f){const t=u?.generatorType??"video";d=new vt({...p,property:{...n,generatorType:t}})}else if("sprite"===f)d=new mt({...p,property:n});else if("text"===f)d=new gt({...p,property:n});else if("video"===f)d=new yt({...p,property:n});else if("group"===f)d=new wt({...p,property:n});else if("effects"===g){const t=u?.property.effects;d=new Ct({...p,property:{...n,effects:t}})}else d="frame"===g?new Dt({...p,property:{...n}}):this.createSDKItemBySpecType(t.type,p,n);return d}createSDKItemBySpecType(t,e,i){switch(t){case m.ItemType.sprite:return new mt({...e,property:i});case m.ItemType.text:return new gt({...e,property:i});case m.ItemType.video:return new yt({...e,property:i});case m.ItemType.null:return new wt({...e,property:i});default:return console.warn(`SDKItem type ${t} not fully implemented, using GroupItem`),new wt({...e,property:i})}}getViewBoxById(t){const e=new W,i=this.getPlayerItemById(t),s=this.getChildrenPlayerItems(i);return i&&s?this.getViewBoxByPlayerItem(i,s):e}getItemViewAnchor(t){const e=this.getPlayerItemById(t);if(e?.transform?.anchor){const t=(new K).copyFrom(e.transform.anchor).applyMatrix((new j).copyFrom(e.transform.getWorldMatrix())),i=this.getViewportLeftTopPosition();return this.interactionUtils.projectPoint(t).add(i).round(2)}}getChildrenPlayerItems(t){const e=[];return t?(e.push(...this.player.getCompositions()[0].items.filter(e=>e.parentId===t.getInstanceId())),e.push(...e.flatMap(t=>this.getChildrenPlayerItems(t))),e):[]}getChildrenSceneItemIds(t,e){const i=[];return i.push(...e.items.filter(e=>e.parentId===t).map(t=>t.id)),i.push(...i.flatMap(t=>this.getChildrenSceneItemIds(t,e))),i}getViewBoxByPlayerItem(t,e){const i=new W;switch(t.type){case m.ItemType.sprite:case m.ItemType.plugin:case m.ItemType.video:case m.ItemType.richtext:case m.ItemType.text:case m.ItemType.null:case m.ItemType.shape:{const s=!!t.getComponent(Nr);if(t.type!==m.ItemType.null||s){const{transform:e,composition:s}=t;e.updateLocalMatrix();const{size:r}=e,n=(new j).copyFrom(s?.transform.getWorldMatrix()??new j).invert().multiply(e.getWorldMatrix()),{x:o,y:a}=r.clone().divide(2),c=new K(o,a,0).applyMatrix(n),h=new K(o,-a,0).applyMatrix(n),l=new K(-o,-a,0).applyMatrix(n),p=new K(-o,a,0).applyMatrix(n),d=this.getViewportLeftTopPosition(),m=this.interactionUtils.projectPoint(c).add(d).round(2),u=this.interactionUtils.projectPoint(h).add(d).round(2),g=this.interactionUtils.projectPoint(l).add(d).round(2),f=this.interactionUtils.projectPoint(p).add(d).round(2);i.setFromVec2Array([m,u,g,f])}if(!s){const t=e?.map(t=>this.getViewBoxById(t.getInstanceId()));t&&t.map(t=>i.union(t))}break}}return i}getViewportLeftTopPosition(){if(!this.sdk.pageData||"editor"===lo.config.mode)return new A;const{zoom:t,translation:e}=this.sdk.pageData.property,{offsetWidth:i,offsetHeight:s}=this.container.parentElement,{offsetWidth:r,offsetHeight:n}=this.container,o=new A(i,s),a=new A(r,n).multiply(t);return o.clone().divide(2).subtract(a.clone().divide(2)).add(e)}getViewportByViewPoint(t){if(!this.sdk.pageData)return t;const{zoom:e}=this.sdk.pageData.property,i="editor"===lo.config.mode?1:e,{width:s,height:r}=this.interactionUtils.viewportParam,n=new A(s,r).multiply(i),o=this.getViewportLeftTopPosition(),a=t.clone().subtract(o);return new A(a.x/n.x*2-1,1-a.y/n.y*2)}async setItemProperty(t){w(this.sdk.pageData,"You must call SDK#run() first"),"propertyName"in t?(await this.setSingleItemSingleProperty(t),this.emitter.emit("itemPropertyChange",{id:t.itemId,propertyKeys:[t.propertyName]})):"property"in t&&(await this.setSingleItemMultipleProperties(t),this.emitter.emit("itemPropertyChange",{id:t.itemId,propertyKeys:Object.keys(t.property)}))}async setSingleItemSingleProperty(t){const{itemId:e,propertyName:i}=t;let s=t.propertyValue;if("effects"===i){let t;if("string"==typeof s){const e=await fetch(s,{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()}if(t){const i=this.getSDKItem(e);St(i)&&(i.effects=s,s=t)}}await this.updatePlayerItemProperty(e,i,s),this.updateJSONItemProperty(e,i,s),this.refreshSDKItem(e)}async setSingleItemMultipleProperties(t){const{itemId:e,property:i}=t;for(let[t,s]of Object.entries(i)){if("effects"===t){let t;if("string"==typeof s){const e=await fetch(s,{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()}if(t){const i=this.getSDKItem(e);St(i)&&(i.effects=s,s=t)}}void 0!==s&&(await this.updatePlayerItemProperty(e,t,s),this.updateJSONItemProperty(e,t,s))}this.refreshSDKItem(e)}async updatePlayerItemProperty(t,e,i){const s=this.getPlayerItemById(t),r=this.getSDKItem(t);if(!s||!r)return void console.warn(`Id ${t} is not a valid item id.`);["name","duration","delay","endBehavior","visible","isLocked","parentId"].includes(e)?this.updatePlayerItemBaseProperty(s,e,i):await this.updatePlayerItemPropertyAttribute(s,r,e,i)}updatePlayerItemBaseProperty(t,e,i){switch(e){case"name":"string"==typeof i&&(t.name=i);break;case"duration":"number"==typeof i&&(t.duration=i);break;case"delay":"number"==typeof i&&console.warn("Property delay can not edit.");break;case"endBehavior":Object.values(m.EndBehavior).includes(i)&&console.warn("Property endBehavior can not edit.");break;case"visible":"boolean"==typeof i&&t.setVisible(i);break;case"isLocked":break;case"parentId":t.parentId=i;const e=this.getPlayerItemById(i);t.parent=e}}async updatePlayerItemPropertyAttribute(t,e,i,s){switch(i){case"textAlign":[m.TextAlignment.left,m.TextAlignment.middle,m.TextAlignment.right].includes(s)&&t.getComponent(v)?.setTextAlign(s);break;case"color":if(t.type===m.ItemType.text&&Array.isArray(s)&&4===s.length){const e=it(s);t.getComponent(v)?.setTextColor(e)}break;case"fontFamily":if("string"==typeof s){const e=s.split("/"),i=e[e.length-1]?.split(".")[0];if(await Wr.loadFontFamily([{fontURL:s,fontFamily:i}]),i){const e=t.getComponent(v);e&&(e.setFontFamily(i),e.isDirty=!0)}}break;case"text":if("string"==typeof s){const e=t.getComponent(v);if(e&&(e.setText(s),"editor"===lo.config.mode)){const t=e.getLineCount(s),i=Math.ceil(e.textLayout.lineHeight*t);e.setTextHeight(i)}}break;case"fontWeight":[m.TextWeight.normal,m.TextWeight.bold,m.TextWeight.lighter].includes(s)&&t.getComponent(v)?.setFontWeight(s);break;case"lineHeight":{const e=t.getComponent(v);if(e){e.setLineHeight(s);const t=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(t)}break}case"outlineColor":if(Array.isArray(s)&&4===s.length){const e=t.getComponent(v);if(e&&"function"==typeof e.setOutlineColor){const t=it(s);e.setOutlineColor(t)}}break;case"outlineWidth":if("number"==typeof s){const e=t.getComponent(v);e&&"function"==typeof e.setOutlineWidth&&e.setOutlineWidth(s)}break;case"outlineEnabled":if("boolean"==typeof s){const e=t.getComponent(v);e&&"function"==typeof e.setOutlineEnabled&&e.setOutlineEnabled(s)}break;case"fontSize":if("number"==typeof s&&t.type===m.ItemType.text){const e=t.getComponent(v);if(e){const t=e.textStyle.fontSize;if(e.setFontSize(s),"editor"===lo.config.mode){e.setLineHeight(e.textLayout.lineHeight*s/t);const i=e.getLineCount(e.text),r=Math.ceil(e.textLayout.lineHeight*i);e.setTextHeight(r)}}}break;case"width":if(t.type===m.ItemType.text){const e=t.getComponent(v);if(e){e.setTextWidth(s);const t=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(t)}}else if([m.ItemType.sprite,m.ItemType.video].includes(t.type)){const e=this.interactionUtils.getViewSizeByPixelSize(new A(s,0)),i=this.interactionUtils.getWorldSizeByViewSize(e).x,r=t.transform.getWorldScale(),n=t.transform.size.toArray();t.transform.setSize(Math.abs(i)/r.x,n[1])}else t.type===m.ItemType.null&&zt(e);break;case"height":if(t.type===m.ItemType.text){t.getComponent(v).setTextHeight(s)}else{const e=this.interactionUtils.getViewSizeByPixelSize(new A(0,s)),i=this.interactionUtils.getWorldSizeByViewSize(e).y,r=t.transform.getWorldScale(),n=t.transform.size.toArray();t.transform.setSize(n[0],Math.abs(i)/r.y)}break;case"letterSpacing":if(t.type===m.ItemType.text){const e=t.getComponent(v);e.textLayout.letterSpace=s,e.isDirty=!0;const i=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(i)}break;case"image":"string"==typeof s&&t.type===m.ItemType.sprite&&t.getComponent(I)?.setTexture(await P.fromImage(s,this.player.renderer.engine));break;case"video":"string"==typeof s&&t.type===m.ItemType.video&&t.getComponent(D)?.setTexture(await P.fromVideo(s,this.player.renderer.engine));break;case"effects":if(t.type===m.ItemType.null){const e=t.children[0],i=e?.getInstanceId();if(e?.dispose(),!i)return;const r=s.compositions.find(t=>t.id===s.compositionId)??s.compositions[0];r||console.warn("Composition not found in effects scene.");const n=r?.previewSize??[750,1624],o=this.interactionUtils.getViewSizeByPixelSize(new A(...n)),a=this.interactionUtils.getWorldSizeByViewSize(o);t.transform.setSize(Math.abs(a.x),Math.abs(a.y));const c=await Vr.createEffects(t.composition,s,null,"特效");c.setInstanceId(i),c.setParent(t),c.parentId=t.getInstanceId();const h=c.components[0];h?.pause(),this.sdk.player.gotoAndPlay(0)}break;case"muted":if("boolean"==typeof s&&t.type===m.ItemType.video){const e=t.getComponent(D);e&&e.setMuted(s)}break;case"playbackRate":if("number"==typeof s&&t.type===m.ItemType.video){const e=t.getComponent(D);e&&e.setPlaybackRate(s)}break;case"volume":if("number"==typeof s&&t.type===m.ItemType.video){const e=t.getComponent(D);e&&e.setVolume(s)}break;case"position":if(Array.isArray(s)&&2===s.length){const i=s.map((t,i)=>t-(e.property.position[i]??0)),r=this.interactionUtils.getViewSizeByPixelSize(new A(...i)),n=this.interactionUtils.getWorldSizeByViewSize(r,!0,t.getInstanceId());this.moveItem(t.getInstanceId(),n,!0)}break;case"rotation":if(Array.isArray(s)&&3===s.length){const i=s.map((t,i)=>t-(e.property.rotation[i]??0));this.rotateItem(t.getInstanceId(),new K(...i).negate(),!0)}break;case"scale":if(Array.isArray(s)&&2===s.length){const i=e.property.scale,r=s.map((t,e)=>t/(i[e]??1));this.scaleItem(t.getInstanceId(),new K(...r,1),!0)}break;case"layoutMode":if("auto"===s||"free"===s){const e=t.getComponent(Nr),{freeLayoutBackgroundColor:i,autoLayoutBackgroundColor:r}=lo.config.itemConfig.frameConfig,n="free"===s?i:r;e.color=new Zr(...n)}break;case"visible":if("boolean"==typeof s&&(t.setVisible(s),lo.config.pageConfig.groupVisible)){this.getChildrenPlayerItems(t).forEach(t=>{t.setVisible(s)})}break;default:console.log("ignore property name ",i),i in e.property&&(e.property[i]=s)}["position","rotation","size"].includes(i)||this.player.gotoAndPlay(this.sdk.pageData.time)}updateJSONItemProperty(t,e,i){const s=["name","duration","delay","endBehavior","visible","isLocked","parentId"];this.sdk.pageData.viewProperties.forEach(r=>{if(!this.sdk.pageData?.property.asyncMode&&r.id!==this.sdk.pageData?.activeData.view)return;const{scene:n}=r;s.includes(e)?this.updateSceneItemBaseProperty(n,t,e,i):this.updateSceneItemPropertyAttribute(n,t,e,i)})}updateSceneItemBaseProperty(t,e,i,s){const r=t.items.find(t=>t.id===e);if(r)switch(i){case"name":r.name=s;break;case"duration":r.duration=s;break;case"delay":r.delay=s;break;case"endBehavior":r.endBehavior=s;break;case"visible":r.visible=s;break;case"parentId":r.parentId=s}}updateSceneItemPropertyAttribute(t,e,i,s){var r,n,o,a,c,h,l,p,d,u;const g=t.items.find(t=>t.id===e);if(g)switch(i){case"position":if(Array.isArray(s)&&2===s.length){const t=this.sdk.pageData.items.find(t=>t.id===e),i=t?.property.position,r=s.map((t,e)=>t-(i?.[e]??0)),n=this.interactionUtils.getViewSizeByPixelSize(new A(...r)),o=this.interactionUtils.getWorldSizeByViewSize(n,!0,e);g.transform&&(g.transform.position.x+=o.x,g.transform.position.y+=o.y,g.transform.position.z+=o.z)}break;case"rotation":if(Array.isArray(s)&&3===s.length){const t=this.sdk.pageData.items.find(t=>t.id===e),i=t?.property.rotation,r=s.map((t,e)=>t-(i?.[e]??0));g.transform&&(g.transform.eulerHint.x+=r[0],g.transform.eulerHint.y+=r[1],g.transform.eulerHint.z+=r[2])}break;case"scale":if(Array.isArray(s)&&2===s.length){const t=this.sdk.pageData.items.find(t=>t.id===e),i=t?.property.scale,r=s.map((t,e)=>t/(i?.[e]??0));g.transform&&(g.transform.scale.x*=r[0],g.transform.scale.y*=r[1])}break;case"width":if(g.type===m.ItemType.text){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(i?.options&&g){i.options.textWidth=s;const t=this.getPlayerItemById(e);if(t){const e=t.getComponent(v),s=e.textLayout.width,n=Math.ceil(e.lineCount*e.lineCount);i.options.textHeight=n;const o=this.interactionUtils.getViewSizeByPixelSize(new A(s,n)),a=this.interactionUtils.getWorldSizeByViewSize(o);(r=g.transform).scale??(r.scale={x:1,y:1,z:1}),g.transform.scale={x:Math.abs(a.x),y:Math.abs(a.y),z:1}}}}else if(g.type===m.ItemType.null){const t=this.getSDKItem(e);if(zt(t)&&"number"==typeof s){const e=t.height;this.resizeFrameItem(t.id,[s,e])}else if(St(t)&&"number"==typeof s){const e=t.width,i=s/e;(n=g.transform).scale??(n.scale={x:1,y:1,z:1}),g.transform.scale.x*=i}}else if("number"==typeof s){const t=[s,0],i=this.interactionUtils.getViewSizeByPixelSize(new A(...t)),r=this.interactionUtils.getWorldSizeByViewSize(i,!0,e);g.transform&&((o=g.transform).size??(o.size={x:1,y:1}),g.transform.size.x=Math.abs(r.x))}break;case"height":if(g.type===m.ItemType.null){const t=this.getSDKItem(e);if(zt(t)&&"number"==typeof s){const e=t.width;this.resizeFrameItem(t.id,[e,s])}else if(St(t)&&"number"==typeof s){const e=t.height,i=s/e;(a=g.transform).scale??(a.scale={x:1,y:1,z:1}),g.transform.scale.y*=i}}else if("number"==typeof s){const t=[0,s],i=this.interactionUtils.getViewSizeByPixelSize(new A(...t)),r=this.interactionUtils.getWorldSizeByViewSize(i,!0,e);g.transform&&((c=g.transform).size??(c.size={x:1,y:1}),g.transform.size.y=Math.abs(r.y))}break;case"visible":if("boolean"==typeof s&&(g.visible=s,lo.config.pageConfig.groupVisible)){this.getChildrenSceneItemIds(e,t).forEach(e=>{const i=t.items.find(t=>t.id===e);i&&(i.visible=s)})}break;case"textAlign":if([m.TextAlignment.left,m.TextAlignment.middle,m.TextAlignment.right].includes(s)){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options&&"textAlign"in i.options&&(i.options.textAlign=s)}break;case"letterSpacing":if("number"==typeof s){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options.letterSpace&&(i.options.letterSpace=s)}break;case"color":if(Array.isArray(s)&&4===s.length){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(i?.options){const t=it(s);i.options.textColor=[...t]}}break;case"fontFamily":if("string"==typeof s){const i=s.split("/"),r=i[i.length-1]?.split(".")[0],n=t.fonts?.find(t=>"family"in t&&t.family===r||"fontFamily"in t&&t.fontFamily===r);!n&&t.fonts&&r&&t.fonts.push({fontFamily:r,fontURL:s});const o=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));o&&(o.options.fontFamily=r)}break;case"lineHeight":if("number"==typeof s){const i=t.items.find(t=>t.id===e),r=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(i&&r?.options){r.options.lineHeight=s;const t=this.getPlayerItemById(e);if(t){const e=t.getComponent(v),s=e.textLayout.width,n=Math.ceil(e.textLayout.lineHeight*e.lineCount);r.options.textHeight=n;const o=this.interactionUtils.getViewSizeByPixelSize(new A(s,n)),a=this.interactionUtils.getWorldSizeByViewSize(o);(h=i.transform).scale??(h.scale={x:1,y:1,z:1}),i.transform.scale={x:Math.abs(a.x),y:Math.abs(a.y),z:1}}}}break;case"text":if("string"==typeof s){const i=t.items.find(t=>t.id===e),r=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(r?.options&&i){r.options.text=s;const t=this.getPlayerItemById(e);if(t&&"editor"===lo.config.mode){const e=t.getComponent(v),n=e.getLineCount(s),o=e.textLayout.lineHeight,a=e.textLayout.width,c=Math.ceil(o*n);r.options.textHeight=c;const h=this.interactionUtils.getViewSizeByPixelSize(new A(a,c)),p=this.interactionUtils.getWorldSizeByViewSize(h);(l=i.transform).scale??(l.scale={x:1,y:1,z:1}),i.transform.scale={x:Math.abs(p.x),y:Math.abs(p.y),z:1}}}}break;case"fontWeight":if("string"==typeof s){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options&&(i.options.fontWeight=s)}break;case"outlineColor":if(Array.isArray(s)&&4===s.length){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options&&((p=i.options).outline??(p.outline={}),i.options.outline.outlineColor=[...it(s)])}break;case"outlineWidth":if("number"==typeof s){const i=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));i?.options&&((d=i.options).outline??(d.outline={}),i.options.outline.outlineWidth=s)}break;case"outlineEnabled":if("boolean"==typeof s){const t=this.getPlayerItemById(e),i=t?.getComponent(v);i&&(i.textStyle.isOutlined=s)}break;case"fontSize":if("number"==typeof s){const i=t.items.find(t=>t.id===e),r=t.components.find(t=>t.item.id===e&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(t.dataType));if(r?.options&&i){r.options.fontSize=s;const t=this.getPlayerItemById(e);if(t&&"editor"===lo.config.mode){const e=t.getComponent(v);e.setFontSize(s);const n=e.textLayout.lineHeight;r.options.lineHeight=n;const o=Math.ceil(e.textLayout.lineHeight*e.lineCount);r.options.textHeight=o;const a=e.textLayout.width,c=this.interactionUtils.getViewSizeByPixelSize(new A(a,o)),h=this.interactionUtils.getWorldSizeByViewSize(c);(u=i.transform).scale??(u.scale={x:1,y:1,z:1}),i.transform.scale={x:Math.abs(h.x),y:Math.abs(h.y),z:1}}}}break;case"image":if("string"==typeof s){const i=t.components.filter(t=>t.item.id===e);if(i.find(t=>!!t.renderer?.texture)){const r=new Map;i.forEach(i=>{if(!("renderer"in i))return;const n=t.textures?.find(t=>t.id===i.renderer.texture.id);if(n&&"source"in n&&n.source){const o=t?.images.find(t=>t.id===n.source.id);o?.url&&(o.url=s,delete o.webp),o&&"template"in o&&o.template.background&&(o.template.background.url=s);const a=this.player.renderer.engine.findObject({id:n.id});a?.dispose();const c=this.getPlayerItemById(e)?.getComponent(I).renderer.texture.getInstanceId();r.set(n.id,c),n.id=c,i.renderer.texture.id=c}}),t.components.forEach(t=>{if(!("renderer"in t)||!t.renderer.texture)return;const e=r.get(t.renderer.texture.id);if(e){t.renderer.texture.id=e;const i=this.getPlayerItemById(t.item.id),s=this.player.renderer.engine.findObject({id:e}),r=i?.getComponent(I);r?.setTexture(s)}})}else{t.components.filter(t=>t.item.id===e).forEach(e=>{if(!("renderer"in e))return;const i=this.getPlayerItemById(e.item.id),r=i?.getComponent(I).renderer.texture.getInstanceId();if(r){const i={id:C(),url:s,renderLevel:m.RenderLevel.BPlus},n={id:r,source:{id:i.id},flipY:!0,dataType:m.DataType.Texture,magFilter:jr.LINEAR,minFilter:jr.LINEAR,generateMipmap:!0};t.images.push(i),t.textures??(t.textures=[]),t.textures.push(n),e.renderer.texture={id:r}}})}}break;case"video":if("string"==typeof s){const i=t.components.filter(t=>t.item.id===e);if(i.find(t=>!!t.renderer?.texture)){const r=new Map;i.forEach(i=>{if(!("renderer"in i)||!i.renderer.texture)return;const n=t.textures?.find(t=>t.id===i.renderer.texture.id);if(n&&"source"in n&&n.source){const o=t?.videos.find(t=>t.id===n.source.id);o&&(o.url=s);const a=this.player.renderer.engine.findObject({id:n.id});a?.dispose();const c=this.getPlayerItemById(e)?.getComponent(D).renderer.texture.getInstanceId();c&&(r.set(n.id,c),n.id=c,i.renderer.texture.id=c)}}),t.components.forEach(t=>{if(!("renderer"in t)||!t.renderer.texture)return;const e=r.get(t.renderer.texture.id);if(e){t.renderer.texture.id=e;const i=this.getPlayerItemById(t.item.id),s=this.player.renderer.engine.findObject({id:e}),r=i?.getComponent(D);r?.setTexture(s)}})}else{t.components.filter(t=>t.item.id===e).forEach(e=>{if(!("renderer"in e))return;const i=this.getPlayerItemById(e.item.id),r=i?.getComponent(D).renderer.texture.getInstanceId();if(r){const i={id:C(),url:s,renderLevel:m.RenderLevel.BPlus},n={id:r,source:{id:i.id},flipY:!0,dataType:m.DataType.Texture,magFilter:jr.LINEAR,minFilter:jr.LINEAR_MIPMAP_LINEAR,generateMipmap:!0};t.videos??(t.videos=[]),t.videos.push(i),t.textures??(t.textures=[]),t.textures.push(n),e.options.video={id:i.id},e.renderer.texture={id:r}}})}}break;case"effects":if(s){const i=this.getSDKItem(e)?.property.children,r=this.getPlayerItemById(e)?.children?.[0]?.getInstanceId();i&&r&&(Cr(t,i),Pr(t,s,r,e))}break;case"muted":if("boolean"==typeof s){const i=t.components.find(t=>t.item.id===e&&t.dataType===m.DataType.VideoComponent);i?.options&&(i.options.muted=s)}break;case"playbackRate":if("number"==typeof s){const i=t.components.find(t=>t.item.id===e&&t.dataType===m.DataType.VideoComponent);i?.options&&(i.options.playbackRate=s)}break;case"volume":if("number"==typeof s){const i=t.components.find(t=>t.item.id===e&&t.dataType===m.DataType.VideoComponent);i?.options&&(i.options.volume=s)}break;case"layoutMode":{const t=this.getSDKItem(e);!zt(t)||"auto"!==s&&"free"!==s||(t.property.layoutMode=s,"auto"===s&&this.applyFrameAutoLayout(e));break}case"autoLayoutConfig":{const t=this.getSDKItem(e);zt(t)&&s&&"object"==typeof s&&(t.property.autoLayoutConfig=s,"auto"===t.property.layoutMode&&this.applyFrameAutoLayout(e));break}case"layoutInfos":{const t=this.getSDKItem(e);zt(t)&&s&&"object"==typeof s&&(t.property.layoutInfos=s);break}default:console.warn(`Target property ${i} can not be changed.`)}else console.warn(`Item ${e} is not existed.`)}setSpriteSize(t,e){var i;const s=this.getPlayerItemById(t),r=this.interactionUtils.getViewSizeByPixelSize(new A(...e)),n=this.interactionUtils.getWorldSizeByViewSize(r),o=this.getActiveTargetScene(),a=o?.items.find(e=>e.id===t);s&&a&&(s.transform.setSize(n.x,Math.abs(n.y)),a.transform??(a.transform={position:{x:0,y:0,z:0},scale:{x:1,y:1,z:1},eulerHint:{x:0,y:0,z:0},size:{x:n.x,y:n.y}}),(i=a.transform).size??(i.size={x:1,y:1}),a.transform.size={x:Math.abs(n.x),y:Math.abs(n.y)},this.refreshSDKItem(t))}transformSceneItem(t,e,i){w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.viewProperties.forEach(s=>{if(!this.sdk.pageData?.property.asyncMode&&s.id!==this.sdk.pageData?.activeData.view)return;const{scene:r}=s;switch(e){case"position":if(Array.isArray(i)&&3===i.length){const e=r.items.find(e=>e.id===t);e?.transform&&(e.transform.position.x+=i[0],e.transform.position.y+=i[1],e.transform.position.z+=i[2])}break;case"rotation":if(Array.isArray(i)&&3===i.length){const e=r.items.find(e=>e.id===t);e?.transform&&(e.transform.eulerHint.x+=i[0],e.transform.eulerHint.y+=i[1],e.transform.eulerHint.z+=i[2])}break;case"scale":if(Array.isArray(i)&&3===i.length){const e=r.items.find(e=>e.id===t);e?.transform&&(e.transform.scale.x*=i[0],e.transform.scale.y*=i[1],e.transform.scale.z*=i[2])}}})}refreshSDKItem(t){const e=this.sdk.pageData;w(e,"You must call SDK#run() first");const i=e.items.findIndex(e=>e.id===t);if(i<0)return void console.warn(`item ${t} is not existed.`);const s=e.items[i],r=this.getPlayerItemById(t);r&&s&&this.updateSDKItemFromPlayerItem(s,r);(zt(s)?s.children:[]).forEach(t=>{this.refreshSDKItem(t)})}updateSDKItemFromPlayerItem(t,e){const{name:i,transform:s,composition:r,isVisible:n,duration:o,endBehavior:a}=e;if(t.name=i,t.duration=o,t.delay=e.definition.delay??0,t.endBehavior=a,e.parent?.type===m.ItemType.composition&&e.parent?.parent?.type===m.ItemType.null?t.parentId=e.parent.parentId:t.parentId=e.parentId,e.type!==m.ItemType.null){s.updateLocalMatrix();const i=(new j).copyFrom(r?.transform.getWorldMatrix()??(new j).identity()).invert().multiply(s.getWorldMatrix()),o=new K,a=new N,c=new K;i.decompose(o,a,c);const h=(new $).setFromQuaternion(a);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(o,h);const l=this.interactionUtils.projectPoint(o),{scale:p}=this.interactionUtils.viewportParam,d="editor"===lo.config.mode?this.interactionUtils.getPixelPositionByViewPoint(l).toArray().map(t=>U(t,2)):l.divide(p).toArray().map(t=>U(t,2)),m=h.toArray().map(t=>U(t,2)),u=c.toArray(),g=s.size.toArray(),f=this.getPixelSizeByWorldSize([u[0]*g[0],u[1]*g[1],u[2]],e).map(t=>U(t,2));t.property.position=d,t.property.rotation=m,t.property.width=f[0],t.property.height=f[1],t.property.scale=[u[0],u[1]],t.visible=n}else{const i=e.children.map(t=>t.getInstanceId()),s=this.getViewportLeftTopPosition(),r=this.getViewBoxByPlayerItem(e,e.children),o="template"===lo.config.mode?1:this.interactionUtils.viewportParam.scale,a=this.interactionUtils.getViewPositionWWithOutTransform(r.getCenter().subtract(s)),c="editor"===lo.config.mode?this.interactionUtils.getPixelPositionByViewPoint(a).toArray().map(t=>U(t,2)):a.toArray();"group"===t.type&&(t.property.children=i),t.property.position=c;const h=r.getSize().divide(o).toArray();t.property.width=h[0],t.property.height=h[1],t.visible=n}switch(e.type){case m.ItemType.sprite:if(ut(t)){const i=this.getViewProperty()?.scene;if(i){i.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(!("renderer"in e)||!("texture"in e.renderer)||!e.renderer.texture)return;const s=i.textures?.find(t=>t.id===e.renderer.texture.id);if(s&&"source"in s&&s.source){const e=i?.images.find(t=>t.id===s.source.id);t.isCoreEditable=!!e?.template,t.property.image=e?.url??""}})}}break;case m.ItemType.video:if(xt(t)){const i=this.getViewProperty()?.scene;if(i){i.components.filter(t=>t.item.id===e.getInstanceId()).forEach(e=>{if(!("renderer"in e)||!("texture"in e.renderer)||!e.renderer.texture)return;const s=i.textures?.find(t=>t.id===e.renderer.texture.id);if(s&&"source"in s&&s.source){const e=i?.videos?.find(t=>t.id===s.source.id);t.isCoreEditable=!0,t.property.video=e?.url??""}})}}break;case m.ItemType.text:case m.ItemType.richtext:if(ft(t)){const i=e.getComponent(v),{text:s,textLayout:{width:r,height:n,lineHeight:o,letterSpace:a,textAlign:c},textStyle:{fontSize:h,fontStyle:l,isOutlined:p,outlineColor:d,outlineWidth:m,textColor:u,textWeight:g,fontFamily:f}}=i;t.isCoreEditable=!0,Object.assign(t.property,{outlineEnabled:p,textAlign:c,color:et(u),fontWeight:g,text:s,fontFamily:f,fontSize:h,fontStyle:l,outlineColor:d?et(d):void 0,outlineWidth:m,width:U(r,2),lineHeight:o,height:U(n,2),letterSpacing:a})}}}getPlayerItemById(t){return this.player.getCompositions()[0]?.items.find(e=>e.getInstanceId()===t)}getPixelSizeByWorldSize(t,e){w(this.sdk.pageData,"You must call SDK#run() first");const i=[0,0],s=e.composition?.camera,r=this.getViewProperty()?.size;if(s&&r){const{z:n}=e.transform.getWorldPosition(),{x:o,y:a}=s.getInverseVPRatio(n);i[0]=Math.abs(t[0]*r[0]/o/2),i[1]=Math.abs(t[1]*r[1]/a/-2)}else console.warn("camera is not existed.");return i}getWorldSizeByPixelSize(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=[0,0],i=this.player.getCompositions()[0],s=i?.camera,r=this.getViewProperty()?.size;if(s&&r){const{x:i,y:n}=s.getInverseVPRatio(0);e[0]=Math.abs(2*t[0]*i/r[0]),e[1]=Math.abs(-2*t[1]*n/r[1])}else console.warn("camera is not existed.");return e}getActiveTargetScene(){const t=this.getViewProperty()?.scene;if(t)return t;console.warn("Target scene is not existed.")}refreshSceneAndPageData(){w(this.sdk.pageData,"You must call SDK#run() first");const t=this.player.getCompositions()[0];this.refreshItemRenderOrder(t),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.addSDKItemsByItems(this.sdk.pageData.items,t.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}async addSpriteItem(t,e=!1,i){if(i??(i=this.getActiveTargetScene()),!i)return;const{name:s="图片",property:{width:r,height:n,scale:o=[1,1],image:a,rotation:c=0,position:h},parentId:l,id:p=C(),extension:d}=t,u=[r,n],g=Array.isArray(c)?[...c]:[0,0,c];g[2]=-g[2];const f=new K(...o??[1,1],1),y=this.getWorldSizeByPixelSize(u),x=new K(...g),v=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new A(...h)))??new K,S=i.images.findIndex(t=>t.url===a);let b,D,z={};if(a)if(D=e?t.textureId:C(),S<0||"editor"===lo.config.mode){e||(b=await P.fromImage(a,this.player.renderer.engine,{magFilter:jr.LINEAR,minFilter:jr.LINEAR_MIPMAP_LINEAR,generateMipmap:!0,id:D}));const t={id:C(),url:a,renderLevel:m.RenderLevel.BPlus};z={id:D,source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:jr.LINEAR,minFilter:jr.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},i.images.push(t),i.textures??(i.textures=[]),i.textures.push(z)}else if(!e){const t=i.textures?.find(t=>t.source.id===i.images[S].id);z={id:t?.id},b=this.player.renderer.engine.findObject({id:t.id})}const T=new mt({id:p,name:s,parentId:l,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!0,property:{position:[...h],rotation:[...g],width:r,height:n,scale:[...o],image:a??""},extension:d});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(T);const _=lr(p,v,x,new A(...y),f,s,D);fr(i,_);const B=this.player.getCompositions()[0],E=Vr.createSprite(B,null,s);if(E.setInstanceId(_.item.id),E.duration=999,E.endBehavior=m.EndBehavior.restart,E.transform.setSize(...y),E.transform.setPosition(...v.toArray()),E.transform.setRotation(...x.toArray()),E.transform.setScale(...f.toArray()),b&&!e){E.getComponent(I).setTexture(b)}return t.parentId&&this.setItemParentUnified(p,t.parentId,i),this.refreshSceneAndPageData(),"template"===lo.config.mode&&this.player.gotoAndStop(this.getPageData().time),_.item.id}addGroupItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{name:i="编组",property:{position:s=[0,0],children:r=[],scale:n=[1,1]},id:o=C(),extension:a,parentId:c}=t,h=r.filter(t=>!this.getPlayerItemById(t)),l=r.filter(t=>!!this.getPlayerItemById(t));if(h.length&&console.warn(`item ${h.join("、")} is not existed.`),0===l.length)return;const p=new K(...this.getWorldSizeByPixelSize(s),0),d=new wt({id:o,name:i,parentId:c,children:l.map(t=>this.getPlayerItemById(t).getInstanceId()),duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!1,property:{position:s,rotation:[0,0,0],scale:[...n]},extension:a});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(d);const u=dr(o,i,p);fr(e,u),l.forEach(t=>{yr(e,t,o)});const g=this.player.getCompositions()[0],f=Vr.createEmpty(g,null,i);return f.setInstanceId(u.item.id),f.duration=999,f.endBehavior=m.EndBehavior.restart,f.transform.setPosition(...p.toArray()),l.forEach(t=>{const e=this.getPlayerItemById(t);e.setParent(f),e.parentId=u.item.id,e.translate(...p.clone().negate().toArray())}),t.parentId&&this.setItemParentUnified(o,t.parentId,e),this.refreshSceneAndPageData(),u.item.id}async addTextItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{id:i=C(),parentId:s,name:r="文本",property:{lineHeight:n,width:o,height:a=n,fontFamily:c,position:h=[0,0],fontSize:l,fontWeight:p=m.TextWeight.normal,fontStyle:d=m.FontStyle.normal,textAlign:u=m.TextAlignment.left,text:g,color:f,outlineColor:y,outlineWidth:x,rotation:I=0,fontUrl:P,outlineEnabled:S,letterSpacing:b=0},extension:D}=t,z=Array.isArray(I)?[...I]:[0,0,I];z[2]=-z[2],P&&!e.fonts?.find(t=>t.fontFamily===c)&&(e.fonts??(e.fonts=[]),e.fonts.push({fontFamily:c,fontURL:P}));const T=it(f),_=y?it(y):void 0,B={text:g,fontFamily:c,fontSize:l,textColor:T,fontWeight:p,textAlign:u,fontStyle:d,textWidth:o,textHeight:a,lineHeight:n,textBaseline:m.TextBaseline.top,textOverflow:m.TextOverflow.visible,outline:S?{outlineColor:_,outlineWidth:x}:void 0,letterSpace:b},E=new gt({id:i,name:r,parentId:s,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!0,property:{position:h,rotation:z,width:o,height:a??n??l,scale:[1,1],text:g,fontFamily:c,fontSize:l,fontWeight:p,fontStyle:d,textAlign:u,color:f,lineHeight:n,outlineEnabled:S,outlineColor:y,outlineWidth:x},extension:D});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(E);const k=this.player.getCompositions()[0],M=Vr.createText(k,null,r);M.setInstanceId(i),M.duration=999,M.endBehavior=m.EndBehavior.restart;const U=M.getComponent(v),G={options:B,renderer:{renderMode:1},dataType:m.DataType.TextComponent,item:{id:M.getInstanceId()},id:U.getInstanceId()};U.fromData(G),await Wr.loadFontFamily([{fontURL:P,fontFamily:c}]),U.setFontFamily(c);const F=[o,B.textHeight],L=this.getWorldSizeByPixelSize(F),R=new K(...z),V=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new A(...h)))??new K,O=mr(i,r,V,R,new A(...L),B);fr(e,O);const W=L[0]/M.transform.size.x;return M.transform.setScale(W,W,1),M.transform.setPosition(...V.toArray()),M.transform.setRotation(...R.toArray()),w(this.sdk.pageData,"You must call SDK#run() first"),t.parentId&&this.setItemParentUnified(i,t.parentId,e),this.refreshSceneAndPageData(),O.item.id}async addVideoItem(t,e,i){if(i??(i=this.getActiveTargetScene()),!i)return;const{name:s="视频",property:{width:r,height:n,scale:o=[1,1],video:a,rotation:c=0,position:h,muted:l=!0,transparent:p=!1,volume:d=1,playbackRate:u=1},parentId:g,id:f=C(),extension:y}=t,x=[r,n],I=Array.isArray(c)?[...c]:[0,0,c];I[2]=-I[2];const v=new K(...o??[1,1],1),S=this.getWorldSizeByPixelSize(x),b=new K(...I),z=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new A(...h)))??new K;i.videos??(i.videos=[]);const T=i.videos.findIndex(t=>t.url===a);let _,B,E="",k={};if(a)if(B=e?t.textureId:C(),T<0||"editor"===lo.config.mode){e||(_=await P.fromVideo(a,this.player.renderer.engine,{magFilter:jr.LINEAR,minFilter:jr.LINEAR,generateMipmap:!1,id:B}));const t={id:C(),url:a,renderLevel:m.RenderLevel.BPlus};E=t.id,k={id:B,source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:jr.LINEAR,minFilter:jr.LINEAR,generateMipmap:!1},i.videos.push(t),i.textures??(i.textures=[]),i.textures.push(k)}else if(!e){const t=i.textures?.find(t=>t.source.id===i.videos[T].id);E=t?.source.id,k={id:t?.id},_=this.player.renderer.engine.findObject({id:t.id})}const M=new yt({id:f,name:s,parentId:g,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!0,property:{position:[...h],rotation:[...I],width:r,height:n,scale:[...o],video:a??"",muted:l,transparent:p,volume:d,playbackRate:u},extension:y});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(M);const U=ur(f,z,b,new A(...S),v,s,l,p,d,u,B,E);fr(i,U);const G=this.player.getCompositions()[0],F=Vr.createVideo(G,null,s);if(F.setInstanceId(U.item.id),F.duration=999,F.endBehavior=m.EndBehavior.restart,F.transform.setSize(...S),F.transform.setPosition(...z.toArray()),F.transform.setRotation(...b.toArray()),F.transform.setScale(...v.toArray()),_&&!e){const t=F.getComponent(D);t.setTexture(_),t.setLoop(!0),t.setMuted(l),t.setVolume(d),t.setPlaybackRate(u),t.pauseVideo()}return t.parentId&&this.setItemParentUnified(f,t.parentId,i),this.refreshSceneAndPageData(),U.item.id}addGeneratorItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return"";const{id:i=C(),name:s=("video"===t.property.generatorType?"视频生成器":"图片生成器"),property:{width:r,height:n,position:o,rotation:a=0,generatorType:c="image"},extension:h}=t,l=[r,n],p=Array.isArray(a)?[...a]:[0,0,a];p[2]=-p[2];const d=new K(1,1,1),u=this.getWorldSizeByPixelSize(l),g=new K(...p),f=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new A(...o)))??new K,y=new vt({id:i,name:s,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,visible:!0,isLocked:!1,isCoreEditable:!0,property:{position:[...o],rotation:[0,0,0],width:r,height:n,scale:[1,1],generatorType:c},extension:h});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(y);const x=this.player.getCompositions()[0],v=Vr.createSprite(x,null,s);return v.getComponent(I).setColor(new Zr(...lo.config.itemConfig.generatorConfig.backgroundColor)),v.setInstanceId(i),v.duration=999,v.endBehavior=m.EndBehavior.restart,v.transform.setSize(...u),v.transform.setPosition(...f.toArray()),v.transform.setRotation(...g.toArray()),v.transform.setScale(...d.toArray()),t.parentId&&this.setItemParentUnified(i,t.parentId,e),this.refreshSceneAndPageData(),i}async setGeneratorResource(t,e){const i=this.getActiveTargetScene();if(!i)return"";const s=this.getSDKItem(t);if(!s||!Pt(s))return console.warn(`GeneratorItem ${t} not found`),"";const r="video"===s.generatorType?s.toVideoCreateInfo(e,!0):s.toSpriteCreateInfo(e,!0);this.deleteItem(t);return"video"===s.generatorType?await this.addVideoItem(r,!1,i):await this.addSpriteItem(r,!1,i)}async convertVideoGeneratorToVideo(t,e){return this.setGeneratorResource(t,e)}deleteItem(t){const e=this.getActiveTargetScene();if(!e)return;const i=this.getSDKItem(t);if(wr(e,t),St(i)||zt(i)){Cr(e,[i.subCompositionItemId]);const t=this.getPageData();zt(i)&&t&&(t.items=t.items.filter(t=>!i.children.includes(t.id)))}const s=this.player.getCompositions()[0].items.find(e=>e.getInstanceId()===t);if(s){const t=s.getWorldTransform(),e=t.getWorldPosition(),r=t.getRotation(),n=t.getWorldScale();St(i)||zt(i)?s.children.forEach(t=>{t.dispose()}):s.children.forEach(t=>{t.scale(...n.toArray()),t.rotate(...r.toArray()),t.translate(...e.toArray()),t.parent=void 0,t.parentId=void 0}),s.dispose()}this.getPageData().items=this.getPageData().items.filter(e=>e.id!==t)}setItemParentUnified(t,e,i){const s=this.getSDKItem(e);if(!s)return console.warn(`setItemParentUnified: Parent item ${e} not found`),!1;let r=!1;return It(s)?(this.setItemParentToGroup(t,e,i),r=!0):zt(s)?(this.moveItemsToFrame([t],e),r=!0):console.warn("setItemParentUnified: Parent type not supported for parenting"),r&&(this.refreshSDKItem(t),this.refreshSDKItem(e)),r}setItemParentToGroup(t,e,i){const s=this.getPlayerItemById(e),r=this.getPlayerItemById(t);if(s?.type!==m.ItemType.null||!r)return void console.warn("setItemParentToGroup: Id info is error, can not set parent.");i??(i=this.getActiveTargetScene()),yr(i,t,e);const n=this.getSDKItem(e);It(n)&&(n.property.children=n.property.children||[],n.property.children.includes(t)||n.property.children.push(t));const o=s.getWorldTransform(),a=o.getWorldPosition(),c=o.getRotation(),h=o.getWorldScale();r.scale(1/h.x,1/h.y,1/h.z),r.rotate(...c.clone().negate().toArray()),r.translate(...a.clone().negate().toArray()),r.setParent(s),r.parentId=s.getInstanceId();const l=this.getSDKItem(t);l&&(l.parentId=e)}setItemParent(t,e,i){const s=this.getPlayerItemById(e),r=this.getPlayerItemById(t);if(s?.type!==m.ItemType.null||!r)return void console.warn("Id info is error, can not set parent.");i??(i=this.getActiveTargetScene()),yr(i,t,e);const n=s.getWorldTransform(),o=n.getWorldPosition(),a=n.getRotation(),c=n.getWorldScale();r.scale(1/c.x,1/c.y,1/c.z),r.rotate(...a.clone().negate().toArray()),r.translate(...o.clone().negate().toArray()),r.setParent(s),r.parentId=s.getInstanceId(),this.refreshSDKItem(t),this.refreshSDKItem(e)}deleteItemParent(t,e,i){const s=this.getPlayerItemById(e),r=this.getPlayerItemById(t);s?.type===m.ItemType.null&&r?(i??(i=this.getActiveTargetScene()),xr(i,t),r.parent=void 0,r.parentId=void 0,this.refreshSDKItem(t),this.refreshSDKItem(e)):console.warn("Id info is error, can not set parent.")}moveItemsToFrame(t,e){const i=this.getSDKItem(e);if(!zt(i))return void console.warn(`Item ${e} is not a Frame.`);if(!i.subCompositionItemId)return void console.warn(`Frame ${e} has no sub composition ID.`);const s=this.getPlayerItemById(e);if(!s)return void console.warn(`Frame controller ${e} not found.`);const r=s.children?.[0];if(!r)return void console.warn(`Frame ${e} has no sub-composition.`);const n=this.getActiveTargetScene();if(!n)return void console.warn("Main scene not found.");const o=this.collectItemsWithChildren(t),a=new Map;for(const t of o){const e=this.getSDKItem(t);if(e&&It(e))for(const t of e.property.children)a.set(t,e.id);const i=this.getSDKItem(t);i?.parentId&&o.includes(i.parentId)&&a.set(t,i.parentId)}const c=[],h=[];for(const t of o){const e=this.getSDKItem(t);e&&It(e)?c.push(t):h.push(t)}for(const e of c)if(t.includes(e)){const t=this.getItemTransformUnderParent(e,r);this.moveSingleJSONItemToFrame(e,i,t,n),this.moveSinglePlayerItemToFrame(e,i,t)}for(const e of h){const s=a.get(e),o=s&&t.includes(s),c=t.includes(e);if(o){const t=this.getItemTransformUnderParent(e,r);this.moveSingleJSONItemToFrameWithParent(e,i,t,n,s)}else if(c){const t=this.getItemTransformUnderParent(e,r);this.moveSingleJSONItemToFrame(e,i,t,n),this.moveSinglePlayerItemToFrame(e,i,t)}}this.refreshSceneAndPageData()}moveSingleJSONItemToFrame(t,e,i,s){const r=this.getPlayerItemById(t),n=this.getSDKItem(t);if(!r||!n)return void console.warn(`Item ${t} not found.`);const o=e.subCompositionItemId,a=Ar(s,o);if(!o)return void console.warn(`Frame ${e.id} has no sub composition ID.`);zr(s,t,a,{position:i.position,rotation:i.rotation,size:i.size,scale:It(n)?{x:1,y:1,z:1}:i.scale});const c=s.items.find(e=>e.id===t);c&&delete c.parentId,e.addChild(t)}moveSingleJSONItemToFrameWithParent(t,e,i,s,r){const n=e.subCompositionItemId,o=Ar(s,n);if(!n)return void console.warn(`Frame ${e.id} has no sub composition ID.`);zr(s,t,o,{position:i.position,rotation:i.rotation,size:i.size,scale:i.scale});const a=s.items.find(e=>e.id===t);a&&(r?a.parentId=r:delete a.parentId),e.addChild(t)}collectItemsWithChildren(t){const e=new Set(t),i=new Set,s=t=>{for(const r of t){if(i.has(r))continue;i.add(r);const t=this.getSDKItem(r);if(t&&It(t)){const i=t.property.children;if(i.length>0)for(const t of i)e.add(t),s([t])}}};return s(t),Array.from(e)}moveSinglePlayerItemToFrame(t,e,i){const s=this.getPlayerItemById(t),r=this.getPlayerItemById(e.subCompositionItemId);s&&r?(s.parentId=r.getInstanceId(),s.setParent(r),i.scale&&s.transform.setScale(i.scale.x,i.scale.y,i.scale.z),i.position&&s.setPosition(i.position.x,i.position.y,i.position.z),i.size&&s.transform.setSize(i.size.x,i.size.y)):console.warn(`Item ${t} not found.`)}moveItemsOutOfFrame(t,e){t.forEach(e=>{const i=this.getPageData()?.items.find(t=>zt(t)&&t.children.includes(e));if(!i)return void console.warn(`Item ${e} is not in frame.`);if(!zt(i))return;if(!i.subCompositionItemId)return void console.warn(`Frame ${i.id} has no sub composition ID.`);if(!this.getPlayerItemById(i.id))return void console.warn(`Frame controller ${i.id} not found.`);const s=this.getActiveTargetScene();w(s);const r=this.getCurrentComposition();if(!r)return void console.warn("Main composition not found.");const n=this.getItemTransformUnderParent(e,r.rootItem);if(!n)return void console.warn(`Failed to calculate transform info for item ${e}.`);const o=this.getSDKItem(e),a=t.find(t=>t===o.parentId)?o.parentId:void 0;this.moveSingleJSONItemOutOfFrame(e,i,s,n,a),this.moveSinglePlayerItemOutOfFrame(e,i,n,a)})}moveSingleJSONItemOutOfFrame(t,e,i,s,r){const n=this.getPlayerItemById(t),o=this.getSDKItem(t);if(!n||!o)return void console.warn(`Item ${t} not found.`);zr(i,t,null,s);const a=i.items.find(e=>e.id===t);a&&(r?a.parentId=r:delete a.parentId),e.removeChild(t)}moveSinglePlayerItemOutOfFrame(t,e,i,s){const r=this.getPlayerItemById(t),n=this.getPlayerItemById(s),o=this.getPlayerItemById(e.subCompositionItemId);if(!r||!o)return void console.warn(`Item ${t} not found.`);const a=this.getCurrentComposition();a?(r.parentId=s,r.setParent(n??a.rootItem),i.scale&&!n&&r.transform.setScale(i.scale.x,i.scale.y,i.scale.z),i.position&&!n&&r.setPosition(i.position.x,i.position.y,i.position.z),i.size&&!n&&r.transform.setSize(i.size.x,i.size.y)):console.warn("Main composition not found.")}setItemName(t,e,i){const s=this.getPlayerItemById(t);s?(i??(i=this.getActiveTargetScene()),Dr(i,t,e),s.name=e,this.refreshSDKItem(t)):console.warn(`Item ${t} is not existed.`)}get undoRedo(){return this.sdk.undoRedo}saveUndoRedoOldData(){const t=this.getPageData()?.activeData?.selectedItems;if(t){const e=t.map(t=>this.getItemCreateInfo(t));this.undoRedo.oldData=e}}pushUndoRedoData(){const t=this.getSelectedItems().map(t=>this.getItemCreateInfo(t.id));if(t.length&&this.undoRedo.oldData?.length){const e=this.undoRedo.oldData,i=t,s=q(e,i);if(console.log("undo redo push data \nisEqual:",s,"\noldData:",e,"\nnewData:",i),!s){const t={type:"update",oldData:e,newData:i};this.undoRedo.push(t),this.emitter.emit("undoRedoChange",t)}}}getItemCreateInfo(t,e=!1){w(this.sdk.pageData,"You must call SDK#run() first");const i=this.getPlayerItemById(t),s=this.getViewProperty()?.scene,r=this.getSDKItem(t);if(!r||!i||!s)return void console.warn(`item ${t} is not existed.`);const{transform:n}=i,o=n.getWorldScale(),a=n.getWorldPosition().toArray();if(!e&&i.parent){const t=i.parent.transform;o.divide(t.getWorldScale())}const{property:{width:c,height:h,position:l,rotation:p}}=r,d=e?this.interactionUtils.getPixelPositionByViewPoint(this.interactionUtils.projectPoint(new K(...a))).toArray():l,m=[U(c/o.x,2),U(h/o.y,2)],u=r.getAllExtension();switch(r.type){case"sprite":return{type:"sprite",name:r.name,parentId:e?r.parentId:void 0,id:t,property:{image:vr(s,t),width:m[0],height:m[1],scale:[o.x,o.y],rotation:p[2],position:[...d]},extension:u};case"group":{const s=i.children.map(t=>t.getInstanceId());return{type:"group",id:t,parentId:e?r.parentId:void 0,name:i.name,property:{children:s,scale:[o.x,o.y],rotation:p[2],position:[...d]},extension:u}}case"text":{const{width:i,height:n,lineHeight:o,fontFamily:a,fontSize:c,fontWeight:h,fontStyle:l,textAlign:m,text:g,outlineWidth:f,outlineEnabled:y,letterSpacing:x,color:w,outlineColor:I}=r.property,v=s.components.find(e=>e.item.id===t),P=s.fonts?.find(t=>t.fontFamily===v.options.fontFamily)?.fontURL;return{type:"text",id:t,parentId:e?r.parentId:void 0,name:r.name,property:{width:i,height:n,lineHeight:o,fontFamily:a,position:[...d],rotation:[...p],fontSize:c,fontWeight:h,fontStyle:l,textAlign:m,text:g,color:w,outlineColor:I,outlineWidth:f,outlineEnabled:y,letterSpacing:x,fontUrl:P},extension:u}}case"video":{const i=s.components.find(e=>e.item.id===t);return{type:"video",name:r.name,parentId:e?r.parentId:void 0,id:t,property:{video:vr(s,t),width:m[0],height:m[1],scale:[o.x,o.y],rotation:[...p],position:[...d],muted:i.options.muted,transparent:i.options.transparent,playbackRate:i.options.playbackRate,volume:i.options.volume},extension:u}}case"generator":return{type:"generator",name:r.name,parentId:e?r.parentId:void 0,id:t,property:{generatorType:r.generatorType,width:m[0],height:m[1],scale:[o.x,o.y],rotation:[...p],position:[...d]},extension:u};case"effects":return{type:"effects",name:r.name,parentId:e?r.parentId:void 0,id:t,property:{width:m[0],height:m[1],scale:[o.x,o.y],rotation:[...p],position:[...d],effects:r.effects},extension:u};case"frame":return{type:"frame",name:r.name,parentId:e?r.parentId:void 0,id:t,property:{width:m[0],height:m[1],scale:[o.x,o.y],rotation:[...p],position:[...d],layoutMode:r.layoutMode,children:r.children,layoutInfos:r.layoutInfos},extension:u};default:return void console.warn(`getItemCreateInfo: unsupported item type ${r.type}`)}}getChildrenIds(t){const e=this.getSDKItem(t);return!e||zt(e)?[]:this.getPageData()?.items.filter(e=>e.parentId===t)?.map(t=>t.id)??[]}createScreenShotSceneByIds(t){const e=new W;let i;const s=(t,e,s)=>{const{id:r=C(),name:n="图片",property:{image:o,scale:a=[1,1],rotation:c=0}}=t,h=Array.isArray(c)?[...c]:[0,0,c];h[2]=-h[2];const l=i.images.findIndex(t=>t.url===o);let p={};if(o)if(l<0){const t={id:C(),url:o,renderLevel:m.RenderLevel.BPlus};p={id:C(),source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:jr.LINEAR,minFilter:jr.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},i.images.push(t),i.textures??(i.textures=[]),i.textures.push(p)}else{const t=i.textures?.find(t=>t.source.id===i.images[l].id);p={id:t?.id}}const d=lr(r,new K(s.x,s.y,0),new K(...h),e,new K(a[0]??1,a[1]??1,1),n,p.id);fr(i,d)},r=(t,e,s)=>{const{id:r=C(),name:n="文本",property:{lineHeight:o,width:a,height:c=o,fontFamily:h,fontSize:l,fontWeight:p=m.TextWeight.normal,fontStyle:d=m.FontStyle.normal,textAlign:u=m.TextAlignment.left,text:g,color:f,rotation:y=0,fontUrl:x,outlineColor:w,outlineWidth:I,outlineEnabled:v}}=t,P=Array.isArray(y)?[...y]:[0,0,y];P[2]=-P[2],x&&!i.fonts?.find(t=>t.fontFamily===h)&&(i.fonts??(i.fonts=[]),i.fonts.push({fontFamily:h,fontURL:x}));const S=w?it(w):void 0,b=f?it(f):void 0,D={text:g,fontFamily:h,fontSize:l,textColor:b,fontWeight:p,letterSpace:0,textAlign:u,fontStyle:d,textWidth:a,textHeight:c??o,lineHeight:o,outline:v?{outlineColor:S,outlineWidth:I}:void 0},z=mr(r,n,new K(...s.toArray(),0),new K(...P),new A(e.x,e.y),D);fr(i,z)},n=(t,e,s)=>{const{id:r=C(),name:n="视频",property:{video:o,scale:a=[1,1],rotation:c=0,muted:h=!0,transparent:l=!1,playbackRate:p=1,volume:d=1}}=t,u=Array.isArray(c)?[...c]:[0,0,c];u[2]=-u[2],i.videos??(i.videos=[]);const g=i.videos.findIndex(t=>t.url===o);let f,y={};if(o)if(g<0){const t={id:C(),url:o,renderLevel:m.RenderLevel.BPlus};f=t.id,y={id:C(),source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:jr.LINEAR,minFilter:jr.LINEAR,generateMipmap:!1},i.videos.push(t),i.textures??(i.textures=[]),i.textures.push(y)}else{const t=i.textures?.find(t=>t.source.id===i.videos[g].id);f=t.resource.id,y={id:t?.id}}const x=ur(r,new K(s.x,s.y,0),new K(...u),e,new K(a[0]??1,a[1]??1,1),n,h,l,d,p,y.id,f);fr(i,x)};if(Array.isArray(t)){t.map(t=>this.getItemBoxById(t)).map(t=>e.union(t));const o=e.getSize();i=hr(o.toArray());const a=(new j).compose(new K(0,0,8),new N,new K(1,1,1)).invert(),c=(new j).perspective(60*B,o.x/o.y,.1,40,!0),h=(new j).multiplyMatrices(c,a),l=h.clone().invert(),p=h.projectPoint(new K).z,d=new K(0,0,p).applyMatrix(l),m=new K(2,2,p).applyMatrix(l),u=Math.abs(m.x-d.x)/o.x,g=Math.abs(m.y-d.y)/o.y;t.forEach(t=>{const i=this.getItemCreateInfo(t,!1);if(!i||"group"===i.type)return;const o=this.getItemBoxById(t),a="text"===i.type?[i.property.width,i.property.height??i.property.lineHeight]:[i.property.width,i.property.height],c=new A(...a).multiply(new A(u,g)).abs(),h=o.getCenter().subtract(e.getCenter()).multiply(new A(u,-g));switch(i.type){case"sprite":s(i,c,h);break;case"text":r(i,c,h);break;case"video":n(i,c,h)}})}else{const e=this.getItemBoxById(t),o=this.getItemCreateInfo(t,!1),a=e.clone().getSize();i=hr(a.toArray());const c=(new j).compose(new K(0,0,8),new N,new K(1,1,1)).invert(),h=(new j).perspective(60*B,a.x/a.y,.1,40,!0),l=(new j).multiplyMatrices(h,c),p=l.clone().invert(),d=l.projectPoint(new K).z,m=new K(0,0,d).applyMatrix(p),u=new K(2,2,d).applyMatrix(p),g=(new K).subtractVectors(u,m);if(o)switch(o.type){case"sprite":s(o,new A(g.x,g.y),new A);break;case"text":r(o,new A(g.x,g.y),new A);break;case"video":n(o,new A(g.x,g.y),new A)}}return i}createSceneByCreateInfos(t,e,i,s){const r=new W;e?r.setFromCenterAndSize(new A(...s??[e[0]/2,e[1]/2]),new A(...e)):r.copyFrom(this.getBoundingBoxByCreateInfos(t));const n=r.getSize(),o=hr(n.toArray(),i),a=(new j).compose(new K(0,0,8),new N,new K(1,1,1)).invert(),c=(new j).perspective(60*B,n.x/n.y,.1,40,!0),h=(new j).multiplyMatrices(c,a),l=h.clone().invert(),p=h.projectPoint(new K).z,d=new K(0,0,p).applyMatrix(l),u=new K(2,2,p).applyMatrix(l),g=Math.abs(u.x-d.x)/n.x,f=Math.abs(u.y-d.y)/n.y,y=new Map;return t.forEach(t=>{const e=this.getBoundingBoxByCreateInfo(t),i=e.getSize().multiply(new A(g,f)).abs(),s=e.getCenter().subtract(r.getCenter()).multiply(new A(g,-f));switch(t.type){case"sprite":((t,e,i)=>{const{id:s=C(),name:r="图片",property:{image:n,scale:a=[1,1],rotation:c=0}}=t,h=Array.isArray(c)?[...c]:[0,0,c];h[2]=-h[2];const l=o.images.findIndex(t=>t.url===n);let p={};if(n)if(l<0){const t={id:C(),url:n,renderLevel:m.RenderLevel.BPlus};p={id:C(),source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:jr.LINEAR,minFilter:jr.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},o.images.push(t),o.textures??(o.textures=[]),o.textures.push(p)}else{const t=o.textures?.find(t=>t.source.id===o.images[l].id);p={id:t?.id}}const d=lr(s,new K(i.x,i.y,0),new K(...h),e,new K(a[0],a[1],1),r,p.id);fr(o,d)})(t,i,s);break;case"text":((t,e,i)=>{const{id:s=C(),name:r="文本",property:{lineHeight:n,width:a,height:c=n,fontFamily:h,fontSize:l,fontWeight:p=m.TextWeight.normal,fontStyle:d=m.FontStyle.normal,textAlign:u=m.TextAlignment.left,text:g,color:f,rotation:y=0,fontUrl:x,outlineColor:w,outlineWidth:I,outlineEnabled:v}}=t,P=Array.isArray(y)?[...y]:[0,0,y];P[2]=-P[2],x&&!o.fonts?.find(t=>t.fontFamily===h)&&(o.fonts??(o.fonts=[]),o.fonts.push({fontFamily:h,fontURL:x}));const S={text:g,fontFamily:h,fontSize:l,textColor:f,fontWeight:p,letterSpace:0,textAlign:u,fontStyle:d,textWidth:a,textHeight:c??n,lineHeight:n,outline:v?{outlineWidth:I,outlineColor:w}:void 0},b=mr(s,r,new K(...i.toArray(),0),new K(...P),new A(e.x,e.y),S);fr(o,b)})(t,i,s);break;case"group":((t,e)=>{const{id:i=C(),name:s="编组",property:{scale:r=[1,1],children:n,rotation:a=0,position:c=[0,0]}}=t,h=Array.isArray(a)?[...a]:[0,0,a];h[2]=-h[2];const l=new A(...c).subtract(e).multiply(new A(g,-f)),p=dr(i,s,new K(l.x,l.y,0),new A(...r),new K(...h));fr(o,p),y.set(i,n)})(t,r.getCenter());break;case"video":((t,e,i)=>{const{id:s=C(),name:r="视频",property:{video:n,scale:a=[1,1],rotation:c=0,muted:h=!0,transparent:l=!1,playbackRate:p=1,volume:d=1}={}}=t,u=Array.isArray(c)?[...c]:[0,0,c];u[2]=-u[2],o.videos??(o.videos=[]);const g=o.videos.findIndex(t=>t.url===n);let f={},y="";if(n)if(g<0){const t={id:C(),url:n,renderLevel:m.RenderLevel.BPlus};y=t.id,f={id:C(),source:{id:t.id},flipY:!0,dataType:m.DataType.Texture,magFilter:jr.LINEAR,minFilter:jr.LINEAR,generateMipmap:!1},o.videos.push(t),o.textures??(o.textures=[]),o.textures.push(f)}else{const t=o.textures?.find(t=>t.source.id===o.videos[g].id);y=t.source.id,f={id:t?.id}}const x=ur(s,new K(i.x,i.y,0),new K(...u),e,new K(a[0],a[1],1),r,h,l,d,p,f.id,y);fr(o,x)})(t,i,s)}}),y.forEach((t,e)=>{const i=o.items.find(t=>t.id===e),s=i?.transform;if(s){const{position:i,scale:r,size:n}=s,a={x:r.x*(n?.x??1),y:r.y*(n?.y??1)};t.forEach(t=>{const r=o.items.find(e=>e.id===t);r&&(r.parentId=e,r.transform??(r.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}}),r.transform.position.x-=i.x,r.transform.position.y-=i.y,s.scale&&(r.transform.scale.x/=a.x,r.transform.scale.y/=a.y))})}}),o}updateItemOrder(t,e){w(this.sdk.pageData,"You must call SDK#run() first");const i=this.getCurrentComposition();if(!i)return void console.warn("Composition not found.");const s=i.items.find(e=>e.getInstanceId()===t);if(!s)return void console.warn(`Item with id ${t} not found.`);const r=s.parent,n=r.children.filter(t=>!this.isPluginItem(t)),o=r.children.filter(t=>this.isPluginItem(t)),a=n.findIndex(e=>e.getInstanceId()===t);if(-1===a)return void console.warn(`Item with id ${t} not found in siblings.`);let c=a;switch(e){case 0:c=n.length-1;break;case 1:c=0;break;case 2:c=Math.min(a+1,n.length-1);break;case 3:c=Math.max(a-1,0)}if(c===a)return;const[h]=n.splice(a,1);h&&n.splice(c,0,h),r.children=[...o,...n],this.refreshItemRenderOrder(i),this.addSDKItemsByItems(this.sdk.pageData.items,i.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}isPluginItem(t){return"ModelPluginItem"===t.name}refreshItemRenderOrder(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=(()=>{const e=[],i=t=>{for(const s of t)this.isPluginItem(s)||(e.push(s),s.children.length>0&&i(s.children))},s=[...t.rootItem.children].filter(t=>"ModelPluginItem"!==t.name);return i(s),e})();t.items.length=0,t.items.push(...e);for(let e=0;e<t.items.length;e++){const i=t.items[e];i.renderOrder=e;let s=!1;i.type===m.ItemType.video&&(s=i.components[0].played),i.setActive(!1),i.setActive(!0),i.type===m.ItemType.video&&(s?i.components[0].playVideo():i.components[0].pauseVideo())}const i=this.getViewProperty();if(i){const{scene:e}=i;e.compositions.forEach(i=>{const s=i.components.map(t=>e.components.find(e=>e.id===t.id)).find(t=>t?.dataType===m.DataType.CompositionComponent);s&&(s.items=t.items.filter(t=>!lo.config.pageConfig.filterItemNames.includes(t.name)&&s.items.find(e=>e.id===t.getInstanceId())).map(t=>({id:t.getInstanceId()})))})}this.syncPageDataItemsOrder(t)}syncPageDataItemsOrder(t){w(this.sdk.pageData,"You must call SDK#run() first");const e=t.items.filter(t=>!lo.config.pageConfig.filterItemNames.includes(t.name)).map(t=>t.getInstanceId()),i=new Map;for(const t of this.sdk.pageData.items)i.set(t.id,t);const s=[];for(const t of e){const e=i.get(t);e&&(s.push(e),i.delete(t))}for(const t of i.values())s.push(t);this.sdk.pageData.items=s}getViewProperty(t){return w(this.sdk.pageData,"You must call SDK#run() first"),t??(t=this.sdk.pageData.activeData.view),this.sdk.pageData.viewProperties.find(e=>e.id===t)}viewportFit(t,e){switch(lo.config.mode){case"template":{const{scale:t,translation:e}=this.interactionUtils.viewportParam;this.pageMove(e.clone().negate()),this.pageZoom(1-t,void 0,!0);break}case"editor":{w(this.sdk.pageData,"You must call SDK#run() first"),t??(t={left:0,right:0,top:0,bottom:0});const{left:i=0,top:s=0,right:r=0,bottom:n=0}=t,o=new W;e?o.copyFrom(e):this.sdk.pageData.items.forEach(t=>{const e=this.getViewBoxById(t.id);!o.isEmpty()&&e.getCenter().distanceTo(o.getCenter())>1e5?console.warn(`item ${t.name} is too far from center.`):o.union(e)});const{offsetWidth:a,offsetHeight:c}=this.container.parentElement,{scale:h,translation:l}=this.interactionUtils.viewportParam;if(o.isEmpty())this.pageMove(l.clone().negate()),this.pageZoom(1-h,void 0,!0);else{o.scale(1.1);const t=o.getCenter(),e=o.getSize(),p=a-i-r,d=c-s-n,m=new A(a/2+i/2-r/2,c/2+s/2-n/2),u=e.x/p*d>e.y?1/(e.x/p):1/(e.y/d),g=(new A).subtractVectors(m,t);this.setPageMove((new A).addVectors(l,g)),this.setPageZoom(u*h,new A(p/2+i,d/2+s),!0)}break}}}getItemBoxById(t){const e=t=>{const e=new W,i=this.getSDKItem(t);if(i){const{position:t,width:s,height:r,rotation:n}=i.property;e.setFromCenterAndSize(new A(...t),new A(s,r)).rotate(n[2]*B)}return e};if(Array.isArray(t)){const i=[];return i.push(...t.map(e)),i}return e(t)}async setItemFontFamily(t,e,i){w(this.sdk.pageData,"You must call SDK#run() first");const s=this.getPlayerItemById(t),r=this.getActiveTargetScene();if(!s||!r||s.type!==m.ItemType.text)return void console.warn(`text item ${t} is not existed.`);r.fonts??(r.fonts=[]);!r.fonts.find(t=>"family"in t&&t.family===e||"fontFamily"in t&&t.fontFamily===e)&&r.fonts&&(r.fonts.push({fontFamily:e,fontURL:i}),await Wr.loadFontFamily([{fontURL:i,fontFamily:e}]));const n=r.components.find(e=>e.item.id===t&&[m.DataType.TextComponent,m.DataType.RichTextComponent].includes(e.dataType));n&&(n.options.fontFamily=e),s.getComponent(v).setFontFamily(e),s.getComponent(v).isDirty=!0,this.refreshSDKItem(t)}async changeItemPropertyByCreateInfo(t){const e=async t=>{const e=this.getItemCreateInfo(t.id);e?await this.setItemProperty({itemId:e.id,type:e.type,property:t.property}):console.warn(`item create info ${t.id} is not existed.`)};Array.isArray(t)?t.forEach(async t=>{await e(t)}):await e(t)}getViewBoxByBox(t){const{translation:e,scale:i,width:s,height:r}=this.interactionUtils.viewportParam,n=new A(s/2,r/2);return t.clone().scale(i,n).translate(e)}playVideoItem(t){const e=this.getPlayerItemById(t);if(e?.type!==m.ItemType.video)return;e.getComponent(D).playVideo()}pauseVideoItem(t){const e=this.getPlayerItemById(t);if(e?.type!==m.ItemType.video)return;e.getComponent(D).pauseVideo()}playEffectsItem(t){const e=this.getPlayerItemById(t),i=e?.children?.[0];i?.type===m.ItemType.composition&&i.getComponent(Hr).play()}pauseEffectsItem(t){const e=this.getPlayerItemById(t),i=e?.children?.[0];i?.type===m.ItemType.composition&&i.getComponent(Hr).pause()}setEffectsResource(t,e){const i=this.getSDKItem(t);St(i)?i.effects=e:console.warn(`Item ${t} is not a effects.`)}getBoundingBoxByCreateInfo(t){const e=new W;if("group"===t.type)return e;const i=new A(...t.property.position),s="text"===t.type?[t.property.width,t.property.height??t.property.lineHeight]:[t.property.width??750,t.property.height??1624],r=new A(...s),n=Array.isArray(t.property.rotation)?t.property.rotation[2]:t.property.rotation??0;return e.setFromCenterAndSize(i,r).rotate(n*B),e}getBoundingBoxByCreateInfos(t){const e=new W,i=new Map,s=new Map;return t.forEach((e,r)=>{const n=e.id??C();switch(s.set(r,n),e.type){case"sprite":case"video":case"effects":case"frame":case"generator":case"text":i.set(n,this.getBoundingBoxByCreateInfo(e));break;case"group":{const s=new W;e.property.children.forEach(e=>{const i=t.find(t=>t.id===e);i&&s.union(this.getBoundingBoxByCreateInfo(i))}),i.set(n,s);break}}}),i.forEach((t,i)=>{e.union(t)}),e}getVideoItemPlayTime(t){const e=this.getPlayerItemById(t);if(e?.type!==m.ItemType.video)return 0;return e.getComponent(D).getCurrentTime()}setVideoItemPlayTime(t,e){const i=this.getPlayerItemById(t);if(i?.type!==m.ItemType.video)return;i.getComponent(D).setCurrentTime(e)}getEffectsItemPlayTime(t){const e=this.getPlayerItemById(t),i=e?.children?.[0];if(i?.type!==m.ItemType.composition)return;return i.getComponent(Hr).getTime()}setEffectsItemPlayTime(t,e){const i=this.getPlayerItemById(t),s=i?.children?.[0];if(s?.type!==m.ItemType.composition)return;s.getComponent(Hr).setTime(e)}getPixelPositionByViewPosition(t){return this.interactionUtils.getPixelPositionByViewPoint(t)}getItemParentScale(t){const e=new K(1,1,1),i=this.getPlayerItemById(t);if(!i)return console.warn(`Item ${t} is not existed.`),e;const s=i.parent?.transform;return s?(s.getMatrix().decompose(new K,new N,e),e):(console.warn(`Item ${t} does not have parent.`),e)}getJSONItem(t){const e=this.getActiveTargetScene(),i=e?.items.filter(e=>e.id===t);return i?.[0]}getJSONComponent(t){const e=this.getActiveTargetScene(),i=e?.components.filter(e=>e.item.id===t);return i?.[0]}getTextOriginSize(t){w(this.sdk.pageData,"You must call SDK#run() first");let e=!1;const{scene:i}=this.sdk.pageData,s=i.compositions.length?i:this.getActiveTargetScene();if(!s)return console.warn("Scene is not existed."),{size:[0,0],isPublishScene:e};const r=new A,n=this.getJSONComponent(t);if(n?.dataType===m.DataType.TextComponent&&"options"in n&&n.options.size)r.set(n.options.size[0],n.options.size[1]),e=!0;else{const i=s.compositions.find(t=>t.id===s.compositionId)??s.compositions[0],n=i.previewSize??[750,1624],{fov:o,near:a,far:c,clipMode:h,position:l=[0,0,8]}=i.camera,p=(new j).perspective(o*Math.PI/180,n[0]/n[1],a,c,h===m.CameraClipMode.portrait),d=(new j).compose(new K(...l),new N,new K(1,1,1)).invert(),u=(new j).multiplyMatrices(p,d),g=u.clone().invert(),f=this.getPlayerItemById(t),y=f?.getComponent(v);if(!y)return{size:[0,0],isPublishScene:e};const x=new ar(this);x.refrehCameraParamByCameraInfo({fov:o,near:a,far:c,clipMode:h,position:l,aspect:n[0]/n[1]}),x.viewportParam.width=n[0],x.viewportParam.height=n[1];const{width:w,height:I}=y.textLayout,P=(t,e)=>{const i=t.x/n[0]*2-1,s=1-t.y/n[1]*2;return new K(i,s,e)},C=(new K).applyProjectionMatrix(u).z,S=P(new A(0,0),C).applyProjectionMatrix(g),b=P(new A(w,I),C).applyProjectionMatrix(g);r.copyFrom(b.clone().subtract(S).abs())}return{size:[r.x,r.y],isPublishScene:e}}async asyncAddItemByCreateInfos(t){const e=t.map(t=>Object.assign({},t,t.id?{}:{id:C()})),i=new Map;for(const t of e){const e=t.id,{type:s}=t,r="sprite"===s?t.property.image:"video"===s?t.property.video:void 0;if(("sprite"===s||"video"===s)&&r){const n=C();i.set(e,{id:n,url:r,type:"sprite"===s?"image":"video"}),Object.assign(t,{textureId:n})}}const s=e.filter(t=>!["frame","group"].includes(t.type));await Promise.all(s.map(async t=>{const{type:e}=t;switch(e){case"sprite":await this.addSpriteItem(t,!0);break;case"video":await this.addVideoItem(t,!0);break;case"text":await this.addTextItem(t);break;case"group":this.addGroupItem(t);break;case"effects":await this.addEffectsItem(t);break;case"frame":await this.addFrameItem(t);break;case"generator":this.addGeneratorItem(t)}}));const r=e.filter(t=>"group"===t.type);await Promise.all(r.map(t=>this.addGroupItem(t)));const n=e.filter(t=>"frame"===t.type);await Promise.all(n.map(t=>this.addFrameItem(t)));const o=e.map(t=>t.id),a=this.player.getCompositions()[0];this.addSDKItemsByItems(this.sdk.pageData.items,a.items),this.emitter.emit("pageDataChange",this.sdk.pageData);return(async()=>{if(!i.size)return;const t=[];i.forEach((e,i)=>{t.push({...e,textureId:e.id,id:i})});await Promise.all(t.map(async t=>{const e=this.getPlayerItemById(t.id);if(e)try{if("image"===t.type){const i=this.player.renderer.engine.findObject({id:t.textureId})??await P.fromImage(t.url,this.player.renderer.engine,{id:t.textureId});e.getComponent(I)?.setTexture(i)}else if("video"===t.type){const i=this.player.renderer.engine.findObject({id:t.textureId})??await P.fromVideo(t.url,this.player.renderer.engine,{id:t.textureId}),s=e.getComponent(D);if(s){const{muted:t=!0,playbackRate:r=1,volume:n=1}=this.getJSONComponent(e.getInstanceId()).options??{};s.setTexture(i),s.setLoop(!0),s.setMuted(t),s.setVolume(n),s.pauseVideo(),s.setPlaybackRate(r)}}}catch(e){console.error(`Failed to load texture for item ${t.id}: `,e)}}))})(),o}async addItemByCreateInfos(t){const e=t.map(t=>Object.assign({},t,t.id?{}:{id:C()})),i=e.map(t=>t.id),s=e.filter(t=>!["frame","group"].includes(t.type));for(const t of s)switch(t.type){case"sprite":await this.addSpriteItem(t,!1);break;case"text":await this.addTextItem(t);break;case"group":this.addGroupItem(t);break;case"video":await this.addVideoItem(t,!1);break;case"generator":this.addGeneratorItem(t);break;case"effects":await this.addEffectsItem(t);break;case"frame":await this.addFrameItem(t)}e.filter(t=>"group"===t.type).forEach(t=>{this.addGroupItem(t)});return e.filter(t=>"frame"===t.type).forEach(async t=>{await this.addFrameItem(t)}),i}async addEffectsItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{id:i=C(),name:s="特效",property:{scale:r=[1,1],effects:n,rotation:o=0,position:a},parentId:c,extension:h}=t,l=Array.isArray(o)?o:[0,0,o];l[2]=-l[2];const p=new K(...r,1),d=new K(...l),u=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new A(...a)))??new K;let g;if("string"==typeof n){const t=await fetch(n,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}, statusText: ${t.statusText} `);g=await t.json()}if(!g)return void console.error("Failed to load effects scene.");const f=Kr(g);Br(f);const y=f.compositions.find(t=>t.id===f.compositionId)??f.compositions[0];y||console.warn("Composition not found in effects scene.");const x=y?.previewSize??[750,1624],I=this.getWorldSizeByPixelSize(x),v=f.items.map(t=>t.id),P=new Ct({id:i,name:s,parentId:c,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,isLocked:!1,visible:!0,isCoreEditable:!0,property:{position:[...a],rotation:[...l],width:I[0],height:I[1],scale:[...r],effects:n,children:v},extension:h});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(P);const S=C();Pr(e,f,S);const b=this.player.getCompositions()[0],D=JSON.parse(JSON.stringify(f)),z=await Vr.createEffects(b,D,null,`${s}_预合成`);z.setInstanceId(S),P.property.children?.push(S);const T=dr(i,s,u,new A(p.x,p.y),d);fr(e,T);const _=Vr.createEmpty(b,null,s);_.setInstanceId(T.item.id),_.duration=999,_.endBehavior=m.EndBehavior.restart,_.transform.setPosition(...u.toArray()),_.addComponent(Nr),z.setParent(_),z.parentId=_.getInstanceId(),_.transform.setSize(...I);const B=b.camera.getInverseVPRatio(0).multiply(2);P.subCompositionItemId=z.getInstanceId(),z.transform.setScale(I[0]/B.x,I[0]/B.x,1);const E=new Map;return _.getDescendants().forEach(t=>{var e;(e=P.property).children??(e.children=[]),P.property.children.push(t.getInstanceId()),t.definition?.id&&E.set(t.definition?.id,t.getInstanceId())}),br(e,E),P.property.children=_.getDescendants().map(t=>t.getInstanceId()),t.parentId&&this.setItemParentUnified(i,t.parentId,e),this.refreshSceneAndPageData(),i}async addFrameItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return"";const{id:i=C(),name:s="画板",property:{width:r,height:n,position:o,rotation:a=0,scale:c=[1,1],layoutMode:h="free",children:l,autoLayoutConfig:p,layoutInfos:d},parentId:u,extension:g}=t,f=Array.isArray(a)?[...a]:[0,0,a];f[2]=-f[2];const y=new K(...c,1),x=new K(...f),I=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new A(...o)))??new K,v=new Dt({id:i,name:s,parentId:u,children:[],duration:999,delay:0,endBehavior:m.EndBehavior.restart,visible:!0,isLocked:!1,isCoreEditable:!0,property:{position:[...o],rotation:[...f],width:r,height:n,scale:[...c],layoutMode:h,children:[],autoLayoutConfig:p,layoutInfos:d},extension:g});w(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.items.push(v);const P=this.getWorldSizeByPixelSize([r,n]),S=dr(i,s,I,new A(y.x,y.y),x,new A(...P));fr(e,S);const b=cr(0,[r,n],s),D=C();Pr(e,b,D,S.item.id);const z=this.player.getCompositions()[0],T=Vr.createEmpty(z,null,s);T.setInstanceId(i),T.duration=999,T.endBehavior=m.EndBehavior.restart,T.transform.setPosition(...I.toArray()),T.transform.setRotation(...x.toArray()),T.transform.setScale(...y.toArray()),T.transform.setSize(...P);const _=T.addComponent(Nr),{freeLayoutBackgroundColor:B,autoLayoutBackgroundColor:E}=lo.config.itemConfig.frameConfig,k="free"===h?B:E;_.color=new Zr(...k);const M=JSON.parse(JSON.stringify(b)),U=await Vr.createEffects(z,M,null,`${s}_合成`);U.setInstanceId(D),U.parentId=T.getInstanceId(),U.setParent(T);const G=z.camera.getInverseVPRatio(0).multiply(2);U.transform.setScale(P[0]/G.x,P[0]/G.x,1),v.subCompositionItemId=U.getInstanceId();const F=new Map;return T.getDescendants().forEach(t=>{var e;(e=v.property).children??(e.children=[]),t.getInstanceId()!==v.subCompositionItemId&&v.property.children.push(t.getInstanceId()),t.definition?.id&&F.set(t.definition.id,t.getInstanceId())}),br(e,F),t.parentId&&this.setItemParentUnified(i,t.parentId,e),this.refreshSceneAndPageData(),l.length&&this.moveItemsToFrame(l,i),i}makeItemAlign(t,e){if(e??(e=this.getSelectedItems().map(t=>t.id)),e.length<2)return void console.warn("Items length less than 2, fucntion can not make item align.");const i=e.map(t=>({id:t,box:this.getViewBoxById(t)})),s=i.reduce((t,{box:e})=>(t.union(e),t),new W);i.forEach(({id:e,box:i})=>{const r=new A;switch(t){case"left":r.set(s.min.x-i.min.x,0);break;case"right":r.set(s.max.x-i.max.x,0);break;case"horizontal-center":r.set(s.getCenter().x-i.getCenter().x,0);break;case"top":r.set(0,s.min.y-i.min.y);break;case"bottom":r.set(0,s.max.y-i.max.y);break;case"vertical-center":r.set(0,s.getCenter().y-i.getCenter().y)}const n=this.interactionUtils.getWorldSizeByViewSize(r);this.moveItem(e,n)})}makeItemDistribute(t,e){e??(e=this.getSelectedItems().map(t=>t.id));const i=e.length;if(i<3)return void console.warn("Items length less than 3, fucntion can not make item align.");const s=e.map(t=>({id:t,box:this.getViewBoxById(t)})),r="horizontal-spacing"===t?"x":"y";s.sort((t,e)=>t.box.getCenter()[r]-e.box.getCenter()[r]);const n=s[0],o=(s[i-1].box.getCenter()[r]-n.box.getCenter()[r])/(i-1);s.forEach(({id:t,box:e},i)=>{const s=n.box.getCenter()[r]+o*i,a=new A;a[r]=s-e.getCenter()[r];const c=this.interactionUtils.getWorldSizeByViewSize(a);this.moveItem(t,c)})}setItemLockState(t,e){const i=this.getSDKItem(t);i?i.isLocked=e:console.warn(`Item ${t} is not existed.`)}getItemLockState(t){const e=this.getSDKItem(t);return e?e.isLocked:(console.warn(`Item ${t} is not existed.`),!0)}getItemTransformUnderParent(t,e){const i=this.getPlayerItemById(t);if(!i)return void console.warn(`Item ${t} is not existed.`);const s=j.fromArray(i.transform.getWorldMatrix().elements),r=j.fromArray(e.transform.getWorldMatrix().elements).invert().clone().multiply(s),n=new K,o=new K,a=new N;r.decompose(n,a,o);const c=new A(i.transform.size.x,i.transform.size.y);return{position:{x:n.x,y:n.y,z:n.z},size:c,scale:{x:o.x,y:o.y,z:o.z}}}resizeFrameItem(t,e,i){const s=this.getSDKItem(t);if(!zt(s))return void console.warn(`Item ${t} is not a frame item.`);const[r,n]=e,o=s.property.width,a=this.interactionUtils.getViewSizeByPixelSize(new A(r,n)),c=this.interactionUtils.getWorldSizeByViewSize(a).abs(),h=this.getPlayerItemById(t);if(h&&(h.transform.setSize(c.x,c.y),i&&(0!==i.x||0!==i.y))){const t=h.transform.position;h.setPosition(t.x+i.x,t.y+i.y,t.z)}const l=h?.children?.[0];l&&i&&l.children.forEach(t=>{const e=(new j).copyFrom(t.transform.getParentMatrix()??new j);e.setPosition(new K);const s=i.clone().applyMatrix(e.invert()).negate();t.translate(...s.toArray()),t.transform.updateLocalMatrix()}),this.refreshSDKItem(s.id);const p=this.getJSONItem(t);if(p){if(p.transform??(p.transform={}),p.transform.size={x:c.x,y:c.y},i&&(0!==i.x||0!==i.y)){const t=p.transform.position??{x:0,y:0,z:0},e=i.x,s=i.y;p.transform.position={x:t.x+e,y:t.y+s,z:t.z}}const t=this.getJSONItem(s.subCompositionItemId);if(t){const i=this.getActiveTargetScene(),a=i?.compositions.find(e=>e.id===t?.content.options.refId);if(a){const t=o/r;a.previewSize=[...e];const{position:c=[0,0,8],fov:h,near:l,far:p,clipMode:d}=a.camera,u=i?.components.find(t=>t.item.id===a.id&&t.dataType===m.DataType.CompositionComponent);u.items.forEach(e=>{var i;const o=this.getJSONItem(e.id);if(o&&!o.parentId){o.transform??(o.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}}),(i=o.transform).size??(i.size={x:1,y:1}),o.transform.size.x*=t,o.transform.size.y*=t;const{xRatio:a,yRatio:u}=st(new A(r,n),new K(...c),h,l,p,d===m.CameraClipMode.portrait),g=this.getItemBoxById(e.id),f=this.getItemBoxById(s.id),y=g.getCenter().subtract(f.getCenter()).multiply(new A(a,-u));o.transform.position={x:y.x,y:y.y,z:0}}})}}}this.emitter.emit("pageDataChange",this.sdk.pageData)}applyFrameAutoLayout(t){const e=this.getSDKItem(t);if(!zt(e))return void console.warn(`Item ${t} is not a Frame.`);const i=e.children;if(0===i.length)return void this.resizeFrameItem(t,[40,40]);const s=[],r=e.property.layoutInfos??{};for(const t of i){const e=this.getItemBoxById(t);if(e.isEmpty())continue;const i=e.getSize(),n=r[t];let o,a;n&&(o=n.row,a=n.column),s.push({id:t,box:e,width:i.x,height:i.y,row:o,column:a})}if(0===s.length)return void this.resizeFrameItem(t,[40,40]);const{layoutGap:n,layoutPadding:o}=lo.config.itemConfig.frameConfig,a=o,c=n,h=Vs(s.map(t=>({id:t.id,box:t.box,row:t.row,column:t.column})),{padding:a,gap:c,config:e.property.autoLayoutConfig});this.recordLayoutInfosFromAutoLayoutResult(t,h);const l=h.size[0],p=h.size[1],d=new A(e.property.position[0]-l/2,e.property.position[1]-p/2);for(const t of h.items){const e=t.id,i=this.getSDKItem(e);if(!i)continue;const s=new A(...i.property.position),r=this.interactionUtils.getViewPositionByPixelPoint(s),n=new A(d.x+t.position[0],d.y+t.position[1]),o=this.interactionUtils.getViewPositionByPixelPoint(n),a=this.interactionUtils.getWorldPositionByViewPoint(r),c=this.interactionUtils.getWorldPositionByViewPoint(o);if(a&&c){const t=c.subtract(a);this.moveItem(e,t,!0)}}h.size[0]>0&&h.size[1]>0&&this.resizeFrameItem(t,h.size),this.emitter.emit("itemPropertyChange",{id:t,propertyKeys:["layoutMode","width","height"]})}recordLayoutInfosFromAutoLayoutResult(t,e){var i;const s=this.getSDKItem(t);if(!zt(s))return;(i=s.property).layoutInfos??(i.layoutInfos={});const r=s.property.layoutInfos;for(const t of e.items)r[t.id]={row:t.row,column:t.column,position:t.position}}refreshFrameChildren(t){const e=this.getSDKItem(t);if(!zt(e))return;const i=this.getItemBoxById(t),s=[];e.children.forEach(t=>{const e=this.getItemBoxById(t);i.intersectsBox(e)||s.push(t)}),this.moveItemsOutOfFrame(s,t)}},tn=class extends ms{constructor(t,e){super(),c(this,"result",{type:"invalid"}),c(this,"interactionParam",{type:"none"}),c(this,"graphics",new ys.Graphics),c(this,"isShiftDown",!1),c(this,"_isLockScale",!1),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"type","picture-cut"),c(this,"_undoRedo",new ir),c(this,"_oldNormalizeCutBox"),c(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t,this._eventEmitter=e}get undoRedo(){return this._undoRedo}get interactive(){return lo.config.gestureHandlerConfig.pictureCutGizmoEnabled}set interactive(t){t!==lo.config.gestureHandlerConfig.pictureCutGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture cut gizmo can not open."):lo.config.gestureHandlerConfig.pictureCutGizmoEnabled=t)}get isLockScale(){return this._isLockScale}set isLockScale(t){t!==this.isLockScale&&(this._isLockScale=t)}preparationAction(t){if(!this.interactive)return;const e=new A(t.offsetX,t.offsetY),i=new A(t.clientX,t.clientY);return this.refreshInteractionType(e,i),this.type}preAction(t,e){if(this.interactive&&"none"!==this.interactionParam.type)return"valid"===this.result.type&&(this._oldNormalizeCutBox={normalizeCutBox:this.result.normalizeCutBox.clone()}),this.type}action(t){var e;if(!this.interactive||"none"===this.interactionParam.type||"invalid"===this.result.type)return;const i=new A(t.clientX,t.clientY),{startMouse:s,box:r}=this.interactionParam,n=(new A).subtractVectors(i,s),{itemBox:o}=this.result,{min:a,max:c}=o;switch(this.interactionParam.type){case"move":{const{min:t,max:e}=r,i=a.x-t.x,s=c.x-e.x,h=a.y-t.y,l=c.y-e.y;n.x=Math.min(Math.max(n.x,i),s),n.y=Math.min(Math.max(n.y,h),l);const p=r.clone().translate(n);this.result.normalizeCutBox=V(o,p),this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}case"scale":{const{startCorner:t,anchor:i}=this.interactionParam,s=new A;if(s.x=Math.min(Math.max(t.x+n.x,a.x),c.x),s.y=Math.min(Math.max(t.y+n.y,a.y),c.y),this.isShiftDown||this.isLockScale){const n=this.getCutBox(),{x:o,y:h}=n.getSize(),{x:l,y:p}=r.getSize();if((e=this.interactionParam).lockedAspect??(e.lockedAspect=o/h),Math.abs(s.x-i.x)/l>Math.abs(s.y-i.y)/p){const e=Math.abs(s.x-i.x)/this.interactionParam.lockedAspect;F(t.y,i.y)?s.y=t.y:s.y=(t.y-i.y)/Math.abs(t.y-i.y)*e+i.y,s.y=Math.min(Math.max(s.y,a.y),c.y)}else{const e=Math.abs(s.y-i.y)*this.interactionParam.lockedAspect;F(t.x,i.x)?s.x=t.x:s.x=(t.x-i.x)/Math.abs(t.x-i.x)*e+i.x,s.x=Math.min(Math.max(s.x,a.x),c.x)}}if(F(t.x,i.x)||F(t.y,i.y)){const e=r.corners[0].clone();let i=e.distanceTo(t);r.corners.forEach(s=>{s.distanceTo(t)>i&&(e.copyFrom(s),i=s.distanceTo(t))}),this.result.normalizeCutBox=V(o,(new W).setFromVec2Array([e,s]))}else{const e=(s.x-i.x)/(t.x-i.x),n=(s.y-i.y)/(t.y-i.y),a=new A(e,n);this.result.normalizeCutBox=V(o,r.clone().scale(a,i))}this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}case"direction-scale":{const{index:t}=this.interactionParam,e=r.corners[t].clone();t%2==0?(n.x=Math.min(Math.max(e.x+n.x,a.x),c.x)-e.x,n.y=0):(n.x=0,n.y=Math.min(Math.max(e.y+n.y,a.y),c.y)-e.y);const i=r.corners.map((e,i)=>[t,(t+1)%4].includes(i)?e.clone().add(n):e.clone());this.result.normalizeCutBox=V(o,(new W).setFromVec2Array(i)),this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}}}endAction(t){if(!this.interactive||"none"===this.interactionParam.type)return;if(this._oldNormalizeCutBox&&"valid"===this.result.type){const t={type:"update",oldData:this._oldNormalizeCutBox,newData:{normalizeCutBox:this.result.normalizeCutBox.clone()}};this._undoRedo.push(t),this._eventEmitter.emit("pictureCutGizmoUndoRedoChange",t)}this._oldNormalizeCutBox=void 0;const e=new A(t.offsetX,t.offsetY),i=new A(t.clientX,t.clientY);return this.refreshInteractionType(e,i),this.type}interruption(){this.interactionParam={type:"none"}}actionKey(t){this.isShiftDown=t.shiftKey}endActionKey(t){this.isShiftDown=t.shiftKey,"lockedAspect"in this.interactionParam&&delete this.interactionParam.lockedAspect}cancelPreparation(){this.interactionParam={type:"none"}}refreshResults(){if(this.interactive){const t=this._pageDataUtils.getPageData();if(rt(t,"You must call SDK#run() first"),1!==t.activeData.selectedItems.length)console.warn("Picture Cut Gizmo can edit one picture at a time.");else if("invalid"===this.result.type){const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]);this.result={type:"valid",itemBox:e.clone(),normalizeCutBox:new W(new A,new A(1,1))}}else{const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]),i=e.getCenter().subtract(this.result.itemBox.getCenter()),s=e.getSize().x/this.result.itemBox.getSize().x;this.result.itemBox.translate(i),this.result.itemBox.scale(s)}}else this.result={type:"invalid"}}refreshRenderObjects(){if(this.graphics.clear(),!this.interactive||"invalid"===this.result.type)return[];const{maskColor:t,maskAlpha:e,cutBoxLineWidth:i,cutBoxLineColor:s,cutBoxLineAlpha:r,itemBoxLineWidth:n,itemBoxLineColor:o,itemBoxLineAlpha:a,cutBoxCornerRadius:c,cutBoxCornerFillColor:h,cutBoxCornerLineWidth:l,cutBoxCornerLineColor:p,cutBoxCornerLineAlpha:d,gridLineWidth:m,gridLineColor:u,gridLineAlpha:g,gridCount:f}=lo.config.gestureHandlerConfig.pictureCutGizmoConfig,{normalizeCutBox:y,itemBox:x}=this.result,w=R(x,y),{min:I,max:v}=w,{min:P,max:C}=x,S=new W(P.clone(),new A(C.x,I.y)),b=new W(new A(P.x,I.y),new A(I.x,C.y)),D=new W(new A(v.x,I.y),new A(C.x,v.y)),z=new W(new A(I.x,v.y),C.clone());this.graphics.beginFill(t,e),this.graphics.fillBox(S),this.graphics.fillBox(b),this.graphics.fillBox(D),this.graphics.fillBox(z),this.graphics.endFill();const T=w.getSize().x/(f+1),_=w.getSize().y/(f+1);this.graphics.lineStyle(m,u,g);for(let t=1;t<=f;t++){const e=new O(new A(I.x+T*t,I.y),new A(I.x+T*t,v.y)),i=new O(new A(I.x,I.y+_*t),new A(v.x,I.y+_*t));this.graphics.drawLine(e),this.graphics.drawLine(i)}return this.graphics.lineStyle(n,o,a),this.graphics.drawBox(x),this.graphics.lineStyle(i,s,r),this.graphics.drawBox(w),this.graphics.beginFill(h),this.graphics.lineStyle(l,p,d),w.corners.forEach(t=>{this.graphics.drawCircle(t.x,t.y,c)}),this.graphics.endFill(),[this.graphics]}refreshCursorResult(t,e=0){switch(t){case"scale":case"direction-scale":this.cursorResult={type:"scale",angle:e};break;case"move":case"none":this.cursorResult={type:"normal",angle:0}}}getRenderObjects(){return this.interactive?this.refreshRenderObjects():[]}refreshInteractionType(t,e){if(this.interactionParam={type:"none"},!this.interactive||"invalid"===this.result.type)return;const{normalizeCutBox:i,itemBox:s}=this.result,r=R(s,i);let n=!1,o=0;r.corners.forEach((i,s)=>{n||i.distanceTo(t)<lo.config.gestureHandlerConfig.pictureCutGizmoConfig.scaleInteractionDistance&&(n=!0,this.interactionParam={type:"scale",box:r.clone(),startMouse:e,startCorner:i.clone(),anchor:r.corners[(s+2)%4]},o=Math.PI/2*s)}),r.corners.forEach((i,s)=>{if(n)return;const a=new O(i.clone(),r.corners[(s+1)%4]),c=t.distanceToLine(a);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){n=!0;const t=a.at(c.t);this.interactionParam={type:"direction-scale",index:s,point:t,box:r.clone(),startMouse:e},o=Math.PI/2*s+Math.PI/4}}),r.containsPoint(t)&&!n&&(this.interactionParam={type:"move",point:t.clone(),box:r.clone(),startMouse:e},n=!0),this.refreshCursorResult(this.interactionParam.type,o*E)}getCutInfo(){const[t]=this._pageDataUtils.getSelectedItems();if(this.interactive&&"invalid"!==this.result.type&&t)return{cutBox:this.getCutBox(),itemBox:this._pageDataUtils.getItemBoxById(t.id)}}getCutBox(){const[t]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!t)return;const e=this._pageDataUtils.getItemBoxById(t.id),{normalizeCutBox:i}=this.result;return R(e,i)}setCutBox(t,e){const[i]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!i)return;const s=this.result.normalizeCutBox.clone(),r=new W(t,e),n=this._pageDataUtils.getItemBoxById(i.id),{min:o,max:a}=V(n,r);this.result.normalizeCutBox.set(new A(Math.max(o.x,0),Math.max(o.y,0)),new A(Math.min(a.x,1),Math.min(a.y,1)));const c={type:"update",oldData:{normalizeCutBox:s},newData:{normalizeCutBox:this.result.normalizeCutBox.clone()}};this._undoRedo.push(c),this._eventEmitter.emit("pictureCutGizmoUndoRedoChange",c);const h=this.getCutBox();return this._eventEmitter.emit("cutBoxChange",h),h}undo(){const t=this._undoRedo.undo();return!(!t||"valid"!==this.result.type)&&(this.result.normalizeCutBox=t.oldData.normalizeCutBox.clone(),this._eventEmitter.emit("cutBoxChange",this.getCutBox()),!0)}redo(){const t=this._undoRedo.redo();return!(!t||"valid"!==this.result.type)&&(this.result.normalizeCutBox=t.newData.normalizeCutBox.clone(),this._eventEmitter.emit("cutBoxChange",this.getCutBox()),!0)}get canUndo(){return this._undoRedo.canUndo}get canRedo(){return this._undoRedo.canRedo}clearUndoRedo(){this._undoRedo.clear()}};var en=class extends ms{constructor(t,e,i,s,r){super(),c(this,"type","text"),c(this,"_eventEmitter"),c(this,"textAreaElement"),c(this,"graphics",new ys.Graphics),c(this,"_pageDataUtils"),c(this,"result"),c(this,"interactionParam"),c(this,"_adsorptionGizmo"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"ignoreInteraction",!1),c(this,"scaleParam"),c(this,"rotationSprite",new ys.Sprite),c(this,"cursorPoint",new A),c(this,"_selectorGizmo"),c(this,"frameBoxes",new Map),c(this,"toAddedFrameId"),c(this,"groupsNeedProcess",new Map),c(this,"autoLayoutIndicator",null),c(this,"isAutoLayoutDragging",!1),c(this,"autoLayoutDragOriginalPosition",null),c(this,"pendingLayoutPosition",null),c(this,"autoLayoutGraphics",new ys.Graphics),c(this,"handleInput",async t=>{const e=t.target,i=this._pageDataUtils.getSelectedItems()[0].id;await this._pageDataUtils.setItemProperty({itemId:i,type:"text",propertyName:"text",propertyValue:e.value}),this._eventEmitter.emit("textInput",{itemId:i,text:e.value,fontFamily:e.style.fontFamily})}),c(this,"handleBlur",()=>{this.interactionParam.type="scale",this.textAreaElement.style.display="none",this.textAreaElement.removeEventListener("input",this.handleInput),this.textAreaElement.removeEventListener("blur",this.handleBlur)}),this._pageDataUtils=t,this._adsorptionGizmo=e,this._selectorGizmo=i,this._eventEmitter=s,this.textAreaElement=document.createElement("textarea"),this.textAreaElement.style.display="none",r?.appendChild(this.textAreaElement),function(t,e,i){const s=i.replace(/&/g,`.${e}`),r=document.createElement("style");r.textContent=`\n .${e} {\n ${s}\n }\n `,document.head.appendChild(r),t.classList.add(e)}(this.textAreaElement,"text-gizmo-custom-style","\n word-break: break-all;\n position: absolute;\n border: none;\n margin: 0;\n padding: 0;\n outline: none !important;\n overflow: hidden;\n resize: none;\n display: none;\n background: transparent;\n opacity: .8;\n color: transparent;\n caret-color: #000000;\n field-sizing: content;\n -webkit-text-fill-color: transparent;\n text-fill-color: transparent;\n"),this.result={type:"empty"},this.interactionParam={active:!1,type:"none",anchor:new A,lastPoint:new A,startPoint:new A,lastWorldPosition:new K}}get interactive(){return lo.config.gestureHandlerConfig.textGizmoEnbaled}set interactive(t){lo.config.gestureHandlerConfig.textGizmoEnbaled=t}preparationAction(t){if(!this.interactive)return void console.warn("Text gizmo is not opened, use #SDK.openTextGizmo() open this feature.");if("empty"===this.result.type)return;const e=new A(t.offsetX,t.offsetY),i=new A(t.clientX,t.clientY);this.refreshInteractionParam(e,i);const s=e.subtract(this._pageDataUtils.getViewportLeftTopPosition());if(this.initInteractionPlane(s),this.cursorPoint.set(t.offsetX,t.offsetY),this.refreshCursorResult(),"none"!==this.interactionParam.type){const e="translation"===this.interactionParam.type?this._selectorGizmo.preparationAction(t,"text"):this.type;return this.interactionParam.active="text"===e,this.interactionParam.active?e:void 0}}preAction(t,e){if(1!==t.buttons)return this.type;const{offsetX:i,offsetY:s}=t,r=new A(i,s);if(this.refreshFrameBoxes(),e){if("empty"===this.result.type||this.result.box.containsPoint(r))this._pageDataUtils.saveUndoRedoOldData(),this.interactionParam.type="edit";else if("none"===this.interactionParam.type)return this.result={type:"empty"},void this._pageDataUtils.clearSelectedItems(!0)}else if("empty"===this.result.type||this.result.box.containsPoint(r)){this._pageDataUtils.saveUndoRedoOldData();const t=r.subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(t),this.interactionParam.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new K,this.refreshCursorResult()}else if("edit"===this.interactionParam.type)this.interactionParam.type="none",this.ignoreInteraction=!0;else if("none"===this.interactionParam.type)return void(this.result={type:"empty"});return this.type}action(t){if(!this.interactive)return void console.warn("Text gizmo is not opened, use #SDK.setTextConfig() open this feature.");if(this.cursorPoint.set(t.offsetX,t.offsetY),"edit"===this.interactionParam.type||"empty"===this.result.type||this.ignoreInteraction)return;if(!this.interactionParam.active){this.interactionParam.active=!0,this.interactionParam.type="translation",this.interactionParam.lastPoint=new A(t.clientX,t.clientY),this.interactionParam.startPoint=new A(t.offsetX,t.offsetY);const e=new A(t.offsetX,t.offsetY).subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(e),this.interactionParam.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new K,this.refreshFrameBoxes()}const{clientX:e,clientY:i,offsetX:s,offsetY:r}=t,n=new A(e,i),{type:o,lastPoint:a,startPoint:c,anchor:h}=this.interactionParam,l=(new A).subtractVectors(n,a),p=this._pageDataUtils.getSelectedItems();switch(o){case"rotation":{const t=new K,e=U(M((new A).subtractVectors(c,h),(new A).subtractVectors(c.add(l),h))*E,3);t.z=e,p.forEach(e=>{this._pageDataUtils.rotateItem(e.id,t)}),this.interactionParam.lastPoint.copyFrom(n);break}case"translation":{const t=l.clone();if(this._adsorptionGizmo.interactive){const e=this._pageDataUtils.getPageData();w(e);const i=e.items.map(t=>p.find(e=>e.id===t.id)||0!==p.filter(e=>t.parentId&&t.parentId===e.id).length||!this._pageDataUtils.getItemEditEnable(t.id)||p.find(e=>e.parentId===t.id)?new W:this._pageDataUtils.getViewBoxById(t.id)).filter(t=>!t.isEmpty()),s=new A(this._adsorptionGizmo.absorptionResult.x??0,this._adsorptionGizmo.absorptionResult.y??0);this._adsorptionGizmo.boxTranslationAdsorption(t,this.result.box,i);const r=new A(this._adsorptionGizmo.absorptionResult.x??0,this._adsorptionGizmo.absorptionResult.y??0);t.add(s).subtract(r)}const e=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(c.add(t).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition()));if(e){const t=e.clone().subtract(this.interactionParam.lastWorldPosition);p.forEach(e=>{t.x=U(t.x,5),t.y=U(t.y,5),t.z=U(t.z,5),this._pageDataUtils.moveItem(e.id,t),this.refreshItemFrameRelationShip(e,new A(s,r))}),this.interactionParam.lastWorldPosition.copyFrom(e),this.interactionParam.lastPoint.copyFrom(n),p.forEach(t=>{this.updateAutoLayoutIndicator(t)})}break}case"scale":if(l.length()){const t=this.cursorPoint.add(l).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition());if(!c||!this.scaleParam||!l.length())return;const e=this.scaleParam.farthestCorner;(c.x-e.x)*(this.cursorPoint.x-e.x)>0&&(c.y-e.y)*(this.cursorPoint.y-e.y)>0||(t.x=e.x+(c.x-e.x)/Math.abs(c.x-e.x)*4,t.y=e.y+(c.y-e.y)/Math.abs(c.y-e.y)*4);const i=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t);if(i){const t=this._pageDataUtils.getSelectedItems()[0]??void 0,e=this._pageDataUtils.getItemTransformById(t?.id??""),s=(new j).extractRotation(e.matrix).invert(),{corner:r,center:n,shift:o,lastScalar:a}=this.scaleParam,c=(new K).subtractVectors(r,n).applyMatrix(s),h=c.clone().multiply(a),l=i.clone().subtract(o).subtract(n).applyMatrix(s),d=new K(1,1,1),m=G([F(c.x,0)?1:Math.abs(l.x/c.x),F(c.y,0)?1:Math.abs(l.y/c.y)]),u=l.toArray()[m],g=h.toArray()[m];if(F(a.x,a.y)&&F(a.z,a.x)){const t=F(g,0)?1:Math.abs(u/g);d.set(t,t,t)}else if(0===m){d.x=F(g,0)?1:Math.abs(u/g);const t=c.y*u/c.x;d.y=F(h.y,0)?1:t/h.y;const e=c.z*u/c.x;d.z=F(h.z,0)?1:e/h.z}else if(1===m){d.y=F(g,0)?1:Math.abs(u/g);const t=c.x*u/c.y;d.x=F(h.x,0)?1:t/h.x;const e=c.z*u/c.y;d.z=F(h.z,0)?1:e/h.z}else{d.z=F(g,0)?1:Math.abs(u/g);const t=c.x*u/c.z;d.x=F(h.x,0)?1:t/h.x;const e=c.y*u/c.z;d.y=F(h.y,0)?1:e/h.y}const f=d.clone().subtract(new K(1,1,0)).divide(2).add(new K(1,1,.5)),y=n.clone().add((new K).subtractVectors(r,n).multiply(new K(a.x,a.y,1)));this.scaleParam.lastScalar.multiply(f);const x=n.clone().add((new K).subtractVectors(r,n).multiply(new K(this.scaleParam.lastScalar.x,this.scaleParam.lastScalar.y,1))),w=(new K).subtractVectors(x,y);w.x=U(w.x,5),w.y=U(w.y,5),w.z=U(w.z,5),this.scaleParam.center.add(w),this.scaleParam.corner.add(w),p.forEach(t=>{this._pageDataUtils.scaleTextItem(t.id,f.x),this._pageDataUtils.moveItem(t.id,w)}),this.interactionParam.lastWorldPosition.copyFrom(i)}}break;case"width-scale":{const t=c.clone(),e=c.clone().add(l);if(l.length()){const i=(new A).subtractVectors(t,h),s=(new A).subtractVectors(e,h),r=Math.max(s.dot(i)/i.length(),1),n=i.length(),o=(r/n-1)/2+1,a=h.clone().add(i.clone().normalize().scale(n*o)),l=(new A).subtractVectors(a,t);c.add(l);const d=this._pageDataUtils.interactionUtils.getWorldSizeByViewSize(l);d.x=U(d.x,5),d.y=U(d.y,5),d.z=U(d.z,5),p.forEach(t=>{this._pageDataUtils.moveItem(t.id,d)}),p.forEach(t=>{this._pageDataUtils.scaleTextItemWidth(t.id,o)})}break}}this.interactionParam.lastPoint.copyFrom(n),this.refreshCursorResult()}endAction(t){this.ignoreInteraction=!1;const e=new A(t.offsetX,t.offsetY),i=new A(t.clientX,t.clientY),s=this._pageDataUtils.getSelectedItems(),r=1===s.length?s[0]:void 0;return this.executeAutoLayoutReorder(r),this._pageDataUtils.pushUndoRedoData(),this.toAddedFrameId=void 0,this._adsorptionGizmo.clearAbsorptionResult(),this.refreshInteractionParam(e,i),this.refreshCursorResult(),this.type}interruption(){return this.interactionParam.type="none",this._adsorptionGizmo.clearAbsorptionResult(),this.isAutoLayoutDragging&&(this.autoLayoutIndicator=null,this.isAutoLayoutDragging=!1,this.autoLayoutDragOriginalPosition=null,this.pendingLayoutPosition=null),this.type}actionKey(t){}endActionKey(t){}cancelPreparation(){}refreshResults(){if(!this.interactive)return;const t=this._pageDataUtils.getPageData()?.activeData?.selectedItems,e=this._pageDataUtils.getSDKItem(t?.[0]??"");if(1!==t?.length||"text"!==e?.type)return void(this.result={type:"empty"});const i=this._pageDataUtils.getViewBoxById(t[0]);if(i.isEmpty())this.result={type:"empty"};else{const t=[new O(i.corners[0],i.corners[1]).at(.5),new O(i.corners[2],i.corners[3]).at(.5)],s=new O(i.getCenter(),new O(i.corners[0],i.corners[3]).at(.5)),r=s.at((s.length()+22)/s.length());this.result={type:"valid",box:i.clone(),widthScaleCorners:t,rotationCorner:r,rotation:-e.property.rotation[2]*B}}}refreshInteractionParam(t,e){if("empty"===this.result.type)return this.interactionParam.active=!1,this.interactionParam.type="none",this.interactionParam.lastPoint=new A,this.interactionParam.startPoint=new A,void(this.interactionParam.lastWorldPosition=new K);if("edit"===this.interactionParam.type)return;const{rotateInteractMode:i,scaleInteractionDistance:s,rotationCornerInteractionDistance:r,rotationTopCenterInteractionDistance:n}=lo.config.gestureHandlerConfig.textGizmoConfig,o=this.result.box.getCenter();for(const e of this.result.widthScaleCorners){if((new W).setFromCenterAndSize(e,new A(6,18)).containsPoint(t))return this.interactionParam.active=!0,this.interactionParam.type="width-scale",this.interactionParam.anchor=o,this.interactionParam.lastPoint=t.clone(),this.interactionParam.startPoint=e.clone(),void(this.interactionParam.lastWorldPosition=new K)}const a=this.result.box.corners.findIndex(e=>e.distanceTo(t)<s);if(a>=0){const t=this.result.box.corners[a],i=this.result.box.corners[(a+2)%4];return this.interactionParam.active=!0,this.interactionParam.type="scale",this.interactionParam.anchor=i.clone(),this.interactionParam.lastPoint=e.clone(),void(this.interactionParam.startPoint=t.clone())}if(this.result.box.containsPoint(t,!1))return this.interactionParam.active=!0,this.interactionParam.type="translation",this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=t.clone(),void(this.interactionParam.lastWorldPosition=new K);switch(i){case"top-center":if(t.distanceTo(this.result.rotationCorner)<n)return this.interactionParam.active=!0,this.interactionParam.type="rotation",this.interactionParam.anchor=o,this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=this.result.rotationCorner.clone(),void(this.interactionParam.lastWorldPosition=new K);break;case"corner":{const i=this.result.box.corners.find(e=>e.distanceTo(t)<r);if(i)return this.interactionParam.active=!0,this.interactionParam.type="rotation",this.interactionParam.anchor=o,this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=i.clone(),void(this.interactionParam.lastWorldPosition=new K);break}}this.interactionParam.active=!1,this.interactionParam.type="none",this.interactionParam.lastPoint=new A,this.interactionParam.startPoint=new A,this.interactionParam.lastWorldPosition=new K}refreshCursorResult(){const t=(k((new A).subtractVectors(this.interactionParam.startPoint,this.interactionParam.anchor))+Math.PI/4)*E;switch(this.interactionParam.type){case"edit":case"none":case"translation":this.cursorResult={type:"normal",angle:0};break;case"scale":case"width-scale":this.cursorResult={type:"scale",angle:t};break;case"rotation":this.cursorResult={type:"rotation",angle:t}}}getRenderObjects(){const t=[];if(!this.interactive||"empty"===this.result.type)return[];this.graphics.clear();const{box:e,widthScaleCorners:i,rotationCorner:s,rotation:r}=this.result,{boxLineWidth:n,boxLineColor:o,wireframeAlpha:a,wireframeColor:c,wireframeWidth:h,rotateInteractMode:l,rotationCornerWidth:p,scaleCornerStrokeWidth:d,scaleCornerStrokeColor:m,rotationCornerRadius:u,rotationCornerFillColor:g,rotationCornerStrokeWidth:f,rotationCornerStrokeColor:y}=lo.config.gestureHandlerConfig.textGizmoConfig;if(this.graphics.lineStyle(n,o),this.graphics.drawBox(e),"edit"!==this.interactionParam.type){switch(e.getSize().y>25&&i.forEach(t=>{const e=(new W).setFromCenterAndSize(t,new A(8,15));this.graphics.beginFill(16777215),this.graphics.fillBox(e),this.graphics.endFill(),this.graphics.lineStyle(d,m),this.graphics.drawBox(e)}),l){case"top-center":this.rotationSprite.width=p,this.rotationSprite.height=p,this.rotationSprite.anchor.set(.5,.5),this.rotationSprite.x=s.x,this.rotationSprite.y=s.y,this.rotationSprite.rotation=r,t.push(this.rotationSprite);break;case"corner":e.corners.forEach(t=>{this.graphics.lineStyle(f,y),this.graphics.beginFill(g),this.graphics.drawCircle(t.x,t.y,u),this.graphics.endFill()})}if(this.toAddedFrameId){const t=this.frameBoxes.get(this.toAddedFrameId);t&&(this.graphics.lineStyle(h,c,a),this.graphics.drawBox(t))}}else if("edit"===this.interactionParam.type&&"none"===this.textAreaElement.style.display){const t=this._pageDataUtils.getSelectedItems(),i=this._pageDataUtils.interactionUtils.viewportParam,s=t[0],r=s?.property,n=e.clone().rotate(r.rotation[2]*B),o=n.min.clone(),a=n.getSize();this.textAreaElement.value=r.text??"",this.textAreaElement.style.textAlign=this.getTextAlign(r.textAlign),this.textAreaElement.style.fontFamily=r.fontFamily,this.textAreaElement.style.fontSize=r.fontSize*i.scale+"px",this.textAreaElement.style.fontWeight=r.fontWeight,this.textAreaElement.style.display="block",this.textAreaElement.style.wordBreak="break-all",this.textAreaElement.style.whiteSpace="pre-wrap",this.textAreaElement.style.overflowWrap="break-word",this.textAreaElement.style.left=`${o.x}px`,this.textAreaElement.style.top=`${o.y}px`,this.textAreaElement.style.width=`${a.x}px`,this.textAreaElement.style.height=`${a.y}px`,this.textAreaElement.style.lineHeight=r.lineHeight*i.scale+"px",this.textAreaElement.style.letterSpacing=`${r.letterSpacing}px`,this.textAreaElement.style.transformOrigin="center center",this.textAreaElement.style.paintOrder="stroke fill",void 0!==r.rotation[2]&&(this.textAreaElement.style.transform=`\n rotateZ(${-r.rotation[2]}deg)\n `),this.textAreaElement.addEventListener("input",this.handleInput),this.textAreaElement.addEventListener("blur",this.handleBlur),window.setTimeout(()=>{this.textAreaElement.focus()},50)}else if("edit"===this.interactionParam.type&&"block"===this.textAreaElement.style.display){const t=this._pageDataUtils.getSelectedItems()[0],i=this._pageDataUtils.interactionUtils.viewportParam,s=t.property,r=e.clone().rotate(s.rotation[2]*B),n=r.min.clone(),o=r.getSize();switch(this.textAreaElement.style.left=`${n.x}px`,this.textAreaElement.style.top=`${n.y}px`,this.textAreaElement.style.width=`${o.x}px`,this.textAreaElement.style.height=`${o.y}px`,this.textAreaElement.style.fontFamily=s.fontFamily,this.textAreaElement.style.textAlign=this.getTextAlign(s.textAlign),lo.config.mode){case"editor":this.textAreaElement.style.fontSize=s.fontSize*i.scale+"px",this.textAreaElement.style.lineHeight=s.lineHeight*i.scale+"px",this.textAreaElement.style.transform=`rotateZ(${-s.rotation[2]}deg)`;break;case"template":{const e=this._pageDataUtils.getPlayerItemById(t.id),r=new K(1,1,1);e?.transform.getMatrix().decompose(new K,new N,r);const a=e.transform.scale,{size:[c,h],isPublishScene:l}=this._pageDataUtils.getTextOriginSize(t.id),p=l?2:0,d=this._pageDataUtils.interactionUtils.getPixelSizeByWorldSize(new K(0,h,0)).y,m=s.fontSize/(s.lineHeight/d)-p*i.scale,u=new A(a.x/c,a.y/h);this.textAreaElement.style.left=`${n.x+(u.x-1)*o.x/u.x/2}px`,this.textAreaElement.style.top=`${n.y+(u.y-1)*o.y/u.y/2}px`,this.textAreaElement.style.width=o.x/u.x+"px",this.textAreaElement.style.height=o.y/u.y+"px",this.textAreaElement.style.transform=`scale(${u.x}, ${u.y}) rotateZ(${-s.rotation[2]}deg)`,this.textAreaElement.style.fontSize=`${m}px`,this.textAreaElement.style.lineHeight=`${d}px`;break}}}return this.renderAutoLayoutIndicator(),this.isAutoLayoutDragging&&this.autoLayoutIndicator&&t.push(this.autoLayoutGraphics),t.push(this.graphics),t}renderAutoLayoutIndicator(){if(this.autoLayoutGraphics.clear(),!this.isAutoLayoutDragging||!this.autoLayoutIndicator)return;const t=lo.config.gestureHandlerConfig.autoLayoutIndicatorConfig,e=t?.lineWidth??2,i=t?.lineColor??3900150;this.autoLayoutGraphics.lineStyle(e,i,1),this.autoLayoutGraphics.drawLine(this.autoLayoutIndicator.line);const s=this.autoLayoutIndicator.line.start,r=this.autoLayoutIndicator.line.end;this.autoLayoutGraphics.beginFill(i),this.autoLayoutGraphics.drawCircle(s.x,s.y,3),this.autoLayoutGraphics.drawCircle(r.x,r.y,3),this.autoLayoutGraphics.endFill()}initInteractionPlane(t){switch(this.interactionParam.type){case"scale":{if("empty"===this.result.type)return;const e=1==this._pageDataUtils.getSelectedItems().length?this._pageDataUtils.getSelectedItems()[0]:void 0;let i,s,r;if(e){const t=this._pageDataUtils.getItemTransformById(e.id);i=(new K).copyFrom(this._pageDataUtils.getPlayerItemById(e.id).transform.anchor).applyMatrix(t.matrix),s=(new K).setFromMatrixPosition(t.matrix),r=(new $).setFromQuaternion((new N).setFromRotationMatrix(t.matrix))}this._pageDataUtils.interactionUtils.initInteractionPlane(s,r);const n=this.interactionParam.startPoint,{box:o}=this.result,a=o.corners[0].clone();let c=a.distanceTo(n);o.corners.forEach(t=>{t.distanceTo(n)>c&&(a.copyFrom(t),c=t.distanceTo(n))}),this.scaleParam={shift:new K,center:new K,corner:new K,lastScalar:new K(1,1,1),farthestCorner:a},this.scaleParam.center=i??s;const h=this._pageDataUtils.getViewportLeftTopPosition();if(n){const t=n.clone().subtract(h);this.scaleParam.corner=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new K}this.scaleParam.shift=(this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new K).subtract(this.scaleParam.corner);break}case"width-scale":case"translation":case"rotation":this._pageDataUtils.interactionUtils.initInteractionPlane()}}updateAutoLayoutIndicator(t){const e=t.parentId;if(!e)return this.autoLayoutIndicator=null,void(this.isAutoLayoutDragging=!1);const i=this._pageDataUtils.getSDKItem(e);if(!zt(i)||"auto"!==i.layoutMode)return this.autoLayoutIndicator=null,void(this.isAutoLayoutDragging=!1);if(this.isAutoLayoutDragging=!0,null===this.autoLayoutDragOriginalPosition){const e=i.property.layoutInfos?.[t.id];this.autoLayoutDragOriginalPosition={row:e?.row??0,column:e?.column??0}}const s=i.children.map(t=>this._pageDataUtils.getSDKItem(t)).filter(t=>void 0!==t),r=Ns(this.cursorPoint,s,t=>this._pageDataUtils.getViewBoxById(t),t=>{const e=this._pageDataUtils.getSDKItem(t.parentId??"");return zt(e)?e.property.layoutInfos?.[t.id]:void 0},t.id);if(r){const e=i.property.layoutInfos?.[t.id],n=e?.row??0;this.pendingLayoutPosition={...r};const o=Ks(this.cursorPoint,s,t.id,i,n,t=>this._pageDataUtils.getViewBoxById(t));if(o.siblingId){const t=Hs(o,t=>this._pageDataUtils.getViewBoxById(t));this.autoLayoutIndicator={frameId:i.id,insertIndex:o.index,insertDirection:o.direction,targetSiblingId:o.siblingId,line:t,targetRow:r.row,targetColumn:r.column}}else this.autoLayoutIndicator={frameId:i.id,insertIndex:s.length-1,insertDirection:"after",targetSiblingId:void 0,line:new O,targetRow:r.row,targetColumn:r.column}}else this.autoLayoutIndicator=null}executeAutoLayoutReorder(t){if(!this.isAutoLayoutDragging)return;const e=this.autoLayoutIndicator?.frameId;if(!e)return this.autoLayoutIndicator=null,this.isAutoLayoutDragging=!1,this.autoLayoutDragOriginalPosition=null,void(this.pendingLayoutPosition=null);const i=this._pageDataUtils.getSDKItem(e);if(!zt(i))return this.autoLayoutIndicator=null,this.isAutoLayoutDragging=!1,this.autoLayoutDragOriginalPosition=null,void(this.pendingLayoutPosition=null);t&&this.autoLayoutDragOriginalPosition&&this.pendingLayoutPosition&&($s(i,t.id,this.autoLayoutDragOriginalPosition.row,this.autoLayoutDragOriginalPosition.column,this.pendingLayoutPosition.row,this.pendingLayoutPosition.column),js(t,i,this.pendingLayoutPosition)),this._pageDataUtils.applyFrameAutoLayout(e),this.autoLayoutIndicator=null,this.isAutoLayoutDragging=!1,this.autoLayoutDragOriginalPosition=null,this.pendingLayoutPosition=null}getTextAlign(t){switch(t){case m.TextAlignment.middle:return"center";case m.TextAlignment.right:return"right";default:return"left"}}refreshFrameBoxes(){this.frameBoxes.clear();const t=this._pageDataUtils.getPageData()?.items.filter(t=>zt(t));t?.forEach(t=>{const e=this._pageDataUtils.getViewBoxById(t.id);this.frameBoxes.set(t.id,e)})}refreshItemFrameRelationShip(t,e){if(zt(t)||St(t))return;const i=(this._pageDataUtils.getPageData()?.items.filter(t=>zt(t))??[]).find(e=>e.children.includes(t.id)),s=!!i;let r;if(this.frameBoxes.forEach((t,i)=>{t.containsPoint(e)&&!r&&(r=i)}),this.toAddedFrameId=r,!r&&s){const e=[t.id];if(It(t)){const{children:i}=t.property;e.push(...i)}this._pageDataUtils.moveItemsOutOfFrame(e),t.parentId!==i.id&&t.parentId&&this._pageDataUtils.deleteItemParent(t.id,t.parentId)}if(r&&(!i||i.id!==r)){const e=[t.id];if(It(t)){const{children:i}=t.property;if(e.push(...i),0===i.length)this._pageDataUtils.deleteItem(t.id);else{const e=this.frameBoxes.get(r);if(!e)return;const s=[],n=[];if(i.forEach(t=>{const i=this._pageDataUtils.getViewBoxById(t);i&&e.intersectsBox(i)?s.push(t):n.push(t)}),0===s.length)return void console.log(`Group ${t.id} has no children in frame ${r}, skipping frame entry.`);n.length>0?(console.log(`Group ${t.id}: ${n.length} children out of frame, will process at drag end.`),this.groupsNeedProcess.set(t.id,{groupId:t.id,frameId:r,childrenOutOfFrame:n})):this.groupsNeedProcess.delete(t.id)}}else if(t.parentId){const e=this._pageDataUtils.getSDKItem(t.parentId);e&&It(e)&&this._pageDataUtils.deleteItemParent(t.id,t.parentId)}this._pageDataUtils.moveItemsToFrame(e,r)}return r}};import{Texture as sn}from"@pixi/core";var rn=class extends ms{constructor(t,e,i){super(),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"_app"),c(this,"maskRenderTexture",null),c(this,"maskSprite",null),c(this,"_config",{}),c(this,"boxGraphics",new ys.Graphics),c(this,"type","mask"),c(this,"mode","paint"),c(this,"_undoRedo",new ir),c(this,"_oldLines"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"result",{status:"init",lines:[]}),this._pageDataUtils=t,this._app=e,this._eventEmitter=i}get undoRedo(){return this._undoRedo}get interactive(){return lo.config.gestureHandlerConfig.maskGizmoEnabled}set interactive(t){t!==lo.config.gestureHandlerConfig.maskGizmoEnabled&&(t||(this.result.status="init"),lo.config.gestureHandlerConfig.maskGizmoEnabled=t)}get config(){return{...lo.config.gestureHandlerConfig.maskGizmoConfig,...this._config}}set config(t){this._config={...this._config,...t}}setMode(t){this.mode=t}initialize(){}preparationAction(t){if(this.interactive)return this.result.point=new A(t.offsetX,t.offsetY),this.type}preAction(t){if(this.interactive)return this._oldLines={lines:JSON.parse(JSON.stringify(this.result.lines))},this.result.point=new A(t.offsetX,t.offsetY),this.result.lines.push({type:this.mode,brushSize:this.config.brushSize,points:[]}),this.type}action(t){if(!this.interactive||"init"===this.result.status)return;const e=this.result.box,i=new A((t.offsetX-e.min.x)/(e.max.x-e.min.x),(t.offsetY-e.min.y)/(e.max.y-e.min.y));this.result.lines[this.result.lines.length-1]?.points.push(i)}endAction(){if(!this.interactive)return;const t=this.result.lines[this.result.lines.length-1];if(this._oldLines&&t&&t.points.length>0){const t={type:"update",oldData:this._oldLines,newData:{lines:JSON.parse(JSON.stringify(this.result.lines))}};this._undoRedo.push(t),this._eventEmitter.emit("maskGizmoUndoRedoChange",t)}else 0===t?.points.length&&this.result.lines.pop();return this._oldLines=void 0,this.type}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){if(this.interactive){const t=this._pageDataUtils.getPageData();if(rt(t,"You must call SDK#run() first"),1!==t.activeData.selectedItems.length)console.warn("Mask Gizmo can edit one picture at a time.");else{if("init"===this.result.status){const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]);this.result={status:"done",box:e.clone(),lines:[]}}else{const e=this.result.box,i=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]),s=i.getCenter().subtract(e.getCenter()),r=i.getSize().x/e.getSize().x;e.translate(s),e.scale(r)}this.refreshCursorResult()}}else this.result={status:"init",lines:[]}}getRenderObjects(){return this.interactive?this.refreshRenderObjects():[]}clearRenderObjects(){this.boxGraphics.clear(),this.maskRenderTexture&&(this.maskRenderTexture.destroy(!0),this.maskRenderTexture=null),this.maskSprite&&(this.maskSprite.destroy(),this.maskSprite=null)}refreshRenderObjects(){if(this.clearRenderObjects(),!this.interactive||"init"===this.result.status)return[];const{maskImage:t,brushColor:e,brushAlpha:i,boxLineWidth:s,boxLineColor:r,boxLineAlpha:n}=this.config,o=this.result.box,{min:a,max:c}=o,h=Math.ceil(c.x-a.x),l=Math.ceil(c.y-a.y);this.maskRenderTexture=ys.RenderTexture.create({width:h,height:l});const p=this._pageDataUtils.interactionUtils.viewportParam;if(this.maskSprite=new ys.Sprite(this.maskRenderTexture),this.maskSprite.width=h,this.maskSprite.height=l,this.maskSprite.position.set(a.x,a.y),this.maskSprite.alpha=i,t){const i=new ys.Container,s=ys.Texture.from(t),r=new ys.Sprite(s);r.width=h,r.height=l;const n=new ys.Graphics;n.beginFill(e),n.drawRect(0,0,h,l),n.endFill(),n.mask=r,i.addChild(n),i.addChild(r),this._app.renderer.render(i,{renderTexture:this.maskRenderTexture,clear:!1}),i.destroy(),s.destroy(),r.destroy()}const d=new W(new A(a.x,a.y),new A(c.x,a.y)),m=new W(new A(a.x,a.y),new A(a.x,c.y)),u=new W(new A(c.x,a.y),new A(c.x,a.y)),g=new W(new A(a.x,c.y),new A(c.x,c.y));this.boxGraphics.fillBox(d),this.boxGraphics.fillBox(m),this.boxGraphics.fillBox(u),this.boxGraphics.fillBox(g),this.boxGraphics.lineStyle(s,r,n),this.boxGraphics.drawBox(o),this.boxGraphics.endFill();for(const t of this.result.lines){if(!t)continue;const i=new ys.Graphics;i.blendMode="paint"===t.type?ys.BLEND_MODES.NORMAL:ys.BLEND_MODES.DST_OUT,i.lineStyle({width:t.brushSize*p.scale,color:e,cap:ys.LINE_CAP.ROUND,join:ys.LINE_JOIN.ROUND,native:!1,alignment:.5});for(let e=0;e<t.points.length;e++){const s=t.points[e];if(!s)continue;const r=s.x*(o.max.x-o.min.x),n=s.y*(o.max.y-o.min.y);0===e?i.moveTo(r,n):i.lineTo(r,n)}i.endFill(),this._app.renderer.render(i,{renderTexture:this.maskRenderTexture,clear:!1}),i.destroy()}return[this.boxGraphics,this.maskSprite]}refreshCursorResult(){const{point:t,box:e}=this.result;if(this.cursorResult={type:"normal",angle:0},t&&e&&t.x>=e.min.x&&t.x<=e.max.x&&t.y>=e.min.y&&t.y<=e.max.y){const t=this._pageDataUtils.interactionUtils.viewportParam;this.cursorResult={type:"circle",angle:0,radius:this.config.brushSize*t.scale/2}}}close(){this._config.maskImage=void 0,this.result.lines=[],this._undoRedo.clear()}clearMask(){if(this.result.lines.length>0){const t={type:"update",oldData:{lines:JSON.parse(JSON.stringify(this.result.lines))},newData:{lines:[]}};this._undoRedo.push(t),this._eventEmitter.emit("maskGizmoUndoRedoChange",t)}this.result.lines=[]}undo(){const t=this._undoRedo.undo();return!!t&&(this.result.lines=JSON.parse(JSON.stringify(t.oldData.lines)),!0)}redo(){const t=this._undoRedo.redo();return!!t&&(this.result.lines=JSON.parse(JSON.stringify(t.newData.lines)),!0)}get canUndo(){return this._undoRedo.canUndo}get canRedo(){return this._undoRedo.canRedo}clearUndoRedo(){this._undoRedo.clear()}loadMaskImage(t){return new Promise((e,i)=>{const s=new Image;s.crossOrigin="anonymous",s.onload=()=>{e(s)},s.onerror=t=>{i(new Error("Failed to load mask image."))},s.src=t})}getMask(){const t=this.result.box;if(!t)return null;const e=Math.ceil(t.max.x-t.min.x),i=Math.ceil(t.max.y-t.min.y),s=document.createElement("canvas");s.width=e,s.height=i;const r=s.getContext("2d");if(!r)return null;const{maskImage:n,maskColor:o}=this.config;if(0===this.result.lines.length&&!n)return null;const a="#"+o.toString(16).padStart(6,"0");if(r.fillStyle="#FFFFFF",r.fillRect(0,0,e,i),n)try{r.drawImage(n,0,0,e,i);const t=r.getImageData(0,0,e,i),s=t.data,a=o>>16&255,c=o>>8&255,h=255&o;for(let t=0;t<s.length;t+=4){const e=s[t],i=s[t+1],r=s[t+2];(e+i+r)/3>128?(s[t]=a,s[t+1]=c,s[t+2]=h):(s[t]=255,s[t+1]=255,s[t+2]=255)}r.putImageData(t,0,0)}catch(t){console.warn("Failed to load mask image:",t)}const c=this._pageDataUtils.interactionUtils.viewportParam.scale;for(const t of this.result.lines)if(t&&0!==t.points.length){r.lineWidth=t.brushSize*c,r.lineCap="round",r.lineJoin="round",r.globalCompositeOperation="source-over","paint"===t.type?r.strokeStyle=a:r.strokeStyle="#FFFFFF",r.beginPath();for(let s=0;s<t.points.length;s++){const n=t.points[s];if(!n)continue;const o=n.x*e,a=n.y*i;0===s?r.moveTo(o,a):r.lineTo(o,a)}r.stroke()}return s.toDataURL("image/png")}},nn=class extends ms{constructor(t){super(),c(this,"type","loading"),c(this,"_pageDataUtils"),c(this,"_idMap",new Map),c(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t}add(t,e){const i=this._pageDataUtils.getItemBoxById(t),s=V(i,e?.loadingBox??i);if("string"==typeof t){const{tip:i={text:""}}=e??{},r={text:i.text??"",fontFamily:i.fontFamily??"",color:i.color??0,fontSize:i.fontSize??16},n=new ys.Text(r.text,{fontSize:r.fontSize,fontFamily:r.fontFamily,fill:r.color,align:"center"}),o=new ys.Graphics;o.addChild(n),this._idMap.set(t,{status:"init",loadingBox:s,graphics:o,ticker:new ys.Ticker,tip:r}),this._pageDataUtils.addLoadingItems([t]),e?.clearSelected&&this._pageDataUtils.removeSelectedItems([t])}}delete(t){const e=this._idMap.get(t);if(e){const{graphics:i,ticker:s}=e;i.destroy(),s.destroy(),this._idMap.delete(t),this._pageDataUtils.removeLoadingItems([t])}}update(t,e){const i=this._idMap.get(t);if(!i)return void console.warn(`Loading item ${t} not found.`);const s=i.graphics.children[0];s&&(i.tip={...i.tip,...e.tip},s.text=i.tip.text,i.tip.fontFamily&&(s.style.fontFamily=i.tip.fontFamily),void 0!==i.tip.color&&(s.style.fill=i.tip.color))}initialize(){}preparationAction(){}preAction(){}action(){}endAction(){}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){}getRenderObjects(){return 0===this._idMap.size?[]:this.refreshRenderObjects()}refreshRenderObjects(){if(0===this._idMap.size)return[];const t=[];for(const e of this._idMap.keys()){const i=this._idMap.get(e);if(!i)continue;if(t.push(i.graphics),"done"===i.status){i.ticker.update();continue}i.status="done";let s=.006,r=.5;i.ticker.add(()=>{const t=this._pageDataUtils.getViewBoxById(e),{min:n,max:o}=R(t,i.loadingBox),a=o.x-n.x,c=o.y-n.y;r>.3?s=-.003:r<.05&&(s=.006),r+=s,i.graphics.clear(),i.graphics.beginFill(16777215,1),i.graphics.drawRect(n.x,n.y,a,c),i.graphics.endFill(),i.graphics.beginFill(14664959,r),i.graphics.drawRect(n.x,n.y,a,c),i.graphics.endFill();const h=Date.now()%2e3/2e3,l=2*a,p=n.x+h*(a+l)-l,d=100,m=l/d;for(let t=0;t<d;t++){const e=p+t*m;let s=1-Math.abs(t-50)/50;if(s*=s*s,s*=.3,e+m>n.x&&e<o.x){const t=Math.max(e,n.x),r=Math.min(e+m,o.x)-t;i.graphics.beginFill(14664959,s),i.graphics.drawRect(t,n.y,r,c),i.graphics.endFill()}}if(i.tip?.text){const t=i.tip.fontSize,e=i.graphics.children[0];e&&(e.style.fontWeight="bold",e.style.fontSize=Math.min(a/i.tip.text.length*.5,t),e.x=n.x+(a-e.width)/2,e.y=n.y+(c-e.height)/2)}}),i.ticker.start()}return t}},on=class extends ms{constructor(t,e){super(),c(this,"result",{type:"invalid"}),c(this,"interactionParam",{type:"none"}),c(this,"graphics",new ys.Graphics),c(this,"isShiftDown",!1),c(this,"_isLockScale",!1),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"type","picture-expand"),c(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return lo.config.gestureHandlerConfig.pictureExpandGizmoEnabled}set interactive(t){t!==lo.config.gestureHandlerConfig.pictureExpandGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture expand gizmo can not open."):lo.config.gestureHandlerConfig.pictureExpandGizmoEnabled=t)}get isLockScale(){return this._isLockScale}set isLockScale(t){t!==this.isLockScale&&(this._isLockScale=t)}preparationAction(t){if(!this.interactive)return;const e=new A(t.offsetX,t.offsetY),i=new A(t.clientX,t.clientY);return this.refreshInteractionType(e,i),this.type}preAction(t,e){if(this.interactive&&"none"!==this.interactionParam.type)return this.type}action(t){var e;if(!this.interactive||"none"===this.interactionParam.type||"invalid"===this.result.type)return;const i=new A(t.clientX,t.clientY),{startMouse:s,box:r}=this.interactionParam,n=(new A).subtractVectors(i,s),{itemBox:o}=this.result,{min:a,max:c}=o;switch(this.interactionParam.type){case"move":{const{min:t,max:e}=r,i=c.x-e.x,s=a.x-t.x,h=c.y-e.y,l=a.y-t.y;n.x=Math.min(Math.max(n.x,i),s),n.y=Math.min(Math.max(n.y,h),l);const p=r.clone().translate(n);this.result.normalizeExpandBox=V(o,p),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}case"scale":{const{index:t}=this.interactionParam,{min:i,max:s}=r,h=r.corners[t],l=r.corners[(t+2)%4],p=new A(h.x+n.x,h.y+n.y);if(h.x>=s.x?p.x=Math.max(p.x,c.x):h.x<=i.x?p.x=Math.min(p.x,a.x):(console.warn("resultCorner has wrong, we have move it to the nearest corner"),p.x=Math.abs(p.x-i.x)>Math.abs(p.x-s.x)?s.x:i.x),h.y>=s.y?p.y=Math.max(p.y,c.y):h.y<=i.y?p.y=Math.min(p.y,a.y):(console.warn("resultCorner has wrong, we have move it to the nearest corner"),p.y=Math.abs(p.y-i.y)>Math.abs(p.y-s.y)?s.y:i.y),this.isShiftDown||this.isLockScale){const t=this.getExpandBox(),{x:n,y:o}=t.getSize(),{x:d,y:m}=r.getSize();if((e=this.interactionParam).lockedAspect??(e.lockedAspect=n/o),Math.abs(p.x-l.x)/d>Math.abs(p.y-l.y)/m){const t=Math.abs(p.x-l.x)/this.interactionParam.lockedAspect;p.y=(h.y-l.y)/Math.abs(h.y-l.y)*t+l.y,h.y>=s.y?p.y=Math.max(p.y,c.y):h.y<=i.y?p.y=Math.min(p.y,a.y):(console.warn("resultCorner has wrong, we have move it to the nearest corner"),p.y=Math.abs(p.y-i.y)>Math.abs(p.y-s.y)?s.y:i.y)}else{const t=Math.abs(p.y-l.y)*this.interactionParam.lockedAspect;p.x=(h.x-l.x)/Math.abs(h.x-l.x)*t+l.x,h.x>=s.x?p.x=Math.max(p.x,c.x):h.x<=i.x?p.x=Math.min(p.x,a.x):(console.warn("resultCorner has wrong, we have move it to the nearest corner"),p.x=Math.abs(p.x-i.x)>Math.abs(p.x-s.x)?s.x:i.x)}}this.result.normalizeExpandBox=V(o,(new W).setFromVec2ArrayWithOutCorners([p,l])),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}case"direction-scale":{const{index:t,point:e}=this.interactionParam,i=r.corners[t].clone();e.x>=c.x?(n.x=Math.max(r.corners[t].x+n.x,c.x)-i.x,n.y=0):e.x<=a.x&&(n.x=Math.min(r.corners[t].x+n.x,a.x)-i.x,n.y=0),e.y>=c.y?(n.y=Math.max(r.corners[t].y+n.y,c.y)-i.y,n.x=0):e.y<=a.y&&(n.y=Math.min(r.corners[t].y+n.y,a.y)-i.y,n.x=0);const s=r.corners.map((e,i)=>[t,(t+1)%4].includes(i)?e.clone().add(n):e.clone());this.result.normalizeExpandBox=V(o,(new W).setFromVec2Array(s)),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}}}endAction(t){if(!this.interactive||"none"===this.interactionParam.type)return;const e=new A(t.offsetX,t.offsetY),i=new A(t.clientX,t.clientY);return this.refreshInteractionType(e,i),this.type}interruption(){this.interactionParam={type:"none"}}actionKey(t){this.isShiftDown=t.shiftKey}endActionKey(t){this.isShiftDown=t.shiftKey,"lockedAspect"in this.interactionParam&&delete this.interactionParam.lockedAspect}cancelPreparation(){this.interactionParam={type:"none"}}refreshResults(){if(this.interactive){const t=this._pageDataUtils.getPageData();if(rt(t,"You must call SDK#run() first"),1!==t.activeData.selectedItems.length)console.warn("Picture Expand Gizmo can edit one picture at a time.");else if("invalid"===this.result.type){const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]);this.result={type:"valid",itemBox:e.clone(),normalizeExpandBox:new W(new A,new A(1,1))}}else{const e=this._pageDataUtils.getViewBoxById(t.activeData.selectedItems[0]),i=e.getCenter().subtract(this.result.itemBox.getCenter()),s=e.getSize().x/this.result.itemBox.getSize().x;this.result.itemBox.translate(i),this.result.itemBox.scale(s)}}else this.result={type:"invalid"}}refreshRenderObjects(){if(this.graphics.clear(),!this.interactive||"invalid"===this.result.type)return[];const{maskColor:t,maskAlpha:e,expandBoxLineWidth:i,expandBoxLineColor:s,expandBoxLineAlpha:r,expandBoxCornerRadius:n,expandBoxCornerFillColor:o,expandBoxCornerLineWidth:a,expandBoxCornerLineColor:c,expandBoxCornerLineAlpha:h,gridLineWidth:l,gridLineColor:p,gridLineAlpha:d,gridCount:m}=lo.config.gestureHandlerConfig.pictureExpandGizmoConfig,{normalizeExpandBox:u,itemBox:g}=this.result,f=R(g,u);this.graphics.beginFill(t,e),this.graphics.fillBox(f),this.graphics.endFill();const{min:y,max:x}=f,w=f.getSize().x/(m+1),I=f.getSize().y/(m+1);this.graphics.lineStyle(l,p,d);for(let t=1;t<=m;t++){const e=new O(new A(y.x+w*t,y.y),new A(y.x+w*t,x.y)),i=new O(new A(y.x,y.y+I*t),new A(x.x,y.y+I*t));this.graphics.drawLine(e),this.graphics.drawLine(i)}return this.graphics.lineStyle(i,s,r),this.graphics.drawBox(f),this.graphics.beginFill(o),this.graphics.lineStyle(a,c,h),f.corners.forEach(t=>{this.graphics.drawCircle(t.x,t.y,n)}),this.graphics.endFill(),[this.graphics]}refreshCursorResult(t,e=0){switch(t){case"scale":case"direction-scale":this.cursorResult={type:"scale",angle:e};break;case"move":case"none":this.cursorResult={type:"normal",angle:0}}}getRenderObjects(){return this.interactive?this.refreshRenderObjects():[]}refreshInteractionType(t,e){if(this.interactionParam.type="none",!this.interactive||"invalid"===this.result.type)return;const{normalizeExpandBox:i,itemBox:s}=this.result,r=R(s,i);let n=!1,o=0;r.corners.forEach((i,s)=>{n||i.distanceTo(t)<lo.config.gestureHandlerConfig.pictureExpandGizmoConfig.scaleInteractionDistance&&(n=!0,this.interactionParam={type:"scale",index:s,box:r.clone(),startMouse:e},o=Math.PI/2*s)}),r.corners.forEach((i,s)=>{if(n)return;const a=new O(i.clone(),r.corners[(s+1)%4]),c=t.distanceToLine(a);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){n=!0;const t=a.at(c.t);this.interactionParam={type:"direction-scale",index:s,point:t,box:r.clone(),startMouse:e},o=Math.PI/2*s+Math.PI/4}}),r.containsPoint(t)&&!n&&(this.interactionParam={type:"move",point:t.clone(),box:r.clone(),startMouse:e},n=!0),this.refreshCursorResult(this.interactionParam.type,o*E)}getExpandInfo(){const[t]=this._pageDataUtils.getSelectedItems();if(this.interactive&&"invalid"!==this.result.type&&t)return{expandBox:this.getExpandBox(),itemBox:this._pageDataUtils.getItemBoxById(t.id)}}getExpandBox(){const[t]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!t)return;const e=this._pageDataUtils.getItemBoxById(t.id),{normalizeExpandBox:i}=this.result;return R(e,i)}setExpandBox(t,e){const[i]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!i)return;const s=new W(t,e),r=this._pageDataUtils.getItemBoxById(i.id),{min:n,max:o}=V(r,s);this.result.normalizeExpandBox.set(new A(Math.min(n.x,0),Math.min(n.y,0)),new A(Math.max(o.x,1),Math.max(o.y,1)));const a=this.getExpandBox();return this._eventEmitter.emit("expandBoxChange",a),a}},an={fontSize:14,fill:16777215,align:"center",lineHeight:16},cn=class extends ms{constructor(t,e){super(),c(this,"type","sprite-text-edit"),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"graphics",new ys.Graphics),c(this,"editGraphics",new ys.Graphics),c(this,"preSelectedText",new ys.Text("",an)),c(this,"result",[]),c(this,"interactionParam",{preSelected:-1,selected:-1}),c(this,"clearPreSelected",!1),this._pageDataUtils=t,this._eventEmitter=e,this.preSelectedText.resolution=3}get interactive(){return lo.config.gestureHandlerConfig.spriteTextEditGizmoEnabled}set interactive(t){t!==lo.config.gestureHandlerConfig.spriteTextEditGizmoEnabled&&(lo.config.gestureHandlerConfig.spriteTextEditGizmoEnabled=t)}preparationAction(t){const e=new A(t.offsetX,t.offsetY);return this.interactionParam.preSelected=-1,this.result.forEach((t,i)=>{if(this.interactionParam.preSelected>=0)return;R(this._pageDataUtils.getViewBoxById(t.id),t.box).containsPoint(e)&&(this.interactionParam.preSelected=i)}),this.type}preAction(){const t=this.result[this.interactionParam.preSelected];if(t){const e=t?{id:t.id,index:t.index,text:t.text}:void 0;this._eventEmitter.emit("spriteTextClick",e)}return this.result.forEach(e=>{e.isEditing=e.id===t?.id&&e.index===t.index}),this.interactionParam.preSelected=-1,this.type}action(t){}endAction(t){return this.type}interruption(){return this.type}actionKey(t){}endActionKey(t){}cancelPreparation(){}initResult(t){t.forEach(t=>{const e=this._pageDataUtils.getItemBoxById(t.id);t.info.forEach((i,s)=>{const{text:r,box:n,hasChanged:o}=i,a=n.map(t=>new A(...t).add(e.min)),c=(new W).setFromVec2Array(a),h=V(e,c);this.result.push({id:t.id,index:s,hasChanged:o,text:r,box:h,isEditing:!1})})})}clearResult(){this.result=[]}setSelected(t,e){const i=this.result.findIndex(i=>i.id===t&&i.index===e);if(i<0)console.warn(`item ${t} does not have index ${e} text info.`);else{this.interactionParam.selected=i;const t=this.result[this.interactionParam.selected],e=t?{id:t.id,index:t.index,text:t.text}:void 0;this._eventEmitter.emit("spriteTextClick",e)}}setText(t,e,i){const s=this.result.find(i=>i.id===t&&i.index===e);s?s.text=i:console.warn(`item ${t} does not have index ${e} text info.`)}setChangedState(t,e,i){const s=this.result.find(i=>i.id===t&&i.index===e);s?s.hasChanged=i:console.warn(`item ${t} does not have index ${e} text info.`)}setEditState(t,e,i){const s=this.result.find(i=>i.id===t&&i.index===e);s?s.isEditing=i:console.warn(`item ${t} does not have index ${e} text info.`)}refreshResults(){if(this.graphics.clear(),this.editGraphics.clear(),this.preSelectedText.text="",!this.interactive||0===this.result.length)return;const{scale:t}=this._pageDataUtils.interactionUtils.viewportParam,{editBoxColor:e,editBoxAlpha:i,editBoxPreSelectedColor:s,editBoxPreSelectedAlpha:r,hasChangedEditBoxColor:n,hasChangedEditBoxAlpha:o,hasChangedEditBoxPreSelectedColor:a,hasChangedEditBoxPreSelectedAlpha:c,editBoxLineColor:h,editBoxLineAlpha:l,editBoxLinePreSelectedAlpha:p,editBoxLinePreSelectedColor:d,hasChangedEditBoxLineColor:m,hasChangedEditBoxLineAlpha:u,hasChangedEditBoxLinePreSelectedColor:g,hasChangedEditBoxLinePreSelectedAlpha:f}=lo.config.gestureHandlerConfig.spriteTextEditGizmoConfig;this.result.forEach((h,l)=>{const p=l===this.interactionParam.preSelected&&!this.clearPreSelected,{box:d,id:m,hasChanged:u,isEditing:g}=h,f=R(this._pageDataUtils.getViewBoxById(m),d);if(u){const t=u?p?a:n:p?s:e,h=u?p?c:o:p?r:i;this.editGraphics.beginFill(t,h),this.editGraphics.fillBox(f),this.editGraphics.endFill()}else{const t=u?p?a:n:p?s:e,h=u?p?c:o:p?r:i;this.graphics.beginFill(t,h),this.graphics.fillBox(f),this.graphics.endFill()}const y=f.getCenter(),x=f.getSize();if(g){const e=Rs(h.text,an,x.x/t,Math.floor(x.y/t/16));this.preSelectedText.style.wordWrapWidth=x.x/t,this.preSelectedText.text=e,this.preSelectedText.scale.x=t,this.preSelectedText.scale.y=t,this.preSelectedText.anchor.set(.5,.5),this.preSelectedText.x=y.x,this.preSelectedText.y=y.y}}),this.result.forEach((t,e)=>{const i=e===this.interactionParam.preSelected&&!this.clearPreSelected,{box:s,id:r,hasChanged:n}=t,o=R(this._pageDataUtils.getViewBoxById(r),s);if(n){const t=n?i?g:m:i?d:h,e=n?i?f:u:i?p:l;o.corners.forEach((i,s)=>{const r=i.clone(),n=o.corners[(s+1)%4].clone(),a=(new A).subtractVectors(n,r).angle()*E;if([180,270].includes(a)){const t=n.clone();n.copyFrom(r),r.copyFrom(t)}this.editGraphics.lineStyle(1,t,e),this.editGraphics.moveTo(...r.toArray()),this.editGraphics.lineTo(...n.toArray())})}else{const t=n?i?g:m:i?d:h,e=n?i?f:u:i?p:l;o.corners.forEach((i,s)=>{const r=i.clone(),n=o.corners[(s+1)%4].clone(),a=(new A).subtractVectors(n,r).angle()*E;if([180,270].includes(a)){const t=n.clone();n.copyFrom(r),r.copyFrom(t)}this.graphics.lineStyle(1,t,e),this.graphics.moveTo(...r.toArray()),this.graphics.lineTo(...n.toArray())})}})}getRenderObjects(){const t=!!this.result.find(t=>t.isEditing);this.clearPreSelected=!1;const e=[];return this.interactive?(e.push(this.graphics,this.editGraphics),t&&e.push(this.preSelectedText),e):e}};import{Sprite as hn}from"@pixi/sprite";var ln=class extends ms{constructor(t,e){super(),c(this,"type","icon"),c(this,"results",[]),c(this,"interactionParam",{type:"none"}),c(this,"textureMap"),c(this,"videoPlaySpriteTexture"),c(this,"videoGeneratorTexture"),c(this,"imageGeneratorTexture"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"renderSprites",[]),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return lo.config.gestureHandlerConfig.iconGizmoEnabled}set interactive(t){t!==lo.config.gestureHandlerConfig.iconGizmoEnabled&&(lo.config.gestureHandlerConfig.iconGizmoEnabled=t)}async init(){const{imageGeneratorUrl:t,videoGeneratorUrl:e,videoPlayUrl:i}=lo.config.gestureHandlerConfig.iconGizmoConfig;this.imageGeneratorTexture=await ys.Texture.fromURL(t),this.videoGeneratorTexture=await ys.Texture.fromURL(e),this.videoPlaySpriteTexture=await ys.Texture.fromURL(i),this.textureMap={"video-play":this.videoPlaySpriteTexture,"image-generator":this.imageGeneratorTexture,"video-generator":this.videoGeneratorTexture}}preparationAction(t){if(!this.interactive)return;const e=new A(t.offsetX,t.offsetY),i=this.results.find(t=>"video-play"===t.type);return i?.box.containsPoint(e)?this.interactionParam.type="preSelected":this.interactionParam.type="none",this.refreshCursorResult(),"none"===this.interactionParam.type?void 0:this.type}preAction(t,e){const i=this.results.find(t=>"video-play"===t.type);if(i){const t=this._pageDataUtils.getVideoItemPlayTime(i.id);this._eventEmitter.emit("videoPlay",{id:i.id,time:t}),this.interactionParam.type="none",this.refreshCursorResult()}return this.type}action(t){}endAction(t){}interruption(){}actionKey(t){}endActionKey(t){}cancelPreparation(){}refreshCursorResult(){switch(this.interactionParam.type){case"none":this.cursorResult={type:"normal",angle:0};break;case"preSelected":this.cursorResult={type:"pointer",angle:0}}}refreshResults(){const t=this._pageDataUtils.getPageData();if(!this.interactive||!t)return;this.results=[];const e=t.items.filter(t=>Pt(t)),i=this._pageDataUtils.getSelectedItems(),s=this._pageDataUtils.interactionUtils.viewportParam.scale,{videoPlayWidth:r,videoPlayHeight:n,videoPlayShift:o,generatorHeight:a,generatorWidth:c}=lo.config.gestureHandlerConfig.iconGizmoConfig;if(1===i.length&&"video"===i[0]?.type){const t=i[0].id,e=this._pageDataUtils.getViewBoxById(t),s=e.getSize();if(s.x>50&&s.y>50){const{max:i}=e,s=new A(i.x-o[0],i.y-o[1]),a=new A(r,n);this.results.push({id:t,type:"video-play",box:(new W).setFromCenterAndSize(s,a)})}}e.forEach(t=>{const e=this._pageDataUtils.getViewBoxById(t.id).getCenter(),i=new A(c,a).multiply(s);this.results.push({id:t.id,type:"image"===t.generatorType?"image-generator":"video-generator",box:(new W).setFromCenterAndSize(e,i)})})}getRenderObjects(){return this.interactive&&this.results.length?(this.renderSprites.forEach(t=>{t.destroy()}),this.renderSprites=[],this.textureMap||this.init(),this.results.forEach(t=>{const e=this.textureMap[t.type],i=hn.from(e),s=t.box.getCenter(),r=t.box.getSize();i.anchor.set(.5,.5),i.x=s.x,i.y=s.y,i.width=r.x,i.height=r.y,this.renderSprites.push(i)}),this.renderSprites):[]}};import{Graphics as pn}from"@pixi/graphics";import{generateGUID as dn}from"@galacean/effects";var mn=class extends ms{constructor(t,e){super(),c(this,"type","item-create"),c(this,"_createType","none"),c(this,"cursorResult",{type:"normal",angle:0}),c(this,"_pageDataUtils"),c(this,"_eventEmitter"),c(this,"graphics",new pn),c(this,"dragStartPoint",null),c(this,"dragCurrentPoint",null),c(this,"isDragging",!1),c(this,"frameBox",null),c(this,"frameChildren",[]),c(this,"interactiveChildrenBoxes",new Map),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return lo.config.gestureHandlerConfig.itemCreateGizmoEnabled}set interactive(t){t!==lo.config.gestureHandlerConfig.itemCreateGizmoEnabled&&(t&&this._pageDataUtils.clearSelectedItems(),lo.config.gestureHandlerConfig.itemCreateGizmoEnabled=t,this._createType=t?this._createType:"none")}get createType(){return this._createType}set createType(t){t!==this._createType&&(this._createType=t,this.refreshCursorResult())}preparationAction(t){return this.interactive?this.type:void 0}preAction(t,e){if(this.interactive)return"frame"===this._createType&&(this.dragStartPoint=new A(t.offsetX,t.offsetY),this.dragCurrentPoint=this.dragStartPoint.clone(),this.isDragging=!0,this.frameBox=null,this.frameChildren=[],this.refreshInteractiveChildrenBoxes()),this.type}action(t){if(this.frameChildren=[],"frame"===this._createType&&this.isDragging&&this.dragStartPoint){this.dragCurrentPoint=new A(t.offsetX,t.offsetY);const e=Math.min(this.dragStartPoint.x,this.dragCurrentPoint.x),i=Math.min(this.dragStartPoint.y,this.dragCurrentPoint.y),s=Math.max(this.dragStartPoint.x,this.dragCurrentPoint.x),r=Math.max(this.dragStartPoint.y,this.dragCurrentPoint.y);this.frameBox=new W(new A(e,i),new A(s,r)),this.interactiveChildrenBoxes.forEach((t,e)=>{this.frameBox?.containsBox(t)&&this.frameChildren.push(e)})}}endAction(t){const e=dn();if("frame"===this._createType){let i=!1;if(this.isDragging&&this.dragStartPoint){i=this.dragStartPoint.distanceTo(new A(t.offsetX,t.offsetY))>=10}const s=i&&this.frameBox&&!this.frameBox.isEmpty()?this._pageDataUtils.interactionUtils.getPixelPositionByViewPoint(this.frameBox.getCenter()):this._pageDataUtils.interactionUtils.getPixelPositionByViewPoint(new A(t.offsetX,t.offsetY));if(i&&this.frameBox&&!this.frameBox.isEmpty()){const t=this.frameBox.getSize(),i=this._pageDataUtils.interactionUtils.getPixelSizeByViewSize(t),r={type:"frame",id:e,name:"画板",property:{width:i.x,height:i.y,position:[s.x,s.y],layoutMode:"free",children:this.frameChildren}};this._pageDataUtils.addFrameItem(r)}else{const t={type:"frame",id:e,name:"画板",property:{width:1048,height:1048,position:[s.x,s.y],layoutMode:"free",children:this.frameChildren}};this._pageDataUtils.addFrameItem(t)}return this.resetDragState(),void this._eventEmitter.emit("itemCreate",{type:this._createType,id:e,position:s.toArray()})}if("text"===this._createType){const i=this._pageDataUtils.interactionUtils.getPixelPositionByViewPoint(new A(t.offsetX,t.offsetY)).toArray();return void this._eventEmitter.emit("itemCreate",{type:this.createType,id:e,position:i})}if("none"!==this._createType){const i=this._pageDataUtils.interactionUtils.getPixelPositionByViewPoint(new A(t.offsetX,t.offsetY)).toArray();this._eventEmitter.emit("itemCreate",{type:this.createType,id:e,position:i})}}interruption(){return this.resetDragState(),this.type}resetDragState(){this.isDragging=!1,this.dragStartPoint=null,this.dragCurrentPoint=null,this.frameBox=null,this.graphics.clear()}actionKey(t){}endActionKey(t){}cancelPreparation(){}refreshResults(){if(this.graphics.clear(),"frame"===this._createType&&this.isDragging&&this.frameBox&&!this.frameBox.isEmpty()){const{min:t,max:e}=this.frameBox,i=e.x-t.x,s=e.y-t.y,{frameFillAlpha:r,frameFillColor:n,frameBorderAlpha:o,frameBorderColor:a,frameBorderWidth:c,frameChildBoxAlpha:h,frameChildBoxColor:l}=lo.config.gestureHandlerConfig.itemCreateGizmoConfig;this.graphics.lineStyle(c,a,o),this.graphics.drawRect(t.x,t.y,i,s),this.graphics.beginFill(n,r),this.graphics.drawRect(t.x,t.y,i,s),this.graphics.endFill(),this.frameChildren.forEach(t=>{const e=this.interactiveChildrenBoxes.get(t);if(!e)return;const{min:i,max:s}=e,r=s.x-i.x,n=s.y-i.y;this.graphics.beginFill(l,h),this.graphics.drawRect(i.x,i.y,r,n),this.graphics.endFill()})}}getRenderObjects(){return"frame"===this._createType&&this.isDragging?(this.refreshResults(),[this.graphics]):[]}refreshCursorResult(){switch(this._createType){case"text":this.cursorResult={type:"text-create",angle:0};break;case"frame":this.cursorResult={type:"frame-create",angle:0};break;case"none":case"sprite-generator":case"video-generator":this.cursorResult={type:"normal",angle:0}}}refreshInteractiveChildrenBoxes(){const t=this._pageDataUtils.getPageData()?.items;if(!t?.length)return[];const e=t.flatMap(t=>St(t)?[t.id]:zt(t)?[t.id,...t.children]:[]);t.forEach(t=>{if(e.includes(t.id))return;const i=this._pageDataUtils.getViewBoxById(t.id);this.interactiveChildrenBoxes.set(t.id,i)})}},un=class{constructor(t){c(this,"wireframeApplication"),c(this,"gizmos",[]),c(this,"activeGizmo"),c(this,"selectorGizmo"),c(this,"transformGizmo"),c(this,"controlGizmo"),c(this,"preferenceGizmo"),c(this,"pictureCutGizmo"),c(this,"pictureExpandGizmo"),c(this,"textGizmo"),c(this,"maskGizmo"),c(this,"loadingGizmo"),c(this,"spriteTextEditGizmo"),c(this,"iconGizmo"),c(this,"itemCreateGizmo"),c(this,"_ignoreInteraction",!1),c(this,"clickButtons",0),c(this,"container"),c(this,"_emitter"),c(this,"clickTime",0),c(this,"firstClick",!0),c(this,"dblclickTimeSpan",500),c(this,"spaceEmit",!1),c(this,"interactType","select"),this.gizmos=[];const{width:e,height:i}=t.getBoundingClientRect();this.wireframeApplication=new ds({backgroundAlpha:0,width:e,height:i,resolution:2,autoDensity:!0,antialias:!0}),this.container=t,this.wireframeApplication.view.style.position="absolute",this.wireframeApplication.view.id="wireframeApplicationCanvas",t.appendChild(this.wireframeApplication.view),this.wireframeApplication.stage.sortableChildren=!0,async function(){await Promise.all(Object.entries(er).map(([t,e])=>{const{url:i}=e;if(i)return fetch(i).then(t=>t.text()).then(i=>er[t]={...e,content:i})})).catch(t=>{console.error(t)})}()}set ignoreInteraction(t){t!==this._ignoreInteraction&&(this._ignoreInteraction=t,t&&(this.activeGizmo?.cancelPreparation(),this.activeGizmo=void 0))}get ignoreInteraction(){return this._ignoreInteraction}resize(){this.wireframeApplication&&(this.wireframeApplication.resizeTo=this.container,this.render())}refresh(){this.gizmos.forEach(t=>{t.refreshResults()})}render(){if(this.refresh(),!this.wireframeApplication?.stage)return;this.wireframeApplication?.stage?.removeChildren();const t=(this.ignoreInteraction?[this.preferenceGizmo]:this.gizmos).flatMap(t=>t.getRenderObjects());this.wireframeApplication?.stage?.addChild(...t),this.wireframeApplication?.render();const e=this.activeGizmo instanceof Xs||this.activeGizmo instanceof tn||this.activeGizmo instanceof on||this.activeGizmo instanceof rn||this.activeGizmo instanceof en||this.activeGizmo instanceof us||this.activeGizmo instanceof ln||this.activeGizmo instanceof mn?this.activeGizmo.cursorResult:void 0;this.setCursor(e)}async init(t,e){if(null===this.wireframeApplication)return void setTimeout(async()=>{await this.init(t,e)},50);this.gizmos=[],this.controlGizmo=new us(t),this.selectorGizmo=new fs(t);const i=new Zs;this.transformGizmo=new Xs(t,i,this.selectorGizmo),this.preferenceGizmo=new qs(t),this.pictureCutGizmo=new tn(t,e),this.pictureExpandGizmo=new on(t,e),this.textGizmo=new en(t,i,this.selectorGizmo,e,this.wireframeApplication?.view.parentElement),this.textGizmo.rotationSprite.texture=await sn.fromURL(lo.config.gestureHandlerConfig.textGizmoConfig.rotationCornerTexture),this.maskGizmo=new rn(t,this.wireframeApplication,e),this.loadingGizmo=new nn(t),this.spriteTextEditGizmo=new cn(t,e),this.iconGizmo=new ln(t,e),await this.iconGizmo.init(),this.itemCreateGizmo=new mn(t,e),this.gizmos.push(this.itemCreateGizmo,this.maskGizmo,this.spriteTextEditGizmo,this.pictureCutGizmo,this.pictureExpandGizmo,this.loadingGizmo,this.iconGizmo,this.transformGizmo,this.textGizmo,this.selectorGizmo,this.controlGizmo,this.preferenceGizmo,i),this._emitter=e,this.initEvents(),this.registerViewEvent()}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=t=>{this.onMouseDown(t)},this.wireframeApplication.view.onmousemove=t=>{0===t.buttons&&this.onMouseMove(t)},this.wireframeApplication.view.onmouseout=()=>{this.selectorGizmo?.cancelPreparation(),this.render()},this.wireframeApplication.view.onwheel=t=>{this.onWheel(t)},this.wireframeApplication.view.oncontextmenu=t=>{t.stopPropagation(),t.preventDefault()}}onMouseDown(t){if(!this.ignoreInteraction){switch(this.clickButtons=t.buttons,this.interactType){case"select":if(4===this.clickButtons&&(this.activeGizmo=this.controlGizmo,this.controlGizmo.preAction(t)),this.firstClick=!!this.firstClick&&Date.now()-this.clickTime<this.dblclickTimeSpan,this.firstClick){if(this.gizmos.forEach(e=>{if(e.interactive)if(void 0===this.activeGizmo){const i=e.preparationAction(t);this.activeGizmo=this.gizmos.find(t=>t.type===i)}else e.cancelPreparation()}),this.activeGizmo&&["transform","text"].includes(this.activeGizmo.type)){const e=this.activeGizmo.preAction(t,!0);this.activeGizmo=this.gizmos.find(t=>t.type===(e??"null"))}else if(this.activeGizmo&&!["picture-cut","picture-expand","mask","sprite-text-edit","icon"].includes(this.activeGizmo.type)){this.activeGizmo=void 0;const e=this.selectorGizmo?.preAction(t,!0);this.activeGizmo=this.gizmos.find(t=>t.type===(e??"null"))}this.firstClick=!1}else{void 0===this.activeGizmo&&this.gizmos.forEach(e=>{if(!e.interactive||this.activeGizmo)return;const i=e.preparationAction(t);this.activeGizmo=this.gizmos.find(t=>t.type===i)});const e=this.activeGizmo?.preAction(t);e&&!["selector","transform"].includes(e)&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.activeGizmo=this.gizmos.find(t=>t.type===e),this.clickTime=Date.now(),this.firstClick=!0}break;case"hand":this.activeGizmo=this.controlGizmo,this.activeGizmo.preAction(t)}this.render(),this._emitter?.emit("itemOnDragStart",this.activeGizmo?.type??"null"),document.addEventListener("mousemove",this.onMouseMove),document.addEventListener("mouseup",this.onMouseUp)}}onMouseMove(t){if(!this.ignoreInteraction){if(0!==t.buttons)this.activeGizmo?.action(t),"selector"!==this.activeGizmo?.type&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this._emitter?.emit("itemOnDrag",this.activeGizmo?.type??"null");else switch(this.interactType){case"select":this.activeGizmo=void 0,this.spaceEmit?(this.activeGizmo=this.controlGizmo,this.controlGizmo.interactionType="mouse"):this.gizmos.forEach(e=>{if(e.interactive)if(void 0===this.activeGizmo){const i=e.preparationAction(t);i&&!["selector","transform"].includes(i)&&this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.activeGizmo=this.gizmos.find(t=>t.type===i)}else e.cancelPreparation()});break;case"hand":this.activeGizmo=this.controlGizmo,this.activeGizmo.preparationAction(t)}this.render()}}onWheel(t){this.ignoreInteraction||(t.preventDefault(),this.selectorGizmo&&(this.selectorGizmo.clearResult=!0),this.spriteTextEditGizmo&&(this.spriteTextEditGizmo.clearPreSelected=!0),this.controlGizmo?.action(t))}onMouseUp(t){if(this.ignoreInteraction)return;const e=this.activeGizmo?.endAction(t);this.activeGizmo=this.gizmos.find(t=>t.type===e),void 0===this.activeGizmo&&1===this.clickButtons&&this.gizmos.forEach(e=>{if(e.interactive)if(void 0===this.activeGizmo){const i=e.preparationAction(t);this.activeGizmo=this.gizmos.find(t=>t.type===i)}else e.cancelPreparation()}),this.clickButtons=0,this._emitter?.emit("itemOnDragEnd",this.activeGizmo?.type??"null"),this.render(),document.removeEventListener("mousemove",this.onMouseMove),document.removeEventListener("mouseup",this.onMouseUp)}onKeyDown(t){this.ignoreInteraction||("escape"===t.code.toLocaleLowerCase()&&"select"!==this.interactType&&this.setInteractType("select"),"space"!==t.code.toLocaleLowerCase()||this.activeGizmo?.active?this.gizmos.forEach(e=>{e.actionKey(t)}):(this.spaceEmit=!0,this.activeGizmo=this.controlGizmo,this.controlGizmo.interactionType="hand"===this.interactType||this.spaceEmit?"mouse":"wheel"),this.render())}onKeyUp(t){this.ignoreInteraction||(this.gizmos.forEach(e=>{e.endActionKey(t)}),"space"===t.code.toLocaleLowerCase()&&(this.spaceEmit=!1,this.controlGizmo.interactionType="hand"===this.interactType||this.spaceEmit?"mouse":"wheel"),this.render())}dispose(){this.container.removeChild(this.wireframeApplication.view),this.wireframeApplication.destroy(),this.gizmos=[],this.activeGizmo=void 0}setCursor(t){let e="default";if("circle"===t?.type){const i=1,s=t.radius||10;e=`url("data:image/svg+xml,${encodeURIComponent(`<svg width="${2*s}" height="${2*s}" xmlns="http://www.w3.org/2000/svg"><circle cx="${s}" cy="${s}" r="${s}" fill="rgba(255, 255, 255, 0.6)" stroke="#6A34FF" stroke-width="${i}" /></svg>`)}") ${s} ${s}, auto`}else if(t?.type&&["scale","rotation","hand","active-hand","pointer","text-create","frame-create"].includes(t.type)){const i=er[t.type];if("svg"===i.type){const s=16;e=encodeURIComponent(i.content.replace("rotate(0.00)",`rotate(${t.angle??0})`)),e=`url("data:image/svg+xml,${e}") ${s} ${s}, auto`}else e=i.content}this.wireframeApplication.view.style.cursor=e}openPictureCutGizmo(){if(!this.pictureCutGizmo)return;this.setInteractType("select");const t=JSON.parse(JSON.stringify(lo.config));this.pictureCutGizmo.interactive=!0,this.pictureCutGizmo.interactive&&(this.pictureExpandGizmo.interactive=!1,this.maskGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.textGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const e=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}closePictureCutGizmo(){if(!this.pictureCutGizmo)return;const t=JSON.parse(JSON.stringify(lo.config));this.pictureCutGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0,this.textGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}setInteractType(t){t!==this.interactType&&(this.interactType=t,this.controlGizmo.interactionType="hand"===this.interactType||this.spaceEmit?"mouse":"wheel")}getCutInfo(){return this.pictureCutGizmo?.getCutInfo()}setCutBox(t,e){const i=this.pictureCutGizmo?.setCutBox(t,e);return this.render(),i}openPictureExpandGizmo(){if(!this.pictureExpandGizmo)return;this.setInteractType("select");const t=JSON.parse(JSON.stringify(lo.config));this.pictureExpandGizmo.interactive=!0,this.pictureExpandGizmo.interactive&&(this.pictureCutGizmo.interactive=!1,this.maskGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.textGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const e=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}closePictureExpandGizmo(){if(!this.pictureExpandGizmo)return;const t=JSON.parse(JSON.stringify(lo.config));this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0,this.textGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}getExpandInfo(){return this.pictureExpandGizmo?.getExpandInfo()}setExpandBox(t,e){const i=this.pictureExpandGizmo?.setExpandBox(t,e);return this.render(),i}openMaskGizmo(t){if(!this.maskGizmo)return;this.setInteractType("select");const e=JSON.parse(JSON.stringify(lo.config));this.maskGizmo.interactive=!0,this.maskGizmo.config={brushSize:t},this.maskGizmo.interactive&&(this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const i=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",e,i)}clearMaskGizmo(){this.maskGizmo&&(this.maskGizmo.clearMask(),this.render())}closeMaskGizmo(){if(!this.maskGizmo)return;const t=JSON.parse(JSON.stringify(lo.config));this.maskGizmo.interactive=!1,this.maskGizmo.close(),this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}setMaskGizmoConfig(t){this.maskGizmo&&(this.maskGizmo.config=t,this.render())}getMask(){if(this.maskGizmo)return this.maskGizmo.getMask()}setMaskGizmoMode(t){this.maskGizmo&&this.maskGizmo.setMode(t)}openLoadingGizmo(t,e){if(!this.loadingGizmo)return;const i=JSON.parse(JSON.stringify(lo.config));this.loadingGizmo.add(t,e),this.loadingGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const s=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",i,s)}updateLoadingGizmo(t,e){if(!this.loadingGizmo)return;const i=JSON.parse(JSON.stringify(lo.config));this.loadingGizmo.update(t,e);const s=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",i,s)}closeLoadingGizmo(t){if(!this.loadingGizmo)return;const e=JSON.parse(JSON.stringify(lo.config));this.loadingGizmo.delete(t);const i=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",e,i)}setPictureCutGizmoLockScale(t){this.pictureCutGizmo.isLockScale=t}setPictureExpandGizmoLockScale(t){this.pictureExpandGizmo.isLockScale=t}setTransformGizmoLockScale(t){this.transformGizmo.isLockScale=t}maskGizmoUndo(){if(!this.maskGizmo)return!1;const t=this.maskGizmo.undo();return t&&this.render(),t}maskGizmoRedo(){if(!this.maskGizmo)return!1;const t=this.maskGizmo.redo();return t&&this.render(),t}get maskGizmoCanUndo(){return this.maskGizmo?.canUndo??!1}get maskGizmoCanRedo(){return this.maskGizmo?.canRedo??!1}clearMaskGizmoUndoRedo(){this.maskGizmo?.clearUndoRedo()}pictureCutGizmoUndo(){if(!this.pictureCutGizmo)return!1;const t=this.pictureCutGizmo.undo();return t&&this.render(),t}pictureCutGizmoRedo(){if(!this.pictureCutGizmo)return!1;const t=this.pictureCutGizmo.redo();return t&&this.render(),t}get pictureCutGizmoCanUndo(){return this.pictureCutGizmo?.canUndo??!1}get pictureCutGizmoCanRedo(){return this.pictureCutGizmo?.canRedo??!1}clearPictureCutGizmoUndoRedo(){this.pictureCutGizmo?.clearUndoRedo()}openSpriteTextGizmo(t){if(!this.spriteTextEditGizmo)return;this.setInteractType("select");const e=JSON.parse(JSON.stringify(lo.config));this.spriteTextEditGizmo.interactive=!0,this.spriteTextEditGizmo.initResult(t),this.spriteTextEditGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.itemCreateGizmo.interactive=!1);const i=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",e,i)}closeSpriteTextEditGizmo(){if(!this.spriteTextEditGizmo)return;const t=JSON.parse(JSON.stringify(lo.config));this.spriteTextEditGizmo.interactive=!1,this.spriteTextEditGizmo.clearResult(),this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}setSpriteTextSelectedIndex(t,e){this.spriteTextEditGizmo?.setSelected(t,e)}setSpriteTextSelectedText(t,e,i){this.spriteTextEditGizmo?.setText(t,e,i)}setSpriteTextChangedState(t,e,i){this.spriteTextEditGizmo?.setChangedState(t,e,i)}setSpriteTextEditState(t,e,i){this.spriteTextEditGizmo?.setEditState(t,e,i)}openItemCreateGizmo(t){if(!this.itemCreateGizmo)return;this.setInteractType("select");const e=JSON.parse(JSON.stringify(lo.config));this.itemCreateGizmo.interactive=!0,this.itemCreateGizmo.createType=t;const i=JSON.parse(JSON.stringify(lo.config));this.itemCreateGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!1,this.selectorGizmo.interactive=!1,this.spriteTextEditGizmo.interactive=!1),this.render(),this._emitter?.emit("sdkConfigChange",e,i)}closeItemCreateGizmo(){if(!this.itemCreateGizmo)return;const t=JSON.parse(JSON.stringify(lo.config));this.itemCreateGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(lo.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}openTextGizmo(t){if(!this.textGizmo)return;const e=this.selectorGizmo?.pageDataUtils;void 0!==t&&e&&(e.clearSelectedItems(),e.addSelectedItems([t])),this.setInteractType("select"),this.textGizmo.interactionParam.type="edit",this.textGizmo.interactive=!0,this.textGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1,this.spriteTextEditGizmo.interactive=!1),this.render()}closeTextGizmo(){this.textGizmo&&(this.textGizmo.interactive=!1,this.render())}};import gn from"jszip";import fn from"jszip";var yn,xn,wn,In,vn,Pn,Cn,Sn,bn,Dn,zn,An,Tn,_n,Bn,En,kn,Mn,Un,Gn,Fn,Ln,Rn="ready",Vn="executable",On="dispose",Wn={APNG:"APNG",MP4:"MP4",WebM:"WebM",Images:"Images",WebP:"WebP",GIF:"GIF",AlphaMaskVideo:"AlphaMaskVideo"},Hn="idle",Nn="convertImage",Kn="transcoding",jn="audio",$n="jpeg",Yn="webp",Jn="png",Xn=(Wn.MP4,Wn.WebP,Wn.APNG,Wn.GIF,Wn.AlphaMaskVideo,Wn.Images,Wn.MP4,Wn.WebP,Wn.APNG,Wn.GIF,Wn.AlphaMaskVideo,Wn.Images,"default"),Qn="exporting",Zn="success",qn="error",to={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"},eo={highest:"1",high:"3",medium:"6",low:"9"},io=class{constructor(t){c(this,"sampleRate"),c(this,"duration"),c(this,"channels");const{sampleRate:e=44100,duration:i=1,channels:s=2}=t??{};this.sampleRate=e,this.duration=i,this.channels=s}getBuffer(){const t=this.sampleRate*this.duration*this.channels*2,e=44+t,i=new ArrayBuffer(e),s=new DataView(i);let r=0;const n=t=>{for(let e=0;e<t.length;e++)s.setUint8(r++,t.charCodeAt(e))},o=t=>{s.setUint32(r,t,!0),r+=4},a=t=>{s.setUint16(r,t,!0),r+=2};n("RIFF"),o(e-8),n("WAVE"),n("fmt "),o(16),a(1),a(this.channels),o(this.sampleRate),o(this.sampleRate*this.channels*2),a(2*this.channels),a(16),n("data"),o(t);for(let e=0;e<t;e++)s.setUint8(r++,0);return new Uint8Array(i)}},so=["@vvfx/sdk","exporter"],ro=class extends x{constructor(t){super(),c(this,"status",Rn),c(this,"stage",Hn),c(this,"player"),p(this,yn),p(this,xn),p(this,wn,0),p(this,In),p(this,vn),p(this,Pn),p(this,Cn),p(this,Sn,[]),p(this,bn),p(this,Dn),p(this,zn,[]),p(this,An,0),p(this,Tn),p(this,_n,[]),p(this,Bn,0),p(this,En,0),p(this,kn,0),p(this,Mn,0),p(this,Un,[]),p(this,Gn,[]),p(this,Fn,null),p(this,Ln,!0),d(this,yn,ps({loggerInTranscoding:!1,multiThreading:!1},t)),this.onInit()}setMediaType(t){t!==l(this,yn).mediaType&&(l(this,yn).mediaType=t,this.onReset(),this.clearAllListeners(),this.onInit())}setOptions(t){const e=ps({},l(this,yn),t);l(this,yn).mediaType!==e.mediaType&&this.setMediaType(e.mediaType),d(this,yn,e)}get canceled(){return this.status===On}get config(){const t=this.player?.getCompositions()??[],e=t?.[0],i=e?.name??(new Date).getTime().toString(),s=e?.getDuration()??0,r=e?.startTime??0,n=l(this,Tn)?.time;return{name:i,startTime:r,oldTotalTime:s,newTotalTime:n,fps:l(this,Tn)?.fps??30,backgroundColor:l(this,Tn)?.backgroundColor??"#000000",loop:l(this,Tn)?.loop??!0,audioEnable:l(this,Tn)?.audioEnable??!1}}get mp4Config(){return l(this,Tn)?.mp4Config}get gifConfig(){return l(this,Tn)?.gifConfig}get apngConfig(){return l(this,Tn)?.apngConfig}get progress(){const t=l(this,En)||1,e=l(this,kn)||1,i=Math.min(t/e,1),s=Math.min(l(this,Bn),t)/t*.4,r=Math.min(l(this,Mn),t)/t*.6,n=Math.min(s+r,1);l(this,_n)[l(this,An)]=i;const o=l(this,_n).reduce((t,e,i)=>i<l(this,An)?t+(e||0):t,0)+n*i;return Math.min((a=o,Math.round(100*a)/100),1);var a}get transImageType(){return l(this,yn).mediaType===Wn.MP4?$n:l(this,yn).mediaType===Wn.WebP?Yn:Jn}async onInit(){try{ot("log",[...so,"ready"],"starting"),this.status=Rn,await this.loadHelper(l(this,yn).mediaType),this.status=Vn,ot("log",[...so,"ready"],"success"),this.emit("ready",l(this,yn).mediaType)}catch(t){this.status=On,this.onError(t)}finally{return this.status}}onReset(){this.stage=Hn,clearTimeout(l(this,xn)),window.cancelAnimationFrame(l(this,wn)),d(this,wn,0),d(this,xn,void 0),this.player?.pause(),this.clearTaskInfo(),this.setProgress()}onError(t){ot("log",[...so,"error"],t),this.onFinish(!1,l(this,Un),l(this,Gn),l(this,Fn)),this.emit("error",t),this.dispose()}onFinish(t,e,i,s){ot("log",[...so,"finish"],t?"success":"failed"),this.emit("progress",1),this.emit("finish",t,e,i,s)}async loadHelper(t){const e="WebP"===t&&!l(this,Pn),i=[Wn.MP4,Wn.APNG,Wn.GIF,Wn.AlphaMaskVideo].includes(t)&&!l(this,vn);e&&d(this,Pn,await async function(){return new Promise(async(t,e)=>{try{await at($r.SCRIPT,{crossOrigin:"anonymous"});const e={locateFile:(t,e)=>t.endsWith("createWebPCore.wasm")?$r.WASM:e+t};t(await window.createWebPCore(e))}catch(t){e(t)}})}()),i&&(d(this,vn,await async function(t){try{const[{FFmpeg:e},{toBlobURL:i}]=await Promise.all([import("@ffmpeg/ffmpeg").catch(t=>{const e=t instanceof Error?t.message:"Unknown error";throw new Error(`Failed to load @ffmpeg/ffmpeg: ${e}`)}),import("@ffmpeg/util").catch(t=>{const e=t instanceof Error?t.message:"Unknown error";throw new Error(`Failed to load @ffmpeg/util: ${e}`)})]),{multiThreading:s}=t??{},r=new e,n=!!s,o={classWorkerURL:await i(Yr.CLASSWORKER,"text/javascript"),coreURL:"",wasmURL:""};return n?(o.coreURL=await i(Yr.MT.CORE,"text/javascript"),o.wasmURL=await i(Yr.MT.WASM,"application/wasm"),o.workerURL=await i(Yr.MT.WORKER,"text/javascript")):(o.coreURL=await i(Yr.DEFAULT.CORE,"text/javascript"),o.wasmURL=await i(Yr.DEFAULT.WASM,"application/wasm")),await r.load(o),r}catch(t){throw t instanceof Error?t:new Error(`Unknown error occurred while loading FFmpeg: ${String(t)}`)}}({multiThreading:l(this,yn).multiThreading})),w(l(this,vn)),l(this,vn).on("log",({message:t})=>{if(l(this,yn).loggerInTranscoding&&ot("log",[...so,"transcoding log"],t),this.canceled||this.stage!==Kn)return;const e=/frame=\s*(\d+)/.exec(t),i=e?.[1],s=Number(i);s>=l(this,Mn)&&this.setProgress({currentTaskInTranscodingFrameIndex:s})}))}getAllTaskFrames(t){return t.reduce((t,e)=>{const{scene:i,fps:s}=e,r=i.compositions?.[0]?.duration??0;return t+Math.round(r*(s??30))},0)}setProgress(t){void 0!==t?.completedTaskPercentArray&&d(this,_n,t.completedTaskPercentArray),void 0!==t?.currentTaskFrameIndex&&d(this,Bn,t.currentTaskFrameIndex),void 0!==t?.currentTaskTotalFrames&&d(this,En,t.currentTaskTotalFrames),void 0!==t?.currentTaskInTranscodingFrameIndex&&d(this,Mn,t.currentTaskInTranscodingFrameIndex),void 0!==t?.allTaskFrames&&d(this,kn,t.allTaskFrames),this.emit("progress",this.progress)}forwardPlayerTime(t,e=!1){w(this.player);const{oldTotalTime:i,startTime:s}=this.config;w(i);const r=1e3*i-1e3*i%15;return t=Math.min(t,r/1e3),e?this.player.gotoAndPlay(t-s):this.player.gotoAndStop(t-s),t}getWavAudio(t){d(this,bn,new io),l(this,vn)?l(this,vn).writeFile(t,l(this,bn).getBuffer()):ot("log",[...so,"getWavAudio"],"ffmpegCore is not ready")}async getImagesZip(t,e){const i=new fn,s=i.folder(t);return w(s),l(this,zn).forEach((t,i)=>{s.file(t,e[i])}),i.generateAsync({type:"arraybuffer"})}getWebP(){w(l(this,Pn));const t=Math.round(1e3/this.config.fps/1),e="out.webp",i=`${l(this,zn).join(` -d ${t} `)} -d ${t} -o ${e} -loop ${this.config.loop?0:1}`.split(" "),s=l(this,Pn).cwrap("main","string",["number","number"]),[r,n]=function(t,e){const i=t._malloc(e.length*Uint32Array.BYTES_PER_ELEMENT);return e.forEach((e,s)=>{const r=t._malloc(e.length+1);t.writeAsciiToMemory(e,r),t.setValue(i+Uint32Array.BYTES_PER_ELEMENT*s,r,"i32")}),[e.length,i]}(l(this,Pn),i);nt(r&&n,"getWebP has error"),s(r,n);const o=l(this,Pn).FS.readFile(e);return l(this,zn).forEach(t=>{l(this,Pn)?.FS.unlink(t)}),o}async getAPNG(){w(l(this,vn));this.stage=Kn;const t="export.apng",{fps:e,scale:i="-1:-1",quality:s="highest"}=this.apngConfig??{},r=[`scale=${i}:force_original_aspect_ratio=decrease:flags=lanczos`];e&&r.push(`fps=${e}`);if(0!==await l(this,vn).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-vf",r.join(","),"-plays",this.config.loop?"0":"1","-compression_level",eo[s],"-y",t]))throw new Error("the command executed by ffmpeg to generate a apng failed.");return t}async getGIF(){w(l(this,vn));this.stage=Kn;const t="export.gif",{fps:e,scale:i="-1:-1",quality:s="highest"}=this.gifConfig??{},r=[`scale=${i}:${to[s]}`];e&&r.unshift(`fps=${e}`);if(0!==await l(this,vn).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-loop",this.config.loop?"0":"-1","-vf",r.join(","),"-y",t]))throw new Error("the command executed by ffmpeg to generate a gif failed.");return t}async getMP4(t,e){w(l(this,vn));this.stage=Kn;const i="export.mp4";let s;const r=e?",setpts=PTS/"+Math.round(t/e*100)/100:"",n=e??t,{isExportLastFrameJPEG:o}=this.mp4Config??{};this.config.audioEnable&&!l(this,bn)&&(d(this,Dn,"audio.wav"),this.getWavAudio(l(this,Dn)));if(0!==await l(this,vn).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(l(this,Dn)&&l(this,bn)){this.stage=jn,s="export-with-audio.mp4";if(0!==await l(this,vn).exec(["-i",i,"-i",l(this,Dn),"-c:v","copy","-c:a","aac","-t",`${n}`,"-y",s]))throw new Error("the command executed by ffmpeg to generate a audio of video failed.")}const a=s??i;let c="";return o&&(c=`image-${Xr(l(this,En),4)}.${this.transImageType}`),s&&l(this,vn).deleteFile(i).catch(()=>{ot("log",[...so,"ffmpeg delete file error"])}),{video:a,lastFrame:c}}async getAlphaMaskVideo(t,e){w(l(this,vn));this.stage=Kn;const i="export.mp4",s=e?",setpts=PTS/"+Math.round(t/e*100)/100:"";return await l(this,vn).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(t,e){w(l(this,vn));const i=l(this,yn).mediaType===Wn.APNG,s=l(this,yn).mediaType===Wn.GIF,r=l(this,yn).mediaType===Wn.AlphaMaskVideo,n=l(this,yn).mediaType===Wn.MP4;let o="",a="";try{if(i&&(o=await this.getAPNG()),s&&(o=await this.getGIF()),n){const{video:i,lastFrame:s}=await this.getMP4(t,e);o=i,a=s}r&&(o=await this.getAlphaMaskVideo(t,e)),this.stage=Hn}catch(t){throw ot("log",[...so,"getVideoByType","failed"],t),t}let c=null,h=null;try{w(o);const t=await l(this,vn).readFile(o);if(c="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t),a){const t=await l(this,vn).readFile(a).catch(()=>{ot("log",[...so,"ffmpeg read extra file error"])});h="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t)}}finally{l(this,vn).deleteFile(o).catch(()=>{ot("log",[...so,"ffmpeg delete file error"])});for(const t of l(this,zn))t&&l(this,vn).deleteFile(t)}return{data:c,extra:h}}onRecordWebM(t){const e=new MediaRecorder(t.captureStream(this.config.fps),{mimeType:"video/webm;codecs=vp9"});d(this,Cn,e),l(this,Cn).start(0);const i=[];l(this,Cn).ondataavailable=t=>{t.data.size>0&&i.push(t.data)},d(this,Sn,i)}async onExportImageFrame(t){try{if(this.canceled)return;const{canvas:e,imageBuffers:i,startTime:s,oldTotalTime:r,newTotalTime:n}=t;w(this.player),w(l(this,In));const o=l(this,Bn)+1;this.stage=Nn,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:o}),l(this,yn).loggerInTranscoding&&ot("log",[...so,"converting log"],`converting ${o} frame image`),o>=1&&this.forwardPlayerTime(o/this.config.fps+s),Jr(l(this,In),e,this.config.backgroundColor);let a=e;l(this,yn).mediaType===Wn.AlphaMaskVideo&&(w(l(this,yn).extraCanvas),function(t,e){e.width=2*t.width,e.height=t.height;const i=t.getContext("2d");if(!i)throw new Error("inputCtx is null");const s=e.getContext("2d");if(!s)throw new Error("ctx is null");s.clearRect(0,0,e.width,e.height);const r=i.getImageData(0,0,t.width,t.height),n=i.getImageData(0,0,t.width,t.height),o=r.data;for(let t=0;t<o.length;t+=4){const e=Math.max(0,(o[t+3]??0)-5)/250*255;e<=0?(o[t]=0,o[t+1]=0,o[t+2]=0,o[t+3]=255):(o[t]=(o[t]??0)*e/255,o[t+1]=(o[t+1]??0)*e/255,o[t+2]=(o[t+2]??0)*e/255,o[t+3]=255)}s.putImageData(r,0,0);const a=n.data;for(let t=0;t<a.length;t+=4){const e=Math.max(0,(a[t+3]??0)-5)/250*255;a[t]=e,a[t+1]=e,a[t+2]=e,a[t+3]=255}s.putImageData(n,t.width,0)}(e,l(this,yn).extraCanvas),a=l(this,yn).extraCanvas);const c=await async function(t,e,i){return new Promise((s,r)=>{t.toBlob(t=>{t?s(t.arrayBuffer()):r("toBlob failed")},e,i)})}(a,`image/${this.transImageType}`,1),h=`image-${Xr(o,4)}.${this.transImageType}`;l(this,yn).mediaType===Wn.Images?i.push(c):l(this,yn).mediaType===Wn.WebP?(w(l(this,Pn)),l(this,Pn).FS.writeFile(h,new Uint8Array(c))):(w(l(this,vn)),await l(this,vn).writeFile(h,new Uint8Array(c))),l(this,zn).push(h);if(o===l(this,En)){this.player?.pause(),await new Promise(t=>{window.requestAnimationFrame(t)});let t=null,e=null;if("Images"===l(this,yn).mediaType)t=await this.getImagesZip(this.config.name,i);else if("WebP"===l(this,yn).mediaType)t=this.getWebP();else if([Wn.MP4,Wn.APNG,Wn.GIF,Wn.AlphaMaskVideo].includes(l(this,yn).mediaType)){const{data:i,extra:s}=await this.getVideoByType(r,n)??null;t=i,e=s}t&&(ot("log",[...so,"done"],"success"),this.emit("done",l(this,Tn),!0,t,e))}else d(this,wn,window.requestAnimationFrame(()=>{this.canceled||this.onExportImageFrame({canvas:e,imageBuffers:i,startTime:s,oldTotalTime:r,newTotalTime:n})}))}catch(t){ot("log",[...so,"onExportImageFrame","failed"],t),this.emit("done",l(this,Tn),!1,void 0,void 0)}}async onExportWebMFrame(t){try{if(this.canceled)return;w(this.player),w(l(this,In));const e=l(this,Bn)+1;if(this.stage=Nn,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:e}),l(this,yn).loggerInTranscoding&&ot("log",[...so,"converting log"],`converting ${e} frame image`),Jr(l(this,In),t,this.config.backgroundColor),1===e&&(this.player.play(),this.onRecordWebM(t)),e<l(this,En))d(this,wn,window.requestAnimationFrame(()=>{this.canceled||this.onExportWebMFrame(t)}));else{this.player?.pause(),l(this,Cn)?.stop();const t=new Blob(l(this,Sn),{type:"video/webm"}),e=await t.arrayBuffer();ot("log",[...so,"done"],"success"),this.emit("done",l(this,Tn),!0,e,void 0)}}catch(t){ot("log",[...so,"done"],"failed",t),this.emit("done",l(this,Tn),!1,void 0,void 0)}}async runTask(t){try{if(this.canceled)return;w(this.player),w(l(this,In));const{size:e,startTime:i,containerCanvas:s}=t,{oldTotalTime:r,newTotalTime:n}=this.config,[o,a]=e;if(l(this,In).width=o,l(this,In).height=a,s.width=o,s.height=a,this.player.resize(),d(this,zn,[]),[Wn.MP4,Wn.APNG,Wn.Images,Wn.WebP,Wn.GIF,Wn.AlphaMaskVideo].includes(l(this,yn).mediaType)){const t={canvas:s,imageBuffers:[],startTime:i,oldTotalTime:r,newTotalTime:n};await this.onExportImageFrame(t)}else"WebM"===l(this,yn).mediaType&&await this.onExportWebMFrame(s)}catch(t){ot("log",[...so,"run task error"],t),this.emit("done",l(this,Tn),!1,void 0,void 0)}}clearTaskInfo(){d(this,An,0),d(this,Tn,void 0),d(this,_n,[]),d(this,Bn,0),d(this,En,0),d(this,kn,0),d(this,Mn,0),d(this,Un,[]),d(this,Gn,[]),d(this,Fn,[]),d(this,Ln,!0)}clearFFMpegCore(){if(l(this,vn)){for(const t of l(this,zn))t&&l(this,vn).deleteFile(t);d(this,zn,[]),l(this,vn).terminate(),d(this,vn,void 0)}}clearImage2WebPCore(){l(this,Pn)&&(l(this,Pn).FS.quit(),d(this,Pn,void 0))}clearMediaRecorder(){l(this,Cn)&&(l(this,Cn).stop(),d(this,Cn,void 0)),d(this,Sn,[])}clearAllListeners(){for(const t of this.getListeners("ready"))this.off("ready",t);for(const t of this.getListeners("progress"))this.off("progress",t);for(const t of this.getListeners("done"))this.off("done",t);for(const t of this.getListeners("finish"))this.off("finish",t);for(const t of this.getListeners("error"))this.off("error",t)}onCancel(){this.canceled||(this.onFinish(!1,l(this,Un),l(this,Gn),l(this,Fn)),this.status=On,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),ot("log",so,"canceled"))}async onExport(t){const e=t.length;try{if(this.status===Rn)return ot("log",[...so],"readying"),void this.on("ready",()=>{this.onExport(t)});if(this.status===On){if(await this.onInit()===On)throw new Error("init environment failed")}if(this.clearTaskInfo(),!l(this,In)){const t=document.createElement("canvas");t.dataset.key="player-canvas",d(this,In,t)}this.player||(this.player=new g({canvas:l(this,In),pixelRatio:2,transparentBackground:!0,env:"editor",renderOptions:{willCaptureImage:!0}}),this.player.on("rendererror",t=>{this.onError(t)}),this.player.on("webglcontextlost",t=>{this.onError(t)}));let e=null;e??(e=document.querySelector('canvas[data-key="container-canvas"]')),e??(e=document.createElement("canvas")),e.dataset.key="container-canvas",e.style.display="none",this.setProgress({allTaskFrames:this.getAllTaskFrames(t)});const i=[],s=[],r=[];let n=!0;for(const[o,a]of t.entries()){if(this.canceled){n=!1;break}d(this,An,o),d(this,Tn,a);const{size:t,scene:c}=a;await new Promise(async h=>{try{if(!this.player)throw new Error("player not found");ot("log",[...so,"export"],"start",a),Qr(this.player);const l=JSON.parse(JSON.stringify(c));await this.player.loadScene(l,{env:"editor",autoplay:!1});const p=this.config.oldTotalTime,d=0;this.player.pause(),this.setProgress({currentTaskFrameIndex:0,currentTaskTotalFrames:Math.round(p*this.config.fps)});const m=(t,e,c,l)=>{this.off("done",m),i[o]=a,e&&c?(s[o]=c,r[o]=l??null):n=!1,h()};this.on("done",m);const u={size:t,startTime:d,containerCanvas:e};await this.runTask(u)}catch(t){ot("log",[...so,"export error"],t),n=!1,h()}})}d(this,Un,i),d(this,Gn,s),d(this,Fn,r),d(this,Ln,n)}catch(t){this.onError(t),d(this,Ln,!1)}e>=1&&l(this,Ln)?this.onFinish(!0,l(this,Un),l(this,Gn),l(this,Fn)):this.onFinish(!1,l(this,Un),l(this,Gn),l(this,Fn))}dispose(){this.status=On,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),this.player?.dispose(),this.player=void 0,l(this,In)?.remove(),d(this,In,void 0),d(this,Dn,void 0),d(this,bn,void 0)}};yn=new WeakMap,xn=new WeakMap,wn=new WeakMap,In=new WeakMap,vn=new WeakMap,Pn=new WeakMap,Cn=new WeakMap,Sn=new WeakMap,bn=new WeakMap,Dn=new WeakMap,zn=new WeakMap,An=new WeakMap,Tn=new WeakMap,_n=new WeakMap,Bn=new WeakMap,En=new WeakMap,kn=new WeakMap,Mn=new WeakMap,Un=new WeakMap,Gn=new WeakMap,Fn=new WeakMap,Ln=new WeakMap;var no={[Wn.MP4]:{suffix:"mp4",error:"export mp4 is error"},[Wn.GIF]:{suffix:"gif",error:"export gif is error"},[Wn.Images]:{suffix:"zip",error:"export Images is error"},[Wn.APNG]:{suffix:"apng",error:"export APNG is error"},[Wn.WebP]:{suffix:"webp",error:"export WebP is error"},[Wn.AlphaMaskVideo]:{suffix:"mp4",error:"export AlphaMaskVideo is error"},[Wn.WebM]:{suffix:"webm",error:"export WebM is error"}},oo=class extends x{constructor(t){super(),c(this,"_options"),c(this,"_status",Xn),c(this,"_exportMedia"),this._options=t,this._exportMedia=new ro(t)}get status(){return this._status}setOptions(t){const e=ps({},this._options,t);this._options=e,this._exportMedia.setOptions(e)}downloadByMediaBuffers(t,e,i){const{suffix:s,error:r}=no[this._options.mediaType];if(!e?.length||!s)return void ot("info",["@vvfx/sdk","downloadByMediaBuffers is error","buffers or suffix is empty"]);const n=t[0]?.folderName,o=new gn;e.forEach((e,r)=>{if(!e)return;const{name:n}=t[r]??{};n&&(o.file(`${n}.${s}`,e),i?.[r]?.byteLength&&o.file(`${n}.jpeg`,i[r]))}),o.generateAsync({type:"blob"}).then(t=>{ct(t,`${n}.zip`,"application/zip")}).catch(t=>{ot("error",["@vvfx/sdk"],r??"export media is error",t)})}onExportProgress(t){this.emit("progress",t)}onExportDone(t,e,i,s){this.emit("done",t,e,i,s)}onExportError(t){this._status=qn,ot("error",["@vvfx/sdk"],"export is error",t)}onExport(t){this._status=Qn,this._exportMedia.onExport(t),this._exportMedia.on("progress",this.onExportProgress.bind(this)),this._exportMedia.on("done",this.onExportDone.bind(this)),this._exportMedia.once("finish",(e,i,s,r)=>{this._status=e?Zn:qn,this.emit("complete",e,i,s,r),!this._options.isOutputBuffer&&s&&0!==s.length&&this.downloadByMediaBuffers(t,s,r)}),this._exportMedia.on("error",this.onExportError.bind(this))}onCancel(){this._status=qn,this._exportMedia.onCancel(),this.emit("complete",!1,[],[],[])}dispose(){this._exportMedia.dispose()}},ao=class{constructor(){c(this,"enabled",!0),c(this,"_player"),c(this,"_container"),this._container=document.createElement("canvas"),this._player=new g({canvas:this._container,manualRender:!0,pixelRatio:2,env:"editor",renderOptions:{willCaptureImage:!0}})}async generate(t,e,i,s,r){if(!lo.config.screenShotConfig.enabled)return void console.warn("Screen shot is not opened, use #SDK.setConfig() open this feature.");Qr(this._player);const[n,o]=e;this._container.width=n,this._container.height=o,this._player.resize();const a="string"==typeof t?t:JSON.parse(JSON.stringify(t));await this._player.loadScene(a),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=lo.config.screenShotConfig.defaultBackgroundColor),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 d=l.toDataURL("image/png");return Qr(this._player),d}dispose(){this._player.dispose()}drawImageCover(t,e,i,s,r,n,o,a,c){2===arguments.length&&(i=s=0,r=t.canvas.width,n=t.canvas.height),o="number"==typeof o?_(o,0,1):.5,a="number"==typeof a?_(a,0,1):.5,c??(c={left:0,top:0,width:e instanceof HTMLVideoElement?e.videoWidth:e.width,height:e instanceof HTMLVideoElement?e.videoHeight:e.height});const h=c.width,l=c.height,p=Math.min(r/h,n/l);let d=h*p,m=l*p,u=1;d<r&&(u=r/d),Math.abs(u-1)<1e-14&&m<n&&(u=n/m),d*=u,m*=u;const g=Math.max(h/(d/r),0),f=Math.max(l/(m/n),0),y=Math.min((h-g)*o,h),x=Math.min((l-f)*a,l);t.drawImage(e,y+c.left,x+c.top,g,f,i,s,r,n)}},co=class{constructor(){c(this,"_player"),c(this,"_container"),c(this,"size",[0,0]),this._container=document.createElement("canvas"),this._player=new g({canvas:this._container,manualRender:!0})}async adjustment(t,e,i,s,r,n){if(!lo.config.sizeAdaptConfig.enabled)return console.warn("Size adapt is not opened, use #SDK.setConfig() open this feature."),t;this._player??(this._player=new g({canvas:this._container,manualRender:!0})),r??(r=[0,0,0,0]),n??(n=i[0]<i[1]?"y":"x"),this.size=[...s],this._container.width=this.size[0],this._container.height=this.size[1],Qr(this._player),this._player.resize();const o=JSON.parse(JSON.stringify(t));await this._player.loadScene(o,{reusable:!0,autoplay:!1}),this._player.gotoAndStop(e);const a=this._player.getCompositions()[0];if(a){const[e,o]=s,c=i[0]/i[1],h=e/o;c>h&&this.keepDistribute(t,a,h/c,s);const[l,p,d,m]=r,u=e-d-m,g=o-l-p,f=[(d-m)/2,(l-p)/2],y=(new W).setFromCenterAndSize(new A(e,o).divide(2),new A(e,o)),x=(new W).setFromCenterAndSize(new A(e,o).divide(2).add(new A(...f)),new A(u,g));this.keepAdsorption("topAdsorption",t,a,f,y,x,n),this.keepAdsorption("bottomAdsorption",t,a,f,y,x,n),this.keepAdsorption("leftAdsorption",t,a,f,y,x,n),this.keepAdsorption("rightAdsorption",t,a,f,y,x,n),this.keepAdsorption("centerAdsorption",t,a,f,y,x,n),this.keepDoubleAdsorption("bottomCenterAdsorption",t,a,f,y,x,n)}return t}keepDistribute(t,e,i,s){const r=t=>{const i=(new j).copyFrom(e.camera.getViewProjectionMatrix());return(new A).copyFrom(t.applyMatrix(i).toVector2()).toViewCoordinate(s[0],s[1])};["topAdsorption","centerAdsorption","bottomAdsorption"].forEach(n=>{e.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===Er[n]&&!t.parentId).forEach(n=>{const o=e.items.filter(t=>t.parentId===n.getInstanceId()),a=o.find(t=>"check-area"===t.name),c=a?this.getViewBoxByHeadlessPlayerItem(a,[],r):this.getViewBoxByHeadlessPlayerItem(n,o,r),h=n.transform.position.clone(),l=c.getCenter(),p=new A(...s.map(t=>t/2)),d=l.y-p.y;((t,i,r)=>{const{z:n}=t.transform.getWorldPosition(),{x:o,y:a}=e.camera.getInverseVPRatio(n);t.transform.translate(2*i*o/s[0],-2*r*a/s[1],0)})(n,0,d/i-d),n.transform.updateLocalMatrix();const m=n.transform.position.clone().subtract(h).toArray();this.transformSceneItem(t,n.getInstanceId(),"position",m)})})}keepAdsorption(t,e,i,s,r,n,o){const{x:a,y:c}=r.getSize(),h=(t,e,s)=>{const{z:r}=t.transform.getWorldPosition(),{x:n,y:o}=i.camera.getInverseVPRatio(r);t.transform.translate(2*e*n/a,-2*s*o/c,0)},l=t=>{const e=(new j).copyFrom(i.camera.getViewProjectionMatrix());return(new A).copyFrom(t.applyMatrix(e).toVector2()).toViewCoordinate(a,c)},p=Er[t];i.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===p&&!t.parentId).forEach(r=>{const a=i.items.filter(t=>t.parentId===r.getInstanceId()),c=a.find(t=>"check-area"===t.name),p=r.transform.position.clone(),d=["leftAdsorption","rightAdsorption"].includes(t)?"x":"y",m=["leftAdsorption","topAdsorption"].includes(t)?1:-1,u=["leftAdsorption","topAdsorption"].includes(t)?"min":"max",g=["leftAdsorption","topAdsorption"].includes(t)?"max":"min",f=3===r.name.split("-").length,y=Number(r.name.split("-")[1]),x=new A,w=[1,1],I=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(r,a,l);h(r,...s);const v="y"===o?"x":"y";I.getSize()[v]>n.getSize()[v]&&(w[0]=n.getSize()[v]/I.getSize()[v],w[1]=n.getSize()[v]/I.getSize()[v],r.scale(...w,1)),r.transform.updateLocalMatrix();const P=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(r,a,l),C=new A;if(!n.containsBox(P)){const{min:t,max:e}=P,{min:i,max:s}=n;C.x+=t.x<i.x?i.x-t.x:0,C.x+=e.x>s.x?s.x-e.x:0,C.y+=t.y<i.y?i.y-t.y:0,C.y+=e.y>s.y?s.y-e.y:0,h(r,...C.toArray()),r.transform.updateLocalMatrix()}const S=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(r,a,l);if(!Number.isNaN(y)&&f)if("centerAdsorption"!==t){const t=Math.abs(S[g][d]-n[u][d]),e=n.getSize()[d]*y;t>e&&(x[d]=(e-t)*m,h(r,...x.toArray()),r.transform.updateLocalMatrix())}else{const t=S.getSize()[o],e=n.getSize()[o];if(t/e>y){const i=e*y/t;r.scale(i,i,1),w[0]*=i,w[1]*=i}}const b=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(r,a,l),D=i.items.filter(t=>"T"===t.name.split("-")[0]?.toLocaleUpperCase()&&!t.parentId),z=new W;if(D.forEach(t=>{const e=i.items.filter(e=>e.parentId===t.getInstanceId()),s=e.find(t=>"check-area"===t.name),r=s?this.getViewBoxByHeadlessPlayerItem(s,[],l):this.getViewBoxByHeadlessPlayerItem(t,e,l);z.union(r)}),!z.isEmpty()&&z.max.y>b.min.y)if("centerAdsorption"===t){const t=z.max.y-b.min.y;h(r,0,t),r.transform.updateLocalMatrix()}else if(["leftAdsorption","rightAdsorption"].includes(t)){const t=b.getSize().y,e=n.getSize().y-(z.max.y-n.min.y);let i=z.max.y-b.min.y;if(t>e){const s=e/t;w[0]*=s,w[1]*=s,r.scale(s,s,1),r.transform.updateLocalMatrix(),i-=(t-e)/2}h(r,0,i),r.transform.updateLocalMatrix()}const T=r.transform.position.clone().subtract(p).toArray();this.transformSceneItem(e,r.getInstanceId(),"position",T),this.transformSceneItem(e,r.getInstanceId(),"scale",w)})}keepDoubleAdsorption(t,e,i,s,r,n,o){const{x:a,y:c}=r.getSize(),h=(t,e,s)=>{const{z:r}=t.transform.getWorldPosition(),{x:n,y:o}=i.camera.getInverseVPRatio(r);t.transform.translate(2*e*n/a,-2*s*o/c,0)},l=t=>{const e=(new j).copyFrom(i.camera.getViewProjectionMatrix());return(new A).copyFrom(t.applyMatrix(e).toVector2()).toViewCoordinate(a,c)},p=Er[t];i.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===p&&!t.parentId).forEach(t=>{const r=i.items.filter(e=>e.parentId===t.getInstanceId()),a=r.find(t=>"check-area"===t.name),c=t.transform.position.clone(),p=3===t.name.split("-").length,d=Number(t.name.split("-")[1]),m=[1,1],u=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,r,l);h(t,...s);const g="y"===o?"x":"y";u.getSize()[g]>n.getSize()[g]&&(m[0]=n.getSize()[g]/u.getSize()[g],m[1]=n.getSize()[g]/u.getSize()[g],t.scale(...m,1)),t.transform.updateLocalMatrix();const f=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,r,l);if(!Number.isNaN(d)&&p){const e=f.getSize()[g],i=n.getSize()[g];if(e/i>d){const s=i*d/e;t.scale(s,s,1),m[0]*=s,m[1]*=s}}const y=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,r,l),x=new A;if(!n.containsBox(y)){const{min:e,max:i}=y,{min:s,max:r}=n;x.x+=e.x<s.x?s.x-e.x:0,x.x+=i.x>r.x?r.x-i.x:0,x.y+=e.y<s.y?s.y-e.y:0,x.y+=i.y>r.y?r.y-i.y:0,h(t,...x.toArray()),t.transform.updateLocalMatrix()}const w=t.transform.position.clone().subtract(c).toArray();this.transformSceneItem(e,t.getInstanceId(),"position",w),this.transformSceneItem(e,t.getInstanceId(),"scale",m)})}getViewBoxByHeadlessPlayerItem(t,e,i){const s=new W,{transform:r,composition:n}=t;switch(t.type){case m.ItemType.sprite:case m.ItemType.plugin:case m.ItemType.video:case m.ItemType.richtext:case m.ItemType.text:case m.ItemType.shape:{r.setValid(!0),r.updateLocalMatrix();const{size:t}=r,o=(new j).copyFrom(n?.transform.getWorldMatrix()??new j).invert().multiply(r.getWorldMatrix()),{x:a,y:c}=t.clone().divide(2),h=new K(a,c,0).applyMatrix(o),l=new K(a,-c,0).applyMatrix(o),p=new K(-a,-c,0).applyMatrix(o),d=new K(-a,c,0).applyMatrix(o),m=i(h).round(2),u=i(l).round(2),g=i(p).round(2),f=i(d).round(2);s.setFromVec2Array([m,u,g,f]);const y=e?.map(t=>{const e=n?.items.filter(e=>e.parentId===t.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(t,e,i)});y&&y.map(t=>s.union(t));break}case m.ItemType.null:{const t=e?.map(t=>{const e=n?.items.filter(e=>e.parentId===t.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(t,e,i)});t&&t.map(t=>s.union(t));break}}return s}transformSceneItem(t,e,i,s){const r=t.items.find(t=>t.id===e);switch(i){case"position":{const t=s;Array.isArray(s)&&3===t.length&&r?.transform&&(r.transform.position.x+=t[0],r.transform.position.y+=t[1],r.transform.position.z+=t[2]);break}case"rotation":if(Array.isArray(s)&&3===s.length){const t=s;r?.transform&&(r.transform.eulerHint.x+=t[0],r.transform.eulerHint.y+=t[1],r.transform.eulerHint.z+=t[2])}break;case"size":Array.isArray(s)&&2===s.length&&r?.transform&&(r.transform.scale.x*=s[0],r.transform.scale.y*=s[1])}}dispose(){this._player?.dispose()}},ho=class t{constructor(e,i="template"){c(this,"_eventEmitter",new x),c(this,"_pageData"),c(this,"_screenShot"),c(this,"_exporter"),c(this,"_pageDataUtils"),c(this,"_sizeAdapt"),c(this,"_gestureHandler"),c(this,"disposables",[]),c(this,"_isSwitchScene",!1),c(this,"_undoRedo",new sr),c(this,"_backgroundManager",new nr),c(this,"player"),c(this,"_container"),c(this,"_playerContainer"),c(this,"on",this._eventEmitter.on),this._container=e,t.config.mode=i,this.initPlayer(i),this._eventEmitter.on("pageDataChange",t=>{this._pageData=t,this._gestureHandler.render()}),this._eventEmitter.on("preSelectedItemChange",t=>{w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=t,this._gestureHandler.render()}),this._eventEmitter.on("selectedViewChange",t=>{w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.view=t;const e=this.getViewProperty(t);this._gestureHandler.ignoreInteraction=!!e?.ignoreInteraction}),this._eventEmitter.on("sdkConfigChange",(t,e)=>{this.setExportConfig(e.exportConfig)}),this._eventEmitter.on("itemCreate",()=>{this._gestureHandler.closeItemCreateGizmo()}),this._pageDataUtils=new qr(this.player,this._playerContainer,this._eventEmitter,this),this._backgroundManager.attach(this._playerContainer),this._gestureHandler=new un(e),this._screenShot=new ao,this._sizeAdapt=new co;const s=new ResizeObserver(()=>{if(!this._pageData)return;const i=[e.offsetWidth,e.offsetHeight],s=this.getViewProperty(this._pageData.activeData.view??0);if(s){if("template"===t.config.mode){const{size:t}=s,[e,r]=this._pageDataUtils.getPlayerSizeByParent(i,t);this._playerContainer.style.width=`${e}px`,this._playerContainer.style.height=`${r}px`,this.player.resize()}this._pageDataUtils.refreshInteractionParam(),this._gestureHandler.resize()}});s.observe(e),this.disposables.push(()=>{s.disconnect()})}get backgroundManager(){return this._backgroundManager}get container(){return this._container}get pageData(){return this._pageData}get initExporterEnabled(){return"template"===t.config.mode&&t.config.exportConfig.enabled}get exportStatus(){return this?._exporter?.status}get undoRedo(){return this._undoRedo}get exportOptions(){if(!this.pageData)return[];const t=this.pageData.viewProperties.filter(t=>!t.ignoreInteraction),e=t[0]?.scene?.compositions?.[0]?.name??"videos",i=[];return t.map((t,s)=>{const{size:r,scene:n,export:{name:o,...a}}=t,c=r?.[0]&&r?.[1]?` (${s+1})_${r[0]}×${r[1]}`:` (${s+1})`;let h="";return h=o?ht(o,i):`${e}${c}`,i.push(h),{folderName:e,name:h,size:r,scene:JSON.parse(JSON.stringify(n)),...a}})}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(t=>{t()})}initPlayer(e){const i=document.createElement("div"),[s,r]="editor"===e?[this._container.clientWidth,this._container.clientHeight]:[this._container.offsetWidth,this._container.offsetHeight];this._playerContainer=i,this._playerContainer.id="player-container",this._playerContainer.style.position="absolute",this._playerContainer.style.width=`${s}px`,this._playerContainer.style.height=`${r}px`,this._container.appendChild(i),this.player=new g({container:this._playerContainer,pixelRatio:2,interactive:!0,env:"editor"}),this.player.on("update",()=>{if(w(this._pageData,"You must call SDK#run() first"),this._isSwitchScene)return;const t=this.player.getCompositions()[0]?.time;if(this._pageData.playing)if(void 0!==t)this._pageData.time===t&&this.player.pause(),this._pageData.time=t,this._pageDataUtils.refreshPageTime(t);else{this._pageData.playing=!1,this.setPlayProgress(100);const t=this.getViewProperty(this._pageData.activeData.view??0)?.scene,e=t?.compositions.find(e=>e.id===t.compositionId);this._pageData.time=e?.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.player.on("rendererror",t=>{console.error("player render error ",t)}),this.player.on("webglcontextlost",()=>{this._eventEmitter.emit("viewLost");const e=this.player?.canvas;e&&e.parentElement?.removeChild(e),this.player.pause(),this.player.dispose(),this._gestureHandler.dispose(),setTimeout(async()=>{this.initPlayer(t.config.mode),this._pageDataUtils=new qr(this.player,this._playerContainer,this._eventEmitter,this),this._gestureHandler=new un(this._container),await this.runByPageData(this.pageData),this._eventEmitter.emit("viewRebuildFinish")},300)})}setSDKMode(e){if(e===t.config.mode)return;t.config.mode=e;const[i,s]="template"===e?[this._container.offsetWidth,this._container.offsetHeight]:[document.documentElement.clientWidth,document.documentElement.clientHeight];if(!this._playerContainer){const t=document.createElement("div");this._container.appendChild(t),this._playerContainer=t,this._playerContainer.id="player-container",this._playerContainer.style.position="absolute"}"editor"===e&&(this._playerContainer.style.left="0px",this._playerContainer.style.top="0px"),this._playerContainer.style.width=`${i}px`,this._playerContainer.style.height=`${s}px`,this.player??(this.player=new g({container:this._playerContainer,interactive:!0,pixelRatio:2,env:"editor"})),this.player.resize()}async getInitParam(t){const e=JSON.parse(JSON.stringify(t));if("editor"===e.mode){const t=[this._playerContainer.offsetWidth,this._playerContainer.offsetHeight];return{scene:hr(t),viewParams:[{size:t,export:{audioEnable:!1}}],options:{asyncMode:!1,safeAreaPreview:!1,adsorption:!0}}}{if("string"==typeof e.scene)try{const t=await fetch(e.scene,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}, statusText: ${t.statusText}`);const i=await t.json(),s=i.compositions.find(t=>t.id===i.compositionId)??i.compositions[0],r=e.viewParams?.length?e.viewParams:[{size:s.previewSize??[750,1624],export:{audioEnable:!1}}];return{...e,scene:i,viewParams:r}}catch(t){throw new Error(`Failed to fetch scene data from ${e.scene}: ${t instanceof Error?t.message:String(t)}`)}const t=e.scene.compositions.find(t=>t.id===e.scene.compositionId)??e.scene.compositions[0],i=e.viewParams?.length?e.viewParams:[{size:t.previewSize??[750,1624],export:{audioEnable:!1}}];return{...e,scene:e.scene,viewParams:i}}}initExporter(t){this.initExporterEnabled&&(this._exporter=new oo(t),this._exporter.on("progress",t=>{this._eventEmitter.emit("exportProgress",t)}),this._exporter.on("done",(t,e,i)=>{this._eventEmitter.emit("exportDone",t,e,i)}),this._exporter.on("complete",(t,e,i,s)=>{this._eventEmitter.emit("exportComplete",t,e,i,s)}))}async initSDK(e){var i;const{scene:s,viewParams:r,options:n}=e,o=[];if(t.config.pageConfig.staticPreview){const t=JSON.parse(JSON.stringify(s)),e=t.compositions.find(e=>e.id===t.compositionId)??t.compositions[0];if(e){const[i,s]=e.previewSize??[1080,1920],r=e.duration??0;o.push({size:[i,s],safeArea:[0,0,0,0],previewSafeAreas:[],id:0,scene:t,ignoreInteraction:!0,export:{time:r,audioEnable:!1}})}}for(let e=0;e<r.length;e++){const n=r[e];if(!n)continue;let a=JSON.parse(JSON.stringify(s));const c=a.compositions.find(t=>t.id===a.compositionId)??a.compositions[0];w(c);const h=c.previewSize??[750,1624],l=h,p=n.size??h;c.previewSize=p;const d=c.duration??0,m=n.safeArea??[0,0,0,0];t.config.sizeAdaptConfig.enabled&&(a=await this._sizeAdapt.adjustment(a,d,l,p,m,n.adaptionDirection)),(i=n.export).time??(i.time=d),o.push({...n,size:p,safeArea:m,previewSafeAreas:[...n.previewSafeAreas??[]],id:e+1,scene:a,ignoreInteraction:!1})}const a=o[0]?.scene;if(!a)return void console.warn("SDK need one view property at least.");const c=a.compositions.find(t=>t.id===a.compositionId)??a.compositions[0],h={...n,zoom:1,translation:[0,0],asyncMode:n.asyncMode??!1},l=(c?.duration??0)-.1,p=t.config.pageConfig.staticPreview?1:0;this._pageData={scene:JSON.parse(JSON.stringify(s)),time:l,property:h,activeData:{view:o[p].id,selectedItems:[]},items:[],viewProperties:o,playing:!1},this._pageDataUtils.init(),await this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),this._gestureHandler.ignoreInteraction=!!o[1]?.ignoreInteraction,t.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(this._pageData.activeData.view),this._pageDataUtils.refreshPageTime(l)}async run(e){this.setSDKMode(e.mode),t.config.pageConfig.staticPreview="template"===e.mode&&t.config.pageConfig.staticPreview;const i=await this.getInitParam(e);await this.initSDK(i),this._eventEmitter.emit("pageDataChange",this.pageData),this.initExporter(t.config.exportConfig)}getActiveItems(){return w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.selectedItems}setPreSelectedItem(t){w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=t}getPreSelectedItem(){return w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem??""}setSelectedItems(t){this._pageDataUtils.clearPreSelectedItem(),this._pageDataUtils.clearSelectedItems(),this._pageDataUtils.addSelectedItems([...t])}async setItemProperty(t){w(this._pageData,"You must call SDK#run() first");const e=this.getViewProperty(this._pageData.activeData.view??0)?.ignoreInteraction;e?console.warn("Static scene cannot change."):(await this._pageDataUtils.setItemProperty(t),this._gestureHandler.render(),this._eventEmitter.emit("pageDataChange",this.pageData))}async generateScreenShot(t,e=[300,400],i,s){w(this._pageData,"You must call SDK#run() first");const r=this.getViewProperty(t);if(!r)return"";const{scene:n,size:[o,a]}=r,c=n.compositionId,h=n.compositions.find(t=>t.id===c);i??(i=h?.duration??0);const l=JSON.parse(JSON.stringify(n));return await this._screenShot.generate(l,[o,a],e,i,s)}async switchScene(t){if(w(this._pageData,"You must call SDK#run() first"),t===this._pageData.activeData.view)return;this._isSwitchScene=!0;const e=this._pageData.viewProperties[t];if(e){const t=this._pageData.playing;this._pageData.activeData={view:e.id,selectedItems:[],preSelectedItem:void 0},await this._pageDataUtils.loadScene(e.id),t&&(this._pageData.playing=t,this.player.gotoAndPlay(this._pageData.time))}else console.warn("target scene does not exist.");this._eventEmitter.emit("selectedViewChange",t),this._eventEmitter.emit("pageDataChange",this.pageData),this._isSwitchScene=!1}getPageConfig(){return w(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,translation:this._pageData.property.translation}}setPageConfig(e){w(this._pageData,"You must call SDK#run() first");const{adsorption:i,safeAreaPreview:s,zoom:r}=this._pageData.property;this._pageData.property={...this._pageData.property,...e},this._pageData.property.zoom!==r&&this._pageDataUtils.setPageZoom(this._pageData.property.zoom),i!==e.adsorption&&(t.config.gestureHandlerConfig.adsorptionGizmoEnabled=e.adsorption),s!==e.safeAreaPreview&&(t.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaEnabled=e.safeAreaPreview),this._gestureHandler.render()}async setPlayProgress(t){w(this._pageData,"You must call SDK#run() first");const e=(this.player.getCompositions()[0]?.getDuration()??2)*t/100;this._pageData.time=e;!this.player.getCompositions().length&&(Qr(this.player),await this._pageDataUtils.loadScene(this._pageData.activeData.view??0));this._pageData.playing?this.player.gotoAndPlay(e):(this.player.gotoAndStop(e),this._eventEmitter.emit("progress",{duration:this.player.getCompositions()[0]?.getDuration()??2,time:e,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!0})),this._pageDataUtils.refreshPageTime(e)}getSDKItem(t){return this._pageDataUtils.getSDKItem(t)}getSDKItems(t){return t?t.map(t=>this.getSDKItem(t)).filter(t=>!!t):this.pageData?.items??[]}async setPlayState(t){w(this._pageData,"You must call SDK#run() first");const e="play"===t;if(this._pageData.playing!==e){if(this._pageData.playing=e,this._gestureHandler.ignoreInteraction=e,e){const t=this.player.getCompositions(),e=this.getViewProperty(this._pageData.activeData.view??0),i=JSON.parse(JSON.stringify(e.scene));await this.player.loadScene(i,{autoplay:!1}),this.player.gotoAndPlay(this._pageData.time),this.destroyCompositions(t)}else this.player.gotoAndStop(this._pageData.time);this._gestureHandler.render()}}getViewThumbnail(){return w(this._pageData,"You must call SDK#run() first"),this._pageData.viewProperties.map(async t=>({id:t.id,thumbnail:await this.generateScreenShot(t.id)}))}getViewScene(){return w(this._pageData,"You must call SDK#run() first"),this._pageData.viewProperties.map(t=>({id:t.id,thumbnail:t.scene}))}destroyCompositions(t){t.forEach(t=>{t.dispose();const e=this.player.getCompositions(),i=e.indexOf(t);i>-1&&e.splice(i,1)})}downloadByMediaBuffersOfExporter(t,e,i){w(this._exporter,"You must init exporter first"),this._exporter.downloadByMediaBuffers(t,e,i)}onExport(){t.config.exportConfig.enabled&&(w(this.pageData,"You must call SDK#run() first"),w(this._exporter,"You must init exporter first"),this._exporter.onExport(this.exportOptions))}cancelExport(){w(this._exporter,"You must init exporter first"),this._exporter.onCancel()}async loadPageData(t){w(this._pageData,"You must call SDK#run() first"),this._pageData.activeData={view:this._pageData.viewProperties[this._pageData.viewProperties.length-1].id,selectedItems:[],preSelectedItem:void 0},this._pageData.viewProperties.push(...t.viewProperties),this._pageDataUtils.init(),await this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),await this._pageDataUtils.loadScene(this.pageData?.activeData.view??0),this._eventEmitter.emit("pageDataChange",this.pageData)}async runByPageData(t){const e=JSON.parse(JSON.stringify(t));e.property.zoom=1,e.property.translation=[0,0],this._pageData=e,this._pageDataUtils.init(),await 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.pageData)}async reloadPageDataByScene(t){w(this._pageData,"You must call SDK#run() first");let e=JSON.parse(JSON.stringify(t));if("string"==typeof e)try{const t=await fetch(e,{mode:"cors",credentials:"omit",headers:{Accept:"application/json"}});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}, statusText: ${t.statusText}`);e=await t.json()}catch(t){throw new Error(`Failed to fetch scene data from ${e}: ${t instanceof Error?t.message:String(t)}`)}this._pageData.time=e.compositions.find(t=>t.id===e.compositionId)?.duration??2,this._pageData.viewProperties.forEach(t=>{t.scene=JSON.parse(JSON.stringify(e))}),this._pageDataUtils.init(),await 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(e,i){var s;w(this._pageData);const r=[],n=this._pageData.viewProperties[this._pageData.viewProperties.length-1]?.id??this._pageData.viewProperties.length-1;for(let o=0;o<e.length;o++){const a=e[o];if(!a)continue;let c=JSON.parse(JSON.stringify(i??this._pageData.scene));const h=c.compositions.find(t=>t.id===c.compositionId)??c.compositions[0];w(h);const{previewSize:l=[750,1624]}=h,p=l,d=a.size??l;h.previewSize=d;const m=h.duration??0,u=a.safeArea??[0,0,0,0];t.config.sizeAdaptConfig.enabled&&(c=await this._sizeAdapt.adjustment(c,m,p,d,u,a.adaptionDirection)),(s=a.export).time??(s.time=m),r.push({...a,size:d,safeArea:u,previewSafeAreas:[...a.previewSafeAreas??[]],id:n+1+o,scene:c,ignoreInteraction:!1})}this._pageData.viewProperties.push(...r),this._eventEmitter.emit("pageDataChange",this.pageData)}async deleteViewParams(t){t.sort((t,e)=>t-e);for(let e=0;e<t.length;e++){const i=t[e];w(this._pageData);const s=i-e,r=this._pageData.viewProperties.findIndex(t=>t.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 n=this._pageData.activeData.view??0;s===n?(this._pageData.activeData.view=0,await this._pageDataUtils.loadScene(0)):s<n&&(this._pageData.activeData.view=n-1),this._pageData.viewProperties.forEach(t=>{t.id>s&&(t.id-=1)})}this._eventEmitter.emit("selectedViewChange",this._pageData?.activeData?.view??0),this._eventEmitter.emit("pageDataChange",this.pageData)}setExportParam(t,e){w(this._pageData),this._pageData.viewProperties.forEach(i=>{void 0!==e&&i.id!==e||Object.assign(i.export,t)})}setPageZoom(t,e,i){w(this._pageData),this._pageData.property.zoom=t,this._pageDataUtils.setPageZoom(this._pageData.property.zoom,e,i),this._gestureHandler.render()}setPageMove(t){w(this._pageData),this._pageData.property.translation=t.toArray(),this._pageDataUtils.setPageMove(t.clone()),this._gestureHandler.render()}setStaticPreviewEnabled(e){t.config.pageConfig.staticPreview=e}setStaticPreviewName(e){t.config.pageConfig.staticPreviewName=e}setAsyncEnabled(e){t.config.pageConfig.asncMode=e}setGroupVisibleEnabled(e){t.config.pageConfig.groupVisible=e}addFilterItemNames(e){"string"==typeof e?Q(t.config.pageConfig.filterItemNames,e):e.forEach(e=>{Q(t.config.pageConfig.filterItemNames,e)})}setPreferenceBackgroundColor(e){t.config.gestureHandlerConfig.preferenceGizmoConfig.markColor=e[0]<<16|e[1]<<8|e[2],t.config.gestureHandlerConfig.preferenceGizmoConfig.markAlpha=e[3]??.3,this._gestureHandler.render()}setSafeAreaColor(e){t.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaBoxColor=e[0]<<16|e[1]<<8|e[2],t.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaBoxAlpha=e[3]??.3,this._gestureHandler.render()}setSizeAdaptEnabled(e){t.config.sizeAdaptConfig.enabled=e}setScreenShotEnabled(e){t.config.screenShotConfig.enabled=e}setExportConfig(e){const i=ps({},t.config.exportConfig,e);t.config.exportConfig=i,this._exporter?this._exporter.setOptions(i):this.initExporter(i)}setSelectorGizmoPreSelectConfig(e,i){void 0!==e&&(t.config.gestureHandlerConfig.selectorGizmoConfig.preSelectedColor=e),void 0!==i&&(t.config.gestureHandlerConfig.selectorGizmoConfig.preSelectedWidth=i),this._gestureHandler.render()}setTranformGizmoWireframeConfig(e){void 0!==e.wireframeAlpha&&(t.config.gestureHandlerConfig.transformGizmoConfig.wireframeAlpha=e.wireframeAlpha),void 0!==e.wireframeColor&&(t.config.gestureHandlerConfig.transformGizmoConfig.wireframeColor=e.wireframeColor),void 0!==e.wireframeWidth&&(t.config.gestureHandlerConfig.transformGizmoConfig.wireframeWidth=e.wireframeWidth),this._gestureHandler.render()}getSDKConfig(){return t.config}setSDKConfig(e){const i=Object.assign({},t.config);this._eventEmitter.emit("sdkConfigChange",i,e),t.config=e}setSDKBackground(t,e){switch(t){case"color":this.backgroundManager.setColorBackground(e??"");break;case"image":e&&this.backgroundManager.setImageBackground(e);break;case"chess-board":case"dot-board":this.backgroundManager.applyPreset(t,e)}}async addSpriteItem(t,e){return await this._pageDataUtils.addSpriteItem(t,!1,e)}async addVideoItem(t,e){return await this._pageDataUtils.addVideoItem(t,!1,e)}openPictureCutGizmo(){this._gestureHandler.openPictureCutGizmo(),this._gestureHandler.render()}closePictureCutGizmo(){this._gestureHandler.closePictureCutGizmo()}getCutInfo(){return this._gestureHandler.getCutInfo()}setCutBox(t,e){return this._gestureHandler.setCutBox(t,e)}openPictureExpandGizmo(){this._gestureHandler.openPictureExpandGizmo(),this._gestureHandler.render()}closePictureExpandGizmo(){this._gestureHandler.closePictureExpandGizmo()}getExpandInfo(){return this._gestureHandler.getExpandInfo()}setExpandBox(t,e){return this._gestureHandler.setExpandBox(t,e)}openMaskGizmo(t){this._gestureHandler.openMaskGizmo(t),this._gestureHandler.render()}clearMaskGizmo(){this._gestureHandler.clearMaskGizmo()}closeMaskGizmo(){this._gestureHandler.closeMaskGizmo()}getMask(){return this._gestureHandler.getMask()}setMaskGizmoConfig(t){this._gestureHandler.setMaskGizmoConfig(t)}setMaskGizmoMode(t){this._gestureHandler.setMaskGizmoMode(t)}undoMaskGizmo(){return this._gestureHandler.maskGizmoUndo()}redoMaskGizmo(){return this._gestureHandler.maskGizmoRedo()}get canUndoMaskGizmo(){return this._gestureHandler.maskGizmoCanUndo}get canRedoMaskGizmo(){return this._gestureHandler.maskGizmoCanRedo}clearMaskGizmoUndoRedo(){this._gestureHandler.clearMaskGizmoUndoRedo()}undoPictureCutGizmo(){return this._gestureHandler.pictureCutGizmoUndo()}redoPictureCutGizmo(){return this._gestureHandler.pictureCutGizmoRedo()}get canUndoPictureCutGizmo(){return this._gestureHandler.pictureCutGizmoCanUndo}get canRedoPictureCutGizmo(){return this._gestureHandler.pictureCutGizmoCanRedo}clearPictureCutGizmoUndoRedo(){this._gestureHandler.clearPictureCutGizmoUndoRedo()}openLoadingGizmo(t,e){this._gestureHandler.openLoadingGizmo(t,e)}updateLoadingGizmo(t,e){this._gestureHandler.updateLoadingGizmo(t,e)}closeLoadingGizmo(t){this._gestureHandler.closeLoadingGizmo(t)}groupItems(t,e){return this._pageDataUtils.addGroupItem(t,e)}setItemParent(t,e){this._pageDataUtils.setItemParent(t,e)}deleteItemParent(t,e){this._pageDataUtils.deleteItemParent(t,e)}async addTextItem(t,e){return await this._pageDataUtils.addTextItem(t,e)}async addItemByCreateInfos(t,e=!1){if(e){return await this._pageDataUtils.asyncAddItemByCreateInfos(t)}return await this._pageDataUtils.addItemByCreateInfos(t)}deleteItems(t){if(w(this._pageData,"You must call SDK#run() first"),Array.isArray(t)){t.forEach(t=>{this._pageDataUtils.deleteItem(t)});const e=this._pageData.activeData.selectedItems.filter(e=>!t.includes(e));this._pageData.activeData.selectedItems=[...e],this._eventEmitter.emit("selectedItemChange",e)}else{this._pageDataUtils.deleteItem(t);const e=this._pageData.activeData.selectedItems.filter(e=>e!==t);this._pageData.activeData.selectedItems=[...e],this._eventEmitter.emit("selectedItemChange",e)}this._pageDataUtils.interactionUtils.refreshViewParam(),this._pageDataUtils.interactionUtils.refreshCameraParam();const e=this._pageDataUtils.getCurrentComposition();this._pageDataUtils.addSDKItemsByItems(this._pageData.items,e.items),this._eventEmitter.emit("pageDataChange",this._pageData)}getItemCreateInfo(t){return this._pageDataUtils.getItemCreateInfo(t,!1)}getItemCreateInfos(t){const e=[];return t??(t=this._pageData?.items.map(t=>t.id)??[]),t.forEach(t=>{const i=this._pageDataUtils.getItemCreateInfo(t,!0);i&&e.push(i)}),e}async createScreenShotSceneByIds(t,e=0){const i=this._pageDataUtils.createScreenShotSceneByIds(t);if(!i)return;const s=i?.compositions[0]?.previewSize??[750,1624];return await this._screenShot.generate(i,s,s,e)}async createScreenShotByFrame(t){const e=this.getSDKItem(t);if(!zt(e))return void console.warn(`Item ${t} is not frame item, check your input.`);const i=this.getItemBoxById(e.id),s=this.getItemCreateInfos([...e.children]),r=this._pageDataUtils.createSceneByCreateInfos(s,i.getSize().toArray(),"画板",i.getCenter().toArray());if(!r)return void console.warn("Target scene is not existed.");const n=r?.compositions[0]?.previewSize??[750,1624];return await this._screenShot.generate(r,n,n,0)}async createScreenShotByEffects(t){const e=this.getSDKItem(t);if(!St(e))return void console.warn(`Item ${t} is not a effects item.`);const i=e.effects,s=this._pageDataUtils.getEffectsItemPlayTime(t)??0,r=[e.width,e.height];return await this._screenShot.generate(i,r,r,s)}getChildrenIds(t){return this._pageDataUtils.getChildrenIds(t)}updateItemOrder(t,e){w(this._pageData,"You must call SDK#run() first");const i=this.getViewProperty(this._pageData.activeData.view??0)?.ignoreInteraction;i?console.warn("Static scene cannot change."):(this._pageDataUtils.updateItemOrder(t,e),this._gestureHandler.render())}exportJSON(t){w(this._pageData,"You must call SDK#run() first");const e=[];if(Array.isArray(t))t.forEach(t=>{const i=this.getViewProperty(t);i?e.push(i.scene):console.warn(`view id ${t} is not existed.`)});else if(void 0!==t){const i=this.getViewProperty(t);i?e.push(i.scene):console.warn(`view id ${t} is not existed.`)}else e.push(...this._pageData.viewProperties.map(t=>t.scene));return e}getViewBoxById(t){return this._pageDataUtils.getViewBoxById(t)}setItemExtension(t,e){w(this._pageData,"You must call SDK#run() first");const i=this._pageDataUtils.getSDKItem(t);return i?(Object.entries(e).forEach(([t,e])=>{i.setExtension(t,e)}),this._eventEmitter.emit("pageDataChange",this.pageData),!0):(console.warn(`Item ${t} not found`),!1)}getItemExtension(t,e){w(this._pageData,"You must call SDK#run() first");const i=this._pageDataUtils.getSDKItem(t);if(!i)return void console.warn(`Item ${t} not found`);if(!e||0===e.length)return i.getAllExtension();const s={};return e.forEach(t=>{i.hasExtension(t)&&(s[t]=i.getExtension(t))}),s}deleteItemExtensions(t,e){w(this._pageData,"You must call SDK#run() first");const i=this._pageDataUtils.getSDKItem(t);return i?(e.forEach(t=>{i.deleteExtension(t)}),this._eventEmitter.emit("pageDataChange",this.pageData),!0):(console.warn(`Item ${t} not found`),!1)}hasItemExtension(t,e){w(this._pageData,"You must call SDK#run() first");const i=this._pageDataUtils.getSDKItem(t);return!!i&&i.hasExtension(e)}getItemExtensionKeys(t){w(this._pageData,"You must call SDK#run() first");const e=this._pageDataUtils.getSDKItem(t);if(e)return e.getExtensionKeys();console.warn(`Item ${t} not found`)}getViewProperty(t){return this._pageDataUtils.getViewProperty(t)}pageMove(t){this._pageDataUtils.pageMove(new A(...t))}pageZoom(t,e){this._pageDataUtils.pageZoom(t,e?new A(...e):void 0)}setPictureCutGizmoLockScale(t){this._gestureHandler.setPictureCutGizmoLockScale(t)}setPictureExpandGizmoLockScale(t){this._gestureHandler.setPictureExpandGizmoLockScale(t)}viewportFit(t,e){this._pageDataUtils.viewportFit(t,e)}getItemBoxById(t){return this._pageDataUtils.getItemBoxById(t)}async setItemFontFamily(t,e,i){await this._pageDataUtils.setItemFontFamily(t,e,i),this._eventEmitter.emit("itemPropertyChange",{id:t,propertyKeys:["fontFamily","fontUrl"]})}createSceneByCreateInfos(t,e){return this._pageDataUtils.createSceneByCreateInfos(t,e.size,e.name)}setSpriteSize(t,e){this._pageDataUtils.setSpriteSize(t,e),this._gestureHandler.render()}async setItemPropertyByCreateInfo(t){await this._pageDataUtils.changeItemPropertyByCreateInfo(t),this._gestureHandler.render()}setTransformGizmoLockScale(t){this._gestureHandler.setTransformGizmoLockScale(t)}getViewBoxByBox(t){return this._pageDataUtils.getViewBoxByBox(t)}openSpriteTextEditGizmo(t){this._gestureHandler.openSpriteTextGizmo(t),this._gestureHandler.render()}closeSpriteTextEditGizmo(){this._gestureHandler.closeSpriteTextEditGizmo()}setSpriteTextSelectedIndex(t,e){this._gestureHandler.setSpriteTextSelectedIndex(t,e)}setSpriteTextSelectedText(t,e,i){this._gestureHandler.setSpriteTextSelectedText(t,e,i)}getBoundingBoxByItemCreateInfo(t){return this._pageDataUtils.getBoundingBoxByCreateInfo(t)}getBoundingBoxByItemCreateInfos(t){return this._pageDataUtils.getBoundingBoxByCreateInfos(t)}setSpriteTextChangedState(t,e,i){this._gestureHandler.setSpriteTextChangedState(t,e,i)}setSpriteTextEditState(t,e,i){this._gestureHandler.setSpriteTextEditState(t,e,i)}getVideoItemPlayTime(t){return this._pageDataUtils.getVideoItemPlayTime(t)}setVideoItemPlayTime(t,e){this._pageDataUtils.setVideoItemPlayTime(t,e)}getEffectsItemPlayTime(t){return this._pageDataUtils.getEffectsItemPlayTime(t)}setEffectsItemPlayTime(t,e){this._pageDataUtils.setEffectsItemPlayTime(t,e)}setEffectsResource(t,e){this._pageDataUtils.setEffectsResource(t,e)}getPixelPositionByViewPosition(t){return this._pageDataUtils.getPixelPositionByViewPosition(t)}hitTest(t,e){return this._gestureHandler.selectorGizmo?.hitTest(new A(t,e))}setInteractType(t){this._gestureHandler.setInteractType(t),this._gestureHandler.render()}getInteractType(){return this._gestureHandler.interactType}makeItemAlign(t,e){this._pageDataUtils.makeItemAlign(t,e),this._gestureHandler.render()}makeItemDistribute(t,e){this._pageDataUtils.makeItemDistribute(t,e),this._gestureHandler.render()}addGeneratorItem(t){return this._pageDataUtils.addGeneratorItem(t)}async addEffectsItem(t){return await this._pageDataUtils.addEffectsItem(t)}async addFrameItem(t){return await this._pageDataUtils.addFrameItem(t)}moveItemsToFrame(t,e){this._pageDataUtils.moveItemsToFrame(t,e)}moveItemsOutOfFrame(t,e){this._pageDataUtils.moveItemsOutOfFrame(t,e)}async setGeneratorResource(t,e){return w(this._pageData,"You must call SDK#run() first"),this._pageDataUtils.setGeneratorResource(t,e)}setGeneratorResourceFromObject(t){this.setGeneratorResource(t.itemId,t.url)}setVideoGeneratorResource(t){return this.setGeneratorResource(t.itemId,t.url)}setSpriteGeneratorResource(t){return this.setGeneratorResource(t.itemId,t.url)}setItemLockState(t,e){this._pageDataUtils.setItemLockState(t,e)}getItemLockState(t){return this._pageDataUtils.getItemLockState(t)}openItemCreateGizmo(t){this._gestureHandler.openItemCreateGizmo(t),this._gestureHandler.render()}closeItemCreateGizmo(){this._gestureHandler.closeItemCreateGizmo()}openTextGizmo(t){this._gestureHandler.openTextGizmo(t)}closeTextGizmo(){this._gestureHandler.closeTextGizmo()}setItemName(t,e){this._pageDataUtils.setItemName(t,e)}setSafeAreaPreviewVisible(t,e,i){const s=this.getViewProperty(t);s?.previewSafeAreas.forEach(t=>{e in t&&(t.visible=i)}),this._eventEmitter.emit("pageDataChange",this.pageData)}resizeFrameItem(t,e,i){const s=i?new K(i[0],i[1],0):void 0;this._pageDataUtils.resizeFrameItem(t,e,s)}applyFrameAutoLayout(t){this._pageDataUtils.applyFrameAutoLayout(t)}};c(ho,"config",{mode:"template",pageConfig:{asncMode:!1,minZoom:.01,maxZoom:20,staticPreview:!0,staticPreviewName:"标准模板",filterItemNames:["ModelPluginItem"],groupVisible:!0},asyncLoadConfig:{enabled:!0,loadingTextureUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*BzgbTb8dBhoAAAAARwAAAAgAev-aAQ/original"},screenShotConfig:{enabled:!0,defaultBackgroundColor:[255,255,255,0]},exportConfig:{enabled:!0,mediaType:"MP4",loggerInTranscoding:!1},sizeAdaptConfig:{enabled:!0},gestureHandlerConfig:{enabled:!0,adsorptionGizmoEnabled:!0,adsorptionGizmoConfig:{lineWidth:.8,lineColor:775935,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:{videoPreSelectedPlay:!0,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,pictureLogoUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*F2wVS7x0MfIAAAAAQBAAAAgAev-aAQ/original",groupLogoUrl:"https://mdn.alipayobjects.com/huamei_ppzin5/afts/img/Yo69Sr7boqYAAAAAH3AAAAgADjdkAQFr/original",textLogoUrl:"https://mdn.alipayobjects.com/huamei_ppzin5/afts/img/Yo69Sr7boqYAAAAAH3AAAAgADjdkAQFr/original",videoLogoUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*w1fnS4mq0VgAAAAAQCAAAAgAev-aAQ/original",frameLogoUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*DRF_RpndkjUAAAAAQDAAAAgAev-aAQ/original",effectsLogoUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*RMewR4ruUnYAAAAAQGAAAAgAev-aAQ/original",sizeTextColor:6710886,nameTextColor:6710886,infoShowEnabled:!0},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,gridLineWidth:1,gridLineColor:16777215,gridLineAlpha:1,gridCount:2},pictureExpandGizmoEnabled:!1,pictureExpandGizmoConfig:{maskColor:6960383,maskAlpha:.2,expandBoxLineWidth:2,expandBoxLineColor:6960383,expandBoxLineAlpha:1,expandBoxCornerRadius:5,expandBoxCornerLineWidth:2,expandBoxCornerLineColor:6960383,expandBoxCornerLineAlpha:1,expandBoxCornerFillColor:16777215,scaleInteractionDistance:8,directionScaleInteractionDistance:5,gridLineWidth:1,gridLineColor:16777215,gridLineAlpha:1,gridCount:2},textGizmoEnbaled:!0,textGizmoConfig:{rotateInteractMode:"corner",boxLineWidth:2,boxLineColor:7026175,rotationCornerWidth:30,rotationCornerTexture:"https://mdn.alipayobjects.com/huamei_ppzin5/afts/img/Zc9ZSqNEjnQAAAAAQBAAAAgADjdkAQFr/original",rotationTopCenterInteractionDistance:14,rotationCornerRadius:5,rotationCornerFillColor:16777215,rotationCornerStrokeWidth:2,rotationCornerStrokeColor:7026175,rotationCornerInteractionDistance:14,scaleCornerRadius:5,scaleCornerFillColor:16777215,scaleCornerStrokeWidth:2,scaleCornerStrokeColor:7026175,scaleInteractionDistance:7,widthScaleInteractionDistance:4,wireframeColor:16711680,wireframeAlpha:1,wireframeWidth:1.5},maskGizmoEnabled:!1,maskGizmoConfig:{brushSize:20,brushColor:6960383,brushAlpha:.5,maskColor:65280,maskAlpha:1,boxLineWidth:1,boxLineColor:6960383,boxLineAlpha:1},spriteTextEditGizmoEnabled:!1,spriteTextEditGizmoConfig:{textColor:16777215,preSelectedTextColor:16777215,boxLineWidth:3,dashLineDash:8,dashLineGap:8,editBoxAlpha:.15,editBoxColor:3900150,editBoxLineAlpha:1,editBoxLineColor:3900150,editBoxPreSelectedAlpha:.25,editBoxPreSelectedColor:3900150,editBoxLinePreSelectedAlpha:1,editBoxLinePreSelectedColor:3900150,hasChangedEditBoxAlpha:.2,hasChangedEditBoxColor:2278750,hasChangedEditBoxLineAlpha:1,hasChangedEditBoxLineColor:2278750,hasChangedEditBoxPreSelectedAlpha:.3,hasChangedEditBoxPreSelectedColor:2278750,hasChangedEditBoxLinePreSelectedAlpha:1,hasChangedEditBoxLinePreSelectedColor:2278750,editBoxSelectedAlpha:.6,editBoxSelectedColor:16776960},iconGizmoEnabled:!0,iconGizmoConfig:{autoShow:!0,videoPlayUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*ORMmSYYHIHUAAAAAJbAAAAgAev-aAQ/original",videoPlayShift:[25,25],videoPlayWidth:30,videoPlayHeight:30,imageGeneratorUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*bYB-TIEWLBkAAAAAQGAAAAgAev-aAQ/original",videoGeneratorUrl:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*6cTFT44CuKEAAAAAQCAAAAgAev-aAQ/original",generatorWidth:200,generatorHeight:200},itemCreateGizmoEnabled:!1,itemCreateGizmoConfig:{frameBorderColor:2193663,frameBorderWidth:1,frameBorderAlpha:.8,frameFillColor:2193663,frameFillAlpha:.15,frameChildBoxAlpha:.35,frameChildBoxColor:2193663},autoLayoutIndicatorConfig:{lineWidth:2,lineColor:3900150}},itemConfig:{frameConfig:{layoutGap:20,layoutPadding:100,autoLayoutBackgroundColor:[.7,.7,.7,1],freeLayoutBackgroundColor:[1,1,1,1]},generatorConfig:{backgroundColor:[.41568,.2039,1,.08]}}});var lo=ho;export{nr as BackgroundManager,pt as BaseItem,W as Box2,Vr as DefaultVFXItems,Ct as EffectsItem,Dt as FrameItem,vt as GeneratorItem,wt as GroupItem,ar as InteractionUtils,bt as ItemOrderAction,qr as PageDataUtils,lo as SDK,z as SDKItemType,Er as SafeConstraint,mt as SpriteItem,gt as TextItem,Or as VFXItemFactory,A as Vector2,yt as VideoItem,Pr as addCompositionItemByComposition,fr as addItemInfoToScene,$s as adjustOtherElementsLayoutInfo,Q as arrAdd,rt as assertExist,nt as asserts,Vs as autoLayout,Hs as calculateAutoLayoutIndicatorLine,Ns as calculateAutoLayoutPositionByMouse,Os as calculateDisplacement,Ks as calculateInsertPositionFromLayout,Ws as calculateLayoutDisplacements,xr as clearItemParentInfo,gr as createCompositionItemJSON,cr as createFrameCompositionScene,dr as createNullItemJSON,At as createSDKItem,lr as createSpriteItemJSON,mr as createTextItemJSON,pr as createVideoGeneratorItemJSON,ur as createVideoItemJSON,tt as deepClone,q as deepEquals,Sr as deleteCompositionFromScene,Cr as deleteCompositionItemFromScene,wr as deleteItemInfoFromScene,ct as downloadBlob,_r as extractSubCompositionToScene,Br as fixStandardJSON,C as generateGUID,hr as getBasicScene,et as getColorByNormalizeColor,Tr as getCompositionDataByRefCompositionItemId,Ar as getCompositionIdByRefCompositionItemId,it as getNormalizeColorByColor,vr as getTextureUrlById,st as getTransformRatioByViewAndCamera,ht as getUniqueName,dt as isBaseItem,St as isEffectsItem,lt as isEqual,zt as isFrameItem,Pt as isGeneratorItem,It as isGroupItem,Z as isObj,ut as isSpriteItem,ft as isTextItem,xt as isVideoItem,at as loadScriptAsync,ot as logger,zr as moveItemBetweenCompositions,Ir as removeItemInfoFromScene,br as resetSubCompositionItemId,yr as setItemJSONParentId,Dr as setJSONItemName,m as spec,js as updateItemLayoutInfo};
2
2
  /*! Bundled license information:
3
3
 
4
4
  lodash-es/lodash.js: