@vvfx/sdk 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +14 -1
- package/dist/index.d.cts +22 -9
- package/dist/index.d.ts +22 -9
- package/dist/index.global.js +12 -1
- package/dist/index.js +14 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1,14 @@
|
|
|
1
|
-
"use strict";var t,e=Object.create,i=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,r=Object.getPrototypeOf,n=Object.prototype.hasOwnProperty,o=t=>{throw TypeError(t)},c=(t,e)=>{for(var s in e)i(t,s,{get:e[s],enumerable:!0})},h=(t,e,r,o)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let c of a(e))n.call(t,c)||c===r||i(t,c,{get:()=>e[c],enumerable:!(o=s(e,c))||o.enumerable});return t},l=(t,e,i)=>(h(t,e,"default"),i&&h(i,e,"default")),p=(t,s,a)=>(a=null!=t?e(r(t)):{},h(!s&&t&&t.__esModule?a:i(a,"default",{value:t,enumerable:!0}),t)),d=(t,e,s)=>((t,e,s)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s),m=(t,e,i)=>e.has(t)||o("Cannot "+i),g=(t,e,i)=>(m(t,e,"read from private field"),i?i.call(t):e.get(t)),u=(t,e,i)=>e.has(t)?o("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,i),y=(t,e,i,s)=>(m(t,e,"write to private field"),s?s.call(t,i):e.set(t,i),i),f={};c(f,{Box2:()=>F,ItemOrderAction:()=>x,SDK:()=>$e,Vector2:()=>D,generateGUID:()=>w.generateGUID,spec:()=>w.spec}),module.exports=(t=f,h(i({},"__esModule",{value:!0}),t));var x=(t=>(t[t.BringToFront=0]="BringToFront",t[t.SendToBack=1]="SendToBack",t[t.BringForward=2]="BringForward",t[t.SendBackward=3]="SendBackward",t))(x||{}),w=(require("@galacean/effects"),require("@galacean/effects")),I=(require("@galacean/effects-plugin-rich-text"),require("@galacean/effects-plugin-rich-text")),v=(require("@galacean/effects-plugin-model"),require("@galacean/effects-plugin-multimedia"),require("@galacean/effects-plugin-multimedia")),P=(require("@galacean/effects-plugin-spine"),require("@galacean/effects-plugin-ffd"),require("@pixi/app")),C=class{constructor(){d(this,"type"),d(this,"active"),this.type="null",this.active=!1}get interactive(){return this.active}set interactive(t){this.active=t}},D=class t extends w.math.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:a}=e;if(0===i)return{d:(new t).subtractVectors(this,s).length(),t:0};const r=b(((this.x-s.x)*(a.x-s.x)+(this.y-s.y)*(a.y-s.y))/i,0,1);return{d:(new t).subtractVectors(this,e.at(r)).length(),t:r}}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}rotateAround(t,e){const i=Math.cos(e),s=Math.sin(e),a=this.x-t.x,r=this.y-t.y;return this.x=a*i-r*s+t.x,this.y=a*s+r*i+t.y,this}},S=1e-6;function b(t,e,i){const s=isNaN(e)?-1/0:e,a=isNaN(i)?1/0:i,r=Math.min(s,a),n=Math.max(s,a);return Math.min(Math.max(t,r),n)}var z=Math.PI/180,E=180/Math.PI;function A(t){return Math.atan2(-t.y,-t.x)+Math.PI}function T(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 _(t,e,i=Math.round){if(Number.isInteger(t))return t;const s=Math.pow(10,e);return i(t*s)/s}function B(t){let e,i=0;return t.forEach((t,s)=>{if(0===s)e=Math.abs(t);else{const a=Math.abs(t);e<a&&(e=a,i=s)}}),i}function k(t,e){return Math.abs(t-e)<S||t===1/0&&e===1/0||t===-1/0&&e===-1/0}function M(t){return isNaN(t)||Math.abs(t)<S}function V(t,e){const i=new F,{min:s,max:a}=t,{min:r,max:n}=e,o=s.clone().add((new D).subtractVectors(a,s).multiply(r)),c=s.clone().add((new D).subtractVectors(a,s).multiply(n));return i.setFromVec2ArrayWithOutCorners([o,c]),i}function U(t,e){const i=new F,{min:s,max:a}=t,{min:r,max:n}=e,o=(new D).subtractVectors(r,s).divide((new D).subtractVectors(a,s)),c=(new D).subtractVectors(n,s).divide((new D).subtractVectors(a,s));return i.setFromVec2ArrayWithOutCorners([o,c]),i}var G=class t{constructor(t=new D,e=new D){d(this,"start",new D),d(this,"end",new D),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 D).subtractVectors(this.end,this.start).normalize()}getCenter(t=new D){return t.addVectors(this.start,this.end).multiply(.5)}delta(t=new D){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 D){return this.delta(e).multiply(t).add(this.start)}closestPointToPointParameter(t,e){const i=new D,s=new D;i.subtractVectors(t,this.start),s.subtractVectors(this.end,this.start);const a=s.dot(s);let r=s.dot(i)/a;return e&&(r=b(r,0,1)),r}closestPointToPoint(t,e,i=new D){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 D).subtractVectors(this.end,this.start).length()}crossWithLine(t){const e=this.delta(),i=t.delta(),s=(new D).subtractVectors(t.start,this.start),a=(new D).subtractVectors(t.end,this.start),r=(new D).subtractVectors(this.start,t.start),n=(new D).subtractVectors(this.end,t.start),o=s.cross(e),c=a.cross(e),h=r.cross(i),l=n.cross(i);return o*c<0&&h*l<0}},F=class t{constructor(t=new D(1/0,1/0),e=new D(-1/0,-1/0)){d(this,"corners",[]),d(this,"min",new D(1/0,1/0)),d(this,"max",new D(-1/0,-1/0)),this.min=t.clone(),this.max=e.clone(),this.isEmpty()?this.corners=[]:this.corners=[new D(e.x,t.y),e.clone(),new D(t.x,e.y),t.clone()]}set(t,e){return this.min.copyFrom(t),this.max.copyFrom(e),this.corners=[new D(e.x,t.y),e.clone(),new D(t.x,e.y),t.clone()],this}setFromVec2Array(t){return this.min=(new D).copyFrom(t[0]),this.max=(new D).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 D).copyFrom(t[0]),this.max=(new D).copyFrom(t[0]),t.forEach(t=>{this.min=this.min.min(t),this.max=this.max.max(t)}),this.corners.push(new D(this.max.x,this.min.y)),this.corners.push(new D(this.max.x,this.max.y)),this.corners.push(new D(this.min.x,this.max.y)),this.corners.push(new D(this.min.x,this.min.y)),this}setFromCenterAndSize(t,e){const i=(new D).copyFrom(e).multiply(.5);return this.min.copyFrom(t).subtract(i),this.max.copyFrom(t).add(i),this.corners=[new D(this.max.x,this.min.y),this.max.clone(),new D(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 D){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiply(.5)}getSize(t=new D){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],a=new D(s.x-i.x,s.y-i.y),r=new D(t.x-i.x,t.y-i.y);if(a.cross(r)<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 D){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 D){return e.copyFrom(t).clamp(this.min,this.max)}distanceToPoint(t){return(new D).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 D(this.max.x,this.min.y),this.max.clone(),new D(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 D(t,t):new D(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 G(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 G(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}},R=class t{constructor(t=new D,e=0){d(this,"center"),d(this,"radius"),this.center=t.clone(),this.radius=e}set(t,e){return this.center=(new D).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 D,this.radius=0,this}isEmpty(){return this.radius<=0}getCenter(t=new D){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}},L=class extends w.math.Quaternion{},W=class t extends w.math.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 L).setFromEuler(t))}applyQuaternion(e,i=new t){const{x:s,y:a,z:r,w:n}=e,{x:o,y:c,z:h}=this.subtract(i),l=n*o+a*h-r*c,p=n*c+r*o-s*h,d=n*h+s*c-a*o,m=-s*o-a*c-r*h;return this.x=l*n+m*-s+p*-r-d*-a+i.x,this.y=p*n+m*-a+d*-s-l*-r+i.y,this.z=d*n+m*-r+l*-a-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:a,y:r,z:n}=this.subtract(i);let o=1/(s[3]*a+s[7]*r+s[11]*n+s[15]);return o=isNaN(o)?1:o,this.x=(s[0]*a+s[4]*r+s[8]*n+s[12])*o+i.x,this.y=(s[1]*a+s[5]*r+s[9]*n+s[13])*o+i.y,this.z=(s[2]*a+s[6]*r+s[10]*n+s[14])*o+i.z,this}},H=class t extends w.math.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=W.ZERO){const a=this.elements,{x:r,y:n,z:o,w:c}=e,h=-s.x,l=-s.y,p=-s.z,d=r+r,m=n+n,g=o+o,u=r*d,y=r*m,f=r*g,x=n*m,w=n*g,I=o*g,v=c*d,P=c*m,C=c*g,{x:D,y:S,z:b}=i;return a[0]=(1-(x+I))*D,a[1]=(y+C)*D,a[2]=(f-P)*D,a[3]=0,a[4]=(y-C)*S,a[5]=(1-(u+I))*S,a[6]=(w+v)*S,a[7]=0,a[8]=(f+P)*b,a[9]=(w-v)*b,a[10]=(1-(u+x))*b,a[11]=0,a[12]=h*a[0]+l*a[4]+p*a[8]-h+t.x,a[13]=h*a[1]+l*a[5]+p*a[9]-l+t.y,a[14]=h*a[2]+l*a[6]+p*a[10]-p+t.z,this}extractRotation(t){const e=new W,i=t.elements,s=this.elements,a=1/e.setFromMatrixColumn(t,0).length(),r=1/e.setFromMatrixColumn(t,1).length(),n=1/e.setFromMatrixColumn(t,2).length();return s[0]=i[0]*a,s[1]=i[1]*a,s[2]=i[2]*a,s[3]=0,s[4]=i[4]*r,s[5]=i[5]*r,s[6]=i[6]*r,s[7]=0,s[8]=i[8]*n,s[9]=i[9]*n,s[10]=i[10]*n,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1,this}makeRotationFromEuler(t){const e=this.elements,i=t.x,s=t.y,a=t.z,r=Math.cos(i),n=Math.sin(i),o=Math.cos(s),c=Math.sin(s),h=Math.cos(a),l=Math.sin(a);if(t.order===w.math.EulerOrder.XYZ){const t=r*h,i=r*l,s=n*h,a=n*l;e[0]=o*h,e[4]=-o*l,e[8]=c,e[1]=i+s*c,e[5]=t-a*c,e[9]=-n*o,e[2]=a-t*c,e[6]=s+i*c,e[10]=r*o}else if(t.order===w.math.EulerOrder.YXZ){const t=o*h,i=o*l,s=c*h,a=c*l;e[0]=t+a*n,e[4]=s*n-i,e[8]=r*c,e[1]=r*l,e[5]=r*h,e[9]=-n,e[2]=i*n-s,e[6]=a+t*n,e[10]=r*o}else if(t.order===w.math.EulerOrder.ZXY){const t=o*h,i=o*l,s=c*h,a=c*l;e[0]=t-a*n,e[4]=-r*l,e[8]=s+i*n,e[1]=i+s*n,e[5]=r*h,e[9]=a-t*n,e[2]=-r*c,e[6]=n,e[10]=r*o}else if(t.order===w.math.EulerOrder.ZYX){const t=r*h,i=r*l,s=n*h,a=n*l;e[0]=o*h,e[4]=s*c-i,e[8]=t*c+a,e[1]=o*l,e[5]=a*c+t,e[9]=i*c-s,e[2]=-c,e[6]=n*o,e[10]=r*o}else if(t.order===w.math.EulerOrder.YZX){const t=r*o,i=r*c,s=n*o,a=n*c;e[0]=o*h,e[4]=a-t*l,e[8]=s*l+i,e[1]=l,e[5]=r*h,e[9]=-n*h,e[2]=-c*h,e[6]=i*l+s,e[10]=t-a*l}else if(t.order===w.math.EulerOrder.XZY){const t=r*o,i=r*c,s=n*o,a=n*c;e[0]=o*h,e[4]=-l,e[8]=c*h,e[1]=t*l+a,e[5]=r*h,e[9]=i*l-s,e[2]=s*l-i,e[6]=n*h,e[10]=a*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}},N=class extends w.math.Euler{constructor(t=0,e=0,i=0,s=w.math.EulerOrder.XYZ){super(t,e,i,s)}getInvertMatrixByEuler(){return(new H).makeRotationFromEuler(this).invert()}toDegreeVector3(t){return t?t.set(this.x*E,this.y*E,this.z*E):new W(this.x*E,this.y*E,this.z*E)}setFromDegreeVector3(t,e){return this.set(t.x*z,t.y*z,t.z*z,e??this.order)}},O=class t{constructor(t=0,e=new W(0,0,1)){d(this,"distance"),d(this,"normal");const i=e.length();0===i&&(this.normal=new W(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 W(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 w.math.Ray{constructor(t=new W,e=new W(1,0,0)){super(t,e),d(this,"origin"),d(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(M(e))return M(t.distanceToPoint(this.origin))?0:NaN;const i=(-this.origin.dot(t.normal)-t.distance)/e;return i>0?i:NaN}},K=class{constructor(t=new j){d(this,"ray"),this.ray=t.clone()}setFromCamera(t,e){const i=e.position,s=new W(t.x,t.y,.5).applyMatrix(e.inverseViewProjectMatrix).subtract(i).normalize();return this.ray.set(i,s),this}rayCastPlane(t){const e=new W,i=this.ray.rayCastPlane(t,e);if(!isNaN(i))return{distance:i,point:this.ray.at(i)}}},$=class extends C{constructor(t){super(),d(this,"type","control"),d(this,"_interactionType","mouse"),d(this,"active",!1),d(this,"lastPoint",new D),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"SDKUtils"),this.SDKUtils=t}get interactive(){return $e.config.gestureHandlerConfig.controlGizmoEnabled}set interactive(t){$e.config.gestureHandlerConfig.controlGizmoEnabled=!0}get interactionType(){return this._interactionType}set interactionType(t){t===this._interactionType&&(this._interactionType=t,this.refreshCursorResult())}get useCameraControl(){return"editor"===$e.config.mode}preparationAction(){}cancelPreparation(){}refreshResults(){}preAction(t){return"mouse"===this.interactionType&&(this.active=!0,this.lastPoint=new D(t.clientX,t.clientY)),this.refreshCursorResult(),"mouse"===this.interactionType?this.type:void 0}action(t){if(!$e.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:a,deltaY:r,offsetX:n,offsetY:o}=t,c=new D(a,r);if(e||i){const t=this.useCameraControl?new D(n,o):new D,e=-c.y*$e.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,a=new D(e,i),r=(new D).subtractVectors(a,this.lastPoint);r.x=s&&0!==r.y?Math.sqrt(r.x**2+r.y**2)*r.y/Math.abs(r.y):r.x,r.y=s?0:r.y,this.SDKUtils.pageMove(r),this.lastPoint.copyFrom(a)}}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[]}},Y=require("@pixi/graphics");function J(t,e){t.includes(e)||t.push(e)}function q(t){return"object"==typeof t&&!!t}function X(t,e){if(q(t)&&q(e)){if(Array.isArray(t)&&Array.isArray(e))return t.length===e.length&&t.every((t,i)=>X(t,e[i]));const i=[];for(const s in t)if(Object.prototype.hasOwnProperty.call(t,s)){if(!X(t[s],e[s]))return!1;i.push(s)}return Object.getOwnPropertyNames(e).length===i.length}return t===e}var Z=class extends C{constructor(t){super(),d(this,"result",{type:"null",box:new F}),d(this,"selectedItemIds",[]),d(this,"activeParentIds",[]),d(this,"cursorPoint",new D),d(this,"startPoint",new D),d(this,"firstClickPoint",new D),d(this,"graphics",new Y.Graphics),d(this,"pageDataUtils"),d(this,"clearResult",!1),d(this,"type","selector"),this.pageDataUtils=t}get interactive(){return $e.config.gestureHandlerConfig.selectorGizmoEnabled}set interactive(t){$e.config.gestureHandlerConfig.selectorGizmoEnabled=!0}actionKey(){}endActionKey(){}getRenderObjects(){return this.interactive?this.clearResult?(this.result={type:"null",box:new F},this.clearResult=!1,[]):(this.refreshResults(),[this.graphics]):[]}cancelPreparation(){this.result.type="null",this.pageDataUtils.clearPreSelectedItem()}preparationAction(t,e){if(this.result.box=new F,!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setSelectorConfig() open this feature.");const i=new D(t.offsetX,t.offsetY),s=this.hitTest(i);this.selectedItemIds=this.filterSelectedItems(s);const a=this.selectedItemIds[0]??"",r=[...this.pageDataUtils.getPageData().activeData.selectedItems,...this.pageDataUtils.getPageData().activeData.selectedItems.flatMap(t=>this.pageDataUtils.getChildrenIds(t))],n=this.pageDataUtils.getPageData()?.activeData.preSelectedItem;return a.length&&e&&!r.includes(a)||!e?(!a.length||this.pageDataUtils.isItemSelected(a)||r.includes(a)?(this.pageDataUtils.pauseVideoItem(n),this.pageDataUtils.clearPreSelectedItem()):(this.pageDataUtils.addPreSelectedItem(a),a!==n&&(this.pageDataUtils.playVideoItem(a),this.pageDataUtils.pauseVideoItem(n))),this.type):(this.pageDataUtils.pauseVideoItem(n),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.clearPreSelectedItem(),t.buttons){case 1:{const s=new D(t.offsetX,t.offsetY);if(i??(i=this.firstClickPoint),e&&s.distanceTo(i)<4){const e=new D(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.pageDataUtils.getViewItemById(this.selectedItemIds[0]);t?.parentId&&this.pageDataUtils.removeSelectedItems([t.parentId])}}else this.pageDataUtils.clearSelectedItems(0===this.selectedItemIds.length);if(0===this.selectedItemIds.length)return this.startPoint=new D(t.clientX,t.clientY),this.cursorPoint=new D(t.offsetX,t.offsetY),this.activeParentIds=[],this.active=!0,this.type;{this.pageDataUtils.addSelectedItems([this.selectedItemIds[0]]);const t=this.pageDataUtils.getPageData()?.activeData?.selectedItems;return this.addActiveParentIds(t),this.clearResult=!0,this.pageDataUtils.saveUndoRedoOldData(),1===t?.length&&this.pageDataUtils.getViewItemById(t[0])?.type===w.spec.ItemType.text?"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 D).addVectors(this.cursorPoint,(new D).subtractVectors(new D(t.clientX,t.clientY),this.startPoint)),i=(new D).subtractVectors(this.cursorPoint,e),s=(new D).addVectors(this.cursorPoint,e).multiply(.5);i.x=Math.abs(i.x),i.y=Math.abs(i.y);const a=(new F).setFromCenterAndSize(s,i);this.result.type="region",this.result.box=a,this.pageDataUtils.clearSelectedItems();const r=this.pageDataUtils.getPageData().items?.filter(t=>this.pageDataUtils.getItemEditEnable(t.id)),n=[];i.length()>0&&r?.forEach(t=>{a.intersectsBox(this.pageDataUtils.getViewBoxById(t.id),!1)&&n.push(t.id)});const o=this.filterSelectedItems(n);this.pageDataUtils.addSelectedItems(o)}endAction(){this.active=!1,this.result.type="null"}interruption(){this.active=!1,this.result.type="null"}hitTest(t){const e=this.pageDataUtils.getCurrentComposition();if(!e?.items)return[];const{x:i,y:s}=this.pageDataUtils.getViewportByViewPoint(t),a={ray:new j,regions:[]};try{a.regions=e.hitTest(i,s,!0),a.ray=e.getHitTestRay(i,s)}catch(t){console.warn(t)}return this.reorderHitTestResult(a,e).filter(t=>"extra-camera"!==t&&this.pageDataUtils.getItemEditEnable(t))}reorderHitTestResult(t,e){if(0===t.regions.length||!e)return[];const{ray:i}=t,s=t.regions.reverse(),a=[];return s.forEach(t=>{let s;const r=(t,e)=>{for(const i of t){if(i.getInstanceId()===e&&(s=i),s)return;r(i.children,e)}};if(r(e.items,t.item.getInstanceId()),void 0===s)return;const n=s.getInstanceId(),o=i.origin.clone().distance(t.position.clone());if((s.type===w.spec.ItemType.mesh||s.getComponent(w.SpriteComponent)?.renderer?.occlusion||s.getComponent(w.TextComponent)?.renderer?.occlusion||s.getComponent(v.VideoComponent)?.renderer?.occlusion||s.getComponent(I.RichTextComponent)?.renderer?.occlusion)&&a.length>0){let t=!0;a.forEach((e,i)=>{if(t)return o<=e[1]?(a.splice(i,0,[n,o]),void(t=!1)):void(i===a.length-1&&a.push([n,o]))})}else a.push([n,o])}),a.map(t=>t[0])}filterSelectedItems(t){const e=[],i=t=>{const e=this.pageDataUtils.getViewItemById(t);return!e.parentId||this.activeParentIds.includes(e.parentId)?e.id:i(e.parentId)},s=this.pageDataUtils.getPageData()?.activeData.loadingItems??[];return t.forEach(t=>{const a=i(t);s.includes(a)||J(e,a)}),e}addActiveParentIds(t){this.activeParentIds=[],t?.forEach(t=>{if(!this.pageDataUtils.getViewItemById(t))return;const e=t=>{this.activeParentIds.push(t);const i=this.pageDataUtils.getViewItemById(t);i.parentId&&e(i.parentId)};e(t)})}resetActiveParentIds(t){const e=this.pageDataUtils.getViewItemById(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:a,preSelectedWidth:r,preSelectedColor:n,regionWireframeWidth:o,regionWireframeColor:c,regionWireframeAlpha:h}=$e.config.gestureHandlerConfig.selectorGizmoConfig;if(i?.isEmpty()||(this.graphics.lineStyle(r,n),this.graphics.drawBox(i)),!t.isEmpty()&&"region"===this.result.type)this.graphics.lineStyle(o,c,h),this.graphics.drawBox(t),this.graphics.beginFill(s,a),this.graphics.fillBox(t),this.graphics.endFill()}},Q={};c(Q,{Application:()=>at.Application,utils:()=>it});var tt=require("@galacean/effects-plugin-model"),et={};c(et,{Application:()=>at.Application,utils:()=>it});require("@pixi/polyfill");var it=p(require("@pixi/utils"),1),st=require("@pixi/interaction"),at=require("@pixi/app"),rt=require("@pixi/core"),nt=require("@pixi/loaders"),ot=require("@pixi/ticker");l(et,require("@pixi/constants")),l(et,require("@pixi/core")),l(et,require("@pixi/display")),l(et,require("@pixi/graphics")),l(et,require("@pixi/loaders")),l(et,require("@pixi/interaction")),l(et,require("@pixi/math")),l(et,require("@pixi/runner")),l(et,require("@pixi/sprite")),l(et,require("@pixi/text")),l(et,require("@pixi/ticker")),l(et,require("@pixi/settings")),it.skipHello(),rt.Renderer.registerPlugin("interaction",st.InteractionManager),rt.Renderer.registerPlugin("batch",rt.BatchRenderer),at.Application.registerPlugin(ot.TickerPlugin),at.Application.registerPlugin(nt.AppLoaderPlugin),et.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],a=(new tt.Vector2).subtractVectors(s,i).normalize();this.moveTo(i.x-a.x,i.y-a.y),this.lineTo(s.x+a.x,s.y-a.y)}this.endFill()},et.Graphics.prototype.fillBox=function(t){const e=t.getSize();this.drawRect(t.min.x,t.min.y,e.x,e.y)},et.Graphics.prototype.drawLine=function(t){if(this.beginFill(),t instanceof G)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()},et.Graphics.prototype.drawDashLine=function(t,e,i=16,s=8){const a=this.currentPath.points,r={x:a[a.length-2]||0,y:a[a.length-1]||0},n=Math.abs(t),o=Math.abs(e),c=Math.atan((e-r.y)/(t-r.x));for(;Math.abs(r.x)<n||Math.abs(r.y)<o;)r.x=Math.abs(r.x+i*Math.cos(c))<n?r.x+i*Math.cos(c):t,r.y=Math.abs(r.y+i*Math.sin(c))<o?r.y+i*Math.sin(c):e,this.lineTo(r.x,r.y),r.x=Math.abs(r.x+s*Math.cos(c))<n?r.x+s*Math.cos(c):t,r.y=Math.abs(r.y+s*Math.sin(c))<o?r.y+s*Math.sin(c):e,this.moveTo(r.x,r.y)},l(Q,et);var ct=class extends C{constructor(t,e,i){super(),d(this,"type","transform"),d(this,"wireframe"),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"cursorPoint",new D),d(this,"lastPoint",new D),d(this,"rotationAngle",0),d(this,"active",!1),d(this,"enableAdsorption",!0),d(this,"scaleParam"),d(this,"activeType","null"),d(this,"lastWorldPosition",new W),d(this,"_ignoreInteraction",!1),d(this,"firstClickPoint",new D),d(this,"_pageDataUtils"),d(this,"adsorptionGizmo"),d(this,"selectorGizmo"),d(this,"graphics",new Q.Graphics),d(this,"_isLockScale",!0),d(this,"isShiftDown",!1),d(this,"nameText",new Q.Text("",{fontSize:14,fill:$e.config.gestureHandlerConfig.transformGizmoConfig.sizeTextColor,align:"left"})),d(this,"imageSprite"),d(this,"nullSprite"),d(this,"textSprite"),d(this,"videoSprite"),this._pageDataUtils=t,this.selectorGizmo=i,this.adsorptionGizmo=e,this.wireframe={edges:[],anchor:new D,scaleCorners:[],rotationCorners:[],interactive:!0,cornerEnable:!0,directionEnable:!0,rotationEnabled:!0,scaleEnabled:!0,box:new F,totalBox:new F,childrenBoxes:[],activeType:"null",interactiveDirection:new D,scaleCorner:new D,scaleEdgeCorners:[]},this.imageSprite=Q.Sprite.from($e.config.gestureHandlerConfig.transformGizmoConfig.pictureLogoUrl),this.imageSprite.width=15,this.imageSprite.height=15,this.nullSprite=Q.Sprite.from($e.config.gestureHandlerConfig.transformGizmoConfig.nullLogoUrl),this.nullSprite.width=15,this.nullSprite.height=15,this.textSprite=Q.Sprite.from($e.config.gestureHandlerConfig.transformGizmoConfig.textLogoUrl),this.textSprite.width=15,this.textSprite.height=15,this.videoSprite=Q.Sprite.from($e.config.gestureHandlerConfig.transformGizmoConfig.videoLogoUrl),this.videoSprite.width=15,this.videoSprite.height=15}get interactive(){return $e.config.gestureHandlerConfig.transformGizmoEnabled}set interactive(t){$e.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:w.spec.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!==w.spec.ItemType.base&&$e.config.gestureHandlerConfig.transformGizmoConfig.infoShowEnabled)switch(t.push(this.nameText),this.infoType){case w.spec.ItemType.sprite:t.push(this.imageSprite);break;case w.spec.ItemType.null:t.push(this.nullSprite);break;case w.spec.ItemType.text:$e.config.gestureHandlerConfig.textGizmoEnbaled||t.push(this.textSprite);break;case w.spec.ItemType.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 D(t.offsetX,t.offsetY),i=this.wireframe;this.refreshTransformType(e);const{interactiveDirection:s}=i;this.refreshCursorResult(this.activeType,A(s));const a="translation"===this.activeType?this.selectorGizmo.preparationAction(t,"transform"):this.type;return this.active="transform"===a&&"null"!==this.activeType,this.active&&a?a:void 0}preAction(t,e=!1){if(this._pageDataUtils.saveUndoRedoOldData(),this.active=1===t.buttons,this.lastPoint=new D(t.clientX,t.clientY),this.cursorPoint=new D(t.offsetX,t.offsetY),1!==t.buttons)return;if(e)return this.selectorGizmo.preAction(t,e,new D(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 W,this.activeType=e?"null":this.activeType,this.type}action(t){if(!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if(!this.active){this.active=!0,this.refreshWireframeBySelectedItems(),this.wireframe.activeType="translation",this.lastPoint.set(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 W}const e=new D(t.clientX,t.clientY),i=(new D).subtractVectors(e,this.lastPoint);if(!this.wireframe.interactive)return;const s=this._pageDataUtils.getSelectedItems(),{anchor:a,activeType:r,interactiveDirection:n,scaleCorner:o}=this.wireframe,c=this._pageDataUtils.getPageData();(0,w.assertExist)(c);let h=0;switch(r){case"rotation":{const t=a.clone(),e=new W,r=_(T((new D).subtractVectors(this.cursorPoint,t),(new D).subtractVectors(this.cursorPoint.add(i),t))*E,3);e.z=r,this.rotationAngle+=r,h=A(n)+this.rotationAngle*z,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 F:this._pageDataUtils.getViewBoxById(t.id)).filter(t=>!t.isEmpty()),i=new D(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);this.adsorptionGizmo.boxTranslationAdsorption(t,this.wireframe.box,e);const a=new D(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);t.add(i).subtract(a)}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=>{e.type!==w.spec.ItemType.camera&&(t.x=_(t.x,5),t.y=_(t.y,5),t.z=_(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(!o||!this.scaleParam||!i.length())return;const e=this.scaleParam.farthestCorner;(o.x-e.x)*(this.cursorPoint.x-e.x)>0&&(o.y-e.y)*(this.cursorPoint.y-e.y)>0||!this.isLockScale||this.isShiftDown||(t.x=e.x+(o.x-e.x)/Math.abs(o.x-e.x)*4,t.y=e.y+(o.y-e.y)/Math.abs(o.y-e.y)*4);const a=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t);if(a){const t=this._pageDataUtils.getSelectedItems()[0]??void 0,e=this._pageDataUtils.getItemTransformById(t?.id??""),i=(new H).extractRotation(e.matrix).invert(),{corner:r,center:n,shift:o,lastScalar:c}=this.scaleParam,h=(new W).subtractVectors(r,n).applyMatrix(i),l=h.clone().multiply(c),p=a.clone().subtract(o).subtract(n).applyMatrix(i),d=new W(1,1,1);if(!this.isLockScale||this.isShiftDown)d.x=k(l.x,0)?1:p.x/l.x,d.y=k(l.y,0)?1:p.y/l.y,d.z=k(l.z,0)?1:p.z/l.z;else{const t=B([k(h.x,0)?1:Math.abs(p.x/h.x),k(h.y,0)?1:Math.abs(p.y/h.y)]),e=p.toArray()[t],i=l.toArray()[t];if(k(c.x,c.y)&&k(c.z,c.x)){const t=k(i,0)?1:Math.abs(e/i);d.set(t,t,t)}else if(0===t){d.x=k(i,0)?1:Math.abs(e/i);const t=h.y*e/h.x;d.y=k(l.y,0)?1:t/l.y;const s=h.z*e/h.x;d.z=k(l.z,0)?1:s/l.z}else if(1===t){d.y=k(i,0)?1:Math.abs(e/i);const t=h.x*e/h.y;d.x=k(l.x,0)?1:t/l.x;const s=h.z*e/h.y;d.z=k(l.z,0)?1:s/l.z}else{d.z=k(i,0)?1:Math.abs(e/i);const t=h.x*e/h.z;d.x=k(l.x,0)?1:t/l.x;const s=h.y*e/h.z;d.y=k(l.y,0)?1:s/l.y}}const m=d.clone().subtract(new W(1,1,0)).divide(2).add(new W(1,1,.5)),g=n.clone().add((new W).subtractVectors(r,n).multiply(new W(c.x,c.y,1)));this.scaleParam.lastScalar.multiply(m);const u=n.clone().add((new W).subtractVectors(r,n).multiply(new W(this.scaleParam.lastScalar.x,this.scaleParam.lastScalar.y,1))),y=(new W).subtractVectors(u,g);y.x=_(y.x,5),y.y=_(y.y,5),y.z=_(y.z,5),this.scaleParam.center.add(y),this.scaleParam.corner.add(y),s.forEach(t=>{this._pageDataUtils.scaleItem(t.id,m),this._pageDataUtils.moveItem(t.id,y)}),this.lastWorldPosition.copyFrom(a)}h=A(n);break}}this.refreshCursorResult(r,h),this.lastPoint.copyFrom(e)}endAction(t){this._pageDataUtils.pushUndoRedoData(),this.active=!1;const e=new D(t.clientX,t.clientY),i=(new D).subtractVectors(e,this.lastPoint);this.cursorPoint.add(i);const s=this.wireframe;this.refreshTransformType(this.cursorPoint);const{activeType:a,interactiveDirection:r}=s;this.refreshCursorResult(a,A(r)),this.adsorptionGizmo.clearAbsorptionResult(),this.rotationAngle=0,this.cursorPoint=new D,this.lastPoint=new D}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 s,a,r;if(i){const t=this._pageDataUtils.getItemTransformById(i.id);s=(new W).copyFrom(this._pageDataUtils.getPlayerItemById(i.id).transform.anchor).applyMatrix(t.matrix),a=(new W).setFromMatrixPosition(t.matrix),r=(new N).setFromQuaternion((new L).setFromRotationMatrix(t.matrix))}this._pageDataUtils.interactionUtils.initInteractionPlane(a,r);const{scaleCorner:n,box:o}=this.wireframe,c=o.corners[0].clone();let h=c.distanceTo(n);o.corners.forEach(t=>{t.distanceTo(n)>h&&(c.copyFrom(t),h=t.distanceTo(n))}),this.scaleParam={shift:new W,center:new W,corner:new W,lastScalar:new W(1,1,1),farthestCorner:c},this.scaleParam.center=s??a;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 W}this.scaleParam.shift=(this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new W).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:s,cornerLineWidth:a,cornerLineColor:r,cornerLineAlpha:n,infoShowEnabled:o}=$e.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 G(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(a,r,n),this.wireframe.scaleCorners.forEach(t=>{this.graphics.drawCircle(t.center.x,t.center.y,t.radius)}),this.graphics.endFill()),this.infoType!==w.spec.ItemType.base&&o){const t=this._pageDataUtils.getSelectedItems()[0],e=t.type===w.spec.ItemType.null?"编组":t.type===w.spec.ItemType.sprite?"图片":t.type===w.spec.ItemType.text?"文本":t.type===w.spec.ItemType.video?"视频":"",{size:i,rotation:s}=t.property,a=this.infoType===w.spec.ItemType.sprite?this.imageSprite:this.infoType===w.spec.ItemType.null?this.nullSprite:this.infoType===w.spec.ItemType.text?this.textSprite:this.videoSprite,r=this.wireframe.box.corners[3],n=s[2]*z;a.anchor.set(0,1),a.x=r.x,a.y=r.y-5,a.rotation=-n;const o=r.clone().add(new D(20,0)).rotateAround(r,-n),c=new D(0,4).rotateAround(new D,n);this.nameText.text=` ${e} ${i.map(t=>_(t,0)).join(" * ")}`,this.nameText.anchor.set(0,1),this.nameText.x=o.x+c.x,this.nameText.y=o.y-c.y,this.nameText.rotation=-n}}}refreshTransformType(t){this.activeType="null";let e=!0;if(this.wireframe.interactiveDirection=new D,this.wireframe.scaleCorner=void 0,this.wireframe.scaleEdgeCorners=void 0,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=new F;if(this.wireframe.edges=[],this.wireframe.scaleCorners=[],this.wireframe.childrenBoxes=[],this.wireframe.rotationCorners=[],this.wireframe.rotationEnabled="template"===$e.config.mode,this.wireframe.scaleEnabled=1===t.length&&t[0].type!==w.spec.ItemType.null||"template"===$e.config.mode,this.wireframe.cornerEnable=1===t.length&&t[0].type!==w.spec.ItemType.null||"template"===$e.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 F).copyFrom(i).expandByScalar(1))}}),this.wireframe.anchor=e.getCenter(),this.wireframe.interactive=!0;else if(1===t.length){const i=t[0];if((i.type!==w.spec.ItemType.text||"template"===$e.config.mode)&&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=i.type!==w.spec.ItemType.mesh&&this._pageDataUtils.getItemEditEnable(i.id)}}const i=e.isEmpty(),s=i?0:1,a=i?0:16;this.wireframe.activeType=t.length?this.wireframe.activeType:"null",this.wireframe.box.copyFrom(e).expandByScalar(s),this.wireframe.totalBox.copyFrom(e).expandByScalar(a);const r=this.wireframe.box.corners;r.forEach((t,e)=>{this.wireframe.edges.push(new G((new D).copyFrom(t),(new D).copyFrom(r[(e+1)%4])))});const{scaleCircleSize:n,rotationCircleSize:o}=$e.config.gestureHandlerConfig.transformGizmoConfig;1===t.length&&this.wireframe.box.corners.forEach(t=>{this.wireframe.scaleCorners.push(new R(t,n));const e=(new D).subtractVectors(t,this.wireframe.box.getCenter()),i=(new D).copyFrom(this.wireframe.box.getCenter()).add((new D).copyFrom(e).normalize().multiply(e.length()+o-n));this.wireframe.rotationCorners.push(new R(i,o))})}setAdsorptionEnabled(t){this.enableAdsorption=t}},ht=require("@pixi/graphics"),lt=class extends C{constructor(){super(...arguments),d(this,"results",[]),d(this,"graphics",new ht.Graphics),d(this,"absorptionResult",{}),d(this,"type","adsorption")}get interactive(){return $e.config.gestureHandlerConfig.adsorptionGizmoEnabled}set interactive(t){$e.config.gestureHandlerConfig.adsorptionGizmoEnabled=t}preparationAction(){}getCursorState(){}preAction(){}action(){}cancelPreparation(){}actionKey(){}endActionKey(){}endAction(){}interruption(){}boxTranslationAdsorption(t,e,i,s=!0,a=!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 r=new D(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(t),n=e.clone().translate(r),o=n.getCenter();this.absorptionResult={},i.forEach(t=>{if(t.isEmpty())return;t.corners.forEach(t=>{n.corners.forEach(e=>{this.getPointAbsorption(e,t,s,a)}),this.getPointAbsorption(o,t,s,a)});const e=t.getCenter();this.getPointAbsorption(o,e,s,a),n.corners.forEach(t=>{this.getPointAbsorption(t,e,s,a)})})}pointTranslationAdsorption(t,e,i,s=!0,a=!0){if(this.results=[],!this.interactive)return void console.warn("Adsorption is not opened, use #SDK.setAdsorptionConfig() open this feature.");const r=new D(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(t),n=e.clone().add(r);this.absorptionResult={},i.forEach(t=>{this.getPointAbsorption(n,t,s,a)})}getPointAbsorption(t,e,i=!0,s=!0){i&&Math.abs(t.x-e.x)<$e.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(t,e,"x"),s&&Math.abs(t.y-e.y)<$e.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(t,e,"y")}refreshPointAbsorptionResult(t,e,i){const s=t[i]-e[i],a="x"===i?"xPoints":"yPoints";if(this.absorptionResult&&void 0===this.absorptionResult[i])this.absorptionResult[i]=s,this.absorptionResult[a]=[{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[a])this.absorptionResult[i]=s,this.absorptionResult[a]=[{point:t,targets:[e]}];else{const i=this.absorptionResult[a].filter(e=>e.point.equals(t));void 0===i||0===i.length?this.absorptionResult[a]?.push({point:t,targets:[e]}):i[0]?.targets.push(e)}else this.absorptionResult[i]=s,this.absorptionResult[a]=[{point:t,targets:[e]}]}refreshResults(){if(void 0===this.absorptionResult)return;const{x:t,y:e,xPoints:i,yPoints:s}=this.absorptionResult,a=new D(t??0,e??0);void 0!==t&&void 0!==i&&i.forEach(t=>{const e=t.point.clone().subtract(a),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 G(i,s))}),void 0!==e&&void 0!==s&&s.forEach(t=>{const e=t.point.clone().subtract(a),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 G(i,s))})}refreshRenderObject(){this.graphics.clear();const{lineWidth:t,lineColor:e}=$e.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={}}},pt=class extends C{constructor(t){super(),d(this,"box",new F),d(this,"graphics",new Q.Graphics),d(this,"PageDataUtils"),d(this,"type","preference"),this.PageDataUtils=t}preparationAction(){}preAction(){}action(){}endAction(){}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){if(this.box=new F,!this.interactive)return void console.warn("Preference gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if("editor"===$e.config.mode)return;const t=this.PageDataUtils.getPageData();(0,w.assertExist)(t);const{container:e}=this.PageDataUtils;if(e){const{zoom:i}=t.property,{offsetWidth:s,offsetHeight:a}=e,r=new D(s,a).multiply(i),n=this.PageDataUtils.getViewportLeftTopPosition().add(r.clone().divide(2));this.box=(new F).setFromCenterAndSize(n,r)}}refreshRenderObjects(){if("editor"===$e.config.mode)return;const{boxWidth:t,boxColor:e,markColor:i,markAlpha:s,safeAreaEnabled:a,safeAreaBoxColor:r,safeAreaBoxAlpha:n}=$e.config.gestureHandlerConfig.preferenceGizmoConfig;this.graphics=new Q.Graphics;const{offsetWidth:o,offsetHeight:c}=this.PageDataUtils.container.parentElement,h=new F(new D(0,0),new D(o,this.box.min.y)),l=new F(new D(0,this.box.min.y),new D(this.box.min.x,c)),p=new F(new D(this.box.min.x,this.box.max.y),new D(o,c)),d=new F(new D(this.box.max.x,this.box.min.y),new D(o,this.box.max.y));if(this.graphics.beginFill(i,s),this.graphics.fillBox(h),this.graphics.fillBox(l),this.graphics.fillBox(p),this.graphics.fillBox(d),this.graphics.endFill(),a){const t=this.PageDataUtils.getViewProperty();if(t){const{size:e,safeArea:i,previewSafeAreas:s}=t,[a,o,c,h]=i,l=this.box.getSize(),p=a/e[1]*l.y,d=c/e[0]*l.x,m=h/e[0]*l.x,g=o/e[1]*l.y,{min:u,max:y}=this.box;this.graphics.beginFill(r,n);const f=new F(u,new D(y.x,u.y+p)),x=new F(new D(u.x,u.y+p),new D(u.x+d,y.y)),w=new F(new D(y.x-m,u.y+p),new D(y.x,y.y)),I=new F(new D(u.x+d,y.y-g),new D(y.x-m,y.y));this.graphics.fillBox(f),this.graphics.fillBox(x),this.graphics.fillBox(w),this.graphics.fillBox(I),this.graphics.endFill(),s.forEach(t=>{const{box:[i,s,a,r],color:n}=t,o=this.box.getSize(),c=new D(a/e[0]*o.x,r/e[1]*o.y),h=new D(i/e[0]*o.x+c.x/2,s/e[1]*o.y+c.y/2).add(u),l=(new F).setFromCenterAndSize(h,c),p=n?.[3]??.3,d=n?.slice(0,3)??[255,0,0],m=d[0]<<16|d[1]<<8|d[2];this.graphics.beginFill(m,p),this.graphics.fillBox(l),this.graphics.endFill()})}}this.graphics.lineStyle(t,e),this.graphics.drawBox(this.box)}getRenderObjects(){return $e.config.gestureHandlerConfig.preferenceGizmoEnabled&&"editor"!==$e.config.mode?(this.refreshRenderObjects(),[this.graphics]):[]}get interactive(){return $e.config.gestureHandlerConfig.preferenceGizmoEnabled}set interactive(t){$e.config.gestureHandlerConfig.preferenceGizmoEnabled=t}},dt="https://mdn.alipayobjects.com/rms/uri/file/as/0.0.6",mt={normal:{type:"preset",content:"default"},rotation:{type:"svg",content:"default",url:`${dt}/icons/cursor-rotate-32.svg`},circle:{type:"svg",content:"default",url:`${dt}/icons/cursor-rotate-32.svg`},scale:{type:"svg",content:"default",url:`${dt}/icons/cursor-scale-32.svg`},hand:{type:"preset",content:"grab"},pointer:{type:"preset",content:"pointer"},"active-hand":{type:"preset",content:"grabbing"},"text-rotation":{type:"svg",content:"default",url:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*R722QoloC44AAAAAKkAAAAgAev-aAQ/original"}};function gt(t,e="item doesn't exist"){if(null==t)throw new Error(e)}function ut(t,e="asserts failed"){if(!t)throw new Error(e)}function yt(t,e,...i){const s=e.reduce((t,e)=>t?`${t} ${e}`:e,""),a="color: #108ee9;";switch(t){case"error":console.error(`%c[${s}]`,a,...i);break;case"info":console.info(`%c[${s}]`,a,...i);break;case"debug":console.debug(`%c[${s}]`,a,...i);break;case"warn":console.warn(`%c[${s}]`,a,...i);break;default:console.log(`%c[${s}]`,a,...i)}}function ft(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(!ft(t[s],e[s]))return!1}return!0}var xt=class extends C{constructor(t,e){super(),d(this,"result",{type:"invalid"}),d(this,"interactionParam",{type:"none"}),d(this,"graphics",new Q.Graphics),d(this,"isShiftDown",!1),d(this,"_isLockScale",!1),d(this,"_pageDataUtils"),d(this,"_eventEmitter"),d(this,"type","picture-cut"),d(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return $e.config.gestureHandlerConfig.pictureCutGizmoEnabled}set interactive(t){t!==$e.config.gestureHandlerConfig.pictureCutGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture cut gizmo can not open."):$e.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 D(t.offsetX,t.offsetY),i=new D(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 D(t.clientX,t.clientY),{startMouse:s,box:a}=this.interactionParam,r=(new D).subtractVectors(i,s),{itemBox:n}=this.result,{min:o,max:c}=n;switch(this.interactionParam.type){case"move":{const{min:t,max:e}=a,i=o.x-t.x,s=c.x-e.x,h=o.y-t.y,l=c.y-e.y;r.x=Math.min(Math.max(r.x,i),s),r.y=Math.min(Math.max(r.y,h),l);const p=a.clone().translate(r);this.result.normalizeCutBox=U(n,p),this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}case"scale":{const{startCorner:t,anchor:i}=this.interactionParam,s=new D;if(s.x=Math.min(Math.max(t.x+r.x,o.x),c.x),s.y=Math.min(Math.max(t.y+r.y,o.y),c.y),this.isShiftDown||this.isLockScale){const r=this.getCutBox(),{x:n,y:h}=r.getSize(),{x:l,y:p}=a.getSize();if((e=this.interactionParam).lockedAspect??(e.lockedAspect=n/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;k(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,o.y),c.y)}else{const e=Math.abs(s.y-i.y)*this.interactionParam.lockedAspect;k(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,o.x),c.x)}}if(k(t.x,i.x)||k(t.y,i.y)){const e=a.corners[0].clone();let i=e.distanceTo(t);a.corners.forEach(s=>{s.distanceTo(t)>i&&(e.copyFrom(s),i=s.distanceTo(t))}),this.result.normalizeCutBox=U(n,(new F).setFromVec2Array([e,s]))}else{const e=(s.x-i.x)/(t.x-i.x),r=(s.y-i.y)/(t.y-i.y),o=new D(e,r);this.result.normalizeCutBox=U(n,a.clone().scale(o,i))}this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}case"direction-scale":{const{index:t}=this.interactionParam,e=a.corners[t].clone();t%2==0?(r.x=Math.min(Math.max(e.x+r.x,o.x),c.x)-e.x,r.y=0):(r.x=0,r.y=Math.min(Math.max(e.y+r.y,o.y),c.y)-e.y);const i=a.corners.map((e,i)=>[t,(t+1)%4].includes(i)?e.clone().add(r):e.clone());this.result.normalizeCutBox=U(n,(new F).setFromVec2Array(i)),this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}}}endAction(t){if(!this.interactive||"none"===this.interactionParam.type)return;const e=new D(t.offsetX,t.offsetY),i=new D(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(gt(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 F(new D,new D(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:a,itemBoxLineWidth:r,itemBoxLineColor:n,itemBoxLineAlpha:o,cutBoxCornerRadius:c,cutBoxCornerFillColor:h,cutBoxCornerLineWidth:l,cutBoxCornerLineColor:p,cutBoxCornerLineAlpha:d}=$e.config.gestureHandlerConfig.pictureCutGizmoConfig,{normalizeCutBox:m,itemBox:g}=this.result,u=V(g,m),{min:y,max:f}=u,{min:x,max:w}=g,I=new F(x.clone(),new D(w.x,y.y)),v=new F(new D(x.x,y.y),new D(y.x,w.y)),P=new F(new D(f.x,y.y),new D(w.x,f.y)),C=new F(new D(y.x,f.y),w.clone());return this.graphics.beginFill(t,e),this.graphics.fillBox(I),this.graphics.fillBox(v),this.graphics.fillBox(P),this.graphics.fillBox(C),this.graphics.endFill(),this.graphics.lineStyle(r,n,o),this.graphics.drawBox(g),this.graphics.lineStyle(i,s,a),this.graphics.drawBox(u),this.graphics.beginFill(h),this.graphics.lineStyle(l,p,d),u.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,a=V(s,i);let r=!1,n=0;a.corners.forEach((i,s)=>{r||i.distanceTo(t)<$e.config.gestureHandlerConfig.pictureCutGizmoConfig.scaleInteractionDistance&&(r=!0,this.interactionParam={type:"scale",box:a.clone(),startMouse:e,startCorner:i.clone(),anchor:a.corners[(s+2)%4]},n=Math.PI/2*s)}),a.corners.forEach((i,s)=>{if(r)return;const o=new G(i.clone(),a.corners[(s+1)%4]),c=t.distanceToLine(o);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){r=!0;const t=o.at(c.t);this.interactionParam={type:"direction-scale",index:s,point:t,box:a.clone(),startMouse:e},n=Math.PI/2*s+Math.PI/4}}),a.containsPoint(t)&&!r&&(this.interactionParam={type:"move",point:t.clone(),box:a.clone(),startMouse:e},r=!0),this.refreshCursorResult(this.interactionParam.type,n*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 V(e,i)}setCutBox(t,e){const[i]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!i)return;const s=new F(t,e),a=this._pageDataUtils.getItemBoxById(i.id),{min:r,max:n}=U(a,s);this.result.normalizeCutBox.set(new D(Math.max(r.x,0),Math.max(r.y,0)),new D(Math.min(n.x,1),Math.min(n.y,1)));const o=this.getCutBox();return this._eventEmitter.emit("cutBoxChange",o),o}};var wt=class extends C{constructor(t,e,i,s,a){super(),d(this,"type","text"),d(this,"_eventEmitter"),d(this,"textAreaElement"),d(this,"graphics",new Q.Graphics),d(this,"_pageDataUtils"),d(this,"result"),d(this,"interactionParam"),d(this,"_adsorptionGizmo"),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"ignoreInteraction",!1),d(this,"scaleParam"),d(this,"rotationSprite",new Q.Sprite),d(this,"cursorPoint",new D),d(this,"_selectorGizmo"),d(this,"handleInput",async t=>{const e=t.target,i=this._pageDataUtils.getSelectedItems()[0].id;await this._pageDataUtils.changeItemProperty({itemId:i,type:w.spec.ItemType.text,propertyName:"text",propertyValue:e.value}),this._eventEmitter.emit("textInput",{itemId:i,text:e.value,fontFamily:e.style.fontFamily})}),d(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",a?.appendChild(this.textAreaElement),function(t,e,i){const s=i.replace(/&/g,`.${e}`),a=document.createElement("style");a.textContent=`\n .${e} {\n ${s}\n }\n `,document.head.appendChild(a),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 D,lastPoint:new D,startPoint:new D,lastWorldPosition:new W}}get interactive(){return $e.config.gestureHandlerConfig.textGizmoEnbaled}set interactive(t){$e.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 D(t.offsetX,t.offsetY),i=new D(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,a=new D(i,s);if(e){if("empty"===this.result.type||this.result.box.containsPoint(a))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(a)){this._pageDataUtils.saveUndoRedoOldData();const t=a.subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(t),this.interactionParam.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new W,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 D(t.clientX,t.clientY),this.interactionParam.startPoint=new D(t.offsetX,t.offsetY);const e=new D(t.offsetX,t.offsetY).subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(e),this.interactionParam.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new W}const e=new D(t.clientX,t.clientY),{type:i,lastPoint:s,startPoint:a,anchor:r}=this.interactionParam,n=(new D).subtractVectors(e,s),o=this._pageDataUtils.getSelectedItems();switch(i){case"rotation":{const t=new W,i=_(T((new D).subtractVectors(a,r),(new D).subtractVectors(a.add(n),r))*E,3);t.z=i,o.forEach(e=>{this._pageDataUtils.rotateItem(e.id,t)}),this.interactionParam.lastPoint.copyFrom(e);break}case"translation":{const t=n.clone();if(this._adsorptionGizmo.interactive){const e=this._pageDataUtils.getPageData();(0,w.assertExist)(e);const i=e.items.map(t=>o.find(e=>e.id===t.id)||0!==o.filter(e=>t.parentId&&t.parentId===e.id).length||!this._pageDataUtils.getItemEditEnable(t.id)||o.find(e=>e.parentId===t.id)?new F:this._pageDataUtils.getViewBoxById(t.id)).filter(t=>!t.isEmpty()),s=new D(this._adsorptionGizmo.absorptionResult.x??0,this._adsorptionGizmo.absorptionResult.y??0);this._adsorptionGizmo.boxTranslationAdsorption(t,this.result.box,i);const a=new D(this._adsorptionGizmo.absorptionResult.x??0,this._adsorptionGizmo.absorptionResult.y??0);t.add(s).subtract(a)}const i=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(a.add(t).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition()));if(i){const t=i.clone().subtract(this.interactionParam.lastWorldPosition);o.forEach(e=>{e.type!==w.spec.ItemType.camera&&(t.x=_(t.x,5),t.y=_(t.y,5),t.z=_(t.z,5),this._pageDataUtils.moveItem(e.id,t))}),this.interactionParam.lastWorldPosition.copyFrom(i),this.interactionParam.lastPoint.copyFrom(e)}break}case"scale":if(n.length()){const t=this.cursorPoint.add(n).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition());if(!a||!this.scaleParam||!n.length())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||(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 i=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t);if(i){const t=this._pageDataUtils.getSelectedItems()[0]??void 0,e=this._pageDataUtils.getItemTransformById(t?.id??""),s=(new H).extractRotation(e.matrix).invert(),{corner:a,center:r,shift:n,lastScalar:c}=this.scaleParam,h=(new W).subtractVectors(a,r).applyMatrix(s),l=h.clone().multiply(c),p=i.clone().subtract(n).subtract(r).applyMatrix(s),d=new W(1,1,1),m=B([k(h.x,0)?1:Math.abs(p.x/h.x),k(h.y,0)?1:Math.abs(p.y/h.y)]),g=p.toArray()[m],u=l.toArray()[m];if(k(c.x,c.y)&&k(c.z,c.x)){const t=k(u,0)?1:Math.abs(g/u);d.set(t,t,t)}else if(0===m){d.x=k(u,0)?1:Math.abs(g/u);const t=h.y*g/h.x;d.y=k(l.y,0)?1:t/l.y;const e=h.z*g/h.x;d.z=k(l.z,0)?1:e/l.z}else if(1===m){d.y=k(u,0)?1:Math.abs(g/u);const t=h.x*g/h.y;d.x=k(l.x,0)?1:t/l.x;const e=h.z*g/h.y;d.z=k(l.z,0)?1:e/l.z}else{d.z=k(u,0)?1:Math.abs(g/u);const t=h.x*g/h.z;d.x=k(l.x,0)?1:t/l.x;const e=h.y*g/h.z;d.y=k(l.y,0)?1:e/l.y}const y=d.clone().subtract(new W(1,1,0)).divide(2).add(new W(1,1,.5)),f=r.clone().add((new W).subtractVectors(a,r).multiply(new W(c.x,c.y,1)));this.scaleParam.lastScalar.multiply(y);const x=r.clone().add((new W).subtractVectors(a,r).multiply(new W(this.scaleParam.lastScalar.x,this.scaleParam.lastScalar.y,1))),w=(new W).subtractVectors(x,f);w.x=_(w.x,5),w.y=_(w.y,5),w.z=_(w.z,5),this.scaleParam.center.add(w),this.scaleParam.corner.add(w),console.log(y),o.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=a.clone(),e=a.clone().add(n);if(n.length()){const i=(new D).subtractVectors(t,r),s=(new D).subtractVectors(e,r),n=Math.max(s.dot(i)/i.length(),1),c=i.length(),h=(n/c-1)/2+1,l=r.clone().add(i.clone().normalize().scale(c*h)),p=(new D).subtractVectors(l,t);a.add(p);const d=this._pageDataUtils.interactionUtils.getWorldSizeByViewSize(p);d.x=_(d.x,5),d.y=_(d.y,5),d.z=_(d.z,5),o.forEach(t=>{this._pageDataUtils.moveItem(t.id,d)}),o.forEach(t=>{this._pageDataUtils.scaleTextItemWidth(t.id,h)})}break}}this.interactionParam.lastPoint.copyFrom(e),this.refreshCursorResult()}endAction(t){this.ignoreInteraction=!1;const e=new D(t.offsetX,t.offsetY),i=new D(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||"template"===$e.config.mode)return;const t=this._pageDataUtils.getPageData()?.activeData?.selectedItems,e=this._pageDataUtils.getViewItemById(t?.[0]);if(1!==t?.length||e?.type!==w.spec.ItemType.text)return void(this.result={type:"empty"});const i=this._pageDataUtils.getViewBoxById(t[0]);if(i.isEmpty())this.result={type:"empty"};else{const t=[new G(i.corners[0],i.corners[1]).at(.5),new G(i.corners[2],i.corners[3]).at(.5)],s=new G(i.getCenter(),new G(i.corners[0],i.corners[3]).at(.5)),a=s.at((s.length()+22)/s.length());this.result={type:"valid",box:i.clone(),widthScaleCorners:t,rotationCorner:a,rotation:-e.property.rotation[2]*z}}}refreshInteractionParam(t,e){if("empty"===this.result.type)return this.interactionParam.active=!1,this.interactionParam.type="none",this.interactionParam.lastPoint=new D,this.interactionParam.startPoint=new D,void(this.interactionParam.lastWorldPosition=new W);if("edit"===this.interactionParam.type)return;const{rotateInteractMode:i,scaleInteractionDistance:s,rotationCornerInteractionDistance:a,rotationTopCenterInteractionDistance:r}=$e.config.gestureHandlerConfig.textGizmoConfig,n=this.result.box.getCenter();for(const e of this.result.widthScaleCorners){if((new F).setFromCenterAndSize(e,new D(6,18)).containsPoint(t))return this.interactionParam.active=!0,this.interactionParam.type="width-scale",this.interactionParam.anchor=n,this.interactionParam.lastPoint=t.clone(),this.interactionParam.startPoint=e.clone(),void(this.interactionParam.lastWorldPosition=new W)}const o=this.result.box.corners.findIndex(e=>e.distanceTo(t)<s);if(o>=0){const t=this.result.box.corners[o],i=this.result.box.corners[(o+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 W);switch(i){case"top-center":if(t.distanceTo(this.result.rotationCorner)<r)return this.interactionParam.active=!0,this.interactionParam.type="rotation",this.interactionParam.anchor=n,this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=this.result.rotationCorner.clone(),void(this.interactionParam.lastWorldPosition=new W);break;case"corner":{const i=this.result.box.corners.find(e=>e.distanceTo(t)<a);if(i)return this.interactionParam.active=!0,this.interactionParam.type="rotation",this.interactionParam.anchor=n,this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=i.clone(),void(this.interactionParam.lastWorldPosition=new W);break}}this.interactionParam.active=!1,this.interactionParam.type="none",this.interactionParam.lastPoint=new D,this.interactionParam.startPoint=new D,this.interactionParam.lastWorldPosition=new W}refreshCursorResult(){const t=(A((new D).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:a}=this.result,{boxLineWidth:r,boxLineColor:n,rotateInteractMode:o,rotationCornerWidth:c,scaleCornerStrokeWidth:h,scaleCornerStrokeColor:l,rotationCornerRadius:p,rotationCornerFillColor:d,rotationCornerStrokeWidth:m,rotationCornerStrokeColor:g}=$e.config.gestureHandlerConfig.textGizmoConfig;if(this.graphics.lineStyle(r,n),this.graphics.drawBox(e),"edit"!==this.interactionParam.type)switch(e.getSize().y>25&&i.forEach(t=>{const e=(new F).setFromCenterAndSize(t,new D(8,15));this.graphics.beginFill(16777215),this.graphics.fillBox(e),this.graphics.endFill(),this.graphics.lineStyle(h,l),this.graphics.drawBox(e)}),o){case"top-center":this.rotationSprite.width=c,this.rotationSprite.height=c,this.rotationSprite.anchor.set(.5,.5),this.rotationSprite.x=s.x,this.rotationSprite.y=s.y,this.rotationSprite.rotation=a,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,s=t[0],a=s?.property,r=e.clone().rotate(a.rotation[2]*z),n=r.min.clone(),o=r.getSize();this.textAreaElement.value=a.text??"",this.textAreaElement.style.textAlign=this.getTextAlign(a.textAlign),this.textAreaElement.style.fontFamily=a.fontFamily,this.textAreaElement.style.fontSize=a.fontSize*i.scale+"px",this.textAreaElement.style.fontWeight=a.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=`${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.lineHeight=a.lineHeight*i.scale+"px",this.textAreaElement.style.transformOrigin="center center",this.textAreaElement.style.paintOrder="stroke fill",void 0!==a.rotation[2]&&(this.textAreaElement.style.transform=`\n rotateZ(${-a.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(),i=this._pageDataUtils.interactionUtils.viewportParam,s=t[0],a=s?.property,r=e.clone().rotate(a.rotation[2]*z),n=r.min.clone(),o=r.getSize();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=a.fontFamily,this.textAreaElement.style.textAlign=this.getTextAlign(a.textAlign),this.textAreaElement.style.fontSize=a.fontSize*i.scale+"px",this.textAreaElement.style.lineHeight=a.lineHeight*i.scale+"px",a.rotation[2]&&(this.textAreaElement.style.transform=`\n rotateZ(${-a.rotation[2]}deg)\n `)}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,s,a;if(e){const t=this._pageDataUtils.getItemTransformById(e.id);i=(new W).copyFrom(this._pageDataUtils.getPlayerItemById(e.id).transform.anchor).applyMatrix(t.matrix),s=(new W).setFromMatrixPosition(t.matrix),a=(new N).setFromQuaternion((new L).setFromRotationMatrix(t.matrix))}this._pageDataUtils.interactionUtils.initInteractionPlane(s,a);const r=this.interactionParam.startPoint,{box:n}=this.result,o=n.corners[0].clone();let c=o.distanceTo(r);n.corners.forEach(t=>{t.distanceTo(r)>c&&(o.copyFrom(t),c=t.distanceTo(r))}),this.scaleParam={shift:new W,center:new W,corner:new W,lastScalar:new W(1,1,1),farthestCorner:o},this.scaleParam.center=i??s;const h=this._pageDataUtils.getViewportLeftTopPosition();if(r){const t=r.clone().subtract(h);this.scaleParam.corner=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new W}this.scaleParam.shift=(this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new W).subtract(this.scaleParam.corner);break}case"width-scale":case"translation":case"rotation":this._pageDataUtils.interactionUtils.initInteractionPlane()}}getTextAlign(t){switch(t){case w.spec.TextAlignment.middle:return"center";case w.spec.TextAlignment.right:return"right";default:return"left"}}},It=require("@pixi/core"),vt=class extends C{constructor(t){super(),d(this,"_pageDataUtils"),d(this,"_config",{}),d(this,"type","mask"),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"result",{status:"init",lines:[]}),d(this,"graphics",new Q.Graphics),d(this,"linesMaskGraphics",new Q.Graphics),d(this,"rectMaskGraphics",new Q.Graphics),this._pageDataUtils=t}get interactive(){return $e.config.gestureHandlerConfig.maskGizmoEnabled}set interactive(t){t!==$e.config.gestureHandlerConfig.maskGizmoEnabled&&(t||(this.result.status="init"),$e.config.gestureHandlerConfig.maskGizmoEnabled=t)}get config(){return{...$e.config.gestureHandlerConfig.maskGizmoConfig,...this._config}}set config(t){this._config={...this._config,...t}}initialize(){}preparationAction(t){if(this.interactive)return this.result.point=new D(t.offsetX,t.offsetY),this.type}preAction(t){if(this.interactive)return this.result.point=new D(t.offsetX,t.offsetY),this.result.lines.push({brushSize:this.config.brushSize,points:[]}),this.type}action(t){if(!this.interactive||"init"===this.result.status)return;const e=this.result.box,i=new D((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(gt(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()),a=i.getSize().x/e.getSize().x;e.translate(s),e.scale(a)}this.refreshCursorResult()}}else this.result={status:"init",lines:[]}}getRenderObjects(){return this.interactive?this.refreshRenderObjects():[]}refreshRenderObjects(){if(this.graphics.clear(),this.linesMaskGraphics.clear(),this.rectMaskGraphics.clear(),!this.interactive||"init"===this.result.status)return[];const{brushColor:t,brushAlpha:e,boxLineWidth:i,boxLineColor:s,boxLineAlpha:a}=this.config,r=this.result.box,{min:n,max:o}=r,c=new F(new D(n.x,n.y),new D(o.x,n.y)),h=new F(new D(n.x,n.y),new D(n.x,o.y)),l=new F(new D(o.x,n.y),new D(o.x,n.y)),p=new F(new D(n.x,o.y),new D(o.x,o.y));this.graphics.fillBox(c),this.graphics.fillBox(h),this.graphics.fillBox(l),this.graphics.fillBox(p),this.graphics.lineStyle(i,s,a),this.graphics.drawBox(r),this.graphics.endFill();const d=this._pageDataUtils.interactionUtils.viewportParam;for(const t of this.result.lines)if(t)for(let e=0;e<t.points.length;e++){0===e&&this.linesMaskGraphics.lineStyle({width:t.brushSize*d.scale,color:0,cap:Q.LINE_CAP.ROUND,join:Q.LINE_JOIN.ROUND,alignment:.5});const i=t.points[e];i&&(0===e?this.linesMaskGraphics.moveTo(r.min.x+i.x*(r.max.x-r.min.x),r.min.y+i.y*(r.max.y-r.min.y)):this.linesMaskGraphics.lineTo(r.min.x+i.x*(r.max.x-r.min.x),r.min.y+i.y*(r.max.y-r.min.y)))}return this.linesMaskGraphics.endFill(),this.rectMaskGraphics.beginFill(t,e),this.rectMaskGraphics.drawRect(r.min.x,r.min.y,r.max.x-r.min.x,r.max.y-r.min.y),this.rectMaskGraphics.endFill(),this.rectMaskGraphics.mask=this.linesMaskGraphics,[this.graphics,this.linesMaskGraphics,this.rectMaskGraphics]}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.rectMaskGraphics.getBounds(),e=new Q.Renderer({width:Math.ceil(t.width),height:Math.ceil(t.height),backgroundColor:16777215}),i=new Q.Container,s=this.rectMaskGraphics.clone();s.beginFill(this.config.maskColor),s.position.set(-t.x,-t.y),s.drawRect(t.x,t.y,t.width,t.height),s.endFill(),i.addChild(s);const a=this.linesMaskGraphics.clone();s.mask=a,a.position.set(-t.x,-t.y),i.addChild(a),e.render(i);const r=e.view.toDataURL("image/png");return e.destroy(!0),r}},Pt=class extends C{constructor(t){super(),d(this,"type","loading"),d(this,"_pageDataUtils"),d(this,"_idMap",new Map),d(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t}addId(t,e,i){const s=this._pageDataUtils.getItemBoxById(t),a=U(s,e??s);"string"==typeof t&&(this._idMap.set(t,{status:"init",loadingBox:a,graphics:new Q.Graphics,ticker:new Q.Ticker}),this._pageDataUtils.addLoadingItems([t]),i&&this._pageDataUtils.removeSelectedItems([t]))}deleteId(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])}}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,a=.5;i.ticker.add(()=>{const t=this._pageDataUtils.getViewBoxById(e),{min:r,max:n}=V(t,i.loadingBox);a>.6?s=-.003:a<.4&&(s=.006),a+=s,i.graphics.clear(),i.graphics.beginFill(0,a),i.graphics.drawRect(r.x,r.y,n.x-r.x,n.y-r.y),i.graphics.endFill()}),i.ticker.start()}return t}},Ct=class extends C{constructor(t,e){super(),d(this,"result",{type:"invalid"}),d(this,"interactionParam",{type:"none"}),d(this,"graphics",new Q.Graphics),d(this,"isShiftDown",!1),d(this,"_isLockScale",!1),d(this,"_pageDataUtils"),d(this,"_eventEmitter"),d(this,"type","picture-expand"),d(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return $e.config.gestureHandlerConfig.pictureExpandGizmoEnabled}set interactive(t){t!==$e.config.gestureHandlerConfig.pictureExpandGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture expand gizmo can not open."):$e.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 D(t.offsetX,t.offsetY),i=new D(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 D(t.clientX,t.clientY),{startMouse:s,box:a}=this.interactionParam,r=(new D).subtractVectors(i,s),{itemBox:n}=this.result,{min:o,max:c}=n;switch(this.interactionParam.type){case"move":{const{min:t,max:e}=a,i=c.x-e.x,s=o.x-t.x,h=c.y-e.y,l=o.y-t.y;r.x=Math.min(Math.max(r.x,i),s),r.y=Math.min(Math.max(r.y,h),l);const p=a.clone().translate(r);this.result.normalizeExpandBox=U(n,p),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}case"scale":{const{index:t}=this.interactionParam,{min:i,max:s}=a,h=a.corners[t],l=a.corners[(t+2)%4],p=new D(h.x+r.x,h.y+r.y);if(h.x>=s.x?p.x=Math.max(p.x,c.x):h.x<=i.x?p.x=Math.min(p.x,o.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,o.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:r,y:n}=t.getSize(),{x:d,y:m}=a.getSize();if((e=this.interactionParam).lockedAspect??(e.lockedAspect=r/n),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,o.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,o.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=U(n,(new F).setFromVec2ArrayWithOutCorners([p,l])),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}case"direction-scale":{const{index:t,point:e}=this.interactionParam,i=a.corners[t].clone();e.x>=c.x?(r.x=Math.max(a.corners[t].x+r.x,c.x)-i.x,r.y=0):e.x<=o.x&&(r.x=Math.min(a.corners[t].x+r.x,o.x)-i.x,r.y=0),e.y>=c.y?(r.y=Math.max(a.corners[t].y+r.y,c.y)-i.y,r.x=0):e.y<=o.y&&(r.y=Math.min(a.corners[t].y+r.y,o.y)-i.y,r.x=0);const s=a.corners.map((e,i)=>[t,(t+1)%4].includes(i)?e.clone().add(r):e.clone());this.result.normalizeExpandBox=U(n,(new F).setFromVec2Array(s)),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}}}endAction(t){if(!this.interactive||"none"===this.interactionParam.type)return;const e=new D(t.offsetX,t.offsetY),i=new D(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(gt(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 F(new D,new D(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:a,expandBoxCornerRadius:r,expandBoxCornerFillColor:n,expandBoxCornerLineWidth:o,expandBoxCornerLineColor:c,expandBoxCornerLineAlpha:h}=$e.config.gestureHandlerConfig.pictureExpandGizmoConfig,{normalizeExpandBox:l,itemBox:p}=this.result,d=V(p,l);return this.graphics.beginFill(t,e),this.graphics.fillBox(d),this.graphics.endFill(),this.graphics.lineStyle(i,s,a),this.graphics.drawBox(d),this.graphics.beginFill(n),this.graphics.lineStyle(o,c,h),d.corners.forEach(t=>{this.graphics.drawCircle(t.x,t.y,r)}),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,a=V(s,i);let r=!1,n=0;a.corners.forEach((i,s)=>{r||i.distanceTo(t)<$e.config.gestureHandlerConfig.pictureExpandGizmoConfig.scaleInteractionDistance&&(r=!0,this.interactionParam={type:"scale",index:s,box:a.clone(),startMouse:e},n=Math.PI/2*s)}),a.corners.forEach((i,s)=>{if(r)return;const o=new G(i.clone(),a.corners[(s+1)%4]),c=t.distanceToLine(o);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){r=!0;const t=o.at(c.t);this.interactionParam={type:"direction-scale",index:s,point:t,box:a.clone(),startMouse:e},n=Math.PI/2*s+Math.PI/4}}),a.containsPoint(t)&&!r&&(this.interactionParam={type:"move",point:t.clone(),box:a.clone(),startMouse:e},r=!0),this.refreshCursorResult(this.interactionParam.type,n*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 V(e,i)}setExpandBox(t,e){const[i]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!i)return;const s=new F(t,e),a=this._pageDataUtils.getItemBoxById(i.id),{min:r,max:n}=U(a,s);this.result.normalizeExpandBox.set(new D(Math.min(r.x,0),Math.min(r.y,0)),new D(Math.max(n.x,1),Math.max(n.y,1)));const o=this.getExpandBox();return this._eventEmitter.emit("expandBoxChange",o),o}},Dt={fontSize:14,fill:16777215,align:"center",lineHeight:16},St=class extends C{constructor(t,e){super(),d(this,"type","sprite-text-edit"),d(this,"_pageDataUtils"),d(this,"_eventEmitter"),d(this,"graphics",new Q.Graphics),d(this,"editGraphics",new Q.Graphics),d(this,"preSelectedText",new Q.Text("",Dt)),d(this,"result",[]),d(this,"interactionParam",{preSelected:-1,selected:-1}),d(this,"clearPreSelected",!1),this._pageDataUtils=t,this._eventEmitter=e,this.preSelectedText.resolution=3}get interactive(){return $e.config.gestureHandlerConfig.spriteTextEditGizmoEnabled}set interactive(t){t!==$e.config.gestureHandlerConfig.spriteTextEditGizmoEnabled&&($e.config.gestureHandlerConfig.spriteTextEditGizmoEnabled=t)}preparationAction(t){const e=new D(t.offsetX,t.offsetY);return this.interactionParam.preSelected=-1,this.result.forEach((t,i)=>{if(this.interactionParam.preSelected>=0)return;V(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:a,box:r,hasChanged:n}=i,o=r.map(t=>new D(...t).add(e.min)),c=(new F).setFromVec2Array(o),h=U(e,c);this.result.push({id:t.id,index:s,hasChanged:n,text:a,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:a,hasChangedEditBoxColor:r,hasChangedEditBoxAlpha:n,hasChangedEditBoxPreSelectedColor:o,hasChangedEditBoxPreSelectedAlpha:c,editBoxLineColor:h,editBoxLineAlpha:l,editBoxLinePreSelectedAlpha:p,editBoxLinePreSelectedColor:d,hasChangedEditBoxLineColor:m,hasChangedEditBoxLineAlpha:g,hasChangedEditBoxLinePreSelectedColor:u,hasChangedEditBoxLinePreSelectedAlpha:y}=$e.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=V(this._pageDataUtils.getViewBoxById(m),d);if(g){const t=g?p?o:r:p?s:e,h=g?p?c:n:p?a:i;this.editGraphics.beginFill(t,h),this.editGraphics.fillBox(y),this.editGraphics.endFill()}else{const t=g?p?o:r:p?s:e,h=g?p?c:n:p?a: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,Dt,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:s,id:a,hasChanged:r}=t,n=V(this._pageDataUtils.getViewBoxById(a),s);if(r){const t=r?i?u:m:i?d:h,e=r?i?y:g:i?p:l;n.corners.forEach((i,s)=>{const a=i.clone(),r=n.corners[(s+1)%4].clone(),o=(new D).subtractVectors(r,a).angle()*E;if([180,270].includes(o)){const t=r.clone();r.copyFrom(a),a.copyFrom(t)}this.editGraphics.lineStyle(1,t,e),this.editGraphics.moveTo(...a.toArray()),this.editGraphics.lineTo(...r.toArray())})}else{const t=r?i?u:m:i?d:h,e=r?i?y:g:i?p:l;n.corners.forEach((i,s)=>{const a=i.clone(),r=n.corners[(s+1)%4].clone(),o=(new D).subtractVectors(r,a).angle()*E;if([180,270].includes(o)){const t=r.clone();r.copyFrom(a),a.copyFrom(t)}this.graphics.lineStyle(1,t,e),this.graphics.moveTo(...a.toArray()),this.graphics.lineTo(...r.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,s){const a=[];let r="";const n=t.split(""),o=new Q.Text("",e);for(let t=0;t<n.length;t++){const e=n[t],c=r+e;if(o.text=c,o.width>i){if(a.push(r),a.length>=s){const t=a[s-1];t.length>2?a[s-1]=t.slice(0,-2)+"...":a[s-1]="...";break}r=e}else r=c;t===n.length-1&&r&&a.push(r)}return a.slice(0,s).join("\n")}},bt=require("@pixi/sprite"),zt=class extends C{constructor(t,e){super(),d(this,"type","video-play"),d(this,"result",{id:"",box:new F}),d(this,"interactionParam",{type:"none"}),d(this,"logoSprite"),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"_pageDataUtils"),d(this,"_eventEmitter"),this._pageDataUtils=t,this._eventEmitter=e;const{logoUrl:i,width:s,height:a}=$e.config.gestureHandlerConfig.videoPlayGizmoConfig;this.logoSprite=bt.Sprite.from(i),this.logoSprite.width=s,this.logoSprite.height=a}get interactive(){return $e.config.gestureHandlerConfig.videoPlayGizmoEnabled}set interactive(t){t!==$e.config.gestureHandlerConfig.videoPlayGizmoEnabled&&($e.config.gestureHandlerConfig.videoPlayGizmoEnabled=t)}preparationAction(t){if(!this.interactive)return;const e=new D(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 F};const t=this._pageDataUtils.getSelectedItems();if(1!==t.length||t[0]?.type!==w.spec.ItemType.video)return;const e=t[0].id,{width:i,height:s,logoShift:a}=$e.config.gestureHandlerConfig.videoPlayGizmoConfig,r=this._pageDataUtils.getViewBoxById(e),n=r.getSize();if(n.x<50||n.y<50)this.result.box.makeEmpty();else{const{max:t}=r,n=new D(t.x-a[0],t.y-a[1]),o=new D(i,s);this.result.id=e,this.result.box.setFromCenterAndSize(n,o)}}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]}},Et=class{constructor(t){d(this,"wireframeApplication"),d(this,"gizmos",[]),d(this,"activeGizmo"),d(this,"selectorGizmo"),d(this,"transformGizmo"),d(this,"controlGizmo"),d(this,"preferenceGizmo"),d(this,"pictureCutGizmo"),d(this,"pictureExpandGizmo"),d(this,"textGizmo"),d(this,"maskGizmo"),d(this,"loadingGizmo"),d(this,"spriteTextEditGizmo"),d(this,"videoPlayGizmo"),d(this,"_ignoreInteraction",!1),d(this,"clickButtons",0),d(this,"container"),d(this,"_emitter"),d(this,"clickTime",0),d(this,"firstClick",!0),d(this,"dblclickTimeSpan",500),d(this,"spaceEmit",!1),d(this,"interactType","select"),this.gizmos=[];const{width:e,height:i}=t.getBoundingClientRect();this.wireframeApplication=new P.Application({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(mt).map(([t,e])=>{const{url:i}=e;if(i)return fetch(i).then(t=>t.text()).then(i=>mt[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 ct||this.activeGizmo instanceof xt||this.activeGizmo instanceof Ct||this.activeGizmo instanceof vt||this.activeGizmo instanceof wt||this.activeGizmo instanceof $||this.activeGizmo instanceof zt?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 $(t),this.selectorGizmo=new Z(t);const i=new lt;this.transformGizmo=new ct(t,i,this.selectorGizmo),this.preferenceGizmo=new pt(t),this.pictureCutGizmo=new xt(t,e),this.pictureExpandGizmo=new Ct(t,e),this.textGizmo=new wt(t,i,this.selectorGizmo,e,this.wireframeApplication?.view.parentElement),this.textGizmo.rotationSprite.texture=await It.Texture.fromURL($e.config.gestureHandlerConfig.textGizmoConfig.rotationCornerTexture),this.maskGizmo=new vt(t),this.loadingGizmo=new Pt(t),this.spriteTextEditGizmo=new St(t,e),this.videoPlayGizmo=new zt(t,e),this.gizmos.push(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);"selector"!==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),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);"selector"!==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.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"].includes(t.type)){const i=mt[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;const t=JSON.parse(JSON.stringify($e.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);const e=JSON.parse(JSON.stringify($e.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}closePictureCutGizmo(){if(!this.pictureCutGizmo)return;const t=JSON.parse(JSON.stringify($e.config));this.pictureCutGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0,this.textGizmo.interactive=!0;const e=JSON.parse(JSON.stringify($e.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($e.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);const e=JSON.parse(JSON.stringify($e.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}closePictureExpandGizmo(){if(!this.pictureExpandGizmo)return;const t=JSON.parse(JSON.stringify($e.config));this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0,this.textGizmo.interactive=!0;const e=JSON.parse(JSON.stringify($e.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($e.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);const i=JSON.parse(JSON.stringify($e.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($e.config));this.maskGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify($e.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()}openLoadingGizmo(t,e,i){if(!this.loadingGizmo)return;const s=JSON.parse(JSON.stringify($e.config));this.loadingGizmo.addId(t,e,i),this.loadingGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1);const a=JSON.parse(JSON.stringify($e.config));this.render(),this._emitter?.emit("sdkConfigChange",s,a)}closeLoadingGizmo(t){if(!this.loadingGizmo)return;const e=JSON.parse(JSON.stringify($e.config));this.loadingGizmo.deleteId(t);const i=JSON.parse(JSON.stringify($e.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($e.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);const i=JSON.parse(JSON.stringify($e.config));this.render(),this._emitter?.emit("sdkConfigChange",e,i)}closeSpriteTextEditGizmo(){if(!this.spriteTextEditGizmo)return;const t=JSON.parse(JSON.stringify($e.config));this.spriteTextEditGizmo.interactive=!1,this.spriteTextEditGizmo.clearResult(),this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify($e.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)}},At=require("@galacean/effects"),Tt=require("@galacean/effects"),_t=class{constructor(t){d(this,"plane",new O),d(this,"ray",new j),d(this,"viewportParam",{width:0,height:0,scale:1,translation:new D,rulerWidth:0}),d(this,"cameraParam",{position:new W,rotation:new W,focusPosition:new W,focusRotation:new W,viewProjectionMatrix:new H,inverseViewProjectionMatrix:new H}),d(this,"pageDataUtils"),this.pageDataUtils=t}refreshViewParam(){const t=this.pageDataUtils.getPageData();(0,Tt.assertExist)(t,"You must run SDK first");const e=new D(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 D(...s),this.viewportParam.rulerWidth=0}refreshCameraParam(){const{player:t}=this.pageDataUtils,e=t?.getCompositions()?.[0]?.camera;if(e){const t=H.fromArray(e.getViewProjectionMatrix().toArray()),i=H.fromArray(e.getViewMatrix().toArray()).invert(),s=new L;i.decompose(this.cameraParam.position,s,new W),this.cameraParam.rotation=(new N).setFromQuaternion(s).toDegreeVector3(),this.cameraParam.focusPosition=new W(...this.cameraParam.position.toVector2().toArray(),this.cameraParam.position.z>0?0:2*this.cameraParam.position.z),this.cameraParam.focusPosition.applyEuler((new N).setFromDegreeVector3(this.cameraParam.rotation.clone()),this.cameraParam.position),this.cameraParam.focusRotation=(new N).setFromQuaternion(s.invert()).toDegreeVector3(),this.cameraParam.viewProjectionMatrix=t,this.cameraParam.inverseViewProjectionMatrix=H.fromArray(e.getInverseViewProjectionMatrix().toArray())}}initInteractionPlane(t,e){t??(t=this.cameraParam.focusPosition),e??(e=(new N).setFromDegreeVector3(this.cameraParam.rotation));const i=new W(0,0,1).applyEuler(e);this.plane.setFromNormalAndCoplanarPoint(t,i)}getWorldSizeByViewSize(t,e=!0,i){const s=e||!i?(new N).setFromDegreeVector3(this.cameraParam.rotation):(new N).setFromQuaternion((new L).setFromRotationMatrix(this.pageDataUtils.getItemTransformById(i).matrix)),a=i?(new W).setFromMatrixPosition(this.pageDataUtils.getItemTransformById(i).matrix):this.cameraParam.focusPosition,r="editor"===$e.config.mode?1:this.viewportParam.scale;t.multiply(r);const n=this.projectPoint(a.clone()),o=this.getWorldPositionByViewPoint(n.add(t));if(!o)return console.warn("size is out of bounds."),new W(0,0,0);const c=(new N).setFromQuaternion((new L).setFromEuler(s).invert());return(e||!i?o.applyEuler(c,a):o).subtract(a)}getViewSizeByPixelSize(t){const{scale:e}=this.viewportParam,i="template"===$e.config.mode?1:e;return t.clone().multiply(i)}projectPoint(t){const{width:e,height:i,scale:s}=this.viewportParam,{viewProjectionMatrix:a}=this.cameraParam,r="editor"===$e.config.mode?1:s;return(new D).copyFrom(t.applyMatrix(a).toVector2()).toViewCoordinate(e*r,i*r)}getWorldPositionByViewPoint(t){const{position:e,inverseViewProjectionMatrix:i}=this.cameraParam,s=this.getNDCPositionByScreenPosition(t),a=(new K).setFromCamera(s,{position:e,inverseViewProjectMatrix:i}).rayCastPlane(this.plane);return a?.point}getNDCPositionByScreenPosition(t){const{width:e,height:i,scale:s}=this.viewportParam,a="editor"===$e.config.mode?1:s;return new D(t.x/(e*a)*2-1,1-t.y/(i*a)*2)}getNDCSizeByPixelSize(t){const{width:e,height:i}=this.viewportParam;return new D(t.x/e*2,-t.y/i*2)}getPixelSizeByNDCSize(t){const{width:e,height:i}=this.viewportParam;return new D(t.x/2*e,-t.y/2*i)}getViewPositionWWithOutTransform(t){const{scale:e}=this.viewportParam,i="editor"===$e.config.mode?1:e;return t.divide(i)}getViewPositionByPixelPoint(t){if("template"===$e.config.mode)return t.clone();const{width:e,height:i,scale:s,translation:a}=this.viewportParam;return t.clone().scaleByCenter(new D(s,s),new D(e/2,i/2)).add(a)}getPixelPositionByViewPoint(t){if("template"===$e.config.mode)return t.clone();const{width:e,height:i,scale:s,translation:a}=this.viewportParam;return t.clone().subtract(a.clone()).scaleByCenter(new D(1/s,1/s),new D(e/2,i/2))}},Bt={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"},kt={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 Mt(t,e,i,s){const a=e.getContext("2d");ut(a),a.clearRect(0,0,e.width,e.height),i&&(a.save(),a.fillStyle=i,a.fillRect(0,0,e.width,e.height),a.restore()),s&&a.drawImage(s,0,0,s.width,s.height,0,0,e.width,e.height),a.drawImage(t,0,0,t.width,t.height,0,0,e.width,e.height)}async function Vt(){return new Promise(async(t,e)=>{try{await function(t,e={}){return new Promise((i,s)=>{const a=document.querySelector(`script[src="${t}"]`);if(a)return"true"===a.dataset.loaded?void i(a):(a.addEventListener("load",()=>{i(a)}),void a.addEventListener("error",()=>{s(new Error(`Script already failed: ${t}`))}));const r=document.createElement("script");r.src=t,r.async=!0,Object.keys(e).forEach(t=>{r.setAttribute(t,e[t]??"")}),r.onload=()=>{r.dataset.loaded="true",i(r)},r.onerror=()=>{s(new Error(`Failed to load script: ${t}`))},document.head.appendChild(r)})}(Bt.SCRIPT,{crossOrigin:"anonymous"});const e={locateFile:(t,e)=>t.endsWith("createWebPCore.wasm")?Bt.WASM:e+t};t(await window.createWebPCore(e))}catch(t){e(t)}})}function Ut(t){for(const e of t.getCompositions())for(const t of e.textures)t.isDestroyed||t.dispose();t.disposed||t.destroyCurrentCompositions()}function Gt(t=[750,750],e="AI 设计师画布"){const i=(0,w.generateGUID)(),s={id:(0,w.generateGUID)(),dataType:w.spec.DataType.TimelineAsset,tracks:[]},a={id:(0,w.generateGUID)(),item:{id:i},dataType:w.spec.DataType.CompositionComponent,items:[],timelineAsset:{id:s.id},sceneBindings:[]},r={id:i,name:e,duration:999,startTime:0,endBehavior:w.spec.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:a.id}]},n={version:w.spec.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 n.miscs.push(s),n.compositions.push(r),n.components.push(a),n}function Ft(t,e,i,s,a,r,n){const o=(0,w.generateGUID)(),c={id:t,name:r,dataType:w.spec.DataType.VFXItemData,components:[{id:o}],delay:0,duration:999,endBehavior:w.spec.EndBehavior.restart,renderLevel:w.spec.RenderLevel.BPlus,type:w.spec.ItemType.sprite,visible:!0,transform:{position:{x: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:a.x,y:a.y,z:a.z},anchor:{x:0,y:0}},content:void 0},h={id:o,item:{id:t},dataType:w.spec.DataType.SpriteComponent,options:{startColor:[1,1,1,1]},renderer:{renderMode:w.spec.RenderMode.MESH}};n&&(h.renderer.texture={id:n});const l={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationPlayableAsset},p={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:l.id}}]},d={id:(0,w.generateGUID)(),dataType:w.spec.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:c,components:[h],tracks:[p,{id:(0,w.generateGUID)(),dataType:w.spec.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:d.id}}]}],playableAssets:[l,d]}}function Rt(t,e,i,s=new D(1,1),a=0){const r=JSON.parse(JSON.stringify(i)),n={id:t,name:e,duration:999,type:w.spec.ItemType.null,visible:!0,endBehavior:w.spec.EndBehavior.restart,delay:0,renderLevel:w.spec.RenderLevel.BPlus,content:{options:{startColor:[1,1,1,1]}},components:[],transform:{position:r,eulerHint:{x:0,y:0,z:a},size:{x:1,y:1},scale:{x:s.x,y:s.y,z:1}},dataType:w.spec.DataType.VFXItemData},o={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationPlayableAsset};return{item:n,components:[],tracks:[{id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:o.id}}]}],playableAssets:[o]}}function Lt(t,e,i,s,a,r){const n=(0,w.generateGUID)(),o={id:t,name:e,dataType:w.spec.DataType.VFXItemData,components:[{id:n}],delay:0,duration:999,endBehavior:w.spec.EndBehavior.restart,renderLevel:w.spec.RenderLevel.BPlus,type:w.spec.ItemType.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:a.x,y:a.y,z:1},anchor:{x:0,y:0}},content:void 0},c={id:n,item:{id:t},dataType:w.spec.DataType.TextComponent,options:r,renderer:{renderMode:1}},h={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationPlayableAsset};return{item:o,components:[c],tracks:[{id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:h.id}}]}],playableAssets:[h]}}function Wt(t,e,i,s,a,r,n=!1,o=!1,c=1,h=1,l,p){const d=(0,w.generateGUID)(),m={id:t,name:r,dataType:w.spec.DataType.VFXItemData,components:[{id:d}],delay:0,duration:999,endBehavior:w.spec.EndBehavior.restart,renderLevel:w.spec.RenderLevel.BPlus,type:w.spec.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:a.x,y:a.y,z:a.z},anchor:{x:0,y:0}},content:void 0},g={id:d,item:{id:t},dataType:w.spec.DataType.VideoComponent,options:{startColor:[1,1,1,1],muted:n,video:{id:p},volume:c,playbackRate:h,transparent:o},renderer:{renderMode:w.spec.RenderMode.MESH}};l&&(g.renderer.texture={id:l});const u={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationPlayableAsset},y={id:(0,w.generateGUID)(),dataType:w.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:u.id}}]},f={id:(0,w.generateGUID)(),dataType:w.spec.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:m,components:[g],tracks:[y,{id:(0,w.generateGUID)(),dataType:w.spec.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:w.spec.EndBehavior.restart,asset:{id:f.id}}]}],playableAssets:[u,f]}}function Ht(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:(0,w.generateGUID)(),dataType:w.spec.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 Nt(t,e,i){var s;const a=t.items.findIndex(t=>t.id===e);if(a<0)return;!function(t,e){var i;const s=t.items.findIndex(t=>t.id===e);if(!t.items[s]?.parentId)return;const a=t.items.find(e=>e.id===t.items[s].parentId);if(!a)return void delete t.items[s].parentId;const{position:r={x:0,y:0,z:0},eulerHint:n=new W,scale:o=new W(1,1,1)}=a.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+=r.x,t.items[s].transform.position.y+=r.y,t.items[s].transform.position.z+=r.z,t.items[s].transform.eulerHint.x+=n.x,t.items[s].transform.eulerHint.y+=n.y,t.items[s].transform.eulerHint.z+=n.z,t.items[s].transform.scale.x*=0===o.x?1:o.x,t.items[s].transform.scale.y*=0===o.y?1:o.y,t.items[s].transform.scale.z*=0===o.z?1:o.z}(t,e);const r=t.items.find(t=>t.id===i);if(!r)return;t.items[a].parentId=i;const{position:n={x:0,y:0,z:0},eulerHint:o=new W,scale:c=new W(1,1,1)}=r.transform;(s=t.items[a]).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[a].transform.position.x-=n.x,t.items[a].transform.position.y-=n.y,t.items[a].transform.position.z-=n.z,t.items[a].transform.eulerHint.x-=o.x,t.items[a].transform.eulerHint.y-=o.y,t.items[a].transform.eulerHint.z-=o.z,t.items[a].transform.scale.x/=0===c.x?1:c.x,t.items[a].transform.scale.y/=0===c.y?1:c.y,t.items[a].transform.scale.z/=0===c.z?1:c.z}function Ot(t,e){let i;return t.components.forEach(s=>{if(s.item.id===e)if(s.dataType===w.spec.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===w.spec.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}var jt,Kt,$t,Yt,Jt,qt,Xt,Zt,Qt,te,ee,ie,se,ae,re,ne,oe,ce,he,le,pe,de,me=require("@galacean/effects"),ge=require("@galacean/effects-plugin-multimedia"),ue=class{static createEmpty(t,e=null,i="NewVFXItem"){const s=ye.createVFXItem(t,e,i);return s.type=me.spec.ItemType.null,s}static createSprite(t,e=null,i="NewSpite"){const s=ye.createVFXItem(t,e,i,me.SpriteComponent);return s.type=me.spec.ItemType.sprite,s}static createText(t,e=null,i="NewText"){const s=ye.createVFXItem(t,e,i,me.TextComponent);return s.type=me.spec.ItemType.text,s}static createVideo(t,e=null,i="NewVideo"){const s=ye.createVFXItem(t,e,i,ge.VideoComponent);return s.type=me.spec.ItemType.video,s}},ye=class{static createVFXItem(t,e=null,i="NewVFXItem",...s){const a=new me.VFXItem(t.getEngine());a.name=i;for(const t of s)a.addComponent(t);return t.addItem(a),t.rootComposition.items.push(a),e&&a.setParent(e),a}},fe=class{constructor(t,e,i,s){d(this,"sdk"),d(this,"player"),d(this,"container"),d(this,"emitter"),d(this,"interactionUtils"),this.player=t,this.sdk=s,this.container=e,this.emitter=i}init(){this.interactionUtils=new _t(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.getViewItemById(t);if(!e||!this.sdk.pageData||this.getViewProperty()?.ignoreInteraction)return!1;const i=this.sdk.pageData.time,{duration:s,delay:a,endBehavior:r}=e;return i>=a&&(i<a+s||r===w.spec.EndBehavior.restart)}getItemShow(t){const e=this.getViewItemById(t);if(!this.sdk.pageData||!e?.property.visible)return!1;const i=this.sdk.pageData.time,{duration:s,delay:a,endBehavior:r}=e;return i>=a&&(i<a+s||r===w.spec.EndBehavior.restart||r===w.spec.EndBehavior.freeze)}addSelectedItems(t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const e=this.sdk.pageData.activeData.selectedItems??[];t.forEach(t=>{J(e,t)}),this.sdk.pageData.activeData.selectedItems=[...e],this.emitter.emit("selectedItemChange",e),this.emitter.emit("pageDataChange",this.sdk.pageData)}removeSelectedItems(t){(0,w.assertExist)(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){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=t,this.emitter.emit("preSelectedItemChange",t)}clearPreSelectedItem(){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=void 0,this.emitter.emit("preSelectedItemChange",void 0)}getPreSelectedItem(){const t=this.getPageData();(0,w.assertExist)(t,"You must call SDK#run() first");const e=t.activeData.preSelectedItem;return e?this.getViewItemById(e):void 0}addLoadingItems(t){var e;(0,w.assertExist)(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=>{J(i,t)}),this.emitter.emit("loadingItemChange",i)}removeLoadingItems(t){(0,w.assertExist)(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))??[]}getViewItemById(t){return this.sdk.pageData?.items.find(e=>e.id===t)}getPlayerSizeByParent(t,e){const[i,s]=t,[a=1624,r=750]=e;let n=s,o=n/r*a;return o>i&&(n=i/o*s,o=i),[o,n]}async loadScene(t){Ut(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"===$e.config.mode){const t=this.container.parentElement?.offsetWidth??300,e=this.container.parentElement?.offsetHeight??300,[i,a]=this.getPlayerSizeByParent([t,e],s);this.container.style.width=`${i}px`,this.container.style.height=`${a}px`}this.sdk.pageData.activeData={view:t,selectedItems:[],preSelectedItem:void 0},this.player.resize();const a=JSON.parse(JSON.stringify(i)),r=await this.player.loadScene(a,{autoplay:!1});this.player.gotoAndStop(this.sdk.pageData.time),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,r.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}refreshPageTime(t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.time=t}pageZoom(t,e,i){var s;(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),(s=this.sdk.pageData.property).zoom??(s.zoom=1);const{zoom:a,translation:[r=0,n=0]}=this.sdk.pageData.property,{width:o,height:c,scale:h}=this.interactionUtils.viewportParam,l=i?t:b(t,-.1,.1),p=_(b(a+l,$e.config.pageConfig.minZoom,$e.config.pageConfig.maxZoom),2);switch(this.sdk.pageData.property.zoom=p,$e.config.mode){case"editor":{const t=this.interactionUtils.getNDCSizeByPixelSize(new D(r,n)),i=e??new D(o/2,c/2),s=this.interactionUtils.getNDCPositionByScreenPosition(i),a=(s.x-t.x)/h,l=(s.y-t.y)/h,d=new D(s.x-a*p,s.y-l*p),m=(new H).compose(new W(d.x,d.y,0),new L,new W(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(),this.sdk.pageData.items=[];const d=this.getCurrentComposition();this.addViewItemsByItems(this.sdk.pageData.items,d.items),this.emitter.emit("zoomChange",p),this.emitter.emit("viewportTransform",{zoom:p,translation:[r,n]}),this.emitter.emit("pageDataChange",this.sdk.pageData)}setPageZoom(t,e,i){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{zoom:s}=this.sdk.pageData.property,a=t-s;this.pageZoom(a,e,i)}refreshInteractionParam(){this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam()}pageMove(t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{translation:[e=0,i=0],zoom:s}=this.sdk.pageData.property,a=e+t.x,r=i+t.y;switch(this.sdk.pageData.property.translation=[a,r],$e.config.mode){case"template":this.container.style.translate=`${a}px ${r}px`;break;case"editor":{const t=this.interactionUtils.getNDCSizeByPixelSize(new D(a,r)),e=(new H).compose(new W(t.x,t.y,0),new L,new W(s,s,1));this.setCurrenCameraViewportMatrix(e);break}}this.refreshInteractionParam(),this.sdk.pageData.items=[];const n=this.getCurrentComposition();this.addViewItemsByItems(this.sdk.pageData.items,n.items),this.emitter.emit("viewportTransform",{zoom:s,translation:[a,r]}),this.emitter.emit("pageDataChange",this.sdk.pageData)}setPageMove(t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{translation:e}=this.sdk.pageData.property,i=(new D).subtractVectors(t,new D(...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.refreshViewItem(t),this.emitter.emit("itemPropertyChange",{id:t,property:"rotation"}))}moveItem(t,e){const i=this.getPlayerItemById(t);if(i){const s=(new H).copyFrom(i.transform.getParentMatrix()??new H);s.setPosition(new W);const a=e.clone().applyMatrix(s.invert());i.translate(...a.toArray()),i.transform.updateLocalMatrix(),this.transformSceneItem(t,"position",a.toArray()),this.refreshViewItem(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.refreshViewItem(t),this.emitter.emit("itemPropertyChange",{id:t,property:"size"}))}scaleTextItemWidth(t,e){const i=this.getViewItemById(t);if(i?.type===w.spec.ItemType.text){const{textWidth:t}=i.property;this.changeItemProperty({itemId:i.id,type:w.spec.ItemType.text,propertyName:"textWidth",propertyValue:t*e})}}scaleTextItem(t,e){const i=this.getViewItemById(t);if(i?.type===w.spec.ItemType.text){const{textWidth:t,lineHeight:s,fontSize:a}=i.property;this.changeItemProperty({itemId:i.id,type:w.spec.ItemType.text,propertyName:"textWidth",propertyValue:t*e}),this.changeItemProperty({itemId:i.id,type:w.spec.ItemType.text,propertyName:"fontSize",propertyValue:a*e}),this.changeItemProperty({itemId:i.id,type:w.spec.ItemType.text,propertyName:"lineHeight",propertyValue:s*e})}}getItemTransformById(t){const e={matrix:new H,parentMatrix:new H},i=this.getPlayerItemById(t);if(void 0!==i?.transform){i.transform.updateLocalMatrix();const t=H.fromArray(i.composition?.transform.getWorldMatrix().elements??[]).invert();e.matrix=t.clone().multiply(H.fromArray(i.transform.getWorldMatrix().elements)),e.parentMatrix=t.clone().multiply(H.fromArray(i.transform.parentTransform?.getWorldMatrix().elements??(new H).toArray()))}return e}addViewItemsByItems(t,e,i){const s=e=>{e.forEach(e=>{t.find(t=>t.id===e.getInstanceId())||t.push(this.createViewItemByPlayerItem(e,i))})};for(const i of e)$e.config.pageConfig.filterItemNames.includes(i.name)||(s([i]),this.addViewItemsByItems(t,i.children,i.getInstanceId()))}createViewItemByPlayerItem(t,e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{transform:i,composition:s,isVisible:a}=t,r={position:[0,0],rotation:[0,0,0],size:[0,0],visible:a,keyPropertyEditing:!1},{scale:n}=this.interactionUtils.viewportParam,o="editor"===$e.config.mode?1:n,c=this.getViewportLeftTopPosition();if(t.type!==w.spec.ItemType.null){i.updateLocalMatrix();const e=(new H).copyFrom(s?.transform.getWorldMatrix()??(new H).identity()).invert().multiply(i.getWorldMatrix()),a=new W,o=new L,c=new W;e.decompose(a,o,c);const h=(new N).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(a,h);const l=this.interactionUtils.projectPoint(a),p="editor"===$e.config.mode?this.interactionUtils.getPixelPositionByViewPoint(l).toArray().map(t=>_(t,2)):l.divide(n).toArray().map(t=>_(t,2)),d=h.toArray().map(t=>_(t,2)),m=c.toArray().map(t=>_(t,2)),g=i.size.toArray(),u=this.getPixelSizeByWorldSize([m[0]*g[0],m[1]*g[1],m[2]],t).map(t=>_(t,2));r.position=p,r.rotation=d,r.size=u}else{const e=this.getViewBoxByPlayerItem(t,t.children),i=this.interactionUtils.getViewPositionWWithOutTransform(e.getCenter().subtract(c)),s="editor"===$e.config.mode?this.interactionUtils.getPixelPositionByViewPoint(i).toArray().map(t=>_(t,2)):i.toArray();r.position=s,r.size=e.getSize().divide(o).toArray()}switch(t.type){case w.spec.ItemType.sprite:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(r.keyPropertyEditing||!("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);r.keyPropertyEditing=!!t?.template;const s=t?.url??"";s&&Object.assign(r,{image:s})}})}break}case w.spec.ItemType.video:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(r.keyPropertyEditing||!("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.keyPropertyEditing=!0;const s=t?.url??"";s&&Object.assign(r,{video:s})}})}break}case w.spec.ItemType.text:case w.spec.ItemType.richtext:{const e=this.getViewProperty()?.scene;if(r.keyPropertyEditing=!0,e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(![w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType))return;const{textAlign:e,textColor:i,text:s,fontWeight:a,fontFamily:n,fontSize:o,fontStyle:c,outline:h,textWidth:l,lineHeight:p}=t.options,d=h?.outlineColor?h.outlineColor.map((t,e)=>e>2?t:_(255*t,0)):void 0,m=i.map((t,e)=>e>2?t:_(255*t,0)),g=h?.outlineWidth,u=!!h;Object.assign(r,{outlineEnabled:u,textAlign:e,textColor:m,fontWeight:a,text:s,fontFamily:n,fontSize:o,fontStyle:c,outlineColor:d,outlineWidth:g,textWidth:l,lineHeight:p})})}break}}return{id:t.getInstanceId(),name:t.name,parentId:t.parentId??e,children:[],type:t.type,duration:t.duration,delay:t.defination.delay,endBehavior:t.endBehavior,property:r}}getViewBoxById(t){const e=new F,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 W).copyFrom(e.transform.anchor).applyMatrix((new H).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 F;switch(t.type){case w.spec.ItemType.sprite:case w.spec.ItemType.plugin:case w.spec.ItemType.video:case w.spec.ItemType.richtext:case w.spec.ItemType.text:case w.spec.ItemType.shape:{const{transform:s,composition:a}=t;s.updateLocalMatrix();const{size:r}=s,n=(new H).copyFrom(a?.transform.getWorldMatrix()??new H).invert().multiply(s.getWorldMatrix()),{x:o,y:c}=r.clone().divide(2),h=new W(o,c,0).applyMatrix(n),l=new W(o,-c,0).applyMatrix(n),p=new W(-o,-c,0).applyMatrix(n),d=new W(-o,c,0).applyMatrix(n),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 w.spec.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"===$e.config.mode)return new D;const{zoom:t,translation:e}=this.sdk.pageData.property,{offsetWidth:i,offsetHeight:s}=this.container.parentElement,{offsetWidth:a,offsetHeight:r}=this.container,n=new D(i,s),o=new D(a,r).multiply(t);return n.clone().divide(2).subtract(o.clone().divide(2)).add(e)}getViewportByViewPoint(t){if(!this.sdk.pageData)return t;const{zoom:e}=this.sdk.pageData.property,i="editor"===$e.config.mode?1:e,{width:s,height:a}=this.interactionUtils.viewportParam,r=new D(s,a).multiply(i),n=this.getViewportLeftTopPosition(),o=t.clone().subtract(n);return new D(o.x/r.x*2-1,1-o.y/r.y*2)}async changeItemProperty(t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),(0,w.assertExist)(t,"Param is not exsited.");const e=this.getViewItemById(t.itemId),i=this.getPlayerItemById(t.itemId);if(e&&i)if(t.propertyName in e.property){switch(t.propertyName){case"textAlign":[w.spec.TextAlignment.left,w.spec.TextAlignment.middle,w.spec.TextAlignment.right].includes(t.propertyValue)&&i.getComponent(w.TextComponent).setTextAlign(t.propertyValue);break;case"textColor":if(Array.isArray(t.propertyValue)&&4===t.propertyValue.length){const e=t.propertyValue.map((t,e)=>e>2?t:_(t/255,5));i.getComponent(w.TextComponent).setTextColor(e)}break;case"fontFamily":if("string"==typeof t.propertyValue){const e=t.propertyValue.split("/"),s=e[e.length-1]?.split(".")[0];await At.AssetManager.loadFontFamily([{fontURL:t.propertyValue,fontFamily:s}]),s&&(i.getComponent(w.TextComponent).setFontFamily(s),i.getComponent(w.TextComponent).isDirty=!0)}break;case"text":if("string"==typeof t.propertyValue){const e=i.getComponent(w.TextComponent);if(e.setText(t.propertyValue),"editor"===$e.config.mode){const s=e.getLineCount(t.propertyValue),a=Math.ceil(e.textLayout.lineHeight*s);e.setTextHeight(a);const r=e.textLayout.width,n=this.interactionUtils.getViewSizeByPixelSize(new D(r,a)),o=this.interactionUtils.getWorldSizeByViewSize(n);i.transform.setScale(i.transform.scale.x,Math.abs(o.y),1)}}break;case"fontWeight":[w.spec.TextWeight.normal,w.spec.TextWeight.bold,w.spec.TextWeight.lighter].includes(t.propertyValue)&&i.getComponent(w.TextComponent).setFontWeight(t.propertyValue);break;case"textWidth":{const e=i.getComponent(w.TextComponent);e.setTextWidth(t.propertyValue);const s=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(s);const a=e.textLayout.width,r=this.interactionUtils.getViewSizeByPixelSize(new D(a,s)),n=this.interactionUtils.getWorldSizeByViewSize(r);i.transform.setScale(i.transform.scale.x,Math.abs(n.y),1);break}case"lineHeight":{const e=i.getComponent(w.TextComponent);e.setLineHeight(t.propertyValue);const s=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(s);const a=e.textLayout.width,r=this.interactionUtils.getViewSizeByPixelSize(new D(a,s)),n=this.interactionUtils.getWorldSizeByViewSize(r);i.transform.setScale(i.transform.scale.x,Math.abs(n.y),1);break}case"outlineColor":if(Array.isArray(t.propertyValue)&&4===t.propertyValue.length){const e=i.getComponent(w.TextComponent);if("function"==typeof e.setOutlineColor){const i=t.propertyValue.map((t,e)=>e>2?t:_(t/255,5));e.setOutlineColor(i)}}break;case"outlineWidth":if("number"==typeof t.propertyValue){const e=i.getComponent(w.TextComponent);"function"==typeof e.setOutlineWidth&&e.setOutlineWidth(t.propertyValue)}break;case"outlineEnabled":if("boolean"==typeof t.propertyValue){const e=i.getComponent(w.TextComponent);"function"==typeof e.setOutlineEnabled&&e.setOutlineEnabled(t.propertyValue)}break;case"fontSize":if("number"==typeof t.propertyValue&&i.type===w.spec.ItemType.text){const e=i.getComponent(w.TextComponent),s=e.textStyle.fontSize;if(e.setFontSize(t.propertyValue),"editor"===$e.config.mode){e.setLineHeight(e.textLayout.lineHeight*t.propertyValue/s);const a=e.getLineCount(e.text),r=Math.ceil(e.textLayout.lineHeight*a);e.setTextHeight(r);const n=e.textLayout.width,o=this.interactionUtils.getViewSizeByPixelSize(new D(n,r)),c=this.interactionUtils.getWorldSizeByViewSize(o);i.transform.setScale(i.transform.scale.x,Math.abs(c.y),1)}}break;case"image":"string"==typeof t.propertyValue&&i.getComponent(w.SpriteComponent).setTexture(await w.Texture.fromImage(t.propertyValue,this.player.renderer.engine));break;case"position":if(Array.isArray(t.propertyValue)&&(3===t.propertyValue.length||2===t.propertyValue.length)){const i=t.propertyValue.map((t,i)=>t-(e.property.position[i]??0)),s=this.interactionUtils.getViewSizeByPixelSize(new D(...i)),a=this.interactionUtils.getWorldSizeByViewSize(s,!0,t.itemId);this.moveItem(t.itemId,a)}break;case"rotation":if(Array.isArray(t.propertyValue)&&3===t.propertyValue.length){const i=t.propertyValue.map((t,i)=>t-(e.property.rotation[i]??0));this.rotateItem(t.itemId,new W(...i).negate())}break;case"size":if(Array.isArray(t.propertyValue)&&2===t.propertyValue.length){const i=t.propertyValue.map(t=>0===t||null===t?1:t),s=e.property.size.map(t=>t||1),a=i.map((t,e)=>t/s[e]);this.scaleItem(t.itemId,new W(...a,1))}break;case"visible":if("boolean"==typeof t.propertyValue&&(i.setVisible(t.propertyValue),$e.config.pageConfig.groupVisible)){this.getChildrenPlayerItems(i).forEach(e=>{e.setVisible(t.propertyValue)})}}["position","rotation","size"].includes(t.propertyName)||this.player.gotoAndStop(this.sdk.pageData.time),this.changeViewItemProperty(t),this.refreshViewItem(t.itemId)}else console.warn(`Item does not have property ${t.propertyName}.`);else console.warn(`Id ${t.itemId} is not a item id.`)}changeViewItemProperty(t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),(0,w.assertExist)(t,"Param is not exsited."),this.sdk.pageData.viewProperties.forEach(e=>{if(!this.sdk.pageData?.property.asyncMode&&e.id!==this.sdk.pageData?.activeData.view)return;const{scene:i}=e;switch(t.propertyName){case"position":if(Array.isArray(t.propertyValue)&&2===t.propertyValue.length){const e=this.sdk.pageData.items.find(e=>e.id===t.itemId),s=e?.property[t.propertyName],a=t.propertyValue.map((t,e)=>t-(s?.[e]??0)),r=this.interactionUtils.getViewSizeByPixelSize(new D(...a)),n=this.interactionUtils.getWorldSizeByViewSize(r,!0,t.itemId);this.changeSceneItemProperty(i,{...t,propertyValue:n.toArray()})}break;case"rotation":if(Array.isArray(t.propertyValue)&&3===t.propertyValue.length){const e=this.sdk.pageData.items.find(e=>e.id===t.itemId),s=e?.property[t.propertyName],a=t.propertyValue.map((t,e)=>t-(s?.[e]??0));this.changeSceneItemProperty(i,{...t,propertyValue:a})}break;case"size":if(Array.isArray(t.propertyValue)&&2===t.propertyValue.length){const e=this.sdk.pageData.items.find(e=>e.id===t.itemId),s=e?.property[t.propertyName],a=t.propertyValue.map((t,e)=>t/(s?.[e]??0));this.changeSceneItemProperty(i,{...t,propertyValue:a})}break;default:this.changeSceneItemProperty(i,t)}})}changeSceneItemProperty(t,e){var i,s,a,r,n,o;switch((0,w.assertExist)(e,"Param is not exsited."),e.propertyName){case"textAlign":if([w.spec.TextAlignment.left,w.spec.TextAlignment.middle,w.spec.TextAlignment.right].includes(e.propertyValue)){const i=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));i?.options&&"textAlign"in i.options&&(i.options.textAlign=e.propertyValue)}break;case"textColor":if(Array.isArray(e.propertyValue)&&4===e.propertyValue.length){const i=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));if(i?.options){const t=e.propertyValue.map((t,e)=>e>2?t:_(t/255,5));i.options.textColor=[...t]}}break;case"fontFamily":if("string"==typeof e.propertyValue){const i=e.propertyValue.split("/"),s=i[i.length-1]?.split(".")[0],a=t.fonts?.find(t=>"family"in t&&t.family===s||"fontFamily"in t&&t.fontFamily===s);!a&&t.fonts&&s&&t.fonts.push({fontFamily:s,fontURL:e.propertyValue});const r=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));r&&(r.options.fontFamily=s)}break;case"lineHeight":if("number"==typeof e.propertyValue){const s=t.items.find(t=>t.id===e.itemId),a=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));if(s&&a?.options){a.options.lineHeight=e.propertyValue;const t=this.getPlayerItemById(e.itemId);if(t){const e=t.getComponent(w.TextComponent),r=e.textLayout.width,n=Math.ceil(e.lineCount*e.lineCount);a.options.textHeight=n;const o=this.interactionUtils.getViewSizeByPixelSize(new D(r,n)),c=this.interactionUtils.getWorldSizeByViewSize(o);(i=s.transform).scale??(i.scale={x:1,y:1,z:1}),s.transform.scale={x:Math.abs(c.x),y:Math.abs(c.y),z:1}}}}break;case"textWidth":if("number"==typeof e.propertyValue){const i=t.items.find(t=>t.id===e.itemId),a=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));if(a?.options&&i){a.options.textWidth=e.propertyValue;const t=this.getPlayerItemById(e.itemId);if(t){const e=t.getComponent(w.TextComponent),r=e.textLayout.width,n=Math.ceil(e.lineCount*e.lineCount);a.options.textHeight=n;const o=this.interactionUtils.getViewSizeByPixelSize(new D(r,n)),c=this.interactionUtils.getWorldSizeByViewSize(o);(s=i.transform).scale??(s.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 e.propertyValue){const i=t.items.find(t=>t.id===e.itemId),s=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));if(s?.options&&i){s.options.text=e.propertyValue;const t=this.getPlayerItemById(e.itemId);if(t&&"editor"===$e.config.mode){const r=t.getComponent(w.TextComponent),n=r.getLineCount(e.propertyValue),o=r.textLayout.lineHeight,c=r.textLayout.width,h=Math.ceil(o*n);s.options.textHeight=h;const l=this.interactionUtils.getViewSizeByPixelSize(new D(c,h)),p=this.interactionUtils.getWorldSizeByViewSize(l);(a=i.transform).scale??(a.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 e.propertyValue){const i=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));i?.options&&(i.options.fontWeight=e.propertyValue)}break;case"outlineColor":if(Array.isArray(e.propertyValue)&&4===e.propertyValue.length){const i=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));i?.options&&((r=i.options).outline??(r.outline={}),i.options.outline.outlineColor=[...e.propertyValue.map((t,e)=>e>2?t:_(t/255,5))])}break;case"outlineWidth":if("number"==typeof e.propertyValue){const i=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));i?.options&&((n=i.options).outline??(n.outline={}),i.options.outline.outlineWidth=e.propertyValue)}break;case"outlineEnabled":if("boolean"==typeof e.propertyValue){const i=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType)),s=this.getPlayerItemById(e.itemId),a=s?.getComponent(w.TextComponent);if(i?.options&&s&&a)if(e.propertyValue){const{outlineWidth:t,outlineColor:e}=a.textStyle;i.options.outline={outlineWidth:t,outlineColor:[...e]}}else delete i.options.outline}break;case"fontSize":if("number"==typeof e.propertyValue){const i=t.items.find(t=>t.id===e.itemId),s=t.components.find(t=>t.item.id===e.itemId&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(t.dataType));if(s?.options&&i){s.options.fontSize=e.propertyValue;const t=this.getPlayerItemById(e.itemId);if(t&&"editor"===$e.config.mode){const a=t.getComponent(w.TextComponent);a.setFontSize(e.propertyValue);const r=a.textLayout.lineHeight;s.options.lineHeight=r;const n=Math.ceil(a.textLayout.lineHeight*a.lineCount);s.options.textHeight=n;const c=a.textLayout.width,h=this.interactionUtils.getViewSizeByPixelSize(new D(c,n)),l=this.interactionUtils.getWorldSizeByViewSize(h);(o=i.transform).scale??(o.scale={x:1,y:1,z:1}),i.transform.scale={x:Math.abs(l.x),y:Math.abs(l.y),z:1}}}}break;case"image":if("string"==typeof e.propertyValue){t.components.filter(t=>t.item.id===e.itemId).forEach(i=>{if(!("renderer"in i))return;const s=t.textures?.find(t=>t.id===i.renderer.texture.id);if(s&&"source"in s&&s.source){const a=t?.images.find(t=>t.id===s.source.id);a?.url&&(a.url=e.propertyValue,delete a.webp),a&&"template"in a&&a.template.background&&(a.template.background.url=e.propertyValue);const r=this.player.renderer.engine.findObject({id:s.id});r?.dispose();const n=this.getPlayerItemById(e.itemId)?.getComponent(w.SpriteComponent).renderer.texture.getInstanceId();s.id=n,i.renderer.texture.id=n}})}break;case"position":{const i=e.propertyValue;if(Array.isArray(e.propertyValue)&&3===i.length){const s=t.items.find(t=>t.id===e.itemId);s?.transform&&(s.transform.position.x+=i[0],s.transform.position.y+=i[1],s.transform.position.z+=i[2])}break}case"rotation":if(Array.isArray(e.propertyValue)&&3===e.propertyValue.length){const i=t.items.find(t=>t.id===e.itemId);i?.transform&&(i.transform.eulerHint.x+=e.propertyValue[0],i.transform.eulerHint.y+=e.propertyValue[1],i.transform.eulerHint.z+=e.propertyValue[2])}break;case"size":if(Array.isArray(e.propertyValue)&&2===e.propertyValue.length){const i=t.items.find(t=>t.id===e.itemId);i?.transform&&(i.transform.scale.x*=e.propertyValue[0],i.transform.scale.y*=e.propertyValue[1])}break;case"visible":{const i=t.items.find(t=>t.id===e.itemId);if(i&&(i.visible=e.propertyValue,$e.config.pageConfig.groupVisible)){this.getChildrenSceneItemIds(e.itemId,t).forEach(i=>{const s=t.items.find(t=>t.id===i);s&&(s.visible=e.propertyValue)})}break}}}setSpriteSize(t,e){var i;const s=this.getPlayerItemById(t),a=this.interactionUtils.getViewSizeByPixelSize(new D(...e)),r=this.interactionUtils.getWorldSizeByViewSize(a),n=this.getActiveTargetScene(),o=n?.items.find(e=>e.id===t);s&&o&&(s.transform.setSize(r.x,Math.abs(r.y)),o.transform??(o.transform={position:{x:0,y:0,z:0},scale:{x:1,y:1,z:1},eulerHint:{x:0,y:0,z:0},size:{x:r.x,y:r.y}}),(i=o.transform).size??(i.size={x:1,y:1}),o.transform.size={x:Math.abs(r.x),y:Math.abs(r.y)},this.refreshViewItem(t))}transformSceneItem(t,e,i){(0,w.assertExist)(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:a}=s;switch(e){case"position":if(Array.isArray(i)&&3===i.length){const e=a.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=a.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=a.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])}}})}refreshViewItem(t){const e=this.sdk.pageData;(0,w.assertExist)(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],a=this.getPlayerItemById(t);a&&s&&(e.items[i]=this.createViewItemByPlayerItem(a,s.parentId))}getPlayerItemById(t){return this.player.getCompositions()[0]?.items.find(e=>e.getInstanceId()===t)}getPixelSizeByWorldSize(t,e){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const i=[0,0],s=e.composition?.camera,a=this.getViewProperty()?.size;if(s&&a){const{z:r}=e.transform.getWorldPosition(),{x:n,y:o}=s.getInverseVPRatio(r);i[0]=Math.abs(t[0]*a[0]/n/2),i[1]=Math.abs(t[1]*a[1]/o/-2)}else console.warn("camera is not existed.");return i}getWorldSizeByPixelSize(t){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const e=[0,0],i=this.player.getCompositions()[0],s=i?.camera,a=this.getViewProperty()?.size;if(s&&a){const{x:i,y:r}=s.getInverseVPRatio(0);e[0]=Math.abs(2*t[0]*i/a[0]),e[1]=Math.abs(-2*t[1]*r/a[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(){(0,w.assertExist)(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.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,t.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}async addSpriteItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{name:i="图层",size:s,scale:a=[1,1],url:r,rotation:n=0,position:o,parentId:c,id:h=(0,w.generateGUID)()}=t,l=new W(...a??[1,1],1),p=this.getWorldSizeByPixelSize(s),d=new W(0,0,-n),m=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new D(...o)))??new W,g=e.images.findIndex(t=>t.url===r);let u,y={};if(r)if(g<0){u=await w.Texture.fromImage(r,this.player.renderer.engine,{magFilter:At.glContext.LINEAR,minFilter:At.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0});const t={id:(0,w.generateGUID)(),url:r,renderLevel:w.spec.RenderLevel.BPlus};y={id:u.guid,source:{id:t.id},flipY:!0,dataType:w.spec.DataType.Texture,magFilter:At.glContext.LINEAR,minFilter:At.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},e.images.push(t),e.textures??(e.textures=[]),e.textures.push(y)}else{const t=e.textures?.find(t=>t.source.id===e.images[g].id);y={id:t?.id},u=this.player.renderer.engine.findObject({id:t.id})}const f=Ft(h,m,d,new D(...p),l,i,y?.id);e.items.find(t=>t.id===c)&&(f.item.parentId=c),Ht(e,f);const x=this.player.getCompositions()[0],I=ue.createSprite(x,null,i);if(I.setInstanceId(f.item.id),I.duration=999,I.defination.delay=0,I.endBehavior=w.spec.EndBehavior.restart,I.transform.setSize(...p),I.transform.setPosition(...m.toArray()),I.transform.setRotation(...d.toArray()),I.transform.setScale(...l.toArray()),u){I.getComponent(w.SpriteComponent).setTexture(u)}return this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),f.item.id}addNullItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{name:i="空节点",position:s=[0,0],id:a=(0,w.generateGUID)(),children:r=[]}=t,n=r.filter(t=>!this.getPlayerItemById(t)),o=r.filter(t=>!!this.getPlayerItemById(t));if(n.length&&console.warn(`item ${n.join("、")} is not existed.`),0===o.length)return;const c=new W(...this.getWorldSizeByPixelSize(s),0),h=Rt(a,i,c);Ht(e,h),o.forEach(t=>{Nt(e,t,a)});const l=this.player.getCompositions()[0],p=ue.createEmpty(l,null,i);return p.setInstanceId(h.item.id),p.duration=999,p.defination.delay=0,p.endBehavior=w.spec.EndBehavior.restart,p.transform.setPosition(...c.toArray()),o.forEach(t=>{const e=this.getPlayerItemById(t);e.setParent(p),e.parentId=h.item.id,e.translate(...c.clone().negate().toArray())}),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),h.item.id}async addTextItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{id:i=(0,w.generateGUID)(),parentId:s,name:a="文本",lineHeight:r,textWidth:n,fontFamily:o,position:c=[0,0],fontSize:h,fontWeight:l=w.spec.TextWeight.normal,fontStyle:p=w.spec.FontStyle.normal,textAlign:d=w.spec.TextAlignment.left,text:m,textColor:g,textHeight:u=r,outlineColor:y,outlineWidth:f,outlineEnabled:x,rotation:I=0,url:v}=t;v&&!e.fonts?.find(t=>t.fontFamily===o)&&(e.fonts??(e.fonts=[]),e.fonts.push({fontFamily:o,fontURL:v}));const P=g.map((t,e)=>e>2?t:_(t/255,4)),C=y?y.map((t,e)=>e>2?t:_(t/255,4)):void 0,S={text:m,fontFamily:o,fontSize:h,textColor:P,fontWeight:l,letterSpace:0,textAlign:d,fontStyle:p,textWidth:n,textHeight:u,lineHeight:r,textBaseline:w.spec.TextBaseline.top,textOverflow:w.spec.TextOverflow.visible,outline:x?{outlineColor:C,outlineWidth:f}:void 0},b=this.player.getCompositions()[0],z=ue.createText(b,null,a);z.setInstanceId(i),z.duration=999,z.defination.delay=0,z.endBehavior=w.spec.EndBehavior.restart;const E=z.getComponent(w.TextComponent),A={options:S,renderer:{renderMode:1},dataType:w.spec.DataType.TextComponent,item:{id:z.getInstanceId()},id:E.getInstanceId()};E.fromData(A),A.options.textHeight=Math.ceil(r*E.lineCount),E.fromData(A),E.setFontScale(3),await At.AssetManager.loadFontFamily([{fontURL:v,fontFamily:o}]),E.setFontFamily(o);const T=[n,S.textHeight],B=this.getWorldSizeByPixelSize(T),k=new W(0,0,-I),M=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new D(...c)))??new W,V=Lt(i,a,M,k,new D(...B),S);return e.items.find(t=>t.id===s)&&(V.item.parentId=s),Ht(e,V),z.transform.setScale(...B,1),z.transform.setPosition(...M.toArray()),z.transform.setRotation(...k.toArray()),(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.player.gotoAndStop(this.sdk.pageData.time),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),V.item.id}async addVideoItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{name:i="视频",size:s,scale:a=[1,1],url:r,rotation:n=0,position:o,parentId:c,id:h=(0,w.generateGUID)(),muted:l=!0,transparent:p=!1,volume:d=1,playbackRate:m=1}=t,g=new W(...a??[1,1],1),u=this.getWorldSizeByPixelSize(s),y=new W(0,0,-n),f=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new D(...o)))??new W;e.videos??(e.videos=[]);const x=e.videos.findIndex(t=>t.url===r);let I,P="",C={};if(r)if(x<0){I=await w.Texture.fromVideo(r,this.player.renderer.engine,{magFilter:At.glContext.LINEAR,minFilter:At.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0});const t={id:(0,w.generateGUID)(),url:r,renderLevel:w.spec.RenderLevel.BPlus};P=t.id,C={id:I.guid,source:{id:t.id},flipY:!0,dataType:w.spec.DataType.Texture,magFilter:At.glContext.LINEAR,minFilter:At.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},e.videos.push(t),e.textures??(e.textures=[]),e.textures.push(C)}else{const t=e.textures?.find(t=>t.source.id===e.videos[x].id);P=t?.source.id,C={id:t?.id},I=this.player.renderer.engine.findObject({id:t.id})}const S=Wt(h,f,y,new D(...u),g,i,l,p,d,m,C?.id,P);e.items.find(t=>t.id===c)&&(S.item.parentId=c),Ht(e,S);const b=this.player.getCompositions()[0],z=ue.createVideo(b,null,i);if(z.setInstanceId(S.item.id),z.duration=999,z.defination.delay=0,z.endBehavior=w.spec.EndBehavior.restart,z.transform.setSize(...u),z.transform.setPosition(...f.toArray()),z.transform.setRotation(...y.toArray()),z.transform.setScale(...g.toArray()),I){const t=z.getComponent(v.VideoComponent);t.setTexture(I),t.setLoop(!0),t.setMuted(l),t.setVolume(d),t.setPlaybackRate(m)}return this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),S.item.id}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 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=>{if(e.dataType===w.spec.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 a=[];let r,n;const o=t.compositions.find(e=>e.id===t.compositionId)??t.compositions[0];if(+t.version>=3.3){const i=t.components.find(t=>t.id===o.components[0].id);i.items=i.items.filter(t=>t.id!==e),n=i.timelineAsset.id,r=i.sceneBindings.find(t=>t.value.id===e)?.key.id,i.sceneBindings=i.sceneBindings.filter(t=>t.value.id!==e),r&&a.push(r)}else o.items=o.items.filter(t=>t.id!==e),n=o.timelineAsset.id,r=o.sceneBindings.find(t=>t.value.id===e)?.key.id,o.sceneBindings=o.sceneBindings.filter(t=>t.value.id!==e),r&&a.push(r);const c=t.miscs.findIndex(t=>t.id===n);c>=0&&(t.miscs[c].tracks=t.miscs[c].tracks.filter(t=>t.id!==r));const h=t.miscs.find(t=>t.id===r);h&&(h.children.forEach(e=>{a.push(e.id);const i=t.miscs.find(t=>t.id===e.id);i&&a.push(...i.clips.map(t=>t.asset.id))}),a.push(...h.children.map(t=>t.id))),t.miscs=t.miscs.filter(t=>!a.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(),s=t.getRotation(),a=t.getWorldScale();i.children.forEach(t=>{t.scale(...a.toArray()),t.rotate(...s.toArray()),t.translate(...e.toArray()),t.parent=void 0,t.parentId=void 0}),i.dispose()}}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=X(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){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const i=this.getPlayerItemById(t),s=this.getViewProperty()?.scene,a=this.getViewItemById(t);if(!a||!i||!s)return void console.warn(`item ${t} is not existed.`);const{transform:r}=i,n=r.getWorldScale();if(e&&i.parent){const t=i.parent.transform;n.divide(t.getWorldScale())}const{size:o,position:c,rotation:h}=a.property;switch(a.type){case w.spec.ItemType.sprite:{const r=[_(o[0]/n.x,2),_(o[1]/n.y,2)];return{type:"sprite",name:a.name,parentId:e?i.parent?.getInstanceId():void 0,id:t,url:Ot(s,t),size:r,scale:[n.x,n.y],rotation:h[2],position:[...c]}}case w.spec.ItemType.null:{const s=i.children.map(t=>t.getInstanceId());return{type:"null",id:t,parentId:e?i.parent?.getInstanceId():void 0,children:s,name:i.name,scale:[n.x,n.y],rotation:h[2],position:[...c]}}case w.spec.ItemType.text:{const r=s.components.find(e=>e.item.id===t),n=s.fonts?.find(t=>t.fontFamily===r.options.fontFamily)?.fontURL;return{type:"text",id:t,parentId:e?i.parent?.getInstanceId():void 0,name:a.name,lineHeight:r.options.lineHeight,textWidth:r.options.textWidth,fontFamily:r.options.fontFamily,position:[...c],rotation:h[2],textHeight:r.options.textHeight,fontSize:r.options.fontSize,fontWeight:r.options.fontWeight,fontStyle:r.options.fontStyle,textAlign:r.options.fontStyle,text:r.options.text,textColor:r.options.textColor?.map((t,e)=>e>2?t:_(255*t,0)),outlineColor:r.options.outline?.outlineColor?.map((t,e)=>e>2?t:_(255*t,0)),outlineWidth:r.options.outline?.outlineWidth,outlineEnabled:!!r.options.outline,url:n}}case w.spec.ItemType.video:{const r=[o[0]/n.x,o[1]/n.y],l=s.components.find(e=>e.item.id===t);return{type:"video",name:a.name,parentId:e?i.parent?.getInstanceId():void 0,id:t,url:Ot(s,t),size:r,scale:[n.x,n.y],rotation:h[2],position:[...c],muted:l.options.muted,transparent:l.options.transparent,playbackRate:l.options.playbackRate,volume:l.options.volume}}}}getChildrenIds(t){return this.getPageData()?.items.filter(e=>e.parentId===t)?.map(t=>t.id)??[]}createScreenShotSceneByIds(t){const e=new F;let i;const s=(t,e,s)=>{const{id:a=(0,w.generateGUID)(),url:r,name:n="图层",scale:o=[1,1],rotation:c=0}=t,h=i.images.findIndex(t=>t.url===r);let l={};if(r)if(h<0){const t={id:(0,w.generateGUID)(),url:r,renderLevel:w.spec.RenderLevel.BPlus};l={id:(0,w.generateGUID)(),source:{id:t.id},flipY:!0,dataType:w.spec.DataType.Texture,magFilter:At.glContext.LINEAR,minFilter:At.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},i.images.push(t),i.textures??(i.textures=[]),i.textures.push(l)}else{const t=i.textures?.find(t=>t.source.id===i.images[h].id);l={id:t?.id}}const p=Ft(a,new W(s.x,s.y,0),new W(0,0,-c),e,new W(o[0]??1,o[1]??1,1),n,l.id);Ht(i,p)},a=(t,e,s)=>{const{id:a=(0,w.generateGUID)(),name:r="文本",lineHeight:n,textWidth:o,fontFamily:c,fontSize:h,fontWeight:l=w.spec.TextWeight.normal,fontStyle:p=w.spec.FontStyle.normal,textAlign:d=w.spec.TextAlignment.left,text:m,textColor:g,rotation:u=0,url:y,textHeight:f,outlineColor:x,outlineWidth:I,outlineEnabled:v}=t;y&&!i.fonts?.find(t=>t.fontFamily===c)&&(i.fonts??(i.fonts=[]),i.fonts.push({fontFamily:c,fontURL:y}));const P=x?x.map((t,e)=>e>2?t:_(t/255,4)):void 0,C=g?g.map((t,e)=>e>2?t:_(t/255,4)):void 0,S={text:m,fontFamily:c,fontSize:h,textColor:C,fontWeight:l,letterSpace:0,textAlign:d,fontStyle:p,textWidth:o,textHeight:f??n,lineHeight:n,outline:v?{outlineColor:P,outlineWidth:I}:void 0},b=Lt(a,r,new W(...s.toArray(),0),new W(0,0,-u),new D(e.x,e.y),S);Ht(i,b)},r=(t,e,s)=>{const{id:a=(0,w.generateGUID)(),url:r,name:n="视频",scale:o=[1,1],rotation:c=0,muted:h=!0,transparent:l=!1,playbackRate:p=1,volume:d=1}=t;i.videos??(i.videos=[]);const m=i.videos.findIndex(t=>t.url===r);let g,u={};if(r)if(m<0){const t={id:(0,w.generateGUID)(),url:r,renderLevel:w.spec.RenderLevel.BPlus};g=t.id,u={id:(0,w.generateGUID)(),source:{id:t.id},flipY:!0,dataType:w.spec.DataType.Texture,magFilter:At.glContext.LINEAR,minFilter:At.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},i.videos.push(t),i.textures??(i.textures=[]),i.textures.push(u)}else{const t=i.textures?.find(t=>t.source.id===i.videos[m].id);g=t.resource.id,u={id:t?.id}}const y=Wt(a,new W(s.x,s.y,0),new W(0,0,-c),e,new W(o[0]??1,o[1]??1,1),n,h,l,d,p,u.id,g);Ht(i,y)};if(Array.isArray(t)){t.map(t=>this.getItemBoxById(t)).map(t=>e.union(t));const n=e.getSize();i=Gt(n.toArray());const o=(new H).compose(new W(0,0,8),new L,new W(1,1,1)).invert(),c=(new H).perspective(60*z,n.x/n.y,.1,40,!0),h=(new H).multiplyMatrices(c,o),l=h.clone().invert(),p=h.projectPoint(new W).z,d=new W(0,0,p).applyMatrix(l),m=new W(2,2,p).applyMatrix(l),g=Math.abs(m.x-d.x)/n.x,u=Math.abs(m.y-d.y)/n.y;t.forEach(t=>{const i=this.getItemCreateInfo(t,!1);if(!i||"null"===i.type)return;const n=this.getItemBoxById(t),o="text"===i.type?[i.textWidth,i.textHeight??i.lineHeight]:[...i.size],c=new D(...o).multiply(new D(g,u)).abs(),h=n.getCenter().subtract(e.getCenter()).multiply(new D(g,-u));switch(i.type){case"sprite":s(i,c,h);break;case"text":a(i,c,h);break;case"video":r(i,c,h)}})}else{const e=this.getItemBoxById(t),n=this.getItemCreateInfo(t,!1),o=e.clone().getSize();i=Gt(o.toArray());const c=(new H).compose(new W(0,0,8),new L,new W(1,1,1)).invert(),h=(new H).perspective(60*z,o.x/o.y,.1,40,!0),l=(new H).multiplyMatrices(h,c),p=l.clone().invert(),d=l.projectPoint(new W).z,m=new W(0,0,d).applyMatrix(p),g=new W(2,2,d).applyMatrix(p),u=(new W).subtractVectors(g,m);if(n)switch(n.type){case"sprite":s(n,new D(u.x,u.y),new D);break;case"text":a(n,new D(u.x,u.y),new D);break;case"video":r(n,new D(u.x,u.y),new D)}}return i}createSceneByCreateInfos(t,e,i){const s=new F;e?s.setFromVec2Array([new D,new D(...e)]):s.copyFrom(this.getBoundingBoxByCreateInfos(t));const a=s.getSize(),r=Gt(a.toArray(),i),n=(new H).compose(new W(0,0,8),new L,new W(1,1,1)).invert(),o=(new H).perspective(60*z,a.x/a.y,.1,40,!0),c=(new H).multiplyMatrices(o,n),h=c.clone().invert(),l=c.projectPoint(new W).z,p=new W(0,0,l).applyMatrix(h),d=new W(2,2,l).applyMatrix(h),m=Math.abs(d.x-p.x)/a.x,g=Math.abs(d.y-p.y)/a.y;return t.forEach(t=>{const e=this.getBoundingBoxByCreateInfo(t),i=e.getSize().multiply(new D(m,g)).abs(),a=e.getCenter().subtract(s.getCenter()).multiply(new D(m,-g));switch(t.type){case"sprite":((t,e,i)=>{const{id:s=(0,w.generateGUID)(),url:a,name:n="图层",scale:o=[1,1],rotation:c=0}=t,h=r.images.findIndex(t=>t.url===a);let l={};if(a)if(h<0){const t={id:(0,w.generateGUID)(),url:a,renderLevel:w.spec.RenderLevel.BPlus};l={id:(0,w.generateGUID)(),source:{id:t.id},flipY:!0,dataType:w.spec.DataType.Texture,magFilter:At.glContext.LINEAR,minFilter:At.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},r.images.push(t),r.textures??(r.textures=[]),r.textures.push(l)}else{const t=r.textures?.find(t=>t.source.id===r.images[h].id);l={id:t?.id}}const p=Ft(s,new W(i.x,i.y,0),new W(0,0,-c),e,new W(o[0],o[1],1),n,l.id);Ht(r,p)})(t,i,a);break;case"text":((t,e,i)=>{const{id:s=(0,w.generateGUID)(),name:a="文本",lineHeight:n,textWidth:o,fontFamily:c,fontSize:h,fontWeight:l=w.spec.TextWeight.normal,fontStyle:p=w.spec.FontStyle.normal,textAlign:d=w.spec.TextAlignment.left,text:m,textColor:g,rotation:u=0,url:y,textHeight:f}=t;y&&!r.fonts?.find(t=>t.fontFamily===c)&&(r.fonts??(r.fonts=[]),r.fonts.push({fontFamily:c,fontURL:y}));const x={text:m,fontFamily:c,fontSize:h,textColor:g,fontWeight:l,letterSpace:0,textAlign:d,fontStyle:p,textWidth:o,textHeight:f??n,lineHeight:n},I=Lt(s,a,new W(...i.toArray(),0),new W(0,0,-u),new D(e.x,e.y),x);Ht(r,I)})(t,i,a);break;case"null":(t=>{const{id:e=(0,w.generateGUID)(),name:i="编组",scale:s=[1,1],children:a,rotation:n=0,position:o=[0,0]}=t,c=new D(...o).multiply(new D(m,-g)),h=Rt(e,i,new W(c.x,c.y,0),new D(...s),n);Ht(r,h),a.forEach(t=>{const e=r.items.find(e=>e.id===t);e&&(e.transform??(e.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.transform.position.x-=c.x,e.transform.position.y-=c.y)})})(t);break;case"video":((t,e,i)=>{const{id:s=(0,w.generateGUID)(),url:a,name:n="视频",scale:o=[1,1],rotation:c=0,muted:h=!0,transparent:l=!1,playbackRate:p=1,volume:d=1}=t;r.videos??(r.videos=[]);const m=r.videos.findIndex(t=>t.url===a);let g={},u="";if(a)if(m<0){const t={id:(0,w.generateGUID)(),url:a,renderLevel:w.spec.RenderLevel.BPlus};u=t.id,g={id:(0,w.generateGUID)(),source:{id:t.id},flipY:!0,dataType:w.spec.DataType.Texture,magFilter:At.glContext.LINEAR,minFilter:At.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},r.videos.push(t),r.textures??(r.textures=[]),r.textures.push(g)}else{const t=r.textures?.find(t=>t.source.id===r.videos[m].id);u=t.source.id,g={id:t?.id}}const y=Wt(s,new W(i.x,i.y,0),new W(0,0,-c),e,new W(o[0],o[1],1),n,h,l,d,p,g.id,u);Ht(r,y)})(t,i,a)}}),r}updateItemOrder(t,e){(0,w.assertExist)(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 a=s.parent,r=a.children.filter(t=>!this.isPluginItem(t)),n=a.children.filter(t=>this.isPluginItem(t)),o=r.findIndex(e=>e.getInstanceId()===t);if(-1===o)return void console.warn(`Item with id ${t} not found in siblings.`);let c=o;switch(e){case 0:c=r.length-1;break;case 1:c=0;break;case 2:c=Math.min(o+1,r.length-1);break;case 3:c=Math.max(o-1,0)}if(c===o)return;const[h]=r.splice(o,1);h&&r.splice(c,0,h),a.children=[...n,...r],this.refreshItemRenderOrder(i),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,i.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}isPluginItem(t){return"ModelPluginItem"===t.name}refreshItemRenderOrder(t){(0,w.assertExist)(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,i.setActive(!1),i.setActive(!0)}const i=this.getViewProperty();if(i){const{scene:e}=i,s=e.compositions.find(t=>t.id===e.compositionId)??e.compositions[0];if(s){const i=s.components.map(t=>e.components.find(e=>e.id===t.id)).find(t=>t?.dataType===w.spec.DataType.CompositionComponent);i&&(i.items=t.items.map(t=>({id:t.getInstanceId()})))}}}getViewProperty(t){return(0,w.assertExist)(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){(0,w.assertExist)(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:a=0,bottom:r=0}=t,n=new F;e?n.copyFrom(e):this.sdk.pageData.items.forEach(t=>{const e=this.getViewBoxById(t.id);n.union(e)});const{offsetWidth:o,offsetHeight:c}=this.container.parentElement,{scale:h,translation:l}=this.interactionUtils.viewportParam;if(n.isEmpty())this.pageMove(l.clone().negate()),this.pageZoom(1-h,void 0,!0);else{n.scale(1.1);const t=n.getCenter(),e=n.getSize(),p=o-i-a,d=c-s-r,m=new D(o/2+i/2-a/2,c/2+s/2-r/2),g=e.x/p*d>e.y?1/(e.x/p):1/(e.y/d),u=(new D).subtractVectors(m,t);this.setPageMove((new D).addVectors(l,u)),this.setPageZoom(g*h,new D(p/2+i,d/2+s),!0)}}getItemBoxById(t){const e=t=>{const e=new F,i=this.getViewItemById(t);if(i){const{position:t,size:s,rotation:a}=i.property;e.setFromCenterAndSize(new D(...t),new D(...s)).rotate(a[2]*z)}return e};if(Array.isArray(t)){const i=[];return i.push(...t.map(e)),i}return e(t)}async setItemFontFamily(t,e,i){(0,w.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const s=this.getPlayerItemById(t),a=this.getActiveTargetScene();if(!s||!a||s.type!==w.spec.ItemType.text)return void console.warn(`text item ${t} is not exsited.`);a.fonts??(a.fonts=[]);!a.fonts.find(t=>"family"in t&&t.family===e||"fontFamily"in t&&t.fontFamily===e)&&a.fonts&&(a.fonts.push({fontFamily:e,fontURL:i}),await At.AssetManager.loadFontFamily([{fontURL:i,fontFamily:e}]));const r=a.components.find(e=>e.item.id===t&&[w.spec.DataType.TextComponent,w.spec.DataType.RichTextComponent].includes(e.dataType));r&&(r.options.fontFamily=e),s.getComponent(w.TextComponent).setFontFamily(e),s.getComponent(w.TextComponent).isDirty=!0,this.player.gotoAndStop(this.sdk.pageData.time),this.refreshViewItem(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.`);Object.keys(t).forEach(async i=>{if(ft(e[i],t[i])||["type","id","size"].includes(i))return;const s="sprite"===e.type?w.spec.ItemType.sprite:"null"===e.type?w.spec.ItemType.null:"text"===e.type?w.spec.ItemType.text:w.spec.ItemType.video;if("scale"===i){const a=this.getPlayerItemById(t.id),r=a?.transform.scale,n=[(r?.x??1)/t[i][0],(r?.y??1)/t[i][1]];a?.setScale(...t[i],1);const o=this.getActiveTargetScene();this.changeSceneItemProperty(o,{itemId:e.id,type:s,propertyName:"size",propertyValue:n})}else if("url"===i){const a="sprite"===e.type?"image":"text"===e.type?"fontFamily":void 0;await this.changeItemProperty({itemId:e.id,type:s,propertyName:a,propertyValue:t[i]}),"size"in e&&"size"in t&&(t.size[0]!==e.size[0]||t.size[1]!==e.size[1])&&this.setSpriteSize(t.id,t.size)}else await this.changeItemProperty({itemId:e.id,type:s,propertyName:i,propertyValue:t[i]})})};Array.isArray(t)?t.map(e):e(t)}getViewBoxByBox(t){const{translation:e,scale:i,width:s,height:a}=this.interactionUtils.viewportParam,r=new D(s/2,a/2);return t.clone().scale(i,r).translate(e)}playVideoItem(t){const e=this.getPlayerItemById(t);if(e?.type!==w.spec.ItemType.video)return;e.getComponent(v.VideoComponent).playVideo()}pauseVideoItem(t){const e=this.getPlayerItemById(t);if(e?.type!==w.spec.ItemType.video)return;e.getComponent(v.VideoComponent).pauseVideo()}getBoundingBoxByCreateInfo(t){const e=new F;switch(t.type){case"sprite":{const i=new D(...t.position),s=new D(...t.size);e.setFromCenterAndSize(i,s).rotate((t.rotation??0)*z);break}case"text":{const i=new D(...t.position??[0,0]),s=new D(t.textWidth,t.textHeight??t.lineHeight);e.setFromCenterAndSize(i,s).rotate((t.rotation??0)*z);break}case"video":{const i=new D(...t.position),s=new D(...t.size);e.setFromCenterAndSize(i,s).rotate((t.rotation??0)*z);break}}return e}getBoundingBoxByCreateInfos(t){const e=new F,i=new Map,s=new Map;return t.forEach((e,a)=>{const r=e.id??(0,w.generateGUID)();switch(s.set(a,r),e.type){case"sprite":case"video":case"text":i.set(r,this.getBoundingBoxByCreateInfo(e));break;case"null":{const s=new F;e.children.forEach(e=>{const i=t.find(t=>t.id===e);i&&s.union(this.getBoundingBoxByCreateInfo(i))}),i.set(r,s);break}}}),i.forEach((t,i)=>{e.union(t)}),e}getVideoItemPlayTime(t){const e=this.getPlayerItemById(t);if(e?.type!==w.spec.ItemType.video)return 0;return e.getComponent(v.VideoComponent).getCurrentTime()}setVideoItemPlayTime(t,e){const i=this.getPlayerItemById(t);if(i?.type!==w.spec.ItemType.video)return;i.getComponent(v.VideoComponent).setCurrentTime(e)}getPixelPositionByViewPosition(t){return this.interactionUtils.getPixelPositionByViewPoint(t)}},xe=p(require("jszip"),1),we=p(require("jszip"),1),Ie="ready",ve="executable",Pe="dispose",Ce={APNG:"APNG",MP4:"MP4",WebM:"WebM",Images:"Images",WebP:"WebP",GIF:"GIF",AlphaMaskVideo:"AlphaMaskVideo"},De="idle",Se="convertImage",be="transcoding",ze="audio",Ee="jpeg",Ae="webp",Te="png",_e=(Ce.MP4,Ce.WebP,Ce.APNG,Ce.GIF,Ce.AlphaMaskVideo,Ce.Images,Ce.MP4,Ce.WebP,Ce.APNG,Ce.GIF,Ce.AlphaMaskVideo,Ce.Images,"default"),Be="exporting",ke="success",Me="error",Ve={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"},Ue={highest:"1",high:"3",medium:"6",low:"9"},Ge=class{constructor(t){d(this,"sampleRate"),d(this,"duration"),d(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 a=0;const r=t=>{for(let e=0;e<t.length;e++)s.setUint8(a++,t.charCodeAt(e))},n=t=>{s.setUint32(a,t,!0),a+=4},o=t=>{s.setUint16(a,t,!0),a+=2};r("RIFF"),n(e-8),r("WAVE"),r("fmt "),n(16),o(1),o(this.channels),n(this.sampleRate),n(this.sampleRate*this.channels*2),o(2*this.channels),o(16),r("data"),n(t);for(let e=0;e<t;e++)s.setUint8(a++,0);return new Uint8Array(i)}},Fe=["@vvfx/sdk","exporter"],Re=class extends w.EventEmitter{constructor(t){super(),d(this,"status",Ie),d(this,"stage",De),d(this,"mediaType"),d(this,"loggerInTranscoding"),d(this,"multiThreading"),d(this,"extraCanvas"),d(this,"player"),u(this,jt),u(this,Kt),u(this,$t,0),u(this,Yt),u(this,Jt),u(this,qt),u(this,Xt),u(this,Zt,[]),u(this,Qt),u(this,te),u(this,ee,[]),u(this,ie,0),u(this,se),u(this,ae,[]),u(this,re,0),u(this,ne,0),u(this,oe,0),u(this,ce,0),u(this,he,[]),u(this,le,[]),u(this,pe,null),u(this,de,!0);const{loggerInTranscoding:e,mediaType:i,extraCanvas:s,multiThreading:a}=t;this.mediaType=i,this.loggerInTranscoding=e??!1,this.multiThreading=a??!1,this.extraCanvas=s??void 0,y(this,jt,this.initExportScheduler()),this.onInit()}get canceled(){return this.status===Pe}get config(){const t=this.player?.getCompositions()??[],e=t?.[0],i=e?.name??(new Date).getTime().toString(),s=e?.getDuration()??0,a=e?.startTime??0,r=g(this,se)?.time;return{name:i,startTime:a,oldTotalTime:s,newTotalTime:r,fps:g(this,se)?.fps??30,backgroundColor:g(this,se)?.backgroundColor??"#000000",loop:g(this,se)?.loop??!0,audioEnable:g(this,se)?.audioEnable??!1}}get mp4Config(){return g(this,se)?.mp4Config}get gifConfig(){return g(this,se)?.gifConfig}get apngConfig(){return g(this,se)?.apngConfig}get progress(){const t=g(this,ne)||1,e=g(this,oe)||1,i=Math.min(t/e,1),s=Math.min(g(this,re),t)/t*.4,a=Math.min(g(this,ce),t)/t*.6,r=Math.min(s+a,1);g(this,ae)[g(this,ie)]=i;const n=g(this,ae).reduce((t,e,i)=>i<g(this,ie)?t+(e||0):t,0)+r*i;return Math.min((o=n,Math.round(100*o)/100),1);var o}get transImageType(){return this.mediaType===Ce.MP4?Ee:this.mediaType===Ce.WebP?Ae:Te}setMediaType(t){t!==this.mediaType&&(this.mediaType=t,this.onReset(),this.clearAllListeners(),this.onInit())}initExportScheduler(){return"undefined"!=typeof window&&(window.navigator.webdriver||window.navigator.userAgent.includes("HeadlessChrome")||window.navigator.userAgent.includes("Puppeteer"))?t=>{y(this,Kt,setTimeout(t,5))}:t=>{y(this,$t,window.requestAnimationFrame(t))}}async onInit(){try{yt("log",[...Fe,"ready"],"starting"),this.status=Ie,await this.loadHelper(this.mediaType),this.status=ve,yt("log",[...Fe,"ready"],"success"),this.emit("ready",this.mediaType)}catch(t){this.status=Pe,this.onError(t)}finally{return this.status}}onReset(){this.stage=De,clearTimeout(g(this,Kt)),window.cancelAnimationFrame(g(this,$t)),y(this,$t,0),y(this,Kt,void 0),this.player?.pause(),this.clearTaskInfo(),this.setProgress()}onError(t){yt("log",[...Fe,"error"],t),this.onFinish(!1,g(this,he),g(this,le),g(this,pe)),this.emit("error",t),this.dispose()}onFinish(t,e,i,s){yt("log",[...Fe,"finish"],t?"success":"failed"),this.emit("progress",1),this.emit("finish",t,e,i,s)}async loadHelper(t){const e="WebP"===t&&!g(this,qt),i=[Ce.MP4,Ce.APNG,Ce.GIF,Ce.AlphaMaskVideo].includes(t)&&!g(this,Jt);e&&y(this,qt,await Vt()),i&&(y(this,Jt,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??{},a=new e,r=!!s,n={classWorkerURL:await i(kt.CLASSWORKER,"text/javascript"),coreURL:"",wasmURL:""};return r?(n.coreURL=await i(kt.MT.CORE,"text/javascript"),n.wasmURL=await i(kt.MT.WASM,"application/wasm"),n.workerURL=await i(kt.MT.WORKER,"text/javascript")):(n.coreURL=await i(kt.DEFAULT.CORE,"text/javascript"),n.wasmURL=await i(kt.DEFAULT.WASM,"application/wasm")),await a.load(n),a}catch(t){throw t instanceof Error?t:new Error(`Unknown error occurred while loading FFmpeg: ${String(t)}`)}}({multiThreading:this.multiThreading})),(0,w.assertExist)(g(this,Jt)),g(this,Jt).on("log",({message:t})=>{if(this.loggerInTranscoding&&yt("log",[...Fe,"transcoding log"],t),this.canceled||this.stage!==be)return;const e=/frame=\s*(\d+)/.exec(t);if(e?.[1]){const t=Number(e[1]);this.setProgress({currentTaskInTranscodingFrameIndex:t})}}))}getAllTaskFrames(t){return t.reduce((t,e)=>{const{scene:i,fps:s}=e,a=i.compositions?.[0]?.duration??0;return t+Math.round(a*(s??30))},0)}setProgress(t){void 0!==t?.completedTaskPercentArray&&y(this,ae,t.completedTaskPercentArray),void 0!==t?.currentTaskFrameIndex&&y(this,re,t.currentTaskFrameIndex),void 0!==t?.currentTaskTotalFrames&&y(this,ne,t.currentTaskTotalFrames),void 0!==t?.currentTaskInTranscodingFrameIndex&&y(this,ce,t.currentTaskInTranscodingFrameIndex),void 0!==t?.allTaskFrames&&y(this,oe,t.allTaskFrames),this.emit("progress",this.progress)}forwardPlayerTime(t,e=!1){(0,w.assertExist)(this.player);const{oldTotalTime:i,startTime:s}=this.config;(0,w.assertExist)(i);const a=1e3*i-1e3*i%15;return t=Math.min(t,a/1e3),e?this.player.gotoAndPlay(t-s):this.player.gotoAndStop(t-s),t}getWavAudio(t){y(this,Qt,new Ge),g(this,Jt)?g(this,Jt).writeFile(t,g(this,Qt).getBuffer()):yt("log",[...Fe,"getWavAudio"],"ffmpegCore is not ready")}async getImagesZip(t,e){const i=new we.default,s=i.folder(t);return(0,w.assertExist)(s),g(this,ee).forEach((t,i)=>{s.file(t,e[i])}),i.generateAsync({type:"arraybuffer"})}getWebP(){(0,w.assertExist)(g(this,qt));const t=Math.round(1e3/this.config.fps/1),e="out.webp",i=`${g(this,ee).join(` -d ${t} `)} -d ${t} -o ${e} -loop ${this.config.loop?0:1}`.split(" "),s=g(this,qt).cwrap("main","string",["number","number"]),[a,r]=function(t,e){const i=t._malloc(e.length*Uint32Array.BYTES_PER_ELEMENT);return e.forEach((e,s)=>{const a=t._malloc(e.length+1);t.writeAsciiToMemory(e,a),t.setValue(i+Uint32Array.BYTES_PER_ELEMENT*s,a,"i32")}),[e.length,i]}(g(this,qt),i);ut(a&&r,"getWebP has error"),s(a,r);const n=g(this,qt).FS.readFile(e);return g(this,ee).forEach(t=>{g(this,qt)?.FS.unlink(t)}),n}async getAPNG(){(0,w.assertExist)(g(this,Jt));this.stage=be;const t="export.apng",{fps:e,scale:i="-1:-1",quality:s="highest"}=this.apngConfig??{},a=[`scale=${i}:force_original_aspect_ratio=decrease:flags=lanczos`];e&&a.push(`fps=${e}`);if(0!==await g(this,Jt).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-vf",a.join(","),"-plays",this.config.loop?"0":"1","-compression_level",Ue[s],"-y",t]))throw new Error("the command executed by ffmpeg to generate a apng failed.");return t}async getGIF(){(0,w.assertExist)(g(this,Jt));this.stage=be;const t="export.gif",{fps:e,scale:i="-1:-1",quality:s="highest"}=this.gifConfig??{},a=[`scale=${i}:${Ve[s]}`];e&&a.unshift(`fps=${e}`);if(0!==await g(this,Jt).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-loop",this.config.loop?"0":"-1","-vf",a.join(","),"-y",t]))throw new Error("the command executed by ffmpeg to generate a gif failed.");return t}async getMP4(t,e){(0,w.assertExist)(g(this,Jt));this.stage=be;const i="export.mp4";let s;const a=e?",setpts=PTS/"+Math.round(t/e*100)/100:"",r=e??t,{isExportLastFramePNG:n}=this.mp4Config??{};this.config.audioEnable&&!g(this,Qt)&&(y(this,te,"audio.wav"),this.getWavAudio(g(this,te)));if(0!==await g(this,Jt).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${a}`,"-y",i]))throw new Error("the command executed by ffmpeg to generate a mp4 failed.");if(g(this,te)&&g(this,Qt)){this.stage=ze,s="export-with-audio.mp4";if(0!==await g(this,Jt).exec(["-i",i,"-i",g(this,te),"-c:v","copy","-c:a","aac","-t",`${r}`,"-y",s]))throw new Error("the command executed by ffmpeg to generate a audio of video failed.")}const o=s??i,c=`${Date.now()}.png`;return n&&await g(this,Jt).exec(["-sseof","-1","-i",o,"-vframes","1","-y",c]),s&&g(this,Jt).deleteFile(i).catch(()=>{yt("log",[...Fe,"ffmpeg delete file error"])}),{video:o,lastFrame:c}}async getAlphaMaskVideo(t,e){(0,w.assertExist)(g(this,Jt));this.stage=be;const i="export.mp4",s=e?",setpts=PTS/"+Math.round(t/e*100)/100:"";return await g(this,Jt).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){(0,w.assertExist)(g(this,Jt));const i=this.mediaType===Ce.APNG,s=this.mediaType===Ce.GIF,a=this.mediaType===Ce.AlphaMaskVideo,r=this.mediaType===Ce.MP4;let n="",o="";try{if(i&&(n=await this.getAPNG()),s&&(n=await this.getGIF()),r){const{video:i,lastFrame:s}=await this.getMP4(t,e);n=i,o=s}a&&(n=await this.getAlphaMaskVideo(t,e)),this.stage=De}catch(t){throw yt("log",[...Fe,"getVideoByType","failed"],t),t}finally{for(const t of g(this,ee))t&&g(this,Jt).deleteFile(t)}let c=null,h=null;try{(0,w.assertExist)(n);const t=await g(this,Jt).readFile(n);if(c="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t),o){const t=await g(this,Jt).readFile(o).catch(()=>{yt("log",[...Fe,"ffmpeg read extra file error"])});h="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t)}}finally{g(this,Jt).deleteFile(n).catch(()=>{yt("log",[...Fe,"ffmpeg delete file error"])})}return{data:c,extra:h}}onRecordWebM(t){const e=new MediaRecorder(t.captureStream(this.config.fps),{mimeType:"video/webm;codecs=vp9"});y(this,Xt,e),g(this,Xt).start(0);const i=[];g(this,Xt).ondataavailable=t=>{t.data.size>0&&i.push(t.data)},y(this,Zt,i)}async onExportImageFrame(t){try{if(this.canceled)return;const{canvas:s,imageBuffers:a,startTime:r,oldTotalTime:n,newTotalTime:o}=t;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,Yt));const c=g(this,re)+1;this.stage=Se,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:c}),this.loggerInTranscoding&&yt("log",[...Fe,"converting log"],`converting ${c} frame image`),c>=1&&this.forwardPlayerTime(c/this.config.fps+r),Mt(g(this,Yt),s,this.config.backgroundColor);let h=s;this.mediaType===Ce.AlphaMaskVideo&&((0,w.assertExist)(this.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 a=i.getImageData(0,0,t.width,t.height),r=i.getImageData(0,0,t.width,t.height),n=a.data;for(let t=0;t<n.length;t+=4){const e=Math.max(0,(n[t+3]??0)-5)/250*255;e<=0?(n[t]=0,n[t+1]=0,n[t+2]=0,n[t+3]=255):(n[t]=(n[t]??0)*e/255,n[t+1]=(n[t+1]??0)*e/255,n[t+2]=(n[t+2]??0)*e/255,n[t+3]=255)}s.putImageData(a,0,0);const o=r.data;for(let t=0;t<o.length;t+=4){const e=Math.max(0,(o[t+3]??0)-5)/250*255;o[t]=e,o[t+1]=e,o[t+2]=e,o[t+3]=255}s.putImageData(r,t.width,0)}(s,this.extraCanvas),h=this.extraCanvas);const l=await async function(t,e,i){return new Promise((s,a)=>{t.toBlob(t=>{t?s(t.arrayBuffer()):a("toBlob failed")},e,i)})}(h,`image/${this.transImageType}`,1),p=`image-${e=c,i=4,String(e).padStart(i,"0")}.${this.transImageType}`;this.mediaType===Ce.Images?a.push(l):this.mediaType===Ce.WebP?((0,w.assertExist)(g(this,qt)),g(this,qt).FS.writeFile(p,new Uint8Array(l))):((0,w.assertExist)(g(this,Jt)),await g(this,Jt).writeFile(p,new Uint8Array(l))),g(this,ee).push(p);if(c===g(this,ne)){this.player?.pause(),await new Promise(t=>{window.requestAnimationFrame(t)});let t=null,e=null;if("Images"===this.mediaType)t=await this.getImagesZip(this.config.name,a);else if("WebP"===this.mediaType)t=this.getWebP();else if([Ce.MP4,Ce.APNG,Ce.GIF,Ce.AlphaMaskVideo].includes(this.mediaType)){const{data:i,extra:s}=await this.getVideoByType(n,o)??null;t=i,e=s}t&&(yt("log",[...Fe,"done"],"success"),this.emit("done",g(this,se),!0,t,e))}else g(this,jt).call(this,()=>{this.canceled||this.onExportImageFrame({canvas:s,imageBuffers:a,startTime:r,oldTotalTime:n,newTotalTime:o})})}catch(t){yt("log",[...Fe,"onExportImageFrame","failed"],t),this.emit("done",g(this,se),!1,void 0,void 0)}var e,i}async onExportWebMFrame(t){try{if(this.canceled)return;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,Yt));const e=g(this,re)+1;if(this.stage=Se,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:e}),this.loggerInTranscoding&&yt("log",[...Fe,"converting log"],`converting ${e} frame image`),Mt(g(this,Yt),t,this.config.backgroundColor),1===e&&(this.player.play(),this.onRecordWebM(t)),e<g(this,ne))y(this,$t,window.requestAnimationFrame(()=>{this.canceled||this.onExportWebMFrame(t)}));else{this.player?.pause(),g(this,Xt)?.stop();const t=new Blob(g(this,Zt),{type:"video/webm"}),e=await t.arrayBuffer();yt("log",[...Fe,"done"],"success"),this.emit("done",g(this,se),!0,e,void 0)}}catch(t){yt("log",[...Fe,"done"],"failed",t),this.emit("done",g(this,se),!1,void 0,void 0)}}async runTask(t){try{if(this.canceled)return;(0,w.assertExist)(this.player),(0,w.assertExist)(g(this,Yt));const{size:e,startTime:i,containerCanvas:s}=t,{oldTotalTime:a,newTotalTime:r}=this.config,[n,o]=e;if(g(this,Yt).width=n,g(this,Yt).height=o,s.width=n,s.height=o,this.player.resize(),y(this,ee,[]),[Ce.MP4,Ce.APNG,Ce.Images,Ce.WebP,Ce.GIF,Ce.AlphaMaskVideo].includes(this.mediaType)){const t={canvas:s,imageBuffers:[],startTime:i,oldTotalTime:a,newTotalTime:r};await this.onExportImageFrame(t)}else"WebM"===this.mediaType&&await this.onExportWebMFrame(s)}catch(t){yt("log",[...Fe,"run task error"],t),this.emit("done",g(this,se),!1,void 0,void 0)}}clearTaskInfo(){y(this,ie,0),y(this,se,void 0),y(this,ae,[]),y(this,re,0),y(this,ne,0),y(this,oe,0),y(this,ce,0),y(this,he,[]),y(this,le,[]),y(this,pe,[]),y(this,de,!0)}clearFFMpegCore(){if(g(this,Jt)){for(const t of g(this,ee))t&&g(this,Jt).deleteFile(t);y(this,ee,[]),g(this,Jt).terminate(),y(this,Jt,void 0)}}clearImage2WebPCore(){g(this,qt)&&(g(this,qt).FS.quit(),y(this,qt,void 0))}clearMediaRecorder(){g(this,Xt)&&(g(this,Xt).stop(),y(this,Xt,void 0)),y(this,Zt,[])}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,g(this,he),g(this,le),g(this,pe)),this.status=Pe,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),yt("log",Fe,"canceled"))}async onExport(t){const e=t.length;try{if(this.status===Ie)return yt("log",[...Fe],"readying"),void this.on("ready",()=>{this.onExport(t)});if(this.status===Pe){if(await this.onInit()===Pe)throw new Error("init environment failed")}if(this.clearTaskInfo(),!g(this,Yt)){const t=document.createElement("canvas");t.dataset.key="player-canvas",y(this,Yt,t)}this.player||(this.player=new w.Player({canvas:g(this,Yt),pixelRatio:1,transparentBackground:!0,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=[],a=[];let r=!0;for(const[n,o]of t.entries()){if(this.canceled){r=!1;break}y(this,ie,n),y(this,se,o);const{size:t,scene:c}=o;await new Promise(async h=>{try{if(!this.player)throw new Error("player not found");yt("log",[...Fe,"export"],"start",o),Ut(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[n]=o,e&&c?(s[n]=c,a[n]=l??null):r=!1,h()};this.on("done",m);const g={size:t,startTime:d,containerCanvas:e};await this.runTask(g)}catch(t){yt("log",[...Fe,"export error"],t),r=!1,h()}})}y(this,he,i),y(this,le,s),y(this,pe,a),y(this,de,r)}catch(t){this.onError(t),y(this,de,!1)}e>=1&&g(this,de)?this.onFinish(!0,g(this,he),g(this,le),g(this,pe)):this.onFinish(!1,g(this,he),g(this,le),g(this,pe))}dispose(){this.status=Pe,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),this.player?.dispose(),this.player=void 0,g(this,Yt)?.remove(),y(this,Yt,void 0),y(this,te,void 0),y(this,Qt,void 0)}};jt=new WeakMap,Kt=new WeakMap,$t=new WeakMap,Yt=new WeakMap,Jt=new WeakMap,qt=new WeakMap,Xt=new WeakMap,Zt=new WeakMap,Qt=new WeakMap,te=new WeakMap,ee=new WeakMap,ie=new WeakMap,se=new WeakMap,ae=new WeakMap,re=new WeakMap,ne=new WeakMap,oe=new WeakMap,ce=new WeakMap,he=new WeakMap,le=new WeakMap,pe=new WeakMap,de=new WeakMap;var Le={[Ce.MP4]:{suffix:"mp4",error:"export mp4 is error"},[Ce.GIF]:{suffix:"gif",error:"export gif is error"},[Ce.Images]:{suffix:"zip",error:"export Images is error"},[Ce.APNG]:{suffix:"apng",error:"export APNG is error"},[Ce.WebP]:{suffix:"webp",error:"export WebP is error"},[Ce.AlphaMaskVideo]:{suffix:"mp4",error:"export AlphaMaskVideo is error"},[Ce.WebM]:{suffix:"webm",error:"export WebM is error"}},We=class extends w.EventEmitter{constructor(t){super(),d(this,"_config"),d(this,"_status",_e),d(this,"_exportMedia"),this._config=t,this._exportMedia=new Re(t)}get status(){return this._status}onExportMedia(t,e,i,s,a){if(!e?.length||!s)return void yt("info",["@vvfx/sdk","export media is error","buffers or suffix is empty"]);const r=t[0]?.folderName,n=new xe.default;e.forEach((e,a)=>{if(!e)return;const{name:r}=t[a]??{};r&&(n.file(`${r}.${s}`,e),i?.[a]?.byteLength&&n.file(`${r}.png`,i[a]))}),n.generateAsync({type:"blob"}).then(t=>{!function(t,e,i="application/octet-stream"){const s=new Blob(Array.isArray(t)?t:[t],{type:i}),a=URL.createObjectURL(s),r=document.createElement("a");r.href=a,r.download=e,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(a)}(t,`${r}.zip`,"application/zip")}).catch(t=>{yt("error",["@vvfx/sdk"],a??"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=Me,yt("error",["@vvfx/sdk"],"export is error",t)}setMediaType(t){this._config.mediaType=t,this._exportMedia.setMediaType(t)}onExport(t){this._status=Be,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,a)=>{if(this._status=e?ke:Me,this.emit("complete",e,i,s),this._config.isOutputBuffer||!s||0===s.length)return;const{suffix:r,error:n}=Le[this._config.mediaType];r&&this.onExportMedia(t,s,a,r,n)}),this._exportMedia.on("error",this.onExportError.bind(this))}onCancel(){this._status=Me,this._exportMedia.onCancel(),this.emit("complete",!1,[],[])}dispose(){this._exportMedia.dispose()}},He=class{constructor(){d(this,"enabled",!0),d(this,"_player"),d(this,"_container"),this._container=document.createElement("canvas"),this._player=new w.Player({canvas:this._container,manualRender:!0,renderOptions:{willCaptureImage:!0}})}async generate(t,e,i,s,a){if(!this.enabled)return void console.warn("Screen shot is not opened, use #SDK.setConfig() open this feature.");Ut(this._player);const[r,n]=e;this._container.width=r,this._container.height=n,this._player.resize();const o=JSON.parse(JSON.stringify(t));await this._player.loadScene(o),this._player.gotoAndStop(s);const[c,h]=i,l=document.createElement("canvas");l.width=c,l.height=h;const p=l.getContext("2d");a??(a=[255,255,255,1]),p&&(p.fillStyle=`rgba(${a.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 Ut(this._player),d}dispose(){this._player.dispose()}drawImageCover(t,e,i,s,a,r,n,o,c){2===arguments.length&&(i=s=0,a=t.canvas.width,r=t.canvas.height),n="number"==typeof n?b(n,0,1):.5,o="number"==typeof o?b(o,0,1):.5,c??(c={left:0,top:0,width: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(a/h,r/l);let d=h*p,m=l*p,g=1;d<a&&(g=a/d),Math.abs(g-1)<1e-14&&m<r&&(g=r/m),d*=g,m*=g;const u=Math.max(h/(d/a),0),y=Math.max(l/(m/r),0),f=Math.min((h-u)*n,h),x=Math.min((l-y)*o,l);t.drawImage(e,f+c.left,x+c.top,u,y,i,s,a,r)}},Ne={topAdsorption:"T",leftAdsorption:"L",rightAdsorption:"R",bottomAdsorption:"B",centerAdsorption:"C",bottomCenterAdsorption:"BC"},Oe=class{constructor(t){d(this,"_player"),d(this,"_container"),d(this,"size",[0,0]),d(this,"_pageDataUtils"),this._container=document.createElement("canvas"),this._player=new w.Player({canvas:this._container,manualRender:!0}),this._pageDataUtils=t}async adjustment(t,e,i,s,a,r){if(!$e.config.sizeAdaptConfig.enabled)return console.warn("Size adapt is not opened, use #SDK.setConfig() open this feature."),t;this._player??(this._player=new w.Player({canvas:this._container,manualRender:!0})),a??(a=[0,0,0,0]),r??(r=i[0]<i[1]?"y":"x"),this.size=[...s],this._container.width=this.size[0],this._container.height=this.size[1],Ut(this._player),this._player.resize();const n=JSON.parse(JSON.stringify(t));await this._player.loadScene(n,{reusable:!0,autoplay:!1}),this._player.gotoAndStop(e);const o=this._player.getCompositions()[0];if(o){const[e,n]=s,c=i[0]/i[1],h=e/n;c>h&&this.keepDistribute(t,o,h/c,s);const[l,p,d,m]=a,g=e-d-m,u=n-l-p,y=[(d-m)/2,(l-p)/2],f=(new F).setFromCenterAndSize(new D(e,n).divide(2),new D(e,n)),x=(new F).setFromCenterAndSize(new D(e,n).divide(2).add(new D(...y)),new D(g,u));this.keepAdsorption("topAdsorption",t,o,y,f,x,r),this.keepAdsorption("bottomAdsorption",t,o,y,f,x,r),this.keepAdsorption("leftAdsorption",t,o,y,f,x,r),this.keepAdsorption("rightAdsorption",t,o,y,f,x,r),this.keepAdsorption("centerAdsorption",t,o,y,f,x,r),this.keepDoubleAdsorption("bottomCenterAdsorption",t,o,y,f,x)}return t}keepDistribute(t,e,i,s){const a=t=>{const i=(new H).copyFrom(e.camera.getViewProjectionMatrix());return(new D).copyFrom(t.applyMatrix(i).toVector2()).toViewCoordinate(s[0],s[1])};["topAdsorption","centerAdsorption","bottomAdsorption"].forEach(r=>{e.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===Ne[r]&&!t.parentId).forEach(r=>{const n=e.items.filter(t=>t.parentId===r.getInstanceId()),o=n.find(t=>"check-area"===t.name),c=o?this.getViewBoxByHeadlessPlayerItem(o,[],a):this.getViewBoxByHeadlessPlayerItem(r,n,a),h=r.transform.position.clone(),l=c.getCenter(),p=new D(...s.map(t=>t/2)),d=l.y-p.y;((t,i,a)=>{const{z:r}=t.transform.getWorldPosition(),{x:n,y:o}=e.camera.getInverseVPRatio(r);t.transform.translate(2*i*n/s[0],-2*a*o/s[1],0)})(r,0,d/i-d),r.transform.updateLocalMatrix();const m=r.transform.position.clone().subtract(h).toArray();this._pageDataUtils.changeSceneItemProperty(t,{itemId:r.getInstanceId(),type:r.type,propertyName:"position",propertyValue:m})})})}keepAdsorption(t,e,i,s,a,r,n){const{x:o,y:c}=a.getSize(),h=(t,e,s)=>{const{z:a}=t.transform.getWorldPosition(),{x:r,y:n}=i.camera.getInverseVPRatio(a);t.transform.translate(2*e*r/o,-2*s*n/c,0)},l=t=>{const e=(new H).copyFrom(i.camera.getViewProjectionMatrix());return(new D).copyFrom(t.applyMatrix(e).toVector2()).toViewCoordinate(o,c)},p=Ne[t];i.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===p&&!t.parentId).forEach(a=>{const o=i.items.filter(t=>t.parentId===a.getInstanceId()),c=o.find(t=>"check-area"===t.name),p=a.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===a.name.split("-").length,f=Number(a.name.split("-")[1]),x=new D,w=[1,1],I=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(a,o,l);h(a,...s),I.getSize().x>r.getSize().x&&(w[0]=r.getSize().x/I.getSize().x,w[1]=r.getSize().x/I.getSize().x,a.scale(...w,1)),a.transform.updateLocalMatrix();const v=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(a,o,l),P=new D;if(!r.containsBox(v)){const{min:t,max:e}=v,{min:i,max:s}=r;P.x+=t.x<i.x?i.x-t.x:0,P.x+=e.x>s.x?s.x-e.x:0,P.y+=t.y<i.y?i.y-t.y:0,P.y+=e.y>s.y?s.y-e.y:0,h(a,...P.toArray()),a.transform.updateLocalMatrix()}const C=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(a,o,l);if(!Number.isNaN(f)&&y)if("centerAdsorption"!==t){const t=Math.abs(C[u][d]-r[g][d]),e=r.getSize()[d]*f;t>e&&(x[d]=(e-t)*m,h(a,...x.toArray()),a.transform.updateLocalMatrix())}else{const t=C.getSize()[n],e=r.getSize()[n];if(t/e>f){const i=e*f/t;a.scale(i,i,1),w[0]*=i,w[1]*=i}}const S=c?this.getViewBoxByHeadlessPlayerItem(c,[],l):this.getViewBoxByHeadlessPlayerItem(a,o,l),b=i.items.filter(t=>"T"===t.name.split("-")[0]?.toLocaleUpperCase()&&!t.parentId),z=new F;if(b.forEach(t=>{const e=i.items.filter(e=>e.parentId===t.getInstanceId()),s=e.find(t=>"check-area"===t.name),a=s?this.getViewBoxByHeadlessPlayerItem(s,[],l):this.getViewBoxByHeadlessPlayerItem(t,e,l);z.union(a)}),!z.isEmpty()&&z.max.y>S.min.y)if("centerAdsorption"===t){const t=z.max.y-S.min.y;h(a,0,t),a.transform.updateLocalMatrix()}else if(["leftAdsorption","rightAdsorption"].includes(t)){const t=S.getSize().y,e=r.getSize().y-(z.max.y-r.min.y);let i=z.max.y-S.min.y;if(t>e){const s=e/t;w[0]*=s,w[1]*=s,a.scale(s,s,1),a.transform.updateLocalMatrix(),i-=(t-e)/2}h(a,0,i),a.transform.updateLocalMatrix()}const E=a.transform.position.clone().subtract(p).toArray();this._pageDataUtils.changeSceneItemProperty(e,{itemId:a.getInstanceId(),type:a.type,propertyName:"position",propertyValue:E}),this._pageDataUtils.changeSceneItemProperty(e,{itemId:a.getInstanceId(),type:a.type,propertyName:"size",propertyValue:w})})}keepDoubleAdsorption(t,e,i,s,a,r){const{x:n,y:o}=a.getSize(),c=(t,e,s)=>{const{z:a}=t.transform.getWorldPosition(),{x:r,y:c}=i.camera.getInverseVPRatio(a);t.transform.translate(2*e*r/n,-2*s*c/o,0)},h=t=>{const e=(new H).copyFrom(i.camera.getViewProjectionMatrix());return(new D).copyFrom(t.applyMatrix(e).toVector2()).toViewCoordinate(n,o)},l=Ne[t];i.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===l&&!t.parentId).forEach(t=>{const a=i.items.filter(e=>e.parentId===t.getInstanceId()),n=a.find(t=>"check-area"===t.name),o=t.transform.position.clone(),l=3===t.name.split("-").length,p=Number(t.name.split("-")[1]),d=[1,1],m=n?this.getViewBoxByHeadlessPlayerItem(n,[],h):this.getViewBoxByHeadlessPlayerItem(t,a,h);c(t,...s),m.getSize().x>r.getSize().x&&(d[0]=r.getSize().x/m.getSize().x,d[1]=r.getSize().x/m.getSize().x,t.scale(...d,1)),t.transform.updateLocalMatrix();const g=n?this.getViewBoxByHeadlessPlayerItem(n,[],h):this.getViewBoxByHeadlessPlayerItem(t,a,h);if(!Number.isNaN(p)&&l){const e=g.getSize().y,i=r.getSize().y;if(e/i>p){const s=i*p/e;t.scale(s,s,1),d[0]*=s,d[1]*=s}}const u=n?this.getViewBoxByHeadlessPlayerItem(n,[],h):this.getViewBoxByHeadlessPlayerItem(t,a,h),y=new D;if(!r.containsBox(u)){const{min:e,max:i}=u,{min:s,max:a}=r;y.x+=e.x<s.x?s.x-e.x:0,y.x+=i.x>a.x?a.x-i.x:0,y.y+=e.y<s.y?s.y-e.y:0,y.y+=i.y>a.y?a.y-i.y:0,c(t,...y.toArray()),t.transform.updateLocalMatrix()}const f=t.transform.position.clone().subtract(o).toArray();this._pageDataUtils.changeSceneItemProperty(e,{itemId:t.getInstanceId(),type:t.type,propertyName:"position",propertyValue:f}),this._pageDataUtils.changeSceneItemProperty(e,{itemId:t.getInstanceId(),type:t.type,propertyName:"size",propertyValue:d})})}getViewBoxByHeadlessPlayerItem(t,e,i){const s=new F,{transform:a,composition:r}=t;switch(t.type){case w.spec.ItemType.sprite:case w.spec.ItemType.plugin:case w.spec.ItemType.video:case w.spec.ItemType.richtext:case w.spec.ItemType.text:case w.spec.ItemType.shape:{a.setValid(!0),a.updateLocalMatrix();const{size:t}=a,n=(new H).copyFrom(r?.transform.getWorldMatrix()??new H).invert().multiply(a.getWorldMatrix()),{x:o,y:c}=t.clone().divide(2),h=new W(o,c,0).applyMatrix(n),l=new W(o,-c,0).applyMatrix(n),p=new W(-o,-c,0).applyMatrix(n),d=new W(-o,c,0).applyMatrix(n),m=i(h).round(2),g=i(l).round(2),u=i(p).round(2),y=i(d).round(2);s.setFromVec2Array([m,g,u,y]);const f=e?.map(t=>{const e=r?.items.filter(e=>e.parentId===t.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(t,e,i)});f&&f.map(t=>s.union(t));break}case w.spec.ItemType.null:{const t=e?.map(t=>{const e=r?.items.filter(e=>e.parentId===t.getInstanceId())??[];return this.getViewBoxByHeadlessPlayerItem(t,e,i)});t&&t.map(t=>s.union(t));break}}return s}dispose(){this._player?.dispose()}},je=class{constructor(){d(this,"index",-1),d(this,"operations",[]),d(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=[]}},Ke=class t{constructor(e,i="template"){d(this,"_eventEmitter",new w.EventEmitter),d(this,"_pageData"),d(this,"_screenShot"),d(this,"_exporter"),d(this,"_pageDataUtils"),d(this,"_sizeAdapt"),d(this,"_gestureHandler"),d(this,"disposables",[]),d(this,"_isSwitchScene",!1),d(this,"_undoRedo",new je),d(this,"player"),d(this,"_container"),d(this,"_playerContainer"),d(this,"on",this._eventEmitter.on),this._container=e,t.config.mode=i;const s=document.createElement("div"),[a,r]="editor"===i?[this._container.clientWidth,this._container.clientHeight]:[this._container.offsetWidth,this._container.offsetHeight];this._playerContainer=s,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=`${a}px`,this._playerContainer.style.height=`${r}px`,this._container.appendChild(s),this.player=new w.Player({container:this._playerContainer,pixelRatio:2,interactive:!0,env:"editor"}),this.player.on("update",()=>{if((0,w.assertExist)(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._eventEmitter.on("pageDataChange",t=>{this._pageData=t,this._gestureHandler.render()}),this._eventEmitter.on("preSelectedItemChange",t=>{(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=t,this._gestureHandler.render()}),this._eventEmitter.on("selectedViewChange",t=>{(0,w.assertExist)(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.checkExporter(t.exportConfig,e.exportConfig)}),this._pageDataUtils=new fe(this.player,s,this._eventEmitter,this),this._gestureHandler=new Et(e),this._screenShot=new He,this._sizeAdapt=new Oe(this._pageDataUtils);const n=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,a]=this._pageDataUtils.getPlayerSizeByParent(i,t);this._playerContainer.style.width=`${e}px`,this._playerContainer.style.height=`${a}px`,this.player.resize()}this._pageDataUtils.refreshInteractionParam(),this._gestureHandler.resize()}});n.observe(e),this.disposables.push(()=>{n.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,s)=>{const{size:a,scene:r,export:{name:n,...o}}=t,c=a?.[0]&&a?.[1]?` (${s+1})_${a[0]}×${a[1]}`:` (${s+1})`;let h="";return h=n?function(t,e){if(!e.includes(t))return t;let i=1,s=`${t} (${i})`;for(;e.includes(s);)i++,s=`${t} (${i})`;return s}(n,i):`${e}${c}`,i.push(h),{folderName:e,name:h,size:a,scene:JSON.parse(JSON.stringify(r)),...o}})}dispose(){this.player?.dispose(),this._screenShot?.dispose(),this._pageData=void 0,this._playerContainer.remove(),this?._exporter?.dispose(),this._screenShot.dispose(),this._gestureHandler.dispose(),this.disposables.forEach(t=>{t()})}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",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=`${s}px`,this.player??(this.player=new w.Player({container:this._playerContainer,interactive:!0,pixelRatio:window.devicePixelRatio||1,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:Gt(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],a=e.viewParams?.length?e.viewParams:[{size:s.previewSize??[750,1624],export:{audioEnable:!1}}];return{...e,scene:i,viewParams:a}}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}}}checkExporter(t,e){if(this._exporter&&!ft(t,e)){if(t.mediaType!==e.mediaType)return void this._exporter.setMediaType(e.mediaType);this._exporter.dispose(),this.initExporterEnabled&&this.initExporter(e)}}initExporter(t){this._exporter=new We(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)=>{this._eventEmitter.emit("exportComplete",t,e,i)})}async initSDK(e){var i;const{scene:s,viewParams:a,options:r}=e,n=[];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],a=e.duration??0;n.push({size:[i,s],safeArea:[0,0,0,0],previewSafeAreas:[],id:0,scene:t,ignoreInteraction:!0,export:{time:a,audioEnable:!1}})}}for(let e=0;e<a.length;e++){const r=a[e];if(!r)continue;let o=JSON.parse(JSON.stringify(s));const c=o.compositions.find(t=>t.id===o.compositionId)??o.compositions[0];(0,w.assertExist)(c);const h=c.previewSize??[750,1624],l=h,p=r.size??h;c.previewSize=p;const d=c.duration??0,m=r.safeArea??[0,0,0,0];t.config.sizeAdaptConfig.enabled&&(o=await this._sizeAdapt.adjustment(o,d,l,p,m,r.adaptionDirection)),(i=r.export).time??(i.time=d),n.push({...r,size:p,safeArea:m,previewSafeAreas:[...r.previewSafeAreas??[]],id:e+1,scene:o,ignoreInteraction:!1})}const o=n[0]?.scene;if(!o)return void console.warn("SDK need one view property at least.");const c=o.compositions.find(t=>t.id===o.compositionId)??o.compositions[0],h={...r,zoom:1,translation:[0,0],asyncMode:r.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:n[p].id,selectedItems:[]},items:[],viewProperties:n,playing:!1},this._pageDataUtils.init(),await this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),this._gestureHandler.ignoreInteraction=!!n[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.getPageData()),this.initExporterEnabled&&this.initExporter(t.config.exportConfig)}getPageData(){return JSON.parse(JSON.stringify(this._pageData))}getActiveItems(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.selectedItems}setPreSelectedItem(t){(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=t}getPreSelectedItem(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem??""}setSelectedItems(t){this._pageDataUtils.clearPreSelectedItem(),this._pageDataUtils.clearSelectedItems(),this._pageDataUtils.addSelectedItems([...t])}getItemProperty(t){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const e=this._pageData.items.find(e=>e.id===t.itemId);if(e&&e.type===t.type)return{type:e.type,property:e.property}}getItemPropertyValue(t){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const e=this.getItemProperty(t)?.property?.[t.propertyName];return e}async setItemPropertyValue(t){(0,w.assertExist)(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.changeItemProperty(t),this._gestureHandler.render(),t&&this._eventEmitter.emit("itemPropertyChange",{id:t.itemId,property:t.propertyName}),this._eventEmitter.emit("pageDataChange",this.getPageData()))}async generateScreenShot(t,e=[300,400],i,s){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const a=this.getViewProperty(t);if(!a)return"";const{scene:r,size:[n,o]}=a,c=r.compositionId,h=r.compositions.find(t=>t.id===c);i??(i=h?.duration??0);const l=JSON.parse(JSON.stringify(r));return await this._screenShot.generate(l,[n,o],e,i,s)}async switchScene(t){if((0,w.assertExist)(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.getPageData()),this._isSwitchScene=!1}getPageConfig(){return(0,w.assertExist)(this._pageData,"You must call SDK#run() first"),{safeAreaPreview:this._pageData.property.safeAreaPreview,zoom:this._pageData.property.zoom,adsorption:this._pageData.property.adsorption,asyncMode:this._pageData.property.asyncMode,translation:this._pageData.property.translation}}setPageConfig(e){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const{adsorption:i,safeAreaPreview:s,zoom:a}=this._pageData.property;this._pageData.property={...this._pageData.property,...e},this._pageData.property.zoom!==a&&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){(0,w.assertExist)(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&&(Ut(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)}getViewItems(){return this.getPageData()?.items??[]}async setPlayState(t){(0,w.assertExist)(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(0,w.assertExist)(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(0,w.assertExist)(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)})}onExport(){t.config.exportConfig.enabled&&((0,w.assertExist)(this.pageData,"You must call SDK#run() first"),(0,w.assertExist)(this._exporter,"You must init exporter first"),this._exporter.onExport(this.exportOptions))}cancelExport(){(0,w.assertExist)(this._exporter,"You must init exporter first"),this._exporter.onCancel()}async loadPageData(t){(0,w.assertExist)(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.getPageData())}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.getPageData())}async reloadPageDataByScene(t){(0,w.assertExist)(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){var i;(0,w.assertExist)(this._pageData);const s=[],a=this._pageData.viewProperties[this._pageData.viewProperties.length-1]?.id??this._pageData.viewProperties.length-1;for(let r=0;r<e.length;r++){const n=e[r];if(!n)continue;let o=JSON.parse(JSON.stringify(this._pageData.scene));const c=o.compositions.find(t=>t.id===o.compositionId)??o.compositions[0];(0,w.assertExist)(c);const{previewSize:h=[750,1624]}=c,l=h,p=n.size??h;c.previewSize=p;const d=c.duration??0,m=n.safeArea??[0,0,0,0];t.config.sizeAdaptConfig.enabled&&(o=await this._sizeAdapt.adjustment(o,d,l,p,m,n.adaptionDirection)),(i=n.export).time??(i.time=d),s.push({...n,size:p,safeArea:m,previewSafeAreas:[...n.previewSafeAreas??[]],id:a+1+r,scene:o,ignoreInteraction:!1})}this._pageData.viewProperties.push(...s),this._eventEmitter.emit("pageDataChange",this.getPageData())}async deleteViewParams(t){t.sort((t,e)=>t-e);for(let e=0;e<t.length;e++){const i=t[e];(0,w.assertExist)(this._pageData);const s=i-e,a=this._pageData.viewProperties.findIndex(t=>t.id===s);if(!0===this._pageData.viewProperties[a]?.ignoreInteraction){console.warn("target view ignore interaction, it can not be deleted.");continue}if(a<0){console.warn("Target view is not existed.");continue}this._pageData.viewProperties.splice(a,1);const r=this._pageData.activeData.view??0;s===r?(this._pageData.activeData.view=0,await this._pageDataUtils.loadScene(0)):s<r&&(this._pageData.activeData.view=r-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.getPageData())}setExportParam(t,e){(0,w.assertExist)(this._pageData),this._pageData.viewProperties.forEach(i=>{void 0!==e&&i.id!==e||Object.assign(i.export,t)})}setPageZoom(t,e,i){(0,w.assertExist)(this._pageData),this._pageData.property.zoom=t,this._pageDataUtils.setPageZoom(this._pageData.property.zoom,e,i),this._gestureHandler.render()}setPageMove(t){(0,w.assertExist)(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?J(t.config.pageConfig.filterItemNames,e):e.forEach(e=>{J(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=Object.assign({},t.config.exportConfig,e);this.checkExporter(t.config.exportConfig,i),t.config.exportConfig=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,e)}async addVideoItem(t,e){return await this._pageDataUtils.addVideoItem(t,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)}openLoadingGizmo(t,e,i){this._gestureHandler.openLoadingGizmo(t,e,i)}closeLoadingGizmo(t){this._gestureHandler.closeLoadingGizmo(t)}groupItems(t,e){return this._pageDataUtils.addNullItem(t,e)}async addTextItem(t,e){return await this._pageDataUtils.addTextItem(t,e)}deleteItems(t){if((0,w.assertExist)(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.addViewItemsByItems(this._pageData.items,e.items),this._eventEmitter.emit("pageDataChange",this._pageData)}getItemCreateInfo(t){(0,w.assertExist)(this._pageData,"You must call SDK#run() first");const e=[];if(Array.isArray(t))t.forEach(i=>{const s=this._pageDataUtils.getViewItemById(i),a=this._pageDataUtils.getItemCreateInfo(i,!(!s?.parentId||!t.includes(s?.parentId)));a&&e.push(a)});else{const i=this._pageDataUtils.getItemCreateInfo(t,!1);i&&e.push(i)}return 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)}getChildrenIds(t){return this._pageDataUtils.getChildrenIds(t)}updateItemOrder(t,e){(0,w.assertExist)(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){(0,w.assertExist)(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)}getViewItemById(t){return this._pageDataUtils.getViewItemById(t)}getViewProperty(t){return this._pageDataUtils.getViewProperty(t)}pageMove(t){this._pageDataUtils.pageMove(new D(...t))}pageZoom(t,e){this._pageDataUtils.pageZoom(t,e?new D(...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)}};d(Ke,"config",{mode:"template",pageConfig:{asncMode:!1,minZoom:.01,maxZoom:20,staticPreview:!0,staticPreviewName:"标准模板",filterItemNames:["check-area","ModelPluginItem"],groupVisible:!0},screenShotConfig:{enabled:!0},exportConfig:{enabled:!0,mediaType:"MP4",loggerInTranscoding:!1},sizeAdaptConfig:{enabled:!0},gestureHandlerConfig:{enabled:!0,adsorptionGizmoEnabled:!0,adsorptionGizmoConfig:{lineWidth:.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",nullLogoUrl:"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},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},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}}});var $e=Ke;
|
|
1
|
+
"use strict";var t,e=Object.create,i=Object.defineProperty,s=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,n=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=t=>{throw TypeError(t)},c=(t,e)=>{for(var s in e)i(t,s,{get:e[s],enumerable:!0})},l=(t,e,n,o)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let c of r(e))a.call(t,c)||c===n||i(t,c,{get:()=>e[c],enumerable:!(o=s(e,c))||o.enumerable});return t},h=(t,e,i)=>(l(t,e,"default"),i&&l(i,e,"default")),p=(t,s,r)=>(r=null!=t?e(n(t)):{},l(!s&&t&&t.__esModule?r:i(r,"default",{value:t,enumerable:!0}),t)),d=(t,e,s)=>((t,e,s)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s)(t,"symbol"!=typeof e?e+"":e,s),m=(t,e,i)=>e.has(t)||o("Cannot "+i),g=(t,e,i)=>(m(t,e,"read from private field"),i?i.call(t):e.get(t)),u=(t,e,i)=>e.has(t)?o("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,i),y=(t,e,i,s)=>(m(t,e,"write to private field"),s?s.call(t,i):e.set(t,i),i),f={};c(f,{Box2:()=>Ii,ItemOrderAction:()=>x,SDK:()=>Er,Vector2:()=>oi,generateGUID:()=>ii.generateGUID,spec:()=>ii.spec}),module.exports=(t=f,l(i({},"__esModule",{value:!0}),t));var x=(t=>(t[t.BringToFront=0]="BringToFront",t[t.SendToBack=1]="SendToBack",t[t.BringForward=2]="BringForward",t[t.SendBackward=3]="SendBackward",t))(x||{}),w="object"==typeof global&&global&&global.Object===Object&&global,v="object"==typeof self&&self&&self.Object===Object&&self,I=w||v||Function("return this")(),P=I.Symbol,C=Object.prototype,b=C.hasOwnProperty,D=C.toString,S=P?P.toStringTag:void 0;var z=function(t){var e=b.call(t,S),i=t[S];try{t[S]=void 0;var s=!0}catch(t){}var r=D.call(t);return s&&(e?t[S]=i:delete t[S]),r},_=Object.prototype.toString;var A=function(t){return _.call(t)},E=P?P.toStringTag:void 0;var T=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":E&&E in Object(t)?z(t):A(t)};var B=function(t){return null!=t&&"object"==typeof t},k=Array.isArray;var M=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};var V=function(t){return t};var U,G=function(t){if(!M(t))return!1;var e=T(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e},F=I["__core-js_shared__"],R=(U=/[^.]+$/.exec(F&&F.keys&&F.keys.IE_PROTO||""))?"Symbol(src)_1."+U:"";var L=function(t){return!!R&&R in t},W=Function.prototype.toString;var H=function(t){if(null!=t){try{return W.call(t)}catch(t){}try{return t+""}catch(t){}}return""},O=/^\[object .+?Constructor\]$/,N=Function.prototype,j=Object.prototype,$=N.toString,K=j.hasOwnProperty,Y=RegExp("^"+$.call(K).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var J=function(t){return!(!M(t)||L(t))&&(G(t)?Y:O).test(H(t))};var q=function(t,e){return null==t?void 0:t[e]};var X=function(t,e){var i=q(t,e);return J(i)?i:void 0},Z=Object.create,Q=function(){function t(){}return function(e){if(!M(e))return{};if(Z)return Z(e);t.prototype=e;var i=new t;return t.prototype=void 0,i}}();var tt=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 et=function(t,e){var i=-1,s=t.length;for(e||(e=Array(s));++i<s;)e[i]=t[i];return e},it=Date.now;var st=function(t){var e=0,i=0;return function(){var s=it(),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 rt=function(t){return function(){return t}},nt=function(){try{var t=X(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),at=st(nt?function(t,e){return nt(t,"toString",{configurable:!0,enumerable:!1,value:rt(e),writable:!0})}:V),ot=/^(?:0|[1-9]\d*)$/;var ct=function(t,e){var i=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==i||"symbol"!=i&&ot.test(t))&&t>-1&&t%1==0&&t<e};var lt=function(t,e,i){"__proto__"==e&&nt?nt(t,e,{configurable:!0,enumerable:!0,value:i,writable:!0}):t[e]=i};var ht=function(t,e){return t===e||t!=t&&e!=e},pt=Object.prototype.hasOwnProperty;var dt=function(t,e,i){var s=t[e];pt.call(t,e)&&ht(s,i)&&(void 0!==i||e in t)||lt(t,e,i)};var mt=function(t,e,i,s){var r=!i;i||(i={});for(var n=-1,a=e.length;++n<a;){var o=e[n],c=s?s(i[o],t[o],o,i,t):void 0;void 0===c&&(c=t[o]),r?lt(i,o,c):dt(i,o,c)}return i},gt=Math.max;var ut=function(t,e,i){return e=gt(void 0===e?t.length-1:e,0),function(){for(var s=arguments,r=-1,n=gt(s.length-e,0),a=Array(n);++r<n;)a[r]=s[e+r];r=-1;for(var o=Array(e+1);++r<e;)o[r]=s[r];return o[e]=i(a),tt(t,this,o)}};var yt=function(t,e){return at(ut(t,e,V),t+"")};var ft=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991};var xt=function(t){return null!=t&&ft(t.length)&&!G(t)};var wt=function(t,e,i){if(!M(i))return!1;var s=typeof e;return!!("number"==s?xt(i)&&ct(e,i.length):"string"==s&&e in i)&&ht(i[e],t)};var vt=function(t){return yt(function(e,i){var s=-1,r=i.length,n=r>1?i[r-1]:void 0,a=r>2?i[2]:void 0;for(n=t.length>3&&"function"==typeof n?(r--,n):void 0,a&&wt(i[0],i[1],a)&&(n=r<3?void 0:n,r=1),e=Object(e);++s<r;){var o=i[s];o&&t(e,o,s,n)}return e})},It=Object.prototype;var Pt=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||It)};var Ct=function(t,e){for(var i=-1,s=Array(t);++i<t;)s[i]=e(i);return s};var bt=function(t){return B(t)&&"[object Arguments]"==T(t)},Dt=Object.prototype,St=Dt.hasOwnProperty,zt=Dt.propertyIsEnumerable,_t=bt(function(){return arguments}())?bt:function(t){return B(t)&&St.call(t,"callee")&&!zt.call(t,"callee")};var At=function(){return!1},Et="object"==typeof exports&&exports&&!exports.nodeType&&exports,Tt=Et&&"object"==typeof module&&module&&!module.nodeType&&module,Bt=Tt&&Tt.exports===Et?I.Buffer:void 0,kt=(Bt?Bt.isBuffer:void 0)||At,Mt={};Mt["[object Float32Array]"]=Mt["[object Float64Array]"]=Mt["[object Int8Array]"]=Mt["[object Int16Array]"]=Mt["[object Int32Array]"]=Mt["[object Uint8Array]"]=Mt["[object Uint8ClampedArray]"]=Mt["[object Uint16Array]"]=Mt["[object Uint32Array]"]=!0,Mt["[object Arguments]"]=Mt["[object Array]"]=Mt["[object ArrayBuffer]"]=Mt["[object Boolean]"]=Mt["[object DataView]"]=Mt["[object Date]"]=Mt["[object Error]"]=Mt["[object Function]"]=Mt["[object Map]"]=Mt["[object Number]"]=Mt["[object Object]"]=Mt["[object RegExp]"]=Mt["[object Set]"]=Mt["[object String]"]=Mt["[object WeakMap]"]=!1;var Vt=function(t){return B(t)&&ft(t.length)&&!!Mt[T(t)]};var Ut=function(t){return function(e){return t(e)}},Gt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ft=Gt&&"object"==typeof module&&module&&!module.nodeType&&module,Rt=Ft&&Ft.exports===Gt&&w.process,Lt=function(){try{var t=Ft&&Ft.require&&Ft.require("util").types;return t||Rt&&Rt.binding&&Rt.binding("util")}catch(t){}}(),Wt=Lt&&Lt.isTypedArray,Ht=Wt?Ut(Wt):Vt,Ot=Object.prototype.hasOwnProperty;var Nt=function(t,e){var i=k(t),s=!i&&_t(t),r=!i&&!s&&kt(t),n=!i&&!s&&!r&&Ht(t),a=i||s||r||n,o=a?Ct(t.length,String):[],c=o.length;for(var l in t)!e&&!Ot.call(t,l)||a&&("length"==l||r&&("offset"==l||"parent"==l)||n&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||ct(l,c))||o.push(l);return o};var jt=function(t,e){return function(i){return t(e(i))}};var $t=function(t){var e=[];if(null!=t)for(var i in Object(t))e.push(i);return e},Kt=Object.prototype.hasOwnProperty;var Yt=function(t){if(!M(t))return $t(t);var e=Pt(t),i=[];for(var s in t)("constructor"!=s||!e&&Kt.call(t,s))&&i.push(s);return i};var Jt=function(t){return xt(t)?Nt(t,!0):Yt(t)},qt=X(Object,"create");var Xt=function(){this.__data__=qt?qt(null):{},this.size=0};var Zt=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},Qt=Object.prototype.hasOwnProperty;var te=function(t){var e=this.__data__;if(qt){var i=e[t];return"__lodash_hash_undefined__"===i?void 0:i}return Qt.call(e,t)?e[t]:void 0},ee=Object.prototype.hasOwnProperty;var ie=function(t){var e=this.__data__;return qt?void 0!==e[t]:ee.call(e,t)};var se=function(t,e){var i=this.__data__;return this.size+=this.has(t)?0:1,i[t]=qt&&void 0===e?"__lodash_hash_undefined__":e,this};function re(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])}}re.prototype.clear=Xt,re.prototype.delete=Zt,re.prototype.get=te,re.prototype.has=ie,re.prototype.set=se;var ne=re;var ae=function(){this.__data__=[],this.size=0};var oe=function(t,e){for(var i=t.length;i--;)if(ht(t[i][0],e))return i;return-1},ce=Array.prototype.splice;var le=function(t){var e=this.__data__,i=oe(e,t);return!(i<0)&&(i==e.length-1?e.pop():ce.call(e,i,1),--this.size,!0)};var he=function(t){var e=this.__data__,i=oe(e,t);return i<0?void 0:e[i][1]};var pe=function(t){return oe(this.__data__,t)>-1};var de=function(t,e){var i=this.__data__,s=oe(i,t);return s<0?(++this.size,i.push([t,e])):i[s][1]=e,this};function me(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])}}me.prototype.clear=ae,me.prototype.delete=le,me.prototype.get=he,me.prototype.has=pe,me.prototype.set=de;var ge=me,ue=X(I,"Map");var ye=function(){this.size=0,this.__data__={hash:new ne,map:new(ue||ge),string:new ne}};var fe=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};var xe=function(t,e){var i=t.__data__;return fe(e)?i["string"==typeof e?"string":"hash"]:i.map};var we=function(t){var e=xe(this,t).delete(t);return this.size-=e?1:0,e};var ve=function(t){return xe(this,t).get(t)};var Ie=function(t){return xe(this,t).has(t)};var Pe=function(t,e){var i=xe(this,t),s=i.size;return i.set(t,e),this.size+=i.size==s?0:1,this};function Ce(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])}}Ce.prototype.clear=ye,Ce.prototype.delete=we,Ce.prototype.get=ve,Ce.prototype.has=Ie,Ce.prototype.set=Pe;var be=Ce,De=jt(Object.getPrototypeOf,Object),Se=Function.prototype,ze=Object.prototype,_e=Se.toString,Ae=ze.hasOwnProperty,Ee=_e.call(Object);var Te=function(t){if(!B(t)||"[object Object]"!=T(t))return!1;var e=De(t);if(null===e)return!0;var i=Ae.call(e,"constructor")&&e.constructor;return"function"==typeof i&&i instanceof i&&_e.call(i)==Ee};var Be=function(){this.__data__=new ge,this.size=0};var ke=function(t){var e=this.__data__,i=e.delete(t);return this.size=e.size,i};var Me=function(t){return this.__data__.get(t)};var Ve=function(t){return this.__data__.has(t)};var Ue=function(t,e){var i=this.__data__;if(i instanceof ge){var s=i.__data__;if(!ue||s.length<199)return s.push([t,e]),this.size=++i.size,this;i=this.__data__=new be(s)}return i.set(t,e),this.size=i.size,this};function Ge(t){var e=this.__data__=new ge(t);this.size=e.size}Ge.prototype.clear=Be,Ge.prototype.delete=ke,Ge.prototype.get=Me,Ge.prototype.has=Ve,Ge.prototype.set=Ue;var Fe=Ge,Re="object"==typeof exports&&exports&&!exports.nodeType&&exports,Le=Re&&"object"==typeof module&&module&&!module.nodeType&&module,We=Le&&Le.exports===Re?I.Buffer:void 0,He=We?We.allocUnsafe:void 0;var Oe=function(t,e){if(e)return t.slice();var i=t.length,s=He?He(i):new t.constructor(i);return t.copy(s),s},Ne=I.Uint8Array;var je=function(t){var e=new t.constructor(t.byteLength);return new Ne(e).set(new Ne(t)),e};var $e=function(t,e){var i=e?je(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.length)};var Ke=function(t){return"function"!=typeof t.constructor||Pt(t)?{}:Q(De(t))};var Ye=function(t){return function(e,i,s){for(var r=-1,n=Object(e),a=s(e),o=a.length;o--;){var c=a[t?o:++r];if(!1===i(n[c],c,n))break}return e}}();var Je=function(t,e,i){(void 0!==i&&!ht(t[e],i)||void 0===i&&!(e in t))&<(t,e,i)};var qe=function(t){return B(t)&&xt(t)};var Xe=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var Ze=function(t){return mt(t,Jt(t))};var Qe=function(t,e,i,s,r,n,a){var o=Xe(t,i),c=Xe(e,i),l=a.get(c);if(l)Je(t,i,l);else{var h=n?n(o,c,i+"",t,e,a):void 0,p=void 0===h;if(p){var d=k(c),m=!d&&kt(c),g=!d&&!m&&Ht(c);h=c,d||m||g?k(o)?h=o:qe(o)?h=et(o):m?(p=!1,h=Oe(c,!0)):g?(p=!1,h=$e(c,!0)):h=[]:Te(c)||_t(c)?(h=o,_t(o)?h=Ze(o):M(o)&&!G(o)||(h=Ke(c))):p=!1}p&&(a.set(c,h),r(h,c,s,n,a),a.delete(c)),Je(t,i,h)}};var ti=function t(e,i,s,r,n){e!==i&&Ye(i,function(a,o){if(n||(n=new Fe),M(a))Qe(e,i,o,s,t,r,n);else{var c=r?r(Xe(e,o),a,o+"",e,i,n):void 0;void 0===c&&(c=a),Je(e,o,c)}},Jt)},ei=vt(function(t,e,i){ti(t,e,i)}),ii=(require("@galacean/effects"),require("@galacean/effects")),si=(require("@galacean/effects-plugin-rich-text"),require("@galacean/effects-plugin-rich-text")),ri=(require("@galacean/effects-plugin-model"),require("@galacean/effects-plugin-multimedia"),require("@galacean/effects-plugin-multimedia")),ni=(require("@galacean/effects-plugin-spine"),require("@galacean/effects-plugin-ffd"),require("@pixi/app")),ai=class{constructor(){d(this,"type"),d(this,"active"),this.type="null",this.active=!1}get interactive(){return this.active}set interactive(t){this.active=t}},oi=class t extends ii.math.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=li(((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}},ci=1e-6;function li(t,e,i){const s=isNaN(e)?-1/0:e,r=isNaN(i)?1/0:i,n=Math.min(s,r),a=Math.max(s,r);return Math.min(Math.max(t,n),a)}var hi=Math.PI/180,pi=180/Math.PI;function di(t){return Math.atan2(-t.y,-t.x)+Math.PI}function mi(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 gi(t,e,i=Math.round){if(Number.isInteger(t))return t;const s=Math.pow(10,e);return i(t*s)/s}function ui(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 yi(t,e){return Math.abs(t-e)<ci||t===1/0&&e===1/0||t===-1/0&&e===-1/0}function fi(t){return isNaN(t)||Math.abs(t)<ci}function xi(t,e){const i=new Ii,{min:s,max:r}=t,{min:n,max:a}=e,o=s.clone().add((new oi).subtractVectors(r,s).multiply(n)),c=s.clone().add((new oi).subtractVectors(r,s).multiply(a));return i.setFromVec2ArrayWithOutCorners([o,c]),i}function wi(t,e){const i=new Ii,{min:s,max:r}=t,{min:n,max:a}=e,o=(new oi).subtractVectors(n,s).divide((new oi).subtractVectors(r,s)),c=(new oi).subtractVectors(a,s).divide((new oi).subtractVectors(r,s));return i.setFromVec2ArrayWithOutCorners([o,c]),i}var vi=class t{constructor(t=new oi,e=new oi){d(this,"start",new oi),d(this,"end",new oi),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 oi).subtractVectors(this.end,this.start).normalize()}getCenter(t=new oi){return t.addVectors(this.start,this.end).multiply(.5)}delta(t=new oi){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 oi){return this.delta(e).multiply(t).add(this.start)}closestPointToPointParameter(t,e){const i=new oi,s=new oi;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=li(n,0,1)),n}closestPointToPoint(t,e,i=new oi){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 oi).subtractVectors(this.end,this.start).length()}crossWithLine(t){const e=this.delta(),i=t.delta(),s=(new oi).subtractVectors(t.start,this.start),r=(new oi).subtractVectors(t.end,this.start),n=(new oi).subtractVectors(this.start,t.start),a=(new oi).subtractVectors(this.end,t.start),o=s.cross(e),c=r.cross(e),l=n.cross(i),h=a.cross(i);return o*c<0&&l*h<0}},Ii=class t{constructor(t=new oi(1/0,1/0),e=new oi(-1/0,-1/0)){d(this,"corners",[]),d(this,"min",new oi(1/0,1/0)),d(this,"max",new oi(-1/0,-1/0)),this.min=t.clone(),this.max=e.clone(),this.isEmpty()?this.corners=[]:this.corners=[new oi(e.x,t.y),e.clone(),new oi(t.x,e.y),t.clone()]}set(t,e){return this.min.copyFrom(t),this.max.copyFrom(e),this.corners=[new oi(e.x,t.y),e.clone(),new oi(t.x,e.y),t.clone()],this}setFromVec2Array(t){return this.min=(new oi).copyFrom(t[0]),this.max=(new oi).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 oi).copyFrom(t[0]),this.max=(new oi).copyFrom(t[0]),t.forEach(t=>{this.min=this.min.min(t),this.max=this.max.max(t)}),this.corners.push(new oi(this.max.x,this.min.y)),this.corners.push(new oi(this.max.x,this.max.y)),this.corners.push(new oi(this.min.x,this.max.y)),this.corners.push(new oi(this.min.x,this.min.y)),this}setFromCenterAndSize(t,e){const i=(new oi).copyFrom(e).multiply(.5);return this.min.copyFrom(t).subtract(i),this.max.copyFrom(t).add(i),this.corners=[new oi(this.max.x,this.min.y),this.max.clone(),new oi(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 oi){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiply(.5)}getSize(t=new oi){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 oi(s.x-i.x,s.y-i.y),n=new oi(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 oi){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 oi){return e.copyFrom(t).clamp(this.min,this.max)}distanceToPoint(t){return(new oi).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 oi(this.max.x,this.min.y),this.max.clone(),new oi(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 oi(t,t):new oi(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 vi(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 vi(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}},Pi=class t{constructor(t=new oi,e=0){d(this,"center"),d(this,"radius"),this.center=t.clone(),this.radius=e}set(t,e){return this.center=(new oi).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 oi,this.radius=0,this}isEmpty(){return this.radius<=0}getCenter(t=new oi){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}},Ci=class extends ii.math.Quaternion{},bi=class t extends ii.math.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 Ci).setFromEuler(t))}applyQuaternion(e,i=new t){const{x:s,y:r,z:n,w:a}=e,{x:o,y:c,z:l}=this.subtract(i),h=a*o+r*l-n*c,p=a*c+n*o-s*l,d=a*l+s*c-r*o,m=-s*o-r*c-n*l;return this.x=h*a+m*-s+p*-n-d*-r+i.x,this.y=p*a+m*-r+d*-s-h*-n+i.y,this.z=d*a+m*-n+h*-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:a}=this.subtract(i);let o=1/(s[3]*r+s[7]*n+s[11]*a+s[15]);return o=isNaN(o)?1:o,this.x=(s[0]*r+s[4]*n+s[8]*a+s[12])*o+i.x,this.y=(s[1]*r+s[5]*n+s[9]*a+s[13])*o+i.y,this.z=(s[2]*r+s[6]*n+s[10]*a+s[14])*o+i.z,this}},Di=class t extends ii.math.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=bi.ZERO){const r=this.elements,{x:n,y:a,z:o,w:c}=e,l=-s.x,h=-s.y,p=-s.z,d=n+n,m=a+a,g=o+o,u=n*d,y=n*m,f=n*g,x=a*m,w=a*g,v=o*g,I=c*d,P=c*m,C=c*g,{x:b,y:D,z:S}=i;return r[0]=(1-(x+v))*b,r[1]=(y+C)*b,r[2]=(f-P)*b,r[3]=0,r[4]=(y-C)*D,r[5]=(1-(u+v))*D,r[6]=(w+I)*D,r[7]=0,r[8]=(f+P)*S,r[9]=(w-I)*S,r[10]=(1-(u+x))*S,r[11]=0,r[12]=l*r[0]+h*r[4]+p*r[8]-l+t.x,r[13]=l*r[1]+h*r[5]+p*r[9]-h+t.y,r[14]=l*r[2]+h*r[6]+p*r[10]-p+t.z,this}extractRotation(t){const e=new bi,i=t.elements,s=this.elements,r=1/e.setFromMatrixColumn(t,0).length(),n=1/e.setFromMatrixColumn(t,1).length(),a=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]*a,s[9]=i[9]*a,s[10]=i[10]*a,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),a=Math.sin(i),o=Math.cos(s),c=Math.sin(s),l=Math.cos(r),h=Math.sin(r);if(t.order===ii.math.EulerOrder.XYZ){const t=n*l,i=n*h,s=a*l,r=a*h;e[0]=o*l,e[4]=-o*h,e[8]=c,e[1]=i+s*c,e[5]=t-r*c,e[9]=-a*o,e[2]=r-t*c,e[6]=s+i*c,e[10]=n*o}else if(t.order===ii.math.EulerOrder.YXZ){const t=o*l,i=o*h,s=c*l,r=c*h;e[0]=t+r*a,e[4]=s*a-i,e[8]=n*c,e[1]=n*h,e[5]=n*l,e[9]=-a,e[2]=i*a-s,e[6]=r+t*a,e[10]=n*o}else if(t.order===ii.math.EulerOrder.ZXY){const t=o*l,i=o*h,s=c*l,r=c*h;e[0]=t-r*a,e[4]=-n*h,e[8]=s+i*a,e[1]=i+s*a,e[5]=n*l,e[9]=r-t*a,e[2]=-n*c,e[6]=a,e[10]=n*o}else if(t.order===ii.math.EulerOrder.ZYX){const t=n*l,i=n*h,s=a*l,r=a*h;e[0]=o*l,e[4]=s*c-i,e[8]=t*c+r,e[1]=o*h,e[5]=r*c+t,e[9]=i*c-s,e[2]=-c,e[6]=a*o,e[10]=n*o}else if(t.order===ii.math.EulerOrder.YZX){const t=n*o,i=n*c,s=a*o,r=a*c;e[0]=o*l,e[4]=r-t*h,e[8]=s*h+i,e[1]=h,e[5]=n*l,e[9]=-a*l,e[2]=-c*l,e[6]=i*h+s,e[10]=t-r*h}else if(t.order===ii.math.EulerOrder.XZY){const t=n*o,i=n*c,s=a*o,r=a*c;e[0]=o*l,e[4]=-h,e[8]=c*l,e[1]=t*h+r,e[5]=n*l,e[9]=i*h-s,e[2]=s*h-i,e[6]=a*l,e[10]=r*h+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}},Si=class extends ii.math.Euler{constructor(t=0,e=0,i=0,s=ii.math.EulerOrder.XYZ){super(t,e,i,s)}getInvertMatrixByEuler(){return(new Di).makeRotationFromEuler(this).invert()}toDegreeVector3(t){return t?t.set(this.x*pi,this.y*pi,this.z*pi):new bi(this.x*pi,this.y*pi,this.z*pi)}setFromDegreeVector3(t,e){return this.set(t.x*hi,t.y*hi,t.z*hi,e??this.order)}},zi=class t{constructor(t=0,e=new bi(0,0,1)){d(this,"distance"),d(this,"normal");const i=e.length();0===i&&(this.normal=new bi(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 bi(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}},_i=class t extends ii.math.Ray{constructor(t=new bi,e=new bi(1,0,0)){super(t,e),d(this,"origin"),d(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(fi(e))return fi(t.distanceToPoint(this.origin))?0:NaN;const i=(-this.origin.dot(t.normal)-t.distance)/e;return i>0?i:NaN}},Ai=class{constructor(t=new _i){d(this,"ray"),this.ray=t.clone()}setFromCamera(t,e){const i=e.position,s=new bi(t.x,t.y,.5).applyMatrix(e.inverseViewProjectMatrix).subtract(i).normalize();return this.ray.set(i,s),this}rayCastPlane(t){const e=new bi,i=this.ray.rayCastPlane(t,e);if(!isNaN(i))return{distance:i,point:this.ray.at(i)}}},Ei=class extends ai{constructor(t){super(),d(this,"type","control"),d(this,"_interactionType","mouse"),d(this,"active",!1),d(this,"lastPoint",new oi),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"SDKUtils"),this.SDKUtils=t}get interactive(){return Er.config.gestureHandlerConfig.controlGizmoEnabled}set interactive(t){Er.config.gestureHandlerConfig.controlGizmoEnabled=!0}get interactionType(){return this._interactionType}set interactionType(t){t===this._interactionType&&(this._interactionType=t,this.refreshCursorResult())}get useCameraControl(){return"editor"===Er.config.mode}preparationAction(){}cancelPreparation(){}refreshResults(){}preAction(t){return"mouse"===this.interactionType&&(this.active=!0,this.lastPoint=new oi(t.clientX,t.clientY)),this.refreshCursorResult(),"mouse"===this.interactionType?this.type:void 0}action(t){if(!Er.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:a,offsetY:o}=t,c=new oi(r,n);if(e||i){const t=this.useCameraControl?new oi(a,o):new oi,e=-c.y*Er.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 oi(e,i),n=(new oi).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[]}},Ti=require("@pixi/graphics");function Bi(t,e){t.includes(e)||t.push(e)}function ki(t){return"object"==typeof t&&!!t}function Mi(t,e){if(ki(t)&&ki(e)){if(Array.isArray(t)&&Array.isArray(e))return t.length===e.length&&t.every((t,i)=>Mi(t,e[i]));const i=[];for(const s in t)if(Object.prototype.hasOwnProperty.call(t,s)){if(!Mi(t[s],e[s]))return!1;i.push(s)}return Object.getOwnPropertyNames(e).length===i.length}return t===e}var Vi=class extends ai{constructor(t){super(),d(this,"result",{type:"null",box:new Ii}),d(this,"selectedItemIds",[]),d(this,"activeParentIds",[]),d(this,"cursorPoint",new oi),d(this,"startPoint",new oi),d(this,"firstClickPoint",new oi),d(this,"graphics",new Ti.Graphics),d(this,"pageDataUtils"),d(this,"clearResult",!1),d(this,"type","selector"),this.pageDataUtils=t}get interactive(){return Er.config.gestureHandlerConfig.selectorGizmoEnabled}set interactive(t){Er.config.gestureHandlerConfig.selectorGizmoEnabled=!0}actionKey(){}endActionKey(){}getRenderObjects(){return this.interactive?this.clearResult?(this.result={type:"null",box:new Ii},this.clearResult=!1,[]):(this.refreshResults(),[this.graphics]):[]}cancelPreparation(){this.result.type="null",this.pageDataUtils.clearPreSelectedItem()}preparationAction(t,e){if(this.result.box=new Ii,!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setSelectorConfig() open this feature.");const i=new oi(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))],a=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(a),this.pageDataUtils.clearPreSelectedItem()):(this.pageDataUtils.addPreSelectedItem(r),r!==a&&(this.pageDataUtils.playVideoItem(r),this.pageDataUtils.pauseVideoItem(a))),this.type):(this.pageDataUtils.pauseVideoItem(a),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.clearPreSelectedItem(),t.buttons){case 1:{const s=new oi(t.offsetX,t.offsetY);if(i??(i=this.firstClickPoint),e&&s.distanceTo(i)<4){const e=new oi(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.pageDataUtils.getViewItemById(this.selectedItemIds[0]);t?.parentId&&this.pageDataUtils.removeSelectedItems([t.parentId])}}else this.pageDataUtils.clearSelectedItems(0===this.selectedItemIds.length);if(0===this.selectedItemIds.length)return this.startPoint=new oi(t.clientX,t.clientY),this.cursorPoint=new oi(t.offsetX,t.offsetY),this.activeParentIds=[],this.active=!0,this.type;{this.pageDataUtils.addSelectedItems([this.selectedItemIds[0]]);const t=this.pageDataUtils.getPageData()?.activeData?.selectedItems;return this.addActiveParentIds(t),this.clearResult=!0,this.pageDataUtils.saveUndoRedoOldData(),1===t?.length&&this.pageDataUtils.getViewItemById(t[0])?.type===ii.spec.ItemType.text?"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 oi).addVectors(this.cursorPoint,(new oi).subtractVectors(new oi(t.clientX,t.clientY),this.startPoint)),i=(new oi).subtractVectors(this.cursorPoint,e),s=(new oi).addVectors(this.cursorPoint,e).multiply(.5);i.x=Math.abs(i.x),i.y=Math.abs(i.y);const r=(new Ii).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)),a=[];i.length()>0&&n?.forEach(t=>{r.intersectsBox(this.pageDataUtils.getViewBoxById(t.id),!1)&&a.push(t.id)});const o=this.filterSelectedItems(a);this.pageDataUtils.addSelectedItems(o)}endAction(){this.active=!1,this.result.type="null"}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 _i,regions:[]};try{r.regions=e.hitTest(i,s,!0),r.ray=e.getHitTestRay(i,s)}catch(t){console.warn(t)}return this.reorderHitTestResult(r,e).filter(t=>"extra-camera"!==t&&this.pageDataUtils.getItemEditEnable(t))}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.item.getInstanceId()),void 0===s)return;const a=s.getInstanceId(),o=i.origin.clone().distance(t.position.clone());if((s.type===ii.spec.ItemType.mesh||s.getComponent(ii.SpriteComponent)?.renderer?.occlusion||s.getComponent(ii.TextComponent)?.renderer?.occlusion||s.getComponent(ri.VideoComponent)?.renderer?.occlusion||s.getComponent(si.RichTextComponent)?.renderer?.occlusion)&&r.length>0){let t=!0;r.forEach((e,i)=>{if(t)return o<=e[1]?(r.splice(i,0,[a,o]),void(t=!1)):void(i===r.length-1&&r.push([a,o]))})}else r.push([a,o])}),r.map(t=>t[0])}filterSelectedItems(t){const e=[],i=t=>{const e=this.pageDataUtils.getViewItemById(t);return!e.parentId||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)||Bi(e,r)}),e}addActiveParentIds(t){this.activeParentIds=[],t?.forEach(t=>{if(!this.pageDataUtils.getViewItemById(t))return;const e=t=>{this.activeParentIds.push(t);const i=this.pageDataUtils.getViewItemById(t);i.parentId&&e(i.parentId)};e(t)})}resetActiveParentIds(t){const e=this.pageDataUtils.getViewItemById(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:a,regionWireframeWidth:o,regionWireframeColor:c,regionWireframeAlpha:l}=Er.config.gestureHandlerConfig.selectorGizmoConfig;if(i?.isEmpty()||(this.graphics.lineStyle(n,a),this.graphics.drawBox(i)),!t.isEmpty()&&"region"===this.result.type)this.graphics.lineStyle(o,c,l),this.graphics.drawBox(t),this.graphics.beginFill(s,r),this.graphics.fillBox(t),this.graphics.endFill()}},Ui={};c(Ui,{Application:()=>Wi.Application,utils:()=>Ri});var Gi=require("@galacean/effects-plugin-model"),Fi={};c(Fi,{Application:()=>Wi.Application,utils:()=>Ri});require("@pixi/polyfill");var Ri=p(require("@pixi/utils"),1),Li=require("@pixi/interaction"),Wi=require("@pixi/app"),Hi=require("@pixi/core"),Oi=require("@pixi/loaders"),Ni=require("@pixi/ticker");h(Fi,require("@pixi/constants")),h(Fi,require("@pixi/core")),h(Fi,require("@pixi/display")),h(Fi,require("@pixi/graphics")),h(Fi,require("@pixi/loaders")),h(Fi,require("@pixi/interaction")),h(Fi,require("@pixi/math")),h(Fi,require("@pixi/runner")),h(Fi,require("@pixi/sprite")),h(Fi,require("@pixi/text")),h(Fi,require("@pixi/ticker")),h(Fi,require("@pixi/settings")),Ri.skipHello(),Hi.Renderer.registerPlugin("interaction",Li.InteractionManager),Hi.Renderer.registerPlugin("batch",Hi.BatchRenderer),Wi.Application.registerPlugin(Ni.TickerPlugin),Wi.Application.registerPlugin(Oi.AppLoaderPlugin),Fi.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 Gi.Vector2).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()},Fi.Graphics.prototype.fillBox=function(t){const e=t.getSize();this.drawRect(t.min.x,t.min.y,e.x,e.y)},Fi.Graphics.prototype.drawLine=function(t){if(this.beginFill(),t instanceof vi)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()},Fi.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},a=Math.abs(t),o=Math.abs(e),c=Math.atan((e-n.y)/(t-n.x));for(;Math.abs(n.x)<a||Math.abs(n.y)<o;)n.x=Math.abs(n.x+i*Math.cos(c))<a?n.x+i*Math.cos(c):t,n.y=Math.abs(n.y+i*Math.sin(c))<o?n.y+i*Math.sin(c):e,this.lineTo(n.x,n.y),n.x=Math.abs(n.x+s*Math.cos(c))<a?n.x+s*Math.cos(c):t,n.y=Math.abs(n.y+s*Math.sin(c))<o?n.y+s*Math.sin(c):e,this.moveTo(n.x,n.y)},h(Ui,Fi);var ji=class extends ai{constructor(t,e,i){super(),d(this,"type","transform"),d(this,"wireframe"),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"cursorPoint",new oi),d(this,"lastPoint",new oi),d(this,"rotationAngle",0),d(this,"active",!1),d(this,"enableAdsorption",!0),d(this,"scaleParam"),d(this,"activeType","null"),d(this,"lastWorldPosition",new bi),d(this,"_ignoreInteraction",!1),d(this,"firstClickPoint",new oi),d(this,"_pageDataUtils"),d(this,"adsorptionGizmo"),d(this,"selectorGizmo"),d(this,"graphics",new Ui.Graphics),d(this,"_isLockScale",!0),d(this,"isShiftDown",!1),d(this,"nameText",new Ui.Text("",{fontSize:14,fill:Er.config.gestureHandlerConfig.transformGizmoConfig.sizeTextColor,align:"left"})),d(this,"imageSprite"),d(this,"nullSprite"),d(this,"textSprite"),d(this,"videoSprite"),this._pageDataUtils=t,this.selectorGizmo=i,this.adsorptionGizmo=e,this.wireframe={edges:[],anchor:new oi,scaleCorners:[],rotationCorners:[],interactive:!0,cornerEnable:!0,directionEnable:!0,rotationEnabled:!0,scaleEnabled:!0,box:new Ii,totalBox:new Ii,childrenBoxes:[],activeType:"null",interactiveDirection:new oi,scaleCorner:new oi,scaleEdgeCorners:[]},this.imageSprite=Ui.Sprite.from(Er.config.gestureHandlerConfig.transformGizmoConfig.pictureLogoUrl),this.imageSprite.width=15,this.imageSprite.height=15,this.nullSprite=Ui.Sprite.from(Er.config.gestureHandlerConfig.transformGizmoConfig.nullLogoUrl),this.nullSprite.width=15,this.nullSprite.height=15,this.textSprite=Ui.Sprite.from(Er.config.gestureHandlerConfig.transformGizmoConfig.textLogoUrl),this.textSprite.width=15,this.textSprite.height=15,this.videoSprite=Ui.Sprite.from(Er.config.gestureHandlerConfig.transformGizmoConfig.videoLogoUrl),this.videoSprite.width=15,this.videoSprite.height=15}get interactive(){return Er.config.gestureHandlerConfig.transformGizmoEnabled}set interactive(t){Er.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:ii.spec.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!==ii.spec.ItemType.base&&Er.config.gestureHandlerConfig.transformGizmoConfig.infoShowEnabled)switch(t.push(this.nameText),this.infoType){case ii.spec.ItemType.sprite:t.push(this.imageSprite);break;case ii.spec.ItemType.null:t.push(this.nullSprite);break;case ii.spec.ItemType.text:Er.config.gestureHandlerConfig.textGizmoEnbaled||t.push(this.textSprite);break;case ii.spec.ItemType.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 oi(t.offsetX,t.offsetY),i=this.wireframe;this.refreshTransformType(e);const{interactiveDirection:s}=i;this.refreshCursorResult(this.activeType,di(s));const r="translation"===this.activeType?this.selectorGizmo.preparationAction(t,"transform"):this.type;return this.active="transform"===r&&"null"!==this.activeType,this.active&&r?r:void 0}preAction(t,e=!1){if(this._pageDataUtils.saveUndoRedoOldData(),this.active=1===t.buttons,this.lastPoint=new oi(t.clientX,t.clientY),this.cursorPoint=new oi(t.offsetX,t.offsetY),1!==t.buttons)return;if(e)return this.selectorGizmo.preAction(t,e,new oi(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 bi,this.activeType=e?"null":this.activeType,this.type}action(t){if(!this.interactive)return void console.warn("Selector gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if(!this.active){this.active=!0,this.refreshWireframeBySelectedItems(),this.wireframe.activeType="translation",this.lastPoint.set(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 bi}const e=new oi(t.clientX,t.clientY),i=(new oi).subtractVectors(e,this.lastPoint);if(!this.wireframe.interactive)return;const s=this._pageDataUtils.getSelectedItems(),{anchor:r,activeType:n,interactiveDirection:a,scaleCorner:o}=this.wireframe,c=this._pageDataUtils.getPageData();(0,ii.assertExist)(c);let l=0;switch(n){case"rotation":{const t=r.clone(),e=new bi,n=gi(mi((new oi).subtractVectors(this.cursorPoint,t),(new oi).subtractVectors(this.cursorPoint.add(i),t))*pi,3);e.z=n,this.rotationAngle+=n,l=di(a)+this.rotationAngle*hi,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 Ii:this._pageDataUtils.getViewBoxById(t.id)).filter(t=>!t.isEmpty()),i=new oi(this.adsorptionGizmo.absorptionResult.x??0,this.adsorptionGizmo.absorptionResult.y??0);this.adsorptionGizmo.boxTranslationAdsorption(t,this.wireframe.box,e);const r=new oi(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=>{e.type!==ii.spec.ItemType.camera&&(t.x=gi(t.x,5),t.y=gi(t.y,5),t.z=gi(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(!o||!this.scaleParam||!i.length())return;const e=this.scaleParam.farthestCorner;(o.x-e.x)*(this.cursorPoint.x-e.x)>0&&(o.y-e.y)*(this.cursorPoint.y-e.y)>0||!this.isLockScale||this.isShiftDown||(t.x=e.x+(o.x-e.x)/Math.abs(o.x-e.x)*4,t.y=e.y+(o.y-e.y)/Math.abs(o.y-e.y)*4);const r=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t);if(r){const t=this._pageDataUtils.getSelectedItems()[0]??void 0,e=this._pageDataUtils.getItemTransformById(t?.id??""),i=(new Di).extractRotation(e.matrix).invert(),{corner:n,center:a,shift:o,lastScalar:c}=this.scaleParam,l=(new bi).subtractVectors(n,a).applyMatrix(i),h=l.clone().multiply(c),p=r.clone().subtract(o).subtract(a).applyMatrix(i),d=new bi(1,1,1);if(!this.isLockScale||this.isShiftDown)d.x=yi(h.x,0)?1:p.x/h.x,d.y=yi(h.y,0)?1:p.y/h.y,d.z=yi(h.z,0)?1:p.z/h.z;else{const t=ui([yi(l.x,0)?1:Math.abs(p.x/l.x),yi(l.y,0)?1:Math.abs(p.y/l.y)]),e=p.toArray()[t],i=h.toArray()[t];if(yi(c.x,c.y)&&yi(c.z,c.x)){const t=yi(i,0)?1:Math.abs(e/i);d.set(t,t,t)}else if(0===t){d.x=yi(i,0)?1:Math.abs(e/i);const t=l.y*e/l.x;d.y=yi(h.y,0)?1:t/h.y;const s=l.z*e/l.x;d.z=yi(h.z,0)?1:s/h.z}else if(1===t){d.y=yi(i,0)?1:Math.abs(e/i);const t=l.x*e/l.y;d.x=yi(h.x,0)?1:t/h.x;const s=l.z*e/l.y;d.z=yi(h.z,0)?1:s/h.z}else{d.z=yi(i,0)?1:Math.abs(e/i);const t=l.x*e/l.z;d.x=yi(h.x,0)?1:t/h.x;const s=l.y*e/l.z;d.y=yi(h.y,0)?1:s/h.y}}const m=d.clone().subtract(new bi(1,1,0)).divide(2).add(new bi(1,1,.5)),g=a.clone().add((new bi).subtractVectors(n,a).multiply(new bi(c.x,c.y,1)));this.scaleParam.lastScalar.multiply(m);const u=a.clone().add((new bi).subtractVectors(n,a).multiply(new bi(this.scaleParam.lastScalar.x,this.scaleParam.lastScalar.y,1))),y=(new bi).subtractVectors(u,g);y.x=gi(y.x,5),y.y=gi(y.y,5),y.z=gi(y.z,5),this.scaleParam.center.add(y),this.scaleParam.corner.add(y),s.forEach(t=>{this._pageDataUtils.scaleItem(t.id,m),this._pageDataUtils.moveItem(t.id,y)}),this.lastWorldPosition.copyFrom(r)}l=di(a);break}}this.refreshCursorResult(n,l),this.lastPoint.copyFrom(e)}endAction(t){this._pageDataUtils.pushUndoRedoData(),this.active=!1;const e=new oi(t.clientX,t.clientY),i=(new oi).subtractVectors(e,this.lastPoint);this.cursorPoint.add(i);const s=this.wireframe;this.refreshTransformType(this.cursorPoint);const{activeType:r,interactiveDirection:n}=s;this.refreshCursorResult(r,di(n)),this.adsorptionGizmo.clearAbsorptionResult(),this.rotationAngle=0,this.cursorPoint=new oi,this.lastPoint=new oi}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)*pi};break;case"rotation":this.cursorResult={type:"rotation",angle:(e+Math.PI/4)*pi};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 bi).copyFrom(this._pageDataUtils.getPlayerItemById(i.id).transform.anchor).applyMatrix(t.matrix),r=(new bi).setFromMatrixPosition(t.matrix),n=(new Si).setFromQuaternion((new Ci).setFromRotationMatrix(t.matrix))}this._pageDataUtils.interactionUtils.initInteractionPlane(r,n);const{scaleCorner:a,box:o}=this.wireframe,c=o.corners[0].clone();let l=c.distanceTo(a);o.corners.forEach(t=>{t.distanceTo(a)>l&&(c.copyFrom(t),l=t.distanceTo(a))}),this.scaleParam={shift:new bi,center:new bi,corner:new bi,lastScalar:new bi(1,1,1),farthestCorner:c},this.scaleParam.center=s??r;const h=this._pageDataUtils.getViewportLeftTopPosition();if(["scale"].includes(this.wireframe.activeType)&&this.wireframe.scaleCorner){const t=this.wireframe.scaleCorner.clone().subtract(h);this.scaleParam.corner=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new bi}this.scaleParam.shift=(this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new bi).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:s,cornerLineWidth:r,cornerLineColor:n,cornerLineAlpha:a,infoShowEnabled:o}=Er.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 vi(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,a),this.wireframe.scaleCorners.forEach(t=>{this.graphics.drawCircle(t.center.x,t.center.y,t.radius)}),this.graphics.endFill()),this.infoType!==ii.spec.ItemType.base&&o){const t=this._pageDataUtils.getSelectedItems()[0],e=t.type===ii.spec.ItemType.null?"编组":t.type===ii.spec.ItemType.sprite?"图片":t.type===ii.spec.ItemType.text?"文本":t.type===ii.spec.ItemType.video?"视频":"",{size:i,rotation:s}=t.property,r=this.infoType===ii.spec.ItemType.sprite?this.imageSprite:this.infoType===ii.spec.ItemType.null?this.nullSprite:this.infoType===ii.spec.ItemType.text?this.textSprite:this.videoSprite,n=this.wireframe.box.corners[3],a=s[2]*hi;r.anchor.set(0,1),r.x=n.x,r.y=n.y-5,r.rotation=-a;const o=n.clone().add(new oi(20,0)).rotateAround(n,-a),c=new oi(0,4).rotateAround(new oi,a);this.nameText.text=` ${e} ${i.map(t=>gi(t,0)).join(" * ")}`,this.nameText.anchor.set(0,1),this.nameText.x=o.x+c.x,this.nameText.y=o.y-c.y,this.nameText.rotation=-a}}}refreshTransformType(t){this.activeType="null";let e=!0;if(this.wireframe.interactiveDirection=new oi,this.wireframe.scaleCorner=void 0,this.wireframe.scaleEdgeCorners=void 0,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=new Ii;if(this.wireframe.edges=[],this.wireframe.scaleCorners=[],this.wireframe.childrenBoxes=[],this.wireframe.rotationCorners=[],this.wireframe.rotationEnabled="template"===Er.config.mode,this.wireframe.scaleEnabled=1===t.length&&t[0].type!==ii.spec.ItemType.null||"template"===Er.config.mode,this.wireframe.cornerEnable=1===t.length&&t[0].type!==ii.spec.ItemType.null||"template"===Er.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 Ii).copyFrom(i).expandByScalar(1))}}),this.wireframe.anchor=e.getCenter(),this.wireframe.interactive=!0;else if(1===t.length){const i=t[0];if((i.type!==ii.spec.ItemType.text||"template"===Er.config.mode)&&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=i.type!==ii.spec.ItemType.mesh&&this._pageDataUtils.getItemEditEnable(i.id)}}const i=e.isEmpty(),s=i?0:1,r=i?0:16;this.wireframe.activeType=t.length?this.wireframe.activeType:"null",this.wireframe.box.copyFrom(e).expandByScalar(s),this.wireframe.totalBox.copyFrom(e).expandByScalar(r);const n=this.wireframe.box.corners;n.forEach((t,e)=>{this.wireframe.edges.push(new vi((new oi).copyFrom(t),(new oi).copyFrom(n[(e+1)%4])))});const{scaleCircleSize:a,rotationCircleSize:o}=Er.config.gestureHandlerConfig.transformGizmoConfig;1===t.length&&this.wireframe.box.corners.forEach(t=>{this.wireframe.scaleCorners.push(new Pi(t,a));const e=(new oi).subtractVectors(t,this.wireframe.box.getCenter()),i=(new oi).copyFrom(this.wireframe.box.getCenter()).add((new oi).copyFrom(e).normalize().multiply(e.length()+o-a));this.wireframe.rotationCorners.push(new Pi(i,o))})}setAdsorptionEnabled(t){this.enableAdsorption=t}},$i=require("@pixi/graphics"),Ki=class extends ai{constructor(){super(...arguments),d(this,"results",[]),d(this,"graphics",new $i.Graphics),d(this,"absorptionResult",{}),d(this,"type","adsorption")}get interactive(){return Er.config.gestureHandlerConfig.adsorptionGizmoEnabled}set interactive(t){Er.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 oi(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(t),a=e.clone().translate(n),o=a.getCenter();this.absorptionResult={},i.forEach(t=>{if(t.isEmpty())return;t.corners.forEach(t=>{a.corners.forEach(e=>{this.getPointAbsorption(e,t,s,r)}),this.getPointAbsorption(o,t,s,r)});const e=t.getCenter();this.getPointAbsorption(o,e,s,r),a.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 oi(this.absorptionResult?.x??0,this.absorptionResult?.y??0).add(t),a=e.clone().add(n);this.absorptionResult={},i.forEach(t=>{this.getPointAbsorption(a,t,s,r)})}getPointAbsorption(t,e,i=!0,s=!0){i&&Math.abs(t.x-e.x)<Er.config.gestureHandlerConfig.adsorptionGizmoConfig.distance&&this.refreshPointAbsorptionResult(t,e,"x"),s&&Math.abs(t.y-e.y)<Er.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 oi(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 vi(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 vi(i,s))})}refreshRenderObject(){this.graphics.clear();const{lineWidth:t,lineColor:e}=Er.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={}}},Yi=class extends ai{constructor(t){super(),d(this,"box",new Ii),d(this,"graphics",new Ui.Graphics),d(this,"PageDataUtils"),d(this,"type","preference"),this.PageDataUtils=t}preparationAction(){}preAction(){}action(){}endAction(){}interruption(){}actionKey(){}endActionKey(){}cancelPreparation(){}refreshResults(){if(this.box=new Ii,!this.interactive)return void console.warn("Preference gizmo is not opened, use #SDK.setAdsorptionConfig() open this feature.");if("editor"===Er.config.mode)return;const t=this.PageDataUtils.getPageData();(0,ii.assertExist)(t);const{container:e}=this.PageDataUtils;if(e){const{zoom:i}=t.property,{offsetWidth:s,offsetHeight:r}=e,n=new oi(s,r).multiply(i),a=this.PageDataUtils.getViewportLeftTopPosition().add(n.clone().divide(2));this.box=(new Ii).setFromCenterAndSize(a,n)}}refreshRenderObjects(){if("editor"===Er.config.mode)return;const{boxWidth:t,boxColor:e,markColor:i,markAlpha:s,safeAreaEnabled:r,safeAreaBoxColor:n,safeAreaBoxAlpha:a}=Er.config.gestureHandlerConfig.preferenceGizmoConfig;this.graphics=new Ui.Graphics;const{offsetWidth:o,offsetHeight:c}=this.PageDataUtils.container.parentElement,l=new Ii(new oi(0,0),new oi(o,this.box.min.y)),h=new Ii(new oi(0,this.box.min.y),new oi(this.box.min.x,c)),p=new Ii(new oi(this.box.min.x,this.box.max.y),new oi(o,c)),d=new Ii(new oi(this.box.max.x,this.box.min.y),new oi(o,this.box.max.y));if(this.graphics.beginFill(i,s),this.graphics.fillBox(l),this.graphics.fillBox(h),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,o,c,l]=i,h=this.box.getSize(),p=r/e[1]*h.y,d=c/e[0]*h.x,m=l/e[0]*h.x,g=o/e[1]*h.y,{min:u,max:y}=this.box;this.graphics.beginFill(n,a);const f=new Ii(u,new oi(y.x,u.y+p)),x=new Ii(new oi(u.x,u.y+p),new oi(u.x+d,y.y)),w=new Ii(new oi(y.x-m,u.y+p),new oi(y.x,y.y)),v=new Ii(new oi(u.x+d,y.y-g),new oi(y.x-m,y.y));this.graphics.fillBox(f),this.graphics.fillBox(x),this.graphics.fillBox(w),this.graphics.fillBox(v),this.graphics.endFill(),s.forEach(t=>{const{box:[i,s,r,n],color:a}=t,o=this.box.getSize(),c=new oi(r/e[0]*o.x,n/e[1]*o.y),l=new oi(i/e[0]*o.x+c.x/2,s/e[1]*o.y+c.y/2).add(u),h=(new Ii).setFromCenterAndSize(l,c),p=a?.[3]??.3,d=a?.slice(0,3)??[255,0,0],m=d[0]<<16|d[1]<<8|d[2];this.graphics.beginFill(m,p),this.graphics.fillBox(h),this.graphics.endFill()})}}this.graphics.lineStyle(t,e),this.graphics.drawBox(this.box)}getRenderObjects(){return Er.config.gestureHandlerConfig.preferenceGizmoEnabled&&"editor"!==Er.config.mode?(this.refreshRenderObjects(),[this.graphics]):[]}get interactive(){return Er.config.gestureHandlerConfig.preferenceGizmoEnabled}set interactive(t){Er.config.gestureHandlerConfig.preferenceGizmoEnabled=t}},Ji="https://mdn.alipayobjects.com/rms/uri/file/as/0.0.6",qi={normal:{type:"preset",content:"default"},rotation:{type:"svg",content:"default",url:`${Ji}/icons/cursor-rotate-32.svg`},circle:{type:"svg",content:"default",url:`${Ji}/icons/cursor-rotate-32.svg`},scale:{type:"svg",content:"default",url:`${Ji}/icons/cursor-scale-32.svg`},hand:{type:"preset",content:"grab"},pointer:{type:"preset",content:"pointer"},"active-hand":{type:"preset",content:"grabbing"},"text-rotation":{type:"svg",content:"default",url:"https://mdn.alipayobjects.com/huamei_ixsp8m/afts/img/A*R722QoloC44AAAAAKkAAAAgAev-aAQ/original"}};function Xi(t,e="item doesn't exist"){if(null==t)throw new Error(e)}function Zi(t,e="asserts failed"){if(!t)throw new Error(e)}function Qi(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 ts(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(!ts(t[s],e[s]))return!1}return!0}var es=class extends ai{constructor(t,e){super(),d(this,"result",{type:"invalid"}),d(this,"interactionParam",{type:"none"}),d(this,"graphics",new Ui.Graphics),d(this,"isShiftDown",!1),d(this,"_isLockScale",!1),d(this,"_pageDataUtils"),d(this,"_eventEmitter"),d(this,"type","picture-cut"),d(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return Er.config.gestureHandlerConfig.pictureCutGizmoEnabled}set interactive(t){t!==Er.config.gestureHandlerConfig.pictureCutGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture cut gizmo can not open."):Er.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 oi(t.offsetX,t.offsetY),i=new oi(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 oi(t.clientX,t.clientY),{startMouse:s,box:r}=this.interactionParam,n=(new oi).subtractVectors(i,s),{itemBox:a}=this.result,{min:o,max:c}=a;switch(this.interactionParam.type){case"move":{const{min:t,max:e}=r,i=o.x-t.x,s=c.x-e.x,l=o.y-t.y,h=c.y-e.y;n.x=Math.min(Math.max(n.x,i),s),n.y=Math.min(Math.max(n.y,l),h);const p=r.clone().translate(n);this.result.normalizeCutBox=wi(a,p),this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}case"scale":{const{startCorner:t,anchor:i}=this.interactionParam,s=new oi;if(s.x=Math.min(Math.max(t.x+n.x,o.x),c.x),s.y=Math.min(Math.max(t.y+n.y,o.y),c.y),this.isShiftDown||this.isLockScale){const n=this.getCutBox(),{x:a,y:l}=n.getSize(),{x:h,y:p}=r.getSize();if((e=this.interactionParam).lockedAspect??(e.lockedAspect=a/l),Math.abs(s.x-i.x)/h>Math.abs(s.y-i.y)/p){const e=Math.abs(s.x-i.x)/this.interactionParam.lockedAspect;yi(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,o.y),c.y)}else{const e=Math.abs(s.y-i.y)*this.interactionParam.lockedAspect;yi(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,o.x),c.x)}}if(yi(t.x,i.x)||yi(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=wi(a,(new Ii).setFromVec2Array([e,s]))}else{const e=(s.x-i.x)/(t.x-i.x),n=(s.y-i.y)/(t.y-i.y),o=new oi(e,n);this.result.normalizeCutBox=wi(a,r.clone().scale(o,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,o.x),c.x)-e.x,n.y=0):(n.x=0,n.y=Math.min(Math.max(e.y+n.y,o.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=wi(a,(new Ii).setFromVec2Array(i)),this._eventEmitter.emit("cutBoxChange",this.getCutBox());break}}}endAction(t){if(!this.interactive||"none"===this.interactionParam.type)return;const e=new oi(t.offsetX,t.offsetY),i=new oi(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(Xi(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 Ii(new oi,new oi(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:a,itemBoxLineAlpha:o,cutBoxCornerRadius:c,cutBoxCornerFillColor:l,cutBoxCornerLineWidth:h,cutBoxCornerLineColor:p,cutBoxCornerLineAlpha:d}=Er.config.gestureHandlerConfig.pictureCutGizmoConfig,{normalizeCutBox:m,itemBox:g}=this.result,u=xi(g,m),{min:y,max:f}=u,{min:x,max:w}=g,v=new Ii(x.clone(),new oi(w.x,y.y)),I=new Ii(new oi(x.x,y.y),new oi(y.x,w.y)),P=new Ii(new oi(f.x,y.y),new oi(w.x,f.y)),C=new Ii(new oi(y.x,f.y),w.clone());return this.graphics.beginFill(t,e),this.graphics.fillBox(v),this.graphics.fillBox(I),this.graphics.fillBox(P),this.graphics.fillBox(C),this.graphics.endFill(),this.graphics.lineStyle(n,a,o),this.graphics.drawBox(g),this.graphics.lineStyle(i,s,r),this.graphics.drawBox(u),this.graphics.beginFill(l),this.graphics.lineStyle(h,p,d),u.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=xi(s,i);let n=!1,a=0;r.corners.forEach((i,s)=>{n||i.distanceTo(t)<Er.config.gestureHandlerConfig.pictureCutGizmoConfig.scaleInteractionDistance&&(n=!0,this.interactionParam={type:"scale",box:r.clone(),startMouse:e,startCorner:i.clone(),anchor:r.corners[(s+2)%4]},a=Math.PI/2*s)}),r.corners.forEach((i,s)=>{if(n)return;const o=new vi(i.clone(),r.corners[(s+1)%4]),c=t.distanceToLine(o);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){n=!0;const t=o.at(c.t);this.interactionParam={type:"direction-scale",index:s,point:t,box:r.clone(),startMouse:e},a=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,a*pi)}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 xi(e,i)}setCutBox(t,e){const[i]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!i)return;const s=new Ii(t,e),r=this._pageDataUtils.getItemBoxById(i.id),{min:n,max:a}=wi(r,s);this.result.normalizeCutBox.set(new oi(Math.max(n.x,0),Math.max(n.y,0)),new oi(Math.min(a.x,1),Math.min(a.y,1)));const o=this.getCutBox();return this._eventEmitter.emit("cutBoxChange",o),o}};var is=class extends ai{constructor(t,e,i,s,r){super(),d(this,"type","text"),d(this,"_eventEmitter"),d(this,"textAreaElement"),d(this,"graphics",new Ui.Graphics),d(this,"_pageDataUtils"),d(this,"result"),d(this,"interactionParam"),d(this,"_adsorptionGizmo"),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"ignoreInteraction",!1),d(this,"scaleParam"),d(this,"rotationSprite",new Ui.Sprite),d(this,"cursorPoint",new oi),d(this,"_selectorGizmo"),d(this,"handleInput",async t=>{const e=t.target,i=this._pageDataUtils.getSelectedItems()[0].id;await this._pageDataUtils.changeItemProperty({itemId:i,type:ii.spec.ItemType.text,propertyName:"text",propertyValue:e.value}),this._eventEmitter.emit("textInput",{itemId:i,text:e.value,fontFamily:e.style.fontFamily})}),d(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 oi,lastPoint:new oi,startPoint:new oi,lastWorldPosition:new bi}}get interactive(){return Er.config.gestureHandlerConfig.textGizmoEnbaled}set interactive(t){Er.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 oi(t.offsetX,t.offsetY),i=new oi(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 oi(i,s);if(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 bi,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 oi(t.clientX,t.clientY),this.interactionParam.startPoint=new oi(t.offsetX,t.offsetY);const e=new oi(t.offsetX,t.offsetY).subtract(this._pageDataUtils.getViewportLeftTopPosition());this.initInteractionPlane(e),this.interactionParam.lastWorldPosition=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(e)??new bi}const e=new oi(t.clientX,t.clientY),{type:i,lastPoint:s,startPoint:r,anchor:n}=this.interactionParam,a=(new oi).subtractVectors(e,s),o=this._pageDataUtils.getSelectedItems();switch(i){case"rotation":{const t=new bi,i=gi(mi((new oi).subtractVectors(r,n),(new oi).subtractVectors(r.add(a),n))*pi,3);t.z=i,o.forEach(e=>{this._pageDataUtils.rotateItem(e.id,t)}),this.interactionParam.lastPoint.copyFrom(e);break}case"translation":{const t=a.clone();if(this._adsorptionGizmo.interactive){const e=this._pageDataUtils.getPageData();(0,ii.assertExist)(e);const i=e.items.map(t=>o.find(e=>e.id===t.id)||0!==o.filter(e=>t.parentId&&t.parentId===e.id).length||!this._pageDataUtils.getItemEditEnable(t.id)||o.find(e=>e.parentId===t.id)?new Ii:this._pageDataUtils.getViewBoxById(t.id)).filter(t=>!t.isEmpty()),s=new oi(this._adsorptionGizmo.absorptionResult.x??0,this._adsorptionGizmo.absorptionResult.y??0);this._adsorptionGizmo.boxTranslationAdsorption(t,this.result.box,i);const r=new oi(this._adsorptionGizmo.absorptionResult.x??0,this._adsorptionGizmo.absorptionResult.y??0);t.add(s).subtract(r)}const i=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(r.add(t).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition()));if(i){const t=i.clone().subtract(this.interactionParam.lastWorldPosition);o.forEach(e=>{e.type!==ii.spec.ItemType.camera&&(t.x=gi(t.x,5),t.y=gi(t.y,5),t.z=gi(t.z,5),this._pageDataUtils.moveItem(e.id,t))}),this.interactionParam.lastWorldPosition.copyFrom(i),this.interactionParam.lastPoint.copyFrom(e)}break}case"scale":if(a.length()){const t=this.cursorPoint.add(a).clone().subtract(this._pageDataUtils.getViewportLeftTopPosition());if(!r||!this.scaleParam||!a.length())return;const e=this.scaleParam.farthestCorner;(r.x-e.x)*(this.cursorPoint.x-e.x)>0&&(r.y-e.y)*(this.cursorPoint.y-e.y)>0||(t.x=e.x+(r.x-e.x)/Math.abs(r.x-e.x)*4,t.y=e.y+(r.y-e.y)/Math.abs(r.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 Di).extractRotation(e.matrix).invert(),{corner:r,center:n,shift:a,lastScalar:c}=this.scaleParam,l=(new bi).subtractVectors(r,n).applyMatrix(s),h=l.clone().multiply(c),p=i.clone().subtract(a).subtract(n).applyMatrix(s),d=new bi(1,1,1),m=ui([yi(l.x,0)?1:Math.abs(p.x/l.x),yi(l.y,0)?1:Math.abs(p.y/l.y)]),g=p.toArray()[m],u=h.toArray()[m];if(yi(c.x,c.y)&&yi(c.z,c.x)){const t=yi(u,0)?1:Math.abs(g/u);d.set(t,t,t)}else if(0===m){d.x=yi(u,0)?1:Math.abs(g/u);const t=l.y*g/l.x;d.y=yi(h.y,0)?1:t/h.y;const e=l.z*g/l.x;d.z=yi(h.z,0)?1:e/h.z}else if(1===m){d.y=yi(u,0)?1:Math.abs(g/u);const t=l.x*g/l.y;d.x=yi(h.x,0)?1:t/h.x;const e=l.z*g/l.y;d.z=yi(h.z,0)?1:e/h.z}else{d.z=yi(u,0)?1:Math.abs(g/u);const t=l.x*g/l.z;d.x=yi(h.x,0)?1:t/h.x;const e=l.y*g/l.z;d.y=yi(h.y,0)?1:e/h.y}const y=d.clone().subtract(new bi(1,1,0)).divide(2).add(new bi(1,1,.5)),f=n.clone().add((new bi).subtractVectors(r,n).multiply(new bi(c.x,c.y,1)));this.scaleParam.lastScalar.multiply(y);const x=n.clone().add((new bi).subtractVectors(r,n).multiply(new bi(this.scaleParam.lastScalar.x,this.scaleParam.lastScalar.y,1))),w=(new bi).subtractVectors(x,f);w.x=gi(w.x,5),w.y=gi(w.y,5),w.z=gi(w.z,5),this.scaleParam.center.add(w),this.scaleParam.corner.add(w),console.log(y),o.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=r.clone(),e=r.clone().add(a);if(a.length()){const i=(new oi).subtractVectors(t,n),s=(new oi).subtractVectors(e,n),a=Math.max(s.dot(i)/i.length(),1),c=i.length(),l=(a/c-1)/2+1,h=n.clone().add(i.clone().normalize().scale(c*l)),p=(new oi).subtractVectors(h,t);r.add(p);const d=this._pageDataUtils.interactionUtils.getWorldSizeByViewSize(p);d.x=gi(d.x,5),d.y=gi(d.y,5),d.z=gi(d.z,5),o.forEach(t=>{this._pageDataUtils.moveItem(t.id,d)}),o.forEach(t=>{this._pageDataUtils.scaleTextItemWidth(t.id,l)})}break}}this.interactionParam.lastPoint.copyFrom(e),this.refreshCursorResult()}endAction(t){this.ignoreInteraction=!1;const e=new oi(t.offsetX,t.offsetY),i=new oi(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||"template"===Er.config.mode)return;const t=this._pageDataUtils.getPageData()?.activeData?.selectedItems,e=this._pageDataUtils.getViewItemById(t?.[0]);if(1!==t?.length||e?.type!==ii.spec.ItemType.text)return void(this.result={type:"empty"});const i=this._pageDataUtils.getViewBoxById(t[0]);if(i.isEmpty())this.result={type:"empty"};else{const t=[new vi(i.corners[0],i.corners[1]).at(.5),new vi(i.corners[2],i.corners[3]).at(.5)],s=new vi(i.getCenter(),new vi(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]*hi}}}refreshInteractionParam(t,e){if("empty"===this.result.type)return this.interactionParam.active=!1,this.interactionParam.type="none",this.interactionParam.lastPoint=new oi,this.interactionParam.startPoint=new oi,void(this.interactionParam.lastWorldPosition=new bi);if("edit"===this.interactionParam.type)return;const{rotateInteractMode:i,scaleInteractionDistance:s,rotationCornerInteractionDistance:r,rotationTopCenterInteractionDistance:n}=Er.config.gestureHandlerConfig.textGizmoConfig,a=this.result.box.getCenter();for(const e of this.result.widthScaleCorners){if((new Ii).setFromCenterAndSize(e,new oi(6,18)).containsPoint(t))return this.interactionParam.active=!0,this.interactionParam.type="width-scale",this.interactionParam.anchor=a,this.interactionParam.lastPoint=t.clone(),this.interactionParam.startPoint=e.clone(),void(this.interactionParam.lastWorldPosition=new bi)}const o=this.result.box.corners.findIndex(e=>e.distanceTo(t)<s);if(o>=0){const t=this.result.box.corners[o],i=this.result.box.corners[(o+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 bi);switch(i){case"top-center":if(t.distanceTo(this.result.rotationCorner)<n)return this.interactionParam.active=!0,this.interactionParam.type="rotation",this.interactionParam.anchor=a,this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=this.result.rotationCorner.clone(),void(this.interactionParam.lastWorldPosition=new bi);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=a,this.interactionParam.lastPoint=e.clone(),this.interactionParam.startPoint=i.clone(),void(this.interactionParam.lastWorldPosition=new bi);break}}this.interactionParam.active=!1,this.interactionParam.type="none",this.interactionParam.lastPoint=new oi,this.interactionParam.startPoint=new oi,this.interactionParam.lastWorldPosition=new bi}refreshCursorResult(){const t=(di((new oi).subtractVectors(this.interactionParam.startPoint,this.interactionParam.anchor))+Math.PI/4)*pi;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:a,rotateInteractMode:o,rotationCornerWidth:c,scaleCornerStrokeWidth:l,scaleCornerStrokeColor:h,rotationCornerRadius:p,rotationCornerFillColor:d,rotationCornerStrokeWidth:m,rotationCornerStrokeColor:g}=Er.config.gestureHandlerConfig.textGizmoConfig;if(this.graphics.lineStyle(n,a),this.graphics.drawBox(e),"edit"!==this.interactionParam.type)switch(e.getSize().y>25&&i.forEach(t=>{const e=(new Ii).setFromCenterAndSize(t,new oi(8,15));this.graphics.beginFill(16777215),this.graphics.fillBox(e),this.graphics.endFill(),this.graphics.lineStyle(l,h),this.graphics.drawBox(e)}),o){case"top-center":this.rotationSprite.width=c,this.rotationSprite.height=c,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(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,s=t[0],r=s?.property,n=e.clone().rotate(r.rotation[2]*hi),a=n.min.clone(),o=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=`${a.x}px`,this.textAreaElement.style.top=`${a.y}px`,this.textAreaElement.style.width=`${o.x}px`,this.textAreaElement.style.height=`${o.y}px`,this.textAreaElement.style.lineHeight=r.lineHeight*i.scale+"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(),i=this._pageDataUtils.interactionUtils.viewportParam,s=t[0],r=s?.property,n=e.clone().rotate(r.rotation[2]*hi),a=n.min.clone(),o=n.getSize();this.textAreaElement.style.left=`${a.x}px`,this.textAreaElement.style.top=`${a.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),this.textAreaElement.style.fontSize=r.fontSize*i.scale+"px",this.textAreaElement.style.lineHeight=r.lineHeight*i.scale+"px",r.rotation[2]&&(this.textAreaElement.style.transform=`\n rotateZ(${-r.rotation[2]}deg)\n `)}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,s,r;if(e){const t=this._pageDataUtils.getItemTransformById(e.id);i=(new bi).copyFrom(this._pageDataUtils.getPlayerItemById(e.id).transform.anchor).applyMatrix(t.matrix),s=(new bi).setFromMatrixPosition(t.matrix),r=(new Si).setFromQuaternion((new Ci).setFromRotationMatrix(t.matrix))}this._pageDataUtils.interactionUtils.initInteractionPlane(s,r);const n=this.interactionParam.startPoint,{box:a}=this.result,o=a.corners[0].clone();let c=o.distanceTo(n);a.corners.forEach(t=>{t.distanceTo(n)>c&&(o.copyFrom(t),c=t.distanceTo(n))}),this.scaleParam={shift:new bi,center:new bi,corner:new bi,lastScalar:new bi(1,1,1),farthestCorner:o},this.scaleParam.center=i??s;const l=this._pageDataUtils.getViewportLeftTopPosition();if(n){const t=n.clone().subtract(l);this.scaleParam.corner=this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new bi}this.scaleParam.shift=(this._pageDataUtils.interactionUtils.getWorldPositionByViewPoint(t)??new bi).subtract(this.scaleParam.corner);break}case"width-scale":case"translation":case"rotation":this._pageDataUtils.interactionUtils.initInteractionPlane()}}getTextAlign(t){switch(t){case ii.spec.TextAlignment.middle:return"center";case ii.spec.TextAlignment.right:return"right";default:return"left"}}},ss=require("@pixi/core"),rs=class extends ai{constructor(t){super(),d(this,"_pageDataUtils"),d(this,"_config",{}),d(this,"type","mask"),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"result",{status:"init",lines:[]}),d(this,"graphics",new Ui.Graphics),d(this,"linesMaskGraphics",new Ui.Graphics),d(this,"rectMaskGraphics",new Ui.Graphics),this._pageDataUtils=t}get interactive(){return Er.config.gestureHandlerConfig.maskGizmoEnabled}set interactive(t){t!==Er.config.gestureHandlerConfig.maskGizmoEnabled&&(t||(this.result.status="init"),Er.config.gestureHandlerConfig.maskGizmoEnabled=t)}get config(){return{...Er.config.gestureHandlerConfig.maskGizmoConfig,...this._config}}set config(t){this._config={...this._config,...t}}initialize(){}preparationAction(t){if(this.interactive)return this.result.point=new oi(t.offsetX,t.offsetY),this.type}preAction(t){if(this.interactive)return this.result.point=new oi(t.offsetX,t.offsetY),this.result.lines.push({brushSize:this.config.brushSize,points:[]}),this.type}action(t){if(!this.interactive||"init"===this.result.status)return;const e=this.result.box,i=new oi((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(Xi(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():[]}refreshRenderObjects(){if(this.graphics.clear(),this.linesMaskGraphics.clear(),this.rectMaskGraphics.clear(),!this.interactive||"init"===this.result.status)return[];const{brushColor:t,brushAlpha:e,boxLineWidth:i,boxLineColor:s,boxLineAlpha:r}=this.config,n=this.result.box,{min:a,max:o}=n,c=new Ii(new oi(a.x,a.y),new oi(o.x,a.y)),l=new Ii(new oi(a.x,a.y),new oi(a.x,o.y)),h=new Ii(new oi(o.x,a.y),new oi(o.x,a.y)),p=new Ii(new oi(a.x,o.y),new oi(o.x,o.y));this.graphics.fillBox(c),this.graphics.fillBox(l),this.graphics.fillBox(h),this.graphics.fillBox(p),this.graphics.lineStyle(i,s,r),this.graphics.drawBox(n),this.graphics.endFill();const d=this._pageDataUtils.interactionUtils.viewportParam;for(const t of this.result.lines)if(t)for(let e=0;e<t.points.length;e++){0===e&&this.linesMaskGraphics.lineStyle({width:t.brushSize*d.scale,color:0,cap:Ui.LINE_CAP.ROUND,join:Ui.LINE_JOIN.ROUND,alignment:.5});const i=t.points[e];i&&(0===e?this.linesMaskGraphics.moveTo(n.min.x+i.x*(n.max.x-n.min.x),n.min.y+i.y*(n.max.y-n.min.y)):this.linesMaskGraphics.lineTo(n.min.x+i.x*(n.max.x-n.min.x),n.min.y+i.y*(n.max.y-n.min.y)))}return this.linesMaskGraphics.endFill(),this.rectMaskGraphics.beginFill(t,e),this.rectMaskGraphics.drawRect(n.min.x,n.min.y,n.max.x-n.min.x,n.max.y-n.min.y),this.rectMaskGraphics.endFill(),this.rectMaskGraphics.mask=this.linesMaskGraphics,[this.graphics,this.linesMaskGraphics,this.rectMaskGraphics]}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.rectMaskGraphics.getBounds(),e=new Ui.Renderer({width:Math.ceil(t.width),height:Math.ceil(t.height),backgroundColor:16777215}),i=new Ui.Container,s=this.rectMaskGraphics.clone();s.beginFill(this.config.maskColor),s.position.set(-t.x,-t.y),s.drawRect(t.x,t.y,t.width,t.height),s.endFill(),i.addChild(s);const r=this.linesMaskGraphics.clone();s.mask=r,r.position.set(-t.x,-t.y),i.addChild(r),e.render(i);const n=e.view.toDataURL("image/png");return e.destroy(!0),n}},ns=class extends ai{constructor(t){super(),d(this,"type","loading"),d(this,"_pageDataUtils"),d(this,"_idMap",new Map),d(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t}addId(t,e,i){const s=this._pageDataUtils.getItemBoxById(t),r=wi(s,e??s);"string"==typeof t&&(this._idMap.set(t,{status:"init",loadingBox:r,graphics:new Ui.Graphics,ticker:new Ui.Ticker}),this._pageDataUtils.addLoadingItems([t]),i&&this._pageDataUtils.removeSelectedItems([t]))}deleteId(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])}}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:a}=xi(t,i.loadingBox);r>.6?s=-.003:r<.4&&(s=.006),r+=s,i.graphics.clear(),i.graphics.beginFill(0,r),i.graphics.drawRect(n.x,n.y,a.x-n.x,a.y-n.y),i.graphics.endFill()}),i.ticker.start()}return t}},as=class extends ai{constructor(t,e){super(),d(this,"result",{type:"invalid"}),d(this,"interactionParam",{type:"none"}),d(this,"graphics",new Ui.Graphics),d(this,"isShiftDown",!1),d(this,"_isLockScale",!1),d(this,"_pageDataUtils"),d(this,"_eventEmitter"),d(this,"type","picture-expand"),d(this,"cursorResult",{type:"normal",angle:0}),this._pageDataUtils=t,this._eventEmitter=e}get interactive(){return Er.config.gestureHandlerConfig.pictureExpandGizmoEnabled}set interactive(t){t!==Er.config.gestureHandlerConfig.pictureExpandGizmoEnabled&&(1!==this._pageDataUtils.getPageData()?.activeData.selectedItems?.length?console.warn("Selected items` length is not one, Picture expand gizmo can not open."):Er.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 oi(t.offsetX,t.offsetY),i=new oi(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 oi(t.clientX,t.clientY),{startMouse:s,box:r}=this.interactionParam,n=(new oi).subtractVectors(i,s),{itemBox:a}=this.result,{min:o,max:c}=a;switch(this.interactionParam.type){case"move":{const{min:t,max:e}=r,i=c.x-e.x,s=o.x-t.x,l=c.y-e.y,h=o.y-t.y;n.x=Math.min(Math.max(n.x,i),s),n.y=Math.min(Math.max(n.y,l),h);const p=r.clone().translate(n);this.result.normalizeExpandBox=wi(a,p),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}case"scale":{const{index:t}=this.interactionParam,{min:i,max:s}=r,l=r.corners[t],h=r.corners[(t+2)%4],p=new oi(l.x+n.x,l.y+n.y);if(l.x>=s.x?p.x=Math.max(p.x,c.x):l.x<=i.x?p.x=Math.min(p.x,o.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),l.y>=s.y?p.y=Math.max(p.y,c.y):l.y<=i.y?p.y=Math.min(p.y,o.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:a}=t.getSize(),{x:d,y:m}=r.getSize();if((e=this.interactionParam).lockedAspect??(e.lockedAspect=n/a),Math.abs(p.x-h.x)/d>Math.abs(p.y-h.y)/m){const t=Math.abs(p.x-h.x)/this.interactionParam.lockedAspect;p.y=(l.y-h.y)/Math.abs(l.y-h.y)*t+h.y,l.y>=s.y?p.y=Math.max(p.y,c.y):l.y<=i.y?p.y=Math.min(p.y,o.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-h.y)*this.interactionParam.lockedAspect;p.x=(l.x-h.x)/Math.abs(l.x-h.x)*t+h.x,l.x>=s.x?p.x=Math.max(p.x,c.x):l.x<=i.x?p.x=Math.min(p.x,o.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=wi(a,(new Ii).setFromVec2ArrayWithOutCorners([p,h])),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<=o.x&&(n.x=Math.min(r.corners[t].x+n.x,o.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<=o.y&&(n.y=Math.min(r.corners[t].y+n.y,o.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=wi(a,(new Ii).setFromVec2Array(s)),this._eventEmitter.emit("expandBoxChange",this.getExpandBox());break}}}endAction(t){if(!this.interactive||"none"===this.interactionParam.type)return;const e=new oi(t.offsetX,t.offsetY),i=new oi(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(Xi(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 Ii(new oi,new oi(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:a,expandBoxCornerLineWidth:o,expandBoxCornerLineColor:c,expandBoxCornerLineAlpha:l}=Er.config.gestureHandlerConfig.pictureExpandGizmoConfig,{normalizeExpandBox:h,itemBox:p}=this.result,d=xi(p,h);return this.graphics.beginFill(t,e),this.graphics.fillBox(d),this.graphics.endFill(),this.graphics.lineStyle(i,s,r),this.graphics.drawBox(d),this.graphics.beginFill(a),this.graphics.lineStyle(o,c,l),d.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=xi(s,i);let n=!1,a=0;r.corners.forEach((i,s)=>{n||i.distanceTo(t)<Er.config.gestureHandlerConfig.pictureExpandGizmoConfig.scaleInteractionDistance&&(n=!0,this.interactionParam={type:"scale",index:s,box:r.clone(),startMouse:e},a=Math.PI/2*s)}),r.corners.forEach((i,s)=>{if(n)return;const o=new vi(i.clone(),r.corners[(s+1)%4]),c=t.distanceToLine(o);if(c.d>=0&&c.d<=8&&c.t>=0&&c.t<=1){n=!0;const t=o.at(c.t);this.interactionParam={type:"direction-scale",index:s,point:t,box:r.clone(),startMouse:e},a=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,a*pi)}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 xi(e,i)}setExpandBox(t,e){const[i]=this._pageDataUtils.getSelectedItems();if(!this.interactive||"invalid"===this.result.type||!i)return;const s=new Ii(t,e),r=this._pageDataUtils.getItemBoxById(i.id),{min:n,max:a}=wi(r,s);this.result.normalizeExpandBox.set(new oi(Math.min(n.x,0),Math.min(n.y,0)),new oi(Math.max(a.x,1),Math.max(a.y,1)));const o=this.getExpandBox();return this._eventEmitter.emit("expandBoxChange",o),o}},os={fontSize:14,fill:16777215,align:"center",lineHeight:16},cs=class extends ai{constructor(t,e){super(),d(this,"type","sprite-text-edit"),d(this,"_pageDataUtils"),d(this,"_eventEmitter"),d(this,"graphics",new Ui.Graphics),d(this,"editGraphics",new Ui.Graphics),d(this,"preSelectedText",new Ui.Text("",os)),d(this,"result",[]),d(this,"interactionParam",{preSelected:-1,selected:-1}),d(this,"clearPreSelected",!1),this._pageDataUtils=t,this._eventEmitter=e,this.preSelectedText.resolution=3}get interactive(){return Er.config.gestureHandlerConfig.spriteTextEditGizmoEnabled}set interactive(t){t!==Er.config.gestureHandlerConfig.spriteTextEditGizmoEnabled&&(Er.config.gestureHandlerConfig.spriteTextEditGizmoEnabled=t)}preparationAction(t){const e=new oi(t.offsetX,t.offsetY);return this.interactionParam.preSelected=-1,this.result.forEach((t,i)=>{if(this.interactionParam.preSelected>=0)return;xi(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:a}=i,o=n.map(t=>new oi(...t).add(e.min)),c=(new Ii).setFromVec2Array(o),l=wi(e,c);this.result.push({id:t.id,index:s,hasChanged:a,text:r,box:l,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:a,hasChangedEditBoxPreSelectedColor:o,hasChangedEditBoxPreSelectedAlpha:c,editBoxLineColor:l,editBoxLineAlpha:h,editBoxLinePreSelectedAlpha:p,editBoxLinePreSelectedColor:d,hasChangedEditBoxLineColor:m,hasChangedEditBoxLineAlpha:g,hasChangedEditBoxLinePreSelectedColor:u,hasChangedEditBoxLinePreSelectedAlpha:y}=Er.config.gestureHandlerConfig.spriteTextEditGizmoConfig;this.result.forEach((l,h)=>{const p=h===this.interactionParam.preSelected&&!this.clearPreSelected,{box:d,id:m,hasChanged:g,isEditing:u}=l,y=xi(this._pageDataUtils.getViewBoxById(m),d);if(g){const t=g?p?o:n:p?s:e,l=g?p?c:a:p?r:i;this.editGraphics.beginFill(t,l),this.editGraphics.fillBox(y),this.editGraphics.endFill()}else{const t=g?p?o:n:p?s:e,l=g?p?c:a:p?r:i;this.graphics.beginFill(t,l),this.graphics.fillBox(y),this.graphics.endFill()}const f=y.getCenter(),x=y.getSize();if(u){const e=this.processText(l.text,os,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:s,id:r,hasChanged:n}=t,a=xi(this._pageDataUtils.getViewBoxById(r),s);if(n){const t=n?i?u:m:i?d:l,e=n?i?y:g:i?p:h;a.corners.forEach((i,s)=>{const r=i.clone(),n=a.corners[(s+1)%4].clone(),o=(new oi).subtractVectors(n,r).angle()*pi;if([180,270].includes(o)){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?u:m:i?d:l,e=n?i?y:g:i?p:h;a.corners.forEach((i,s)=>{const r=i.clone(),n=a.corners[(s+1)%4].clone(),o=(new oi).subtractVectors(n,r).angle()*pi;if([180,270].includes(o)){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}processText(t,e,i,s){const r=[];let n="";const a=t.split(""),o=new Ui.Text("",e);for(let t=0;t<a.length;t++){const e=a[t],c=n+e;if(o.text=c,o.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===a.length-1&&n&&r.push(n)}return r.slice(0,s).join("\n")}},ls=require("@pixi/sprite"),hs=class extends ai{constructor(t,e){super(),d(this,"type","video-play"),d(this,"result",{id:"",box:new Ii}),d(this,"interactionParam",{type:"none"}),d(this,"logoSprite"),d(this,"cursorResult",{type:"normal",angle:0}),d(this,"_pageDataUtils"),d(this,"_eventEmitter"),this._pageDataUtils=t,this._eventEmitter=e;const{logoUrl:i,width:s,height:r}=Er.config.gestureHandlerConfig.videoPlayGizmoConfig;this.logoSprite=ls.Sprite.from(i),this.logoSprite.width=s,this.logoSprite.height=r}get interactive(){return Er.config.gestureHandlerConfig.videoPlayGizmoEnabled}set interactive(t){t!==Er.config.gestureHandlerConfig.videoPlayGizmoEnabled&&(Er.config.gestureHandlerConfig.videoPlayGizmoEnabled=t)}preparationAction(t){if(!this.interactive)return;const e=new oi(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 Ii};const t=this._pageDataUtils.getSelectedItems();if(1!==t.length||t[0]?.type!==ii.spec.ItemType.video)return;const e=t[0].id,{width:i,height:s,logoShift:r}=Er.config.gestureHandlerConfig.videoPlayGizmoConfig,n=this._pageDataUtils.getViewBoxById(e),a=n.getSize();if(a.x<50||a.y<50)this.result.box.makeEmpty();else{const{max:t}=n,a=new oi(t.x-r[0],t.y-r[1]),o=new oi(i,s);this.result.id=e,this.result.box.setFromCenterAndSize(a,o)}}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]}},ps=class{constructor(t){d(this,"wireframeApplication"),d(this,"gizmos",[]),d(this,"activeGizmo"),d(this,"selectorGizmo"),d(this,"transformGizmo"),d(this,"controlGizmo"),d(this,"preferenceGizmo"),d(this,"pictureCutGizmo"),d(this,"pictureExpandGizmo"),d(this,"textGizmo"),d(this,"maskGizmo"),d(this,"loadingGizmo"),d(this,"spriteTextEditGizmo"),d(this,"videoPlayGizmo"),d(this,"_ignoreInteraction",!1),d(this,"clickButtons",0),d(this,"container"),d(this,"_emitter"),d(this,"clickTime",0),d(this,"firstClick",!0),d(this,"dblclickTimeSpan",500),d(this,"spaceEmit",!1),d(this,"interactType","select"),this.gizmos=[];const{width:e,height:i}=t.getBoundingClientRect();this.wireframeApplication=new ni.Application({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(qi).map(([t,e])=>{const{url:i}=e;if(i)return fetch(i).then(t=>t.text()).then(i=>qi[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 ji||this.activeGizmo instanceof es||this.activeGizmo instanceof as||this.activeGizmo instanceof rs||this.activeGizmo instanceof is||this.activeGizmo instanceof Ei||this.activeGizmo instanceof hs?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 Ei(t),this.selectorGizmo=new Vi(t);const i=new Ki;this.transformGizmo=new ji(t,i,this.selectorGizmo),this.preferenceGizmo=new Yi(t),this.pictureCutGizmo=new es(t,e),this.pictureExpandGizmo=new as(t,e),this.textGizmo=new is(t,i,this.selectorGizmo,e,this.wireframeApplication?.view.parentElement),this.textGizmo.rotationSprite.texture=await ss.Texture.fromURL(Er.config.gestureHandlerConfig.textGizmoConfig.rotationCornerTexture),this.maskGizmo=new rs(t),this.loadingGizmo=new ns(t),this.spriteTextEditGizmo=new cs(t,e),this.videoPlayGizmo=new hs(t,e),this.gizmos.push(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);"selector"!==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),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);"selector"!==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.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"].includes(t.type)){const i=qi[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;const t=JSON.parse(JSON.stringify(Er.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);const e=JSON.parse(JSON.stringify(Er.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}closePictureCutGizmo(){if(!this.pictureCutGizmo)return;const t=JSON.parse(JSON.stringify(Er.config));this.pictureCutGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0,this.textGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Er.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(Er.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);const e=JSON.parse(JSON.stringify(Er.config));this.render(),this._emitter?.emit("sdkConfigChange",t,e)}closePictureExpandGizmo(){if(!this.pictureExpandGizmo)return;const t=JSON.parse(JSON.stringify(Er.config));this.pictureExpandGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0,this.textGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Er.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(Er.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);const i=JSON.parse(JSON.stringify(Er.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(Er.config));this.maskGizmo.interactive=!1,this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Er.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()}openLoadingGizmo(t,e,i){if(!this.loadingGizmo)return;const s=JSON.parse(JSON.stringify(Er.config));this.loadingGizmo.addId(t,e,i),this.loadingGizmo.interactive&&(this.maskGizmo.interactive=!1,this.pictureCutGizmo.interactive=!1,this.pictureExpandGizmo.interactive=!1);const r=JSON.parse(JSON.stringify(Er.config));this.render(),this._emitter?.emit("sdkConfigChange",s,r)}closeLoadingGizmo(t){if(!this.loadingGizmo)return;const e=JSON.parse(JSON.stringify(Er.config));this.loadingGizmo.deleteId(t);const i=JSON.parse(JSON.stringify(Er.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(Er.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);const i=JSON.parse(JSON.stringify(Er.config));this.render(),this._emitter?.emit("sdkConfigChange",e,i)}closeSpriteTextEditGizmo(){if(!this.spriteTextEditGizmo)return;const t=JSON.parse(JSON.stringify(Er.config));this.spriteTextEditGizmo.interactive=!1,this.spriteTextEditGizmo.clearResult(),this.transformGizmo.interactive=!0,this.selectorGizmo.interactive=!0;const e=JSON.parse(JSON.stringify(Er.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)}},ds=require("@galacean/effects"),ms=require("@galacean/effects"),gs=class{constructor(t){d(this,"plane",new zi),d(this,"ray",new _i),d(this,"viewportParam",{width:0,height:0,scale:1,translation:new oi,rulerWidth:0}),d(this,"cameraParam",{position:new bi,rotation:new bi,focusPosition:new bi,focusRotation:new bi,viewProjectionMatrix:new Di,inverseViewProjectionMatrix:new Di}),d(this,"pageDataUtils"),this.pageDataUtils=t}refreshViewParam(){const t=this.pageDataUtils.getPageData();(0,ms.assertExist)(t,"You must run SDK first");const e=new oi(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 oi(...s),this.viewportParam.rulerWidth=0}refreshCameraParam(){const{player:t}=this.pageDataUtils,e=t?.getCompositions()?.[0]?.camera;if(e){const t=Di.fromArray(e.getViewProjectionMatrix().toArray()),i=Di.fromArray(e.getViewMatrix().toArray()).invert(),s=new Ci;i.decompose(this.cameraParam.position,s,new bi),this.cameraParam.rotation=(new Si).setFromQuaternion(s).toDegreeVector3(),this.cameraParam.focusPosition=new bi(...this.cameraParam.position.toVector2().toArray(),this.cameraParam.position.z>0?0:2*this.cameraParam.position.z),this.cameraParam.focusPosition.applyEuler((new Si).setFromDegreeVector3(this.cameraParam.rotation.clone()),this.cameraParam.position),this.cameraParam.focusRotation=(new Si).setFromQuaternion(s.invert()).toDegreeVector3(),this.cameraParam.viewProjectionMatrix=t,this.cameraParam.inverseViewProjectionMatrix=Di.fromArray(e.getInverseViewProjectionMatrix().toArray())}}initInteractionPlane(t,e){t??(t=this.cameraParam.focusPosition),e??(e=(new Si).setFromDegreeVector3(this.cameraParam.rotation));const i=new bi(0,0,1).applyEuler(e);this.plane.setFromNormalAndCoplanarPoint(t,i)}getWorldSizeByViewSize(t,e=!0,i){const s=e||!i?(new Si).setFromDegreeVector3(this.cameraParam.rotation):(new Si).setFromQuaternion((new Ci).setFromRotationMatrix(this.pageDataUtils.getItemTransformById(i).matrix)),r=i?(new bi).setFromMatrixPosition(this.pageDataUtils.getItemTransformById(i).matrix):this.cameraParam.focusPosition,n="editor"===Er.config.mode?1:this.viewportParam.scale;t.multiply(n);const a=this.projectPoint(r.clone()),o=this.getWorldPositionByViewPoint(a.add(t));if(!o)return console.warn("size is out of bounds."),new bi(0,0,0);const c=(new Si).setFromQuaternion((new Ci).setFromEuler(s).invert());return(e||!i?o.applyEuler(c,r):o).subtract(r)}getViewSizeByPixelSize(t){const{scale:e}=this.viewportParam,i="template"===Er.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"===Er.config.mode?1:s;return(new oi).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 Ai).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"===Er.config.mode?1:s;return new oi(t.x/(e*r)*2-1,1-t.y/(i*r)*2)}getNDCSizeByPixelSize(t){const{width:e,height:i}=this.viewportParam;return new oi(t.x/e*2,-t.y/i*2)}getPixelSizeByNDCSize(t){const{width:e,height:i}=this.viewportParam;return new oi(t.x/2*e,-t.y/2*i)}getViewPositionWWithOutTransform(t){const{scale:e}=this.viewportParam,i="editor"===Er.config.mode?1:e;return t.divide(i)}getViewPositionByPixelPoint(t){if("template"===Er.config.mode)return t.clone();const{width:e,height:i,scale:s,translation:r}=this.viewportParam;return t.clone().scaleByCenter(new oi(s,s),new oi(e/2,i/2)).add(r)}getPixelPositionByViewPoint(t){if("template"===Er.config.mode)return t.clone();const{width:e,height:i,scale:s,translation:r}=this.viewportParam;return t.clone().subtract(r.clone()).scaleByCenter(new oi(1/s,1/s),new oi(e/2,i/2))}},us={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"},ys={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 fs(t,e,i,s){const r=e.getContext("2d");Zi(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)}async function xs(){return new Promise(async(t,e)=>{try{await function(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)})}(us.SCRIPT,{crossOrigin:"anonymous"});const e={locateFile:(t,e)=>t.endsWith("createWebPCore.wasm")?us.WASM:e+t};t(await window.createWebPCore(e))}catch(t){e(t)}})}function ws(t){for(const e of t.getCompositions())for(const t of e.textures)t.isDestroyed||t.dispose();t.disposed||t.destroyCurrentCompositions()}function vs(t=[750,750],e="AI 设计师画布"){const i=(0,ii.generateGUID)(),s={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.TimelineAsset,tracks:[]},r={id:(0,ii.generateGUID)(),item:{id:i},dataType:ii.spec.DataType.CompositionComponent,items:[],timelineAsset:{id:s.id},sceneBindings:[]},n={id:i,name:e,duration:999,startTime:0,endBehavior:ii.spec.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}]},a={version:ii.spec.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 a.miscs.push(s),a.compositions.push(n),a.components.push(r),a}function Is(t,e,i,s,r,n,a){const o=(0,ii.generateGUID)(),c={id:t,name:n,dataType:ii.spec.DataType.VFXItemData,components:[{id:o}],delay:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,renderLevel:ii.spec.RenderLevel.BPlus,type:ii.spec.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},l={id:o,item:{id:t},dataType:ii.spec.DataType.SpriteComponent,options:{startColor:[1,1,1,1]},renderer:{renderMode:ii.spec.RenderMode.MESH}};a&&(l.renderer.texture={id:a});const h={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.ActivationPlayableAsset},p={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,asset:{id:h.id}}]},d={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:c,components:[l],tracks:[p,{id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,asset:{id:d.id}}]}],playableAssets:[h,d]}}function Ps(t,e,i,s=new oi(1,1),r=0){const n=JSON.parse(JSON.stringify(i)),a={id:t,name:e,duration:999,type:ii.spec.ItemType.null,visible:!0,endBehavior:ii.spec.EndBehavior.restart,delay:0,renderLevel:ii.spec.RenderLevel.BPlus,content:{options:{startColor:[1,1,1,1]}},components:[],transform:{position:n,eulerHint:{x:0,y:0,z:r},size:{x:1,y:1},scale:{x:s.x,y:s.y,z:1}},dataType:ii.spec.DataType.VFXItemData},o={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.ActivationPlayableAsset};return{item:a,components:[],tracks:[{id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,asset:{id:o.id}}]}],playableAssets:[o]}}function Cs(t,e,i,s,r,n){const a=(0,ii.generateGUID)(),o={id:t,name:e,dataType:ii.spec.DataType.VFXItemData,components:[{id:a}],delay:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,renderLevel:ii.spec.RenderLevel.BPlus,type:ii.spec.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:a,item:{id:t},dataType:ii.spec.DataType.TextComponent,options:n,renderer:{renderMode:1}},l={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.ActivationPlayableAsset};return{item:o,components:[c],tracks:[{id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,asset:{id:l.id}}]}],playableAssets:[l]}}function bs(t,e,i,s,r,n,a=!1,o=!1,c=1,l=1,h,p){const d=(0,ii.generateGUID)(),m={id:t,name:n,dataType:ii.spec.DataType.VFXItemData,components:[{id:d}],delay:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,renderLevel:ii.spec.RenderLevel.BPlus,type:ii.spec.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:ii.spec.DataType.VideoComponent,options:{startColor:[1,1,1,1],muted:a,video:{id:p},volume:c,playbackRate:l,transparent:o},renderer:{renderMode:ii.spec.RenderMode.MESH}};h&&(g.renderer.texture={id:h});const u={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.ActivationPlayableAsset},y={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.ActivationTrack,children:[],clips:[{start:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,asset:{id:u.id}}]},f={id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.SpriteColorPlayableAsset,startColor:[1,1,1,1]};return{item:m,components:[g],tracks:[y,{id:(0,ii.generateGUID)(),dataType:ii.spec.DataType.SpriteColorTrack,children:[],clips:[{start:0,duration:999,endBehavior:ii.spec.EndBehavior.restart,asset:{id:f.id}}]}],playableAssets:[u,f]}}function Ds(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:(0,ii.generateGUID)(),dataType:ii.spec.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 Ss(t,e,i){var s;const r=t.items.findIndex(t=>t.id===e);if(r<0)return;!function(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:a=new bi,scale:o=new bi(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+=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===o.x?1:o.x,t.items[s].transform.scale.y*=0===o.y?1:o.y,t.items[s].transform.scale.z*=0===o.z?1:o.z}(t,e);const n=t.items.find(t=>t.id===i);if(!n)return;t.items[r].parentId=i;const{position:a={x:0,y:0,z:0},eulerHint:o=new bi,scale:c=new bi(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-=a.x,t.items[r].transform.position.y-=a.y,t.items[r].transform.position.z-=a.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===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 zs(t,e){let i;return t.components.forEach(s=>{if(s.item.id===e)if(s.dataType===ii.spec.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===ii.spec.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}var _s,As,Es,Ts,Bs,ks,Ms,Vs,Us,Gs,Fs,Rs,Ls,Ws,Hs,Os,Ns,js,$s,Ks,Ys,Js,qs=require("@galacean/effects"),Xs=require("@galacean/effects-plugin-multimedia"),Zs=class{static createEmpty(t,e=null,i="NewVFXItem"){const s=Qs.createVFXItem(t,e,i);return s.type=qs.spec.ItemType.null,s}static createSprite(t,e=null,i="NewSpite"){const s=Qs.createVFXItem(t,e,i,qs.SpriteComponent);return s.type=qs.spec.ItemType.sprite,s}static createText(t,e=null,i="NewText"){const s=Qs.createVFXItem(t,e,i,qs.TextComponent);return s.type=qs.spec.ItemType.text,s}static createVideo(t,e=null,i="NewVideo"){const s=Qs.createVFXItem(t,e,i,Xs.VideoComponent);return s.type=qs.spec.ItemType.video,s}},Qs=class{static createVFXItem(t,e=null,i="NewVFXItem",...s){const r=new qs.VFXItem(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}},tr=class{constructor(t,e,i,s){d(this,"sdk"),d(this,"player"),d(this,"container"),d(this,"emitter"),d(this,"interactionUtils"),this.player=t,this.sdk=s,this.container=e,this.emitter=i}init(){this.interactionUtils=new gs(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.getViewItemById(t);if(!e||!this.sdk.pageData||this.getViewProperty()?.ignoreInteraction)return!1;const i=this.sdk.pageData.time,{duration:s,delay:r,endBehavior:n}=e;return i>=r&&(i<r+s||n===ii.spec.EndBehavior.restart)}getItemShow(t){const e=this.getViewItemById(t);if(!this.sdk.pageData||!e?.property.visible)return!1;const i=this.sdk.pageData.time,{duration:s,delay:r,endBehavior:n}=e;return i>=r&&(i<r+s||n===ii.spec.EndBehavior.restart||n===ii.spec.EndBehavior.freeze)}addSelectedItems(t){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const e=this.sdk.pageData.activeData.selectedItems??[];t.forEach(t=>{Bi(e,t)}),this.sdk.pageData.activeData.selectedItems=[...e],this.emitter.emit("selectedItemChange",e),this.emitter.emit("pageDataChange",this.sdk.pageData)}removeSelectedItems(t){(0,ii.assertExist)(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){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=t,this.emitter.emit("preSelectedItemChange",t)}clearPreSelectedItem(){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.activeData.preSelectedItem=void 0,this.emitter.emit("preSelectedItemChange",void 0)}getPreSelectedItem(){const t=this.getPageData();(0,ii.assertExist)(t,"You must call SDK#run() first");const e=t.activeData.preSelectedItem;return e?this.getViewItemById(e):void 0}addLoadingItems(t){var e;(0,ii.assertExist)(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=>{Bi(i,t)}),this.emitter.emit("loadingItemChange",i)}removeLoadingItems(t){(0,ii.assertExist)(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))??[]}getViewItemById(t){return this.sdk.pageData?.items.find(e=>e.id===t)}getPlayerSizeByParent(t,e){const[i,s]=t,[r=1624,n=750]=e;let a=s,o=a/n*r;return o>i&&(a=i/o*s,o=i),[o,a]}async loadScene(t){ws(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"===Er.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:!1});this.player.gotoAndStop(this.sdk.pageData.time),this.interactionUtils.refreshViewParam(),this.interactionUtils.refreshCameraParam(),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,n.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}refreshPageTime(t){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.sdk.pageData.time=t}pageZoom(t,e,i){var s;(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),(s=this.sdk.pageData.property).zoom??(s.zoom=1);const{zoom:r,translation:[n=0,a=0]}=this.sdk.pageData.property,{width:o,height:c,scale:l}=this.interactionUtils.viewportParam,h=i?t:li(t,-.1,.1),p=gi(li(r+h,Er.config.pageConfig.minZoom,Er.config.pageConfig.maxZoom),2);switch(this.sdk.pageData.property.zoom=p,Er.config.mode){case"editor":{const t=this.interactionUtils.getNDCSizeByPixelSize(new oi(n,a)),i=e??new oi(o/2,c/2),s=this.interactionUtils.getNDCPositionByScreenPosition(i),r=(s.x-t.x)/l,h=(s.y-t.y)/l,d=new oi(s.x-r*p,s.y-h*p),m=(new Di).compose(new bi(d.x,d.y,0),new Ci,new bi(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(),this.sdk.pageData.items=[];const d=this.getCurrentComposition();this.addViewItemsByItems(this.sdk.pageData.items,d.items),this.emitter.emit("zoomChange",p),this.emitter.emit("viewportTransform",{zoom:p,translation:[n,a]}),this.emitter.emit("pageDataChange",this.sdk.pageData)}setPageZoom(t,e,i){(0,ii.assertExist)(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){(0,ii.assertExist)(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],Er.config.mode){case"template":this.container.style.translate=`${r}px ${n}px`;break;case"editor":{const t=this.interactionUtils.getNDCSizeByPixelSize(new oi(r,n)),e=(new Di).compose(new bi(t.x,t.y,0),new Ci,new bi(s,s,1));this.setCurrenCameraViewportMatrix(e);break}}this.refreshInteractionParam(),this.sdk.pageData.items=[];const a=this.getCurrentComposition();this.addViewItemsByItems(this.sdk.pageData.items,a.items),this.emitter.emit("viewportTransform",{zoom:s,translation:[r,n]}),this.emitter.emit("pageDataChange",this.sdk.pageData)}setPageMove(t){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const{translation:e}=this.sdk.pageData.property,i=(new oi).subtractVectors(t,new oi(...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.refreshViewItem(t),this.emitter.emit("itemPropertyChange",{id:t,property:"rotation"}))}moveItem(t,e){const i=this.getPlayerItemById(t);if(i){const s=(new Di).copyFrom(i.transform.getParentMatrix()??new Di);s.setPosition(new bi);const r=e.clone().applyMatrix(s.invert());i.translate(...r.toArray()),i.transform.updateLocalMatrix(),this.transformSceneItem(t,"position",r.toArray()),this.refreshViewItem(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.refreshViewItem(t),this.emitter.emit("itemPropertyChange",{id:t,property:"size"}))}scaleTextItemWidth(t,e){const i=this.getViewItemById(t);if(i?.type===ii.spec.ItemType.text){const{textWidth:t}=i.property;this.changeItemProperty({itemId:i.id,type:ii.spec.ItemType.text,propertyName:"textWidth",propertyValue:t*e})}}scaleTextItem(t,e){const i=this.getViewItemById(t);if(i?.type===ii.spec.ItemType.text){const{textWidth:t,lineHeight:s,fontSize:r}=i.property;this.changeItemProperty({itemId:i.id,type:ii.spec.ItemType.text,propertyName:"textWidth",propertyValue:t*e}),this.changeItemProperty({itemId:i.id,type:ii.spec.ItemType.text,propertyName:"fontSize",propertyValue:r*e}),this.changeItemProperty({itemId:i.id,type:ii.spec.ItemType.text,propertyName:"lineHeight",propertyValue:s*e})}}getItemTransformById(t){const e={matrix:new Di,parentMatrix:new Di},i=this.getPlayerItemById(t);if(void 0!==i?.transform){i.transform.updateLocalMatrix();const t=Di.fromArray(i.composition?.transform.getWorldMatrix().elements??[]).invert();e.matrix=t.clone().multiply(Di.fromArray(i.transform.getWorldMatrix().elements)),e.parentMatrix=t.clone().multiply(Di.fromArray(i.transform.parentTransform?.getWorldMatrix().elements??(new Di).toArray()))}return e}addViewItemsByItems(t,e,i){const s=e=>{e.forEach(e=>{t.find(t=>t.id===e.getInstanceId())||t.push(this.createViewItemByPlayerItem(e,i))})};for(const i of e)Er.config.pageConfig.filterItemNames.includes(i.name)||(s([i]),this.addViewItemsByItems(t,i.children,i.getInstanceId()))}createViewItemByPlayerItem(t,e){(0,ii.assertExist)(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],size:[0,0],visible:r,keyPropertyEditing:!1},{scale:a}=this.interactionUtils.viewportParam,o="editor"===Er.config.mode?1:a,c=this.getViewportLeftTopPosition();if(t.type!==ii.spec.ItemType.null){i.updateLocalMatrix();const e=(new Di).copyFrom(s?.transform.getWorldMatrix()??(new Di).identity()).invert().multiply(i.getWorldMatrix()),r=new bi,o=new Ci,c=new bi;e.decompose(r,o,c);const l=(new Si).setFromQuaternion(o);l.x=Number.isNaN(l.x)?0:l.x,l.y=Number.isNaN(l.y)?0:l.y,l.z=Number.isNaN(l.z)?0:l.z,this.interactionUtils.initInteractionPlane(r,l);const h=this.interactionUtils.projectPoint(r),p="editor"===Er.config.mode?this.interactionUtils.getPixelPositionByViewPoint(h).toArray().map(t=>gi(t,2)):h.divide(a).toArray().map(t=>gi(t,2)),d=l.toArray().map(t=>gi(t,2)),m=c.toArray().map(t=>gi(t,2)),g=i.size.toArray(),u=this.getPixelSizeByWorldSize([m[0]*g[0],m[1]*g[1],m[2]],t).map(t=>gi(t,2));n.position=p,n.rotation=d,n.size=u}else{const e=this.getViewBoxByPlayerItem(t,t.children),i=this.interactionUtils.getViewPositionWWithOutTransform(e.getCenter().subtract(c)),s="editor"===Er.config.mode?this.interactionUtils.getPixelPositionByViewPoint(i).toArray().map(t=>gi(t,2)):i.toArray();n.position=s,n.size=e.getSize().divide(o).toArray()}switch(t.type){case ii.spec.ItemType.sprite:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(n.keyPropertyEditing||!("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);n.keyPropertyEditing=!!t?.template;const s=t?.url??"";s&&Object.assign(n,{image:s})}})}break}case ii.spec.ItemType.video:{const e=this.getViewProperty()?.scene;if(e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(n.keyPropertyEditing||!("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);n.keyPropertyEditing=!0;const s=t?.url??"";s&&Object.assign(n,{video:s})}})}break}case ii.spec.ItemType.text:case ii.spec.ItemType.richtext:{const e=this.getViewProperty()?.scene;if(n.keyPropertyEditing=!0,e){e.components.filter(e=>e.item.id===t.getInstanceId()).forEach(t=>{if(![ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType))return;const{textAlign:e,textColor:i,text:s,fontWeight:r,fontFamily:a,fontSize:o,fontStyle:c,outline:l,textWidth:h,lineHeight:p}=t.options,d=l?.outlineColor?l.outlineColor.map((t,e)=>e>2?t:gi(255*t,0)):void 0,m=i.map((t,e)=>e>2?t:gi(255*t,0)),g=l?.outlineWidth,u=!!l;Object.assign(n,{outlineEnabled:u,textAlign:e,textColor:m,fontWeight:r,text:s,fontFamily:a,fontSize:o,fontStyle:c,outlineColor:d,outlineWidth:g,textWidth:h,lineHeight:p})})}break}}return{id:t.getInstanceId(),name:t.name,parentId:t.parentId??e,children:[],type:t.type,duration:t.duration,delay:t.defination.delay,endBehavior:t.endBehavior,property:n}}getViewBoxById(t){const e=new Ii,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 bi).copyFrom(e.transform.anchor).applyMatrix((new Di).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 Ii;switch(t.type){case ii.spec.ItemType.sprite:case ii.spec.ItemType.plugin:case ii.spec.ItemType.video:case ii.spec.ItemType.richtext:case ii.spec.ItemType.text:case ii.spec.ItemType.shape:{const{transform:s,composition:r}=t;s.updateLocalMatrix();const{size:n}=s,a=(new Di).copyFrom(r?.transform.getWorldMatrix()??new Di).invert().multiply(s.getWorldMatrix()),{x:o,y:c}=n.clone().divide(2),l=new bi(o,c,0).applyMatrix(a),h=new bi(o,-c,0).applyMatrix(a),p=new bi(-o,-c,0).applyMatrix(a),d=new bi(-o,c,0).applyMatrix(a),m=this.getViewportLeftTopPosition(),g=this.interactionUtils.projectPoint(l).add(m).round(2),u=this.interactionUtils.projectPoint(h).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 ii.spec.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"===Er.config.mode)return new oi;const{zoom:t,translation:e}=this.sdk.pageData.property,{offsetWidth:i,offsetHeight:s}=this.container.parentElement,{offsetWidth:r,offsetHeight:n}=this.container,a=new oi(i,s),o=new oi(r,n).multiply(t);return a.clone().divide(2).subtract(o.clone().divide(2)).add(e)}getViewportByViewPoint(t){if(!this.sdk.pageData)return t;const{zoom:e}=this.sdk.pageData.property,i="editor"===Er.config.mode?1:e,{width:s,height:r}=this.interactionUtils.viewportParam,n=new oi(s,r).multiply(i),a=this.getViewportLeftTopPosition(),o=t.clone().subtract(a);return new oi(o.x/n.x*2-1,1-o.y/n.y*2)}async changeItemProperty(t){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),(0,ii.assertExist)(t,"Param is not exsited.");const e=this.getViewItemById(t.itemId),i=this.getPlayerItemById(t.itemId);if(e&&i)if(t.propertyName in e.property){switch(t.propertyName){case"textAlign":[ii.spec.TextAlignment.left,ii.spec.TextAlignment.middle,ii.spec.TextAlignment.right].includes(t.propertyValue)&&i.getComponent(ii.TextComponent).setTextAlign(t.propertyValue);break;case"textColor":if(Array.isArray(t.propertyValue)&&4===t.propertyValue.length){const e=t.propertyValue.map((t,e)=>e>2?t:gi(t/255,5));i.getComponent(ii.TextComponent).setTextColor(e)}break;case"fontFamily":if("string"==typeof t.propertyValue){const e=t.propertyValue.split("/"),s=e[e.length-1]?.split(".")[0];await ds.AssetManager.loadFontFamily([{fontURL:t.propertyValue,fontFamily:s}]),s&&(i.getComponent(ii.TextComponent).setFontFamily(s),i.getComponent(ii.TextComponent).isDirty=!0)}break;case"text":if("string"==typeof t.propertyValue){const e=i.getComponent(ii.TextComponent);if(e.setText(t.propertyValue),"editor"===Er.config.mode){const s=e.getLineCount(t.propertyValue),r=Math.ceil(e.textLayout.lineHeight*s);e.setTextHeight(r);const n=e.textLayout.width,a=this.interactionUtils.getViewSizeByPixelSize(new oi(n,r)),o=this.interactionUtils.getWorldSizeByViewSize(a);i.transform.setScale(i.transform.scale.x,Math.abs(o.y),1)}}break;case"fontWeight":[ii.spec.TextWeight.normal,ii.spec.TextWeight.bold,ii.spec.TextWeight.lighter].includes(t.propertyValue)&&i.getComponent(ii.TextComponent).setFontWeight(t.propertyValue);break;case"textWidth":{const e=i.getComponent(ii.TextComponent);e.setTextWidth(t.propertyValue);const s=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(s);const r=e.textLayout.width,n=this.interactionUtils.getViewSizeByPixelSize(new oi(r,s)),a=this.interactionUtils.getWorldSizeByViewSize(n);i.transform.setScale(i.transform.scale.x,Math.abs(a.y),1);break}case"lineHeight":{const e=i.getComponent(ii.TextComponent);e.setLineHeight(t.propertyValue);const s=Math.ceil(e.textLayout.lineHeight*e.lineCount);e.setTextHeight(s);const r=e.textLayout.width,n=this.interactionUtils.getViewSizeByPixelSize(new oi(r,s)),a=this.interactionUtils.getWorldSizeByViewSize(n);i.transform.setScale(i.transform.scale.x,Math.abs(a.y),1);break}case"outlineColor":if(Array.isArray(t.propertyValue)&&4===t.propertyValue.length){const e=i.getComponent(ii.TextComponent);if("function"==typeof e.setOutlineColor){const i=t.propertyValue.map((t,e)=>e>2?t:gi(t/255,5));e.setOutlineColor(i)}}break;case"outlineWidth":if("number"==typeof t.propertyValue){const e=i.getComponent(ii.TextComponent);"function"==typeof e.setOutlineWidth&&e.setOutlineWidth(t.propertyValue)}break;case"outlineEnabled":if("boolean"==typeof t.propertyValue){const e=i.getComponent(ii.TextComponent);"function"==typeof e.setOutlineEnabled&&e.setOutlineEnabled(t.propertyValue)}break;case"fontSize":if("number"==typeof t.propertyValue&&i.type===ii.spec.ItemType.text){const e=i.getComponent(ii.TextComponent),s=e.textStyle.fontSize;if(e.setFontSize(t.propertyValue),"editor"===Er.config.mode){e.setLineHeight(e.textLayout.lineHeight*t.propertyValue/s);const r=e.getLineCount(e.text),n=Math.ceil(e.textLayout.lineHeight*r);e.setTextHeight(n);const a=e.textLayout.width,o=this.interactionUtils.getViewSizeByPixelSize(new oi(a,n)),c=this.interactionUtils.getWorldSizeByViewSize(o);i.transform.setScale(i.transform.scale.x,Math.abs(c.y),1)}}break;case"image":"string"==typeof t.propertyValue&&i.getComponent(ii.SpriteComponent).setTexture(await ii.Texture.fromImage(t.propertyValue,this.player.renderer.engine));break;case"position":if(Array.isArray(t.propertyValue)&&(3===t.propertyValue.length||2===t.propertyValue.length)){const i=t.propertyValue.map((t,i)=>t-(e.property.position[i]??0)),s=this.interactionUtils.getViewSizeByPixelSize(new oi(...i)),r=this.interactionUtils.getWorldSizeByViewSize(s,!0,t.itemId);this.moveItem(t.itemId,r)}break;case"rotation":if(Array.isArray(t.propertyValue)&&3===t.propertyValue.length){const i=t.propertyValue.map((t,i)=>t-(e.property.rotation[i]??0));this.rotateItem(t.itemId,new bi(...i).negate())}break;case"size":if(Array.isArray(t.propertyValue)&&2===t.propertyValue.length){const i=t.propertyValue.map(t=>0===t||null===t?1:t),s=e.property.size.map(t=>t||1),r=i.map((t,e)=>t/s[e]);this.scaleItem(t.itemId,new bi(...r,1))}break;case"visible":if("boolean"==typeof t.propertyValue&&(i.setVisible(t.propertyValue),Er.config.pageConfig.groupVisible)){this.getChildrenPlayerItems(i).forEach(e=>{e.setVisible(t.propertyValue)})}}["position","rotation","size"].includes(t.propertyName)||this.player.gotoAndStop(this.sdk.pageData.time),this.changeViewItemProperty(t),this.refreshViewItem(t.itemId)}else console.warn(`Item does not have property ${t.propertyName}.`);else console.warn(`Id ${t.itemId} is not a item id.`)}changeViewItemProperty(t){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),(0,ii.assertExist)(t,"Param is not exsited."),this.sdk.pageData.viewProperties.forEach(e=>{if(!this.sdk.pageData?.property.asyncMode&&e.id!==this.sdk.pageData?.activeData.view)return;const{scene:i}=e;switch(t.propertyName){case"position":if(Array.isArray(t.propertyValue)&&2===t.propertyValue.length){const e=this.sdk.pageData.items.find(e=>e.id===t.itemId),s=e?.property[t.propertyName],r=t.propertyValue.map((t,e)=>t-(s?.[e]??0)),n=this.interactionUtils.getViewSizeByPixelSize(new oi(...r)),a=this.interactionUtils.getWorldSizeByViewSize(n,!0,t.itemId);this.changeSceneItemProperty(i,{...t,propertyValue:a.toArray()})}break;case"rotation":if(Array.isArray(t.propertyValue)&&3===t.propertyValue.length){const e=this.sdk.pageData.items.find(e=>e.id===t.itemId),s=e?.property[t.propertyName],r=t.propertyValue.map((t,e)=>t-(s?.[e]??0));this.changeSceneItemProperty(i,{...t,propertyValue:r})}break;case"size":if(Array.isArray(t.propertyValue)&&2===t.propertyValue.length){const e=this.sdk.pageData.items.find(e=>e.id===t.itemId),s=e?.property[t.propertyName],r=t.propertyValue.map((t,e)=>t/(s?.[e]??0));this.changeSceneItemProperty(i,{...t,propertyValue:r})}break;default:this.changeSceneItemProperty(i,t)}})}changeSceneItemProperty(t,e){var i,s,r,n,a,o;switch((0,ii.assertExist)(e,"Param is not exsited."),e.propertyName){case"textAlign":if([ii.spec.TextAlignment.left,ii.spec.TextAlignment.middle,ii.spec.TextAlignment.right].includes(e.propertyValue)){const i=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));i?.options&&"textAlign"in i.options&&(i.options.textAlign=e.propertyValue)}break;case"textColor":if(Array.isArray(e.propertyValue)&&4===e.propertyValue.length){const i=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));if(i?.options){const t=e.propertyValue.map((t,e)=>e>2?t:gi(t/255,5));i.options.textColor=[...t]}}break;case"fontFamily":if("string"==typeof e.propertyValue){const i=e.propertyValue.split("/"),s=i[i.length-1]?.split(".")[0],r=t.fonts?.find(t=>"family"in t&&t.family===s||"fontFamily"in t&&t.fontFamily===s);!r&&t.fonts&&s&&t.fonts.push({fontFamily:s,fontURL:e.propertyValue});const n=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));n&&(n.options.fontFamily=s)}break;case"lineHeight":if("number"==typeof e.propertyValue){const s=t.items.find(t=>t.id===e.itemId),r=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));if(s&&r?.options){r.options.lineHeight=e.propertyValue;const t=this.getPlayerItemById(e.itemId);if(t){const e=t.getComponent(ii.TextComponent),n=e.textLayout.width,a=Math.ceil(e.lineCount*e.lineCount);r.options.textHeight=a;const o=this.interactionUtils.getViewSizeByPixelSize(new oi(n,a)),c=this.interactionUtils.getWorldSizeByViewSize(o);(i=s.transform).scale??(i.scale={x:1,y:1,z:1}),s.transform.scale={x:Math.abs(c.x),y:Math.abs(c.y),z:1}}}}break;case"textWidth":if("number"==typeof e.propertyValue){const i=t.items.find(t=>t.id===e.itemId),r=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));if(r?.options&&i){r.options.textWidth=e.propertyValue;const t=this.getPlayerItemById(e.itemId);if(t){const e=t.getComponent(ii.TextComponent),n=e.textLayout.width,a=Math.ceil(e.lineCount*e.lineCount);r.options.textHeight=a;const o=this.interactionUtils.getViewSizeByPixelSize(new oi(n,a)),c=this.interactionUtils.getWorldSizeByViewSize(o);(s=i.transform).scale??(s.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 e.propertyValue){const i=t.items.find(t=>t.id===e.itemId),s=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));if(s?.options&&i){s.options.text=e.propertyValue;const t=this.getPlayerItemById(e.itemId);if(t&&"editor"===Er.config.mode){const n=t.getComponent(ii.TextComponent),a=n.getLineCount(e.propertyValue),o=n.textLayout.lineHeight,c=n.textLayout.width,l=Math.ceil(o*a);s.options.textHeight=l;const h=this.interactionUtils.getViewSizeByPixelSize(new oi(c,l)),p=this.interactionUtils.getWorldSizeByViewSize(h);(r=i.transform).scale??(r.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 e.propertyValue){const i=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));i?.options&&(i.options.fontWeight=e.propertyValue)}break;case"outlineColor":if(Array.isArray(e.propertyValue)&&4===e.propertyValue.length){const i=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));i?.options&&((n=i.options).outline??(n.outline={}),i.options.outline.outlineColor=[...e.propertyValue.map((t,e)=>e>2?t:gi(t/255,5))])}break;case"outlineWidth":if("number"==typeof e.propertyValue){const i=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));i?.options&&((a=i.options).outline??(a.outline={}),i.options.outline.outlineWidth=e.propertyValue)}break;case"outlineEnabled":if("boolean"==typeof e.propertyValue){const i=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType)),s=this.getPlayerItemById(e.itemId),r=s?.getComponent(ii.TextComponent);if(i?.options&&s&&r)if(e.propertyValue){const{outlineWidth:t,outlineColor:e}=r.textStyle;i.options.outline={outlineWidth:t,outlineColor:[...e]}}else delete i.options.outline}break;case"fontSize":if("number"==typeof e.propertyValue){const i=t.items.find(t=>t.id===e.itemId),s=t.components.find(t=>t.item.id===e.itemId&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(t.dataType));if(s?.options&&i){s.options.fontSize=e.propertyValue;const t=this.getPlayerItemById(e.itemId);if(t&&"editor"===Er.config.mode){const r=t.getComponent(ii.TextComponent);r.setFontSize(e.propertyValue);const n=r.textLayout.lineHeight;s.options.lineHeight=n;const a=Math.ceil(r.textLayout.lineHeight*r.lineCount);s.options.textHeight=a;const c=r.textLayout.width,l=this.interactionUtils.getViewSizeByPixelSize(new oi(c,a)),h=this.interactionUtils.getWorldSizeByViewSize(l);(o=i.transform).scale??(o.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 e.propertyValue){t.components.filter(t=>t.item.id===e.itemId).forEach(i=>{if(!("renderer"in i))return;const s=t.textures?.find(t=>t.id===i.renderer.texture.id);if(s&&"source"in s&&s.source){const r=t?.images.find(t=>t.id===s.source.id);r?.url&&(r.url=e.propertyValue,delete r.webp),r&&"template"in r&&r.template.background&&(r.template.background.url=e.propertyValue);const n=this.player.renderer.engine.findObject({id:s.id});n?.dispose();const a=this.getPlayerItemById(e.itemId)?.getComponent(ii.SpriteComponent).renderer.texture.getInstanceId();s.id=a,i.renderer.texture.id=a}})}break;case"position":{const i=e.propertyValue;if(Array.isArray(e.propertyValue)&&3===i.length){const s=t.items.find(t=>t.id===e.itemId);s?.transform&&(s.transform.position.x+=i[0],s.transform.position.y+=i[1],s.transform.position.z+=i[2])}break}case"rotation":if(Array.isArray(e.propertyValue)&&3===e.propertyValue.length){const i=t.items.find(t=>t.id===e.itemId);i?.transform&&(i.transform.eulerHint.x+=e.propertyValue[0],i.transform.eulerHint.y+=e.propertyValue[1],i.transform.eulerHint.z+=e.propertyValue[2])}break;case"size":if(Array.isArray(e.propertyValue)&&2===e.propertyValue.length){const i=t.items.find(t=>t.id===e.itemId);i?.transform&&(i.transform.scale.x*=e.propertyValue[0],i.transform.scale.y*=e.propertyValue[1])}break;case"visible":{const i=t.items.find(t=>t.id===e.itemId);if(i&&(i.visible=e.propertyValue,Er.config.pageConfig.groupVisible)){this.getChildrenSceneItemIds(e.itemId,t).forEach(i=>{const s=t.items.find(t=>t.id===i);s&&(s.visible=e.propertyValue)})}break}}}setSpriteSize(t,e){var i;const s=this.getPlayerItemById(t),r=this.interactionUtils.getViewSizeByPixelSize(new oi(...e)),n=this.interactionUtils.getWorldSizeByViewSize(r),a=this.getActiveTargetScene(),o=a?.items.find(e=>e.id===t);s&&o&&(s.transform.setSize(n.x,Math.abs(n.y)),o.transform??(o.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=o.transform).size??(i.size={x:1,y:1}),o.transform.size={x:Math.abs(n.x),y:Math.abs(n.y)},this.refreshViewItem(t))}transformSceneItem(t,e,i){(0,ii.assertExist)(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])}}})}refreshViewItem(t){const e=this.sdk.pageData;(0,ii.assertExist)(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&&(e.items[i]=this.createViewItemByPlayerItem(r,s.parentId))}getPlayerItemById(t){return this.player.getCompositions()[0]?.items.find(e=>e.getInstanceId()===t)}getPixelSizeByWorldSize(t,e){(0,ii.assertExist)(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:a,y:o}=s.getInverseVPRatio(n);i[0]=Math.abs(t[0]*r[0]/a/2),i[1]=Math.abs(t[1]*r[1]/o/-2)}else console.warn("camera is not existed.");return i}getWorldSizeByPixelSize(t){(0,ii.assertExist)(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 exsited.")}refreshSceneAndPageData(){(0,ii.assertExist)(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.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,t.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}async addSpriteItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{name:i="图层",size:s,scale:r=[1,1],url:n,rotation:a=0,position:o,parentId:c,id:l=(0,ii.generateGUID)()}=t,h=new bi(...r??[1,1],1),p=this.getWorldSizeByPixelSize(s),d=new bi(0,0,-a),m=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new oi(...o)))??new bi,g=e.images.findIndex(t=>t.url===n);let u,y={};if(n)if(g<0){u=await ii.Texture.fromImage(n,this.player.renderer.engine,{magFilter:ds.glContext.LINEAR,minFilter:ds.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0});const t={id:(0,ii.generateGUID)(),url:n,renderLevel:ii.spec.RenderLevel.BPlus};y={id:u.guid,source:{id:t.id},flipY:!0,dataType:ii.spec.DataType.Texture,magFilter:ds.glContext.LINEAR,minFilter:ds.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},e.images.push(t),e.textures??(e.textures=[]),e.textures.push(y)}else{const t=e.textures?.find(t=>t.source.id===e.images[g].id);y={id:t?.id},u=this.player.renderer.engine.findObject({id:t.id})}const f=Is(l,m,d,new oi(...p),h,i,y?.id);e.items.find(t=>t.id===c)&&(f.item.parentId=c),Ds(e,f);const x=this.player.getCompositions()[0],w=Zs.createSprite(x,null,i);if(w.setInstanceId(f.item.id),w.duration=999,w.defination.delay=0,w.endBehavior=ii.spec.EndBehavior.restart,w.transform.setSize(...p),w.transform.setPosition(...m.toArray()),w.transform.setRotation(...d.toArray()),w.transform.setScale(...h.toArray()),u){w.getComponent(ii.SpriteComponent).setTexture(u)}return this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),f.item.id}addNullItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{name:i="空节点",position:s=[0,0],id:r=(0,ii.generateGUID)(),children:n=[]}=t,a=n.filter(t=>!this.getPlayerItemById(t)),o=n.filter(t=>!!this.getPlayerItemById(t));if(a.length&&console.warn(`item ${a.join("、")} is not existed.`),0===o.length)return;const c=new bi(...this.getWorldSizeByPixelSize(s),0),l=Ps(r,i,c);Ds(e,l),o.forEach(t=>{Ss(e,t,r)});const h=this.player.getCompositions()[0],p=Zs.createEmpty(h,null,i);return p.setInstanceId(l.item.id),p.duration=999,p.defination.delay=0,p.endBehavior=ii.spec.EndBehavior.restart,p.transform.setPosition(...c.toArray()),o.forEach(t=>{const e=this.getPlayerItemById(t);e.setParent(p),e.parentId=l.item.id,e.translate(...c.clone().negate().toArray())}),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),l.item.id}async addTextItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{id:i=(0,ii.generateGUID)(),parentId:s,name:r="文本",lineHeight:n,textWidth:a,fontFamily:o,position:c=[0,0],fontSize:l,fontWeight:h=ii.spec.TextWeight.normal,fontStyle:p=ii.spec.FontStyle.normal,textAlign:d=ii.spec.TextAlignment.left,text:m,textColor:g,textHeight:u=n,outlineColor:y,outlineWidth:f,outlineEnabled:x,rotation:w=0,url:v}=t;v&&!e.fonts?.find(t=>t.fontFamily===o)&&(e.fonts??(e.fonts=[]),e.fonts.push({fontFamily:o,fontURL:v}));const I=g.map((t,e)=>e>2?t:gi(t/255,4)),P=y?y.map((t,e)=>e>2?t:gi(t/255,4)):void 0,C={text:m,fontFamily:o,fontSize:l,textColor:I,fontWeight:h,letterSpace:0,textAlign:d,fontStyle:p,textWidth:a,textHeight:u,lineHeight:n,textBaseline:ii.spec.TextBaseline.top,textOverflow:ii.spec.TextOverflow.visible,outline:x?{outlineColor:P,outlineWidth:f}:void 0},b=this.player.getCompositions()[0],D=Zs.createText(b,null,r);D.setInstanceId(i),D.duration=999,D.defination.delay=0,D.endBehavior=ii.spec.EndBehavior.restart;const S=D.getComponent(ii.TextComponent),z={options:C,renderer:{renderMode:1},dataType:ii.spec.DataType.TextComponent,item:{id:D.getInstanceId()},id:S.getInstanceId()};S.fromData(z),z.options.textHeight=Math.ceil(n*S.lineCount),S.fromData(z),S.setFontScale(3),await ds.AssetManager.loadFontFamily([{fontURL:v,fontFamily:o}]),S.setFontFamily(o);const _=[a,C.textHeight],A=this.getWorldSizeByPixelSize(_),E=new bi(0,0,-w),T=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new oi(...c)))??new bi,B=Cs(i,r,T,E,new oi(...A),C);return e.items.find(t=>t.id===s)&&(B.item.parentId=s),Ds(e,B),D.transform.setScale(...A,1),D.transform.setPosition(...T.toArray()),D.transform.setRotation(...E.toArray()),(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first"),this.player.gotoAndStop(this.sdk.pageData.time),this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),B.item.id}async addVideoItem(t,e){if(e??(e=this.getActiveTargetScene()),!e)return;const{name:i="视频",size:s,scale:r=[1,1],url:n,rotation:a=0,position:o,parentId:c,id:l=(0,ii.generateGUID)(),muted:h=!0,transparent:p=!1,volume:d=1,playbackRate:m=1}=t,g=new bi(...r??[1,1],1),u=this.getWorldSizeByPixelSize(s),y=new bi(0,0,-a),f=this.interactionUtils.getWorldPositionByViewPoint(this.interactionUtils.getViewPositionByPixelPoint(new oi(...o)))??new bi;e.videos??(e.videos=[]);const x=e.videos.findIndex(t=>t.url===n);let w,v="",I={};if(n)if(x<0){w=await ii.Texture.fromVideo(n,this.player.renderer.engine,{magFilter:ds.glContext.LINEAR,minFilter:ds.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0});const t={id:(0,ii.generateGUID)(),url:n,renderLevel:ii.spec.RenderLevel.BPlus};v=t.id,I={id:w.guid,source:{id:t.id},flipY:!0,dataType:ii.spec.DataType.Texture,magFilter:ds.glContext.LINEAR,minFilter:ds.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},e.videos.push(t),e.textures??(e.textures=[]),e.textures.push(I)}else{const t=e.textures?.find(t=>t.source.id===e.videos[x].id);v=t?.source.id,I={id:t?.id},w=this.player.renderer.engine.findObject({id:t.id})}const P=bs(l,f,y,new oi(...u),g,i,h,p,d,m,I?.id,v);e.items.find(t=>t.id===c)&&(P.item.parentId=c),Ds(e,P);const C=this.player.getCompositions()[0],b=Zs.createVideo(C,null,i);if(b.setInstanceId(P.item.id),b.duration=999,b.defination.delay=0,b.endBehavior=ii.spec.EndBehavior.restart,b.transform.setSize(...u),b.transform.setPosition(...f.toArray()),b.transform.setRotation(...y.toArray()),b.transform.setScale(...g.toArray()),w){const t=b.getComponent(ri.VideoComponent);t.setTexture(w),t.setLoop(!0),t.setMuted(h),t.setVolume(d),t.setPlaybackRate(m)}return this.refreshSceneAndPageData(),this.player.gotoAndStop(this.getPageData().time),P.item.id}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 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=>{if(e.dataType===ii.spec.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 r=[];let n,a;const o=t.compositions.find(e=>e.id===t.compositionId)??t.compositions[0];if(+t.version>=3.3){const i=t.components.find(t=>t.id===o.components[0].id);i.items=i.items.filter(t=>t.id!==e),a=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 o.items=o.items.filter(t=>t.id!==e),a=o.timelineAsset.id,n=o.sceneBindings.find(t=>t.value.id===e)?.key.id,o.sceneBindings=o.sceneBindings.filter(t=>t.value.id!==e),n&&r.push(n);const c=t.miscs.findIndex(t=>t.id===a);c>=0&&(t.miscs[c].tracks=t.miscs[c].tracks.filter(t=>t.id!==n));const l=t.miscs.find(t=>t.id===n);l&&(l.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(...l.children.map(t=>t.id))),t.miscs=t.miscs.filter(t=>!r.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(),s=t.getRotation(),r=t.getWorldScale();i.children.forEach(t=>{t.scale(...r.toArray()),t.rotate(...s.toArray()),t.translate(...e.toArray()),t.parent=void 0,t.parentId=void 0}),i.dispose()}}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=Mi(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){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const i=this.getPlayerItemById(t),s=this.getViewProperty()?.scene,r=this.getViewItemById(t);if(!r||!i||!s)return void console.warn(`item ${t} is not existed.`);const{transform:n}=i,a=n.getWorldScale();if(e&&i.parent){const t=i.parent.transform;a.divide(t.getWorldScale())}const{size:o,position:c,rotation:l}=r.property;switch(r.type){case ii.spec.ItemType.sprite:{const n=[gi(o[0]/a.x,2),gi(o[1]/a.y,2)];return{type:"sprite",name:r.name,parentId:e?i.parent?.getInstanceId():void 0,id:t,url:zs(s,t),size:n,scale:[a.x,a.y],rotation:l[2],position:[...c]}}case ii.spec.ItemType.null:{const s=i.children.map(t=>t.getInstanceId());return{type:"null",id:t,parentId:e?i.parent?.getInstanceId():void 0,children:s,name:i.name,scale:[a.x,a.y],rotation:l[2],position:[...c]}}case ii.spec.ItemType.text:{const n=s.components.find(e=>e.item.id===t),a=s.fonts?.find(t=>t.fontFamily===n.options.fontFamily)?.fontURL;return{type:"text",id:t,parentId:e?i.parent?.getInstanceId():void 0,name:r.name,lineHeight:n.options.lineHeight,textWidth:n.options.textWidth,fontFamily:n.options.fontFamily,position:[...c],rotation:l[2],textHeight:n.options.textHeight,fontSize:n.options.fontSize,fontWeight:n.options.fontWeight,fontStyle:n.options.fontStyle,textAlign:n.options.fontStyle,text:n.options.text,textColor:n.options.textColor?.map((t,e)=>e>2?t:gi(255*t,0)),outlineColor:n.options.outline?.outlineColor?.map((t,e)=>e>2?t:gi(255*t,0)),outlineWidth:n.options.outline?.outlineWidth,outlineEnabled:!!n.options.outline,url:a}}case ii.spec.ItemType.video:{const n=[o[0]/a.x,o[1]/a.y],h=s.components.find(e=>e.item.id===t);return{type:"video",name:r.name,parentId:e?i.parent?.getInstanceId():void 0,id:t,url:zs(s,t),size:n,scale:[a.x,a.y],rotation:l[2],position:[...c],muted:h.options.muted,transparent:h.options.transparent,playbackRate:h.options.playbackRate,volume:h.options.volume}}}}getChildrenIds(t){return this.getPageData()?.items.filter(e=>e.parentId===t)?.map(t=>t.id)??[]}createScreenShotSceneByIds(t){const e=new Ii;let i;const s=(t,e,s)=>{const{id:r=(0,ii.generateGUID)(),url:n,name:a="图层",scale:o=[1,1],rotation:c=0}=t,l=i.images.findIndex(t=>t.url===n);let h={};if(n)if(l<0){const t={id:(0,ii.generateGUID)(),url:n,renderLevel:ii.spec.RenderLevel.BPlus};h={id:(0,ii.generateGUID)(),source:{id:t.id},flipY:!0,dataType:ii.spec.DataType.Texture,magFilter:ds.glContext.LINEAR,minFilter:ds.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},i.images.push(t),i.textures??(i.textures=[]),i.textures.push(h)}else{const t=i.textures?.find(t=>t.source.id===i.images[l].id);h={id:t?.id}}const p=Is(r,new bi(s.x,s.y,0),new bi(0,0,-c),e,new bi(o[0]??1,o[1]??1,1),a,h.id);Ds(i,p)},r=(t,e,s)=>{const{id:r=(0,ii.generateGUID)(),name:n="文本",lineHeight:a,textWidth:o,fontFamily:c,fontSize:l,fontWeight:h=ii.spec.TextWeight.normal,fontStyle:p=ii.spec.FontStyle.normal,textAlign:d=ii.spec.TextAlignment.left,text:m,textColor:g,rotation:u=0,url:y,textHeight:f,outlineColor:x,outlineWidth:w,outlineEnabled:v}=t;y&&!i.fonts?.find(t=>t.fontFamily===c)&&(i.fonts??(i.fonts=[]),i.fonts.push({fontFamily:c,fontURL:y}));const I=x?x.map((t,e)=>e>2?t:gi(t/255,4)):void 0,P=g?g.map((t,e)=>e>2?t:gi(t/255,4)):void 0,C={text:m,fontFamily:c,fontSize:l,textColor:P,fontWeight:h,letterSpace:0,textAlign:d,fontStyle:p,textWidth:o,textHeight:f??a,lineHeight:a,outline:v?{outlineColor:I,outlineWidth:w}:void 0},b=Cs(r,n,new bi(...s.toArray(),0),new bi(0,0,-u),new oi(e.x,e.y),C);Ds(i,b)},n=(t,e,s)=>{const{id:r=(0,ii.generateGUID)(),url:n,name:a="视频",scale:o=[1,1],rotation:c=0,muted:l=!0,transparent:h=!1,playbackRate:p=1,volume:d=1}=t;i.videos??(i.videos=[]);const m=i.videos.findIndex(t=>t.url===n);let g,u={};if(n)if(m<0){const t={id:(0,ii.generateGUID)(),url:n,renderLevel:ii.spec.RenderLevel.BPlus};g=t.id,u={id:(0,ii.generateGUID)(),source:{id:t.id},flipY:!0,dataType:ii.spec.DataType.Texture,magFilter:ds.glContext.LINEAR,minFilter:ds.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},i.videos.push(t),i.textures??(i.textures=[]),i.textures.push(u)}else{const t=i.textures?.find(t=>t.source.id===i.videos[m].id);g=t.resource.id,u={id:t?.id}}const y=bs(r,new bi(s.x,s.y,0),new bi(0,0,-c),e,new bi(o[0]??1,o[1]??1,1),a,l,h,d,p,u.id,g);Ds(i,y)};if(Array.isArray(t)){t.map(t=>this.getItemBoxById(t)).map(t=>e.union(t));const a=e.getSize();i=vs(a.toArray());const o=(new Di).compose(new bi(0,0,8),new Ci,new bi(1,1,1)).invert(),c=(new Di).perspective(60*hi,a.x/a.y,.1,40,!0),l=(new Di).multiplyMatrices(c,o),h=l.clone().invert(),p=l.projectPoint(new bi).z,d=new bi(0,0,p).applyMatrix(h),m=new bi(2,2,p).applyMatrix(h),g=Math.abs(m.x-d.x)/a.x,u=Math.abs(m.y-d.y)/a.y;t.forEach(t=>{const i=this.getItemCreateInfo(t,!1);if(!i||"null"===i.type)return;const a=this.getItemBoxById(t),o="text"===i.type?[i.textWidth,i.textHeight??i.lineHeight]:[...i.size],c=new oi(...o).multiply(new oi(g,u)).abs(),l=a.getCenter().subtract(e.getCenter()).multiply(new oi(g,-u));switch(i.type){case"sprite":s(i,c,l);break;case"text":r(i,c,l);break;case"video":n(i,c,l)}})}else{const e=this.getItemBoxById(t),a=this.getItemCreateInfo(t,!1),o=e.clone().getSize();i=vs(o.toArray());const c=(new Di).compose(new bi(0,0,8),new Ci,new bi(1,1,1)).invert(),l=(new Di).perspective(60*hi,o.x/o.y,.1,40,!0),h=(new Di).multiplyMatrices(l,c),p=h.clone().invert(),d=h.projectPoint(new bi).z,m=new bi(0,0,d).applyMatrix(p),g=new bi(2,2,d).applyMatrix(p),u=(new bi).subtractVectors(g,m);if(a)switch(a.type){case"sprite":s(a,new oi(u.x,u.y),new oi);break;case"text":r(a,new oi(u.x,u.y),new oi);break;case"video":n(a,new oi(u.x,u.y),new oi)}}return i}createSceneByCreateInfos(t,e,i){const s=new Ii;e?s.setFromVec2Array([new oi,new oi(...e)]):s.copyFrom(this.getBoundingBoxByCreateInfos(t));const r=s.getSize(),n=vs(r.toArray(),i),a=(new Di).compose(new bi(0,0,8),new Ci,new bi(1,1,1)).invert(),o=(new Di).perspective(60*hi,r.x/r.y,.1,40,!0),c=(new Di).multiplyMatrices(o,a),l=c.clone().invert(),h=c.projectPoint(new bi).z,p=new bi(0,0,h).applyMatrix(l),d=new bi(2,2,h).applyMatrix(l),m=Math.abs(d.x-p.x)/r.x,g=Math.abs(d.y-p.y)/r.y;return t.forEach(t=>{const e=this.getBoundingBoxByCreateInfo(t),i=e.getSize().multiply(new oi(m,g)).abs(),r=e.getCenter().subtract(s.getCenter()).multiply(new oi(m,-g));switch(t.type){case"sprite":((t,e,i)=>{const{id:s=(0,ii.generateGUID)(),url:r,name:a="图层",scale:o=[1,1],rotation:c=0}=t,l=n.images.findIndex(t=>t.url===r);let h={};if(r)if(l<0){const t={id:(0,ii.generateGUID)(),url:r,renderLevel:ii.spec.RenderLevel.BPlus};h={id:(0,ii.generateGUID)(),source:{id:t.id},flipY:!0,dataType:ii.spec.DataType.Texture,magFilter:ds.glContext.LINEAR,minFilter:ds.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},n.images.push(t),n.textures??(n.textures=[]),n.textures.push(h)}else{const t=n.textures?.find(t=>t.source.id===n.images[l].id);h={id:t?.id}}const p=Is(s,new bi(i.x,i.y,0),new bi(0,0,-c),e,new bi(o[0],o[1],1),a,h.id);Ds(n,p)})(t,i,r);break;case"text":((t,e,i)=>{const{id:s=(0,ii.generateGUID)(),name:r="文本",lineHeight:a,textWidth:o,fontFamily:c,fontSize:l,fontWeight:h=ii.spec.TextWeight.normal,fontStyle:p=ii.spec.FontStyle.normal,textAlign:d=ii.spec.TextAlignment.left,text:m,textColor:g,rotation:u=0,url:y,textHeight:f}=t;y&&!n.fonts?.find(t=>t.fontFamily===c)&&(n.fonts??(n.fonts=[]),n.fonts.push({fontFamily:c,fontURL:y}));const x={text:m,fontFamily:c,fontSize:l,textColor:g,fontWeight:h,letterSpace:0,textAlign:d,fontStyle:p,textWidth:o,textHeight:f??a,lineHeight:a},w=Cs(s,r,new bi(...i.toArray(),0),new bi(0,0,-u),new oi(e.x,e.y),x);Ds(n,w)})(t,i,r);break;case"null":(t=>{const{id:e=(0,ii.generateGUID)(),name:i="编组",scale:s=[1,1],children:r,rotation:a=0,position:o=[0,0]}=t,c=new oi(...o).multiply(new oi(m,-g)),l=Ps(e,i,new bi(c.x,c.y,0),new oi(...s),a);Ds(n,l),r.forEach(t=>{const e=n.items.find(e=>e.id===t);e&&(e.transform??(e.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.transform.position.x-=c.x,e.transform.position.y-=c.y)})})(t);break;case"video":((t,e,i)=>{const{id:s=(0,ii.generateGUID)(),url:r,name:a="视频",scale:o=[1,1],rotation:c=0,muted:l=!0,transparent:h=!1,playbackRate:p=1,volume:d=1}=t;n.videos??(n.videos=[]);const m=n.videos.findIndex(t=>t.url===r);let g={},u="";if(r)if(m<0){const t={id:(0,ii.generateGUID)(),url:r,renderLevel:ii.spec.RenderLevel.BPlus};u=t.id,g={id:(0,ii.generateGUID)(),source:{id:t.id},flipY:!0,dataType:ii.spec.DataType.Texture,magFilter:ds.glContext.LINEAR,minFilter:ds.glContext.LINEAR_MIPMAP_LINEAR,generateMipmap:!0},n.videos.push(t),n.textures??(n.textures=[]),n.textures.push(g)}else{const t=n.textures?.find(t=>t.source.id===n.videos[m].id);u=t.source.id,g={id:t?.id}}const y=bs(s,new bi(i.x,i.y,0),new bi(0,0,-c),e,new bi(o[0],o[1],1),a,l,h,d,p,g.id,u);Ds(n,y)})(t,i,r)}}),n}updateItemOrder(t,e){(0,ii.assertExist)(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)),a=r.children.filter(t=>this.isPluginItem(t)),o=n.findIndex(e=>e.getInstanceId()===t);if(-1===o)return void console.warn(`Item with id ${t} not found in siblings.`);let c=o;switch(e){case 0:c=n.length-1;break;case 1:c=0;break;case 2:c=Math.min(o+1,n.length-1);break;case 3:c=Math.max(o-1,0)}if(c===o)return;const[l]=n.splice(o,1);l&&n.splice(c,0,l),r.children=[...a,...n],this.refreshItemRenderOrder(i),this.sdk.pageData.items=[],this.addViewItemsByItems(this.sdk.pageData.items,i.items),this.emitter.emit("pageDataChange",this.sdk.pageData)}isPluginItem(t){return"ModelPluginItem"===t.name}refreshItemRenderOrder(t){(0,ii.assertExist)(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,i.setActive(!1),i.setActive(!0)}const i=this.getViewProperty();if(i){const{scene:e}=i,s=e.compositions.find(t=>t.id===e.compositionId)??e.compositions[0];if(s){const i=s.components.map(t=>e.components.find(e=>e.id===t.id)).find(t=>t?.dataType===ii.spec.DataType.CompositionComponent);i&&(i.items=t.items.map(t=>({id:t.getInstanceId()})))}}}getViewProperty(t){return(0,ii.assertExist)(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){(0,ii.assertExist)(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,a=new Ii;e?a.copyFrom(e):this.sdk.pageData.items.forEach(t=>{const e=this.getViewBoxById(t.id);a.union(e)});const{offsetWidth:o,offsetHeight:c}=this.container.parentElement,{scale:l,translation:h}=this.interactionUtils.viewportParam;if(a.isEmpty())this.pageMove(h.clone().negate()),this.pageZoom(1-l,void 0,!0);else{a.scale(1.1);const t=a.getCenter(),e=a.getSize(),p=o-i-r,d=c-s-n,m=new oi(o/2+i/2-r/2,c/2+s/2-n/2),g=e.x/p*d>e.y?1/(e.x/p):1/(e.y/d),u=(new oi).subtractVectors(m,t);this.setPageMove((new oi).addVectors(h,u)),this.setPageZoom(g*l,new oi(p/2+i,d/2+s),!0)}}getItemBoxById(t){const e=t=>{const e=new Ii,i=this.getViewItemById(t);if(i){const{position:t,size:s,rotation:r}=i.property;e.setFromCenterAndSize(new oi(...t),new oi(...s)).rotate(r[2]*hi)}return e};if(Array.isArray(t)){const i=[];return i.push(...t.map(e)),i}return e(t)}async setItemFontFamily(t,e,i){(0,ii.assertExist)(this.sdk.pageData,"You must call SDK#run() first");const s=this.getPlayerItemById(t),r=this.getActiveTargetScene();if(!s||!r||s.type!==ii.spec.ItemType.text)return void console.warn(`text item ${t} is not exsited.`);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 ds.AssetManager.loadFontFamily([{fontURL:i,fontFamily:e}]));const n=r.components.find(e=>e.item.id===t&&[ii.spec.DataType.TextComponent,ii.spec.DataType.RichTextComponent].includes(e.dataType));n&&(n.options.fontFamily=e),s.getComponent(ii.TextComponent).setFontFamily(e),s.getComponent(ii.TextComponent).isDirty=!0,this.player.gotoAndStop(this.sdk.pageData.time),this.refreshViewItem(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.`);Object.keys(t).forEach(async i=>{if(ts(e[i],t[i])||["type","id","size"].includes(i))return;const s="sprite"===e.type?ii.spec.ItemType.sprite:"null"===e.type?ii.spec.ItemType.null:"text"===e.type?ii.spec.ItemType.text:ii.spec.ItemType.video;if("scale"===i){const r=this.getPlayerItemById(t.id),n=r?.transform.scale,a=[(n?.x??1)/t[i][0],(n?.y??1)/t[i][1]];r?.setScale(...t[i],1);const o=this.getActiveTargetScene();this.changeSceneItemProperty(o,{itemId:e.id,type:s,propertyName:"size",propertyValue:a})}else if("url"===i){const r="sprite"===e.type?"image":"text"===e.type?"fontFamily":void 0;await this.changeItemProperty({itemId:e.id,type:s,propertyName:r,propertyValue:t[i]}),"size"in e&&"size"in t&&(t.size[0]!==e.size[0]||t.size[1]!==e.size[1])&&this.setSpriteSize(t.id,t.size)}else await this.changeItemProperty({itemId:e.id,type:s,propertyName:i,propertyValue:t[i]})})};Array.isArray(t)?t.map(e):e(t)}getViewBoxByBox(t){const{translation:e,scale:i,width:s,height:r}=this.interactionUtils.viewportParam,n=new oi(s/2,r/2);return t.clone().scale(i,n).translate(e)}playVideoItem(t){const e=this.getPlayerItemById(t);if(e?.type!==ii.spec.ItemType.video)return;e.getComponent(ri.VideoComponent).playVideo()}pauseVideoItem(t){const e=this.getPlayerItemById(t);if(e?.type!==ii.spec.ItemType.video)return;e.getComponent(ri.VideoComponent).pauseVideo()}getBoundingBoxByCreateInfo(t){const e=new Ii;switch(t.type){case"sprite":{const i=new oi(...t.position),s=new oi(...t.size);e.setFromCenterAndSize(i,s).rotate((t.rotation??0)*hi);break}case"text":{const i=new oi(...t.position??[0,0]),s=new oi(t.textWidth,t.textHeight??t.lineHeight);e.setFromCenterAndSize(i,s).rotate((t.rotation??0)*hi);break}case"video":{const i=new oi(...t.position),s=new oi(...t.size);e.setFromCenterAndSize(i,s).rotate((t.rotation??0)*hi);break}}return e}getBoundingBoxByCreateInfos(t){const e=new Ii,i=new Map,s=new Map;return t.forEach((e,r)=>{const n=e.id??(0,ii.generateGUID)();switch(s.set(r,n),e.type){case"sprite":case"video":case"text":i.set(n,this.getBoundingBoxByCreateInfo(e));break;case"null":{const s=new Ii;e.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!==ii.spec.ItemType.video)return 0;return e.getComponent(ri.VideoComponent).getCurrentTime()}setVideoItemPlayTime(t,e){const i=this.getPlayerItemById(t);if(i?.type!==ii.spec.ItemType.video)return;i.getComponent(ri.VideoComponent).setCurrentTime(e)}getPixelPositionByViewPosition(t){return this.interactionUtils.getPixelPositionByViewPoint(t)}},er=p(require("jszip"),1),ir=p(require("jszip"),1),sr="ready",rr="executable",nr="dispose",ar={APNG:"APNG",MP4:"MP4",WebM:"WebM",Images:"Images",WebP:"WebP",GIF:"GIF",AlphaMaskVideo:"AlphaMaskVideo"},or="idle",cr="convertImage",lr="transcoding",hr="audio",pr="jpeg",dr="webp",mr="png",gr=(ar.MP4,ar.WebP,ar.APNG,ar.GIF,ar.AlphaMaskVideo,ar.Images,ar.MP4,ar.WebP,ar.APNG,ar.GIF,ar.AlphaMaskVideo,ar.Images,"default"),ur="exporting",yr="success",fr="error",xr={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"},wr={highest:"1",high:"3",medium:"6",low:"9"},vr=class{constructor(t){d(this,"sampleRate"),d(this,"duration"),d(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))},a=t=>{s.setUint32(r,t,!0),r+=4},o=t=>{s.setUint16(r,t,!0),r+=2};n("RIFF"),a(e-8),n("WAVE"),n("fmt "),a(16),o(1),o(this.channels),a(this.sampleRate),a(this.sampleRate*this.channels*2),o(2*this.channels),o(16),n("data"),a(t);for(let e=0;e<t;e++)s.setUint8(r++,0);return new Uint8Array(i)}},Ir=["@vvfx/sdk","exporter"],Pr=class extends ii.EventEmitter{constructor(t){super(),d(this,"status",sr),d(this,"stage",or),d(this,"player"),u(this,_s),u(this,As),u(this,Es,0),u(this,Ts),u(this,Bs),u(this,ks),u(this,Ms),u(this,Vs,[]),u(this,Us),u(this,Gs),u(this,Fs,[]),u(this,Rs,0),u(this,Ls),u(this,Ws,[]),u(this,Hs,0),u(this,Os,0),u(this,Ns,0),u(this,js,0),u(this,$s,[]),u(this,Ks,[]),u(this,Ys,null),u(this,Js,!0),y(this,_s,ei({loggerInTranscoding:!1,multiThreading:!1},t)),this.onInit()}setMediaType(t){t!==g(this,_s).mediaType&&(g(this,_s).mediaType=t,this.onReset(),this.clearAllListeners(),this.onInit())}setOptions(t){const e=ei({},g(this,_s),t);g(this,_s).mediaType!==e.mediaType&&this.setMediaType(e.mediaType),y(this,_s,e)}get canceled(){return this.status===nr}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=g(this,Ls)?.time;return{name:i,startTime:r,oldTotalTime:s,newTotalTime:n,fps:g(this,Ls)?.fps??30,backgroundColor:g(this,Ls)?.backgroundColor??"#000000",loop:g(this,Ls)?.loop??!0,audioEnable:g(this,Ls)?.audioEnable??!1}}get mp4Config(){return g(this,Ls)?.mp4Config}get gifConfig(){return g(this,Ls)?.gifConfig}get apngConfig(){return g(this,Ls)?.apngConfig}get progress(){const t=g(this,Os)||1,e=g(this,Ns)||1,i=Math.min(t/e,1),s=Math.min(g(this,Hs),t)/t*.4,r=Math.min(g(this,js),t)/t*.6,n=Math.min(s+r,1);g(this,Ws)[g(this,Rs)]=i;const a=g(this,Ws).reduce((t,e,i)=>i<g(this,Rs)?t+(e||0):t,0)+n*i;return Math.min((o=a,Math.round(100*o)/100),1);var o}get transImageType(){return g(this,_s).mediaType===ar.MP4?pr:g(this,_s).mediaType===ar.WebP?dr:mr}async onInit(){try{Qi("log",[...Ir,"ready"],"starting"),this.status=sr,await this.loadHelper(g(this,_s).mediaType),this.status=rr,Qi("log",[...Ir,"ready"],"success"),this.emit("ready",g(this,_s).mediaType)}catch(t){this.status=nr,this.onError(t)}finally{return this.status}}onReset(){this.stage=or,clearTimeout(g(this,As)),window.cancelAnimationFrame(g(this,Es)),y(this,Es,0),y(this,As,void 0),this.player?.pause(),this.clearTaskInfo(),this.setProgress()}onError(t){Qi("log",[...Ir,"error"],t),this.onFinish(!1,g(this,$s),g(this,Ks),g(this,Ys)),this.emit("error",t),this.dispose()}onFinish(t,e,i,s){Qi("log",[...Ir,"finish"],t?"success":"failed"),this.emit("progress",1),this.emit("finish",t,e,i,s)}async loadHelper(t){const e="WebP"===t&&!g(this,ks),i=[ar.MP4,ar.APNG,ar.GIF,ar.AlphaMaskVideo].includes(t)&&!g(this,Bs);e&&y(this,ks,await xs()),i&&(y(this,Bs,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,a={classWorkerURL:await i(ys.CLASSWORKER,"text/javascript"),coreURL:"",wasmURL:""};return n?(a.coreURL=await i(ys.MT.CORE,"text/javascript"),a.wasmURL=await i(ys.MT.WASM,"application/wasm"),a.workerURL=await i(ys.MT.WORKER,"text/javascript")):(a.coreURL=await i(ys.DEFAULT.CORE,"text/javascript"),a.wasmURL=await i(ys.DEFAULT.WASM,"application/wasm")),await r.load(a),r}catch(t){throw t instanceof Error?t:new Error(`Unknown error occurred while loading FFmpeg: ${String(t)}`)}}({multiThreading:g(this,_s).multiThreading})),(0,ii.assertExist)(g(this,Bs)),g(this,Bs).on("log",({message:t})=>{if(g(this,_s).loggerInTranscoding&&Qi("log",[...Ir,"transcoding log"],t),this.canceled||this.stage!==lr)return;const e=/frame=\s*(\d+)/.exec(t),i=e?.[1],s=Number(i);s>=g(this,js)&&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&&y(this,Ws,t.completedTaskPercentArray),void 0!==t?.currentTaskFrameIndex&&y(this,Hs,t.currentTaskFrameIndex),void 0!==t?.currentTaskTotalFrames&&y(this,Os,t.currentTaskTotalFrames),void 0!==t?.currentTaskInTranscodingFrameIndex&&y(this,js,t.currentTaskInTranscodingFrameIndex),void 0!==t?.allTaskFrames&&y(this,Ns,t.allTaskFrames),this.emit("progress",this.progress)}forwardPlayerTime(t,e=!1){(0,ii.assertExist)(this.player);const{oldTotalTime:i,startTime:s}=this.config;(0,ii.assertExist)(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){y(this,Us,new vr),g(this,Bs)?g(this,Bs).writeFile(t,g(this,Us).getBuffer()):Qi("log",[...Ir,"getWavAudio"],"ffmpegCore is not ready")}async getImagesZip(t,e){const i=new ir.default,s=i.folder(t);return(0,ii.assertExist)(s),g(this,Fs).forEach((t,i)=>{s.file(t,e[i])}),i.generateAsync({type:"arraybuffer"})}getWebP(){(0,ii.assertExist)(g(this,ks));const t=Math.round(1e3/this.config.fps/1),e="out.webp",i=`${g(this,Fs).join(` -d ${t} `)} -d ${t} -o ${e} -loop ${this.config.loop?0:1}`.split(" "),s=g(this,ks).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]}(g(this,ks),i);Zi(r&&n,"getWebP has error"),s(r,n);const a=g(this,ks).FS.readFile(e);return g(this,Fs).forEach(t=>{g(this,ks)?.FS.unlink(t)}),a}async getAPNG(){(0,ii.assertExist)(g(this,Bs));this.stage=lr;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 g(this,Bs).exec(["-framerate",`${this.config.fps}`,"-start_number","1","-i",`image-%4d.${this.transImageType}`,"-vf",r.join(","),"-plays",this.config.loop?"0":"1","-compression_level",wr[s],"-y",t]))throw new Error("the command executed by ffmpeg to generate a apng failed.");return t}async getGIF(){(0,ii.assertExist)(g(this,Bs));this.stage=lr;const t="export.gif",{fps:e,scale:i="-1:-1",quality:s="highest"}=this.gifConfig??{},r=[`scale=${i}:${xr[s]}`];e&&r.unshift(`fps=${e}`);if(0!==await g(this,Bs).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){(0,ii.assertExist)(g(this,Bs));this.stage=lr;const i="export.mp4";let s;const r=e?",setpts=PTS/"+Math.round(t/e*100)/100:"",n=e??t,{isExportLastFramePNG:a}=this.mp4Config??{};this.config.audioEnable&&!g(this,Us)&&(y(this,Gs,"audio.wav"),this.getWavAudio(g(this,Gs)));if(0!==await g(this,Bs).exec(["-framerate",String(this.config.fps),"-start_number",String(1),"-i",`image-%4d.${this.transImageType}`,"-c:v","libx264","-crf","23","-pix_fmt","yuv420p","-vf",`pad=ceil(iw/2)*2:ceil(ih/2)*2${r}`,"-y",i]))throw new Error("the command executed by ffmpeg to generate a mp4 failed.");if(g(this,Gs)&&g(this,Us)){this.stage=hr,s="export-with-audio.mp4";if(0!==await g(this,Bs).exec(["-i",i,"-i",g(this,Gs),"-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 o=s??i,c=`${Date.now()}.png`;return a&&await g(this,Bs).exec(["-sseof","-1","-i",o,"-vframes","1","-y",c]),s&&g(this,Bs).deleteFile(i).catch(()=>{Qi("log",[...Ir,"ffmpeg delete file error"])}),{video:o,lastFrame:c}}async getAlphaMaskVideo(t,e){(0,ii.assertExist)(g(this,Bs));this.stage=lr;const i="export.mp4",s=e?",setpts=PTS/"+Math.round(t/e*100)/100:"";return await g(this,Bs).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){(0,ii.assertExist)(g(this,Bs));const i=g(this,_s).mediaType===ar.APNG,s=g(this,_s).mediaType===ar.GIF,r=g(this,_s).mediaType===ar.AlphaMaskVideo,n=g(this,_s).mediaType===ar.MP4;let a="",o="";try{if(i&&(a=await this.getAPNG()),s&&(a=await this.getGIF()),n){const{video:i,lastFrame:s}=await this.getMP4(t,e);a=i,o=s}r&&(a=await this.getAlphaMaskVideo(t,e)),this.stage=or}catch(t){throw Qi("log",[...Ir,"getVideoByType","failed"],t),t}finally{for(const t of g(this,Fs))t&&g(this,Bs).deleteFile(t)}let c=null,l=null;try{(0,ii.assertExist)(a);const t=await g(this,Bs).readFile(a);if(c="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t),o){const t=await g(this,Bs).readFile(o).catch(()=>{Qi("log",[...Ir,"ffmpeg read extra file error"])});l="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t)}}finally{g(this,Bs).deleteFile(a).catch(()=>{Qi("log",[...Ir,"ffmpeg delete file error"])})}return{data:c,extra:l}}onRecordWebM(t){const e=new MediaRecorder(t.captureStream(this.config.fps),{mimeType:"video/webm;codecs=vp9"});y(this,Ms,e),g(this,Ms).start(0);const i=[];g(this,Ms).ondataavailable=t=>{t.data.size>0&&i.push(t.data)},y(this,Vs,i)}async onExportImageFrame(t){try{if(this.canceled)return;const{canvas:s,imageBuffers:r,startTime:n,oldTotalTime:a,newTotalTime:o}=t;(0,ii.assertExist)(this.player),(0,ii.assertExist)(g(this,Ts));const c=g(this,Hs)+1;this.stage=cr,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:c}),g(this,_s).loggerInTranscoding&&Qi("log",[...Ir,"converting log"],`converting ${c} frame image`),c>=1&&this.forwardPlayerTime(c/this.config.fps+n),fs(g(this,Ts),s,this.config.backgroundColor);let l=s;g(this,_s).mediaType===ar.AlphaMaskVideo&&((0,ii.assertExist)(g(this,_s).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),a=r.data;for(let t=0;t<a.length;t+=4){const e=Math.max(0,(a[t+3]??0)-5)/250*255;e<=0?(a[t]=0,a[t+1]=0,a[t+2]=0,a[t+3]=255):(a[t]=(a[t]??0)*e/255,a[t+1]=(a[t+1]??0)*e/255,a[t+2]=(a[t+2]??0)*e/255,a[t+3]=255)}s.putImageData(r,0,0);const o=n.data;for(let t=0;t<o.length;t+=4){const e=Math.max(0,(o[t+3]??0)-5)/250*255;o[t]=e,o[t+1]=e,o[t+2]=e,o[t+3]=255}s.putImageData(n,t.width,0)}(s,g(this,_s).extraCanvas),l=g(this,_s).extraCanvas);const h=await async function(t,e,i){return new Promise((s,r)=>{t.toBlob(t=>{t?s(t.arrayBuffer()):r("toBlob failed")},e,i)})}(l,`image/${this.transImageType}`,1),p=`image-${e=c,i=4,String(e).padStart(i,"0")}.${this.transImageType}`;g(this,_s).mediaType===ar.Images?r.push(h):g(this,_s).mediaType===ar.WebP?((0,ii.assertExist)(g(this,ks)),g(this,ks).FS.writeFile(p,new Uint8Array(h))):((0,ii.assertExist)(g(this,Bs)),await g(this,Bs).writeFile(p,new Uint8Array(h))),g(this,Fs).push(p);if(c===g(this,Os)){this.player?.pause(),await new Promise(t=>{window.requestAnimationFrame(t)});let t=null,e=null;if("Images"===g(this,_s).mediaType)t=await this.getImagesZip(this.config.name,r);else if("WebP"===g(this,_s).mediaType)t=this.getWebP();else if([ar.MP4,ar.APNG,ar.GIF,ar.AlphaMaskVideo].includes(g(this,_s).mediaType)){const{data:i,extra:s}=await this.getVideoByType(a,o)??null;t=i,e=s}t&&(Qi("log",[...Ir,"done"],"success"),this.emit("done",g(this,Ls),!0,t,e))}else y(this,Es,window.requestAnimationFrame(()=>{this.canceled||this.onExportImageFrame({canvas:s,imageBuffers:r,startTime:n,oldTotalTime:a,newTotalTime:o})}))}catch(t){Qi("log",[...Ir,"onExportImageFrame","failed"],t),this.emit("done",g(this,Ls),!1,void 0,void 0)}var e,i}async onExportWebMFrame(t){try{if(this.canceled)return;(0,ii.assertExist)(this.player),(0,ii.assertExist)(g(this,Ts));const e=g(this,Hs)+1;if(this.stage=cr,this.setProgress({currentTaskInTranscodingFrameIndex:0,currentTaskFrameIndex:e}),g(this,_s).loggerInTranscoding&&Qi("log",[...Ir,"converting log"],`converting ${e} frame image`),fs(g(this,Ts),t,this.config.backgroundColor),1===e&&(this.player.play(),this.onRecordWebM(t)),e<g(this,Os))y(this,Es,window.requestAnimationFrame(()=>{this.canceled||this.onExportWebMFrame(t)}));else{this.player?.pause(),g(this,Ms)?.stop();const t=new Blob(g(this,Vs),{type:"video/webm"}),e=await t.arrayBuffer();Qi("log",[...Ir,"done"],"success"),this.emit("done",g(this,Ls),!0,e,void 0)}}catch(t){Qi("log",[...Ir,"done"],"failed",t),this.emit("done",g(this,Ls),!1,void 0,void 0)}}async runTask(t){try{if(this.canceled)return;(0,ii.assertExist)(this.player),(0,ii.assertExist)(g(this,Ts));const{size:e,startTime:i,containerCanvas:s}=t,{oldTotalTime:r,newTotalTime:n}=this.config,[a,o]=e;if(g(this,Ts).width=a,g(this,Ts).height=o,s.width=a,s.height=o,this.player.resize(),y(this,Fs,[]),[ar.MP4,ar.APNG,ar.Images,ar.WebP,ar.GIF,ar.AlphaMaskVideo].includes(g(this,_s).mediaType)){const t={canvas:s,imageBuffers:[],startTime:i,oldTotalTime:r,newTotalTime:n};await this.onExportImageFrame(t)}else"WebM"===g(this,_s).mediaType&&await this.onExportWebMFrame(s)}catch(t){Qi("log",[...Ir,"run task error"],t),this.emit("done",g(this,Ls),!1,void 0,void 0)}}clearTaskInfo(){y(this,Rs,0),y(this,Ls,void 0),y(this,Ws,[]),y(this,Hs,0),y(this,Os,0),y(this,Ns,0),y(this,js,0),y(this,$s,[]),y(this,Ks,[]),y(this,Ys,[]),y(this,Js,!0)}clearFFMpegCore(){if(g(this,Bs)){for(const t of g(this,Fs))t&&g(this,Bs).deleteFile(t);y(this,Fs,[]),g(this,Bs).terminate(),y(this,Bs,void 0)}}clearImage2WebPCore(){g(this,ks)&&(g(this,ks).FS.quit(),y(this,ks,void 0))}clearMediaRecorder(){g(this,Ms)&&(g(this,Ms).stop(),y(this,Ms,void 0)),y(this,Vs,[])}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,g(this,$s),g(this,Ks),g(this,Ys)),this.status=nr,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),Qi("log",Ir,"canceled"))}async onExport(t){const e=t.length;try{if(this.status===sr)return Qi("log",[...Ir],"readying"),void this.on("ready",()=>{this.onExport(t)});if(this.status===nr){if(await this.onInit()===nr)throw new Error("init environment failed")}if(this.clearTaskInfo(),!g(this,Ts)){const t=document.createElement("canvas");t.dataset.key="player-canvas",y(this,Ts,t)}this.player||(this.player=new ii.Player({canvas:g(this,Ts),pixelRatio:1,transparentBackground:!0,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[a,o]of t.entries()){if(this.canceled){n=!1;break}y(this,Rs,a),y(this,Ls,o);const{size:t,scene:c}=o;await new Promise(async l=>{try{if(!this.player)throw new Error("player not found");Qi("log",[...Ir,"export"],"start",o),ws(this.player);const h=JSON.parse(JSON.stringify(c));await this.player.loadScene(h,{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,h)=>{this.off("done",m),i[a]=o,e&&c?(s[a]=c,r[a]=h??null):n=!1,l()};this.on("done",m);const g={size:t,startTime:d,containerCanvas:e};await this.runTask(g)}catch(t){Qi("log",[...Ir,"export error"],t),n=!1,l()}})}y(this,$s,i),y(this,Ks,s),y(this,Ys,r),y(this,Js,n)}catch(t){this.onError(t),y(this,Js,!1)}e>=1&&g(this,Js)?this.onFinish(!0,g(this,$s),g(this,Ks),g(this,Ys)):this.onFinish(!1,g(this,$s),g(this,Ks),g(this,Ys))}dispose(){this.status=nr,this.onReset(),this.clearMediaRecorder(),this.clearFFMpegCore(),this.clearImage2WebPCore(),this.clearAllListeners(),this.player?.dispose(),this.player=void 0,g(this,Ts)?.remove(),y(this,Ts,void 0),y(this,Gs,void 0),y(this,Us,void 0)}};_s=new WeakMap,As=new WeakMap,Es=new WeakMap,Ts=new WeakMap,Bs=new WeakMap,ks=new WeakMap,Ms=new WeakMap,Vs=new WeakMap,Us=new WeakMap,Gs=new WeakMap,Fs=new WeakMap,Rs=new WeakMap,Ls=new WeakMap,Ws=new WeakMap,Hs=new WeakMap,Os=new WeakMap,Ns=new WeakMap,js=new WeakMap,$s=new WeakMap,Ks=new WeakMap,Ys=new WeakMap,Js=new WeakMap;var Cr={[ar.MP4]:{suffix:"mp4",error:"export mp4 is error"},[ar.GIF]:{suffix:"gif",error:"export gif is error"},[ar.Images]:{suffix:"zip",error:"export Images is error"},[ar.APNG]:{suffix:"apng",error:"export APNG is error"},[ar.WebP]:{suffix:"webp",error:"export WebP is error"},[ar.AlphaMaskVideo]:{suffix:"mp4",error:"export AlphaMaskVideo is error"},[ar.WebM]:{suffix:"webm",error:"export WebM is error"}},br=class extends ii.EventEmitter{constructor(t){super(),d(this,"_options"),d(this,"_status",gr),d(this,"_exportMedia"),this._options=t,this._exportMedia=new Pr(t)}get status(){return this._status}setOptions(t){const e=ei({},this._options,t);this._options=e,this._exportMedia.setOptions(e)}downloadByMediaBuffers(t,e,i){const{suffix:s,error:r}=Cr[this._options.mediaType];if(!e?.length||!s)return void Qi("info",["@vvfx/sdk","downloadByMediaBuffers is error","buffers or suffix is empty"]);const n=t[0]?.folderName,a=new er.default;e.forEach((e,r)=>{if(!e)return;const{name:n}=t[r]??{};n&&(a.file(`${n}.${s}`,e),i?.[r]?.byteLength&&a.file(`${n}.png`,i[r]))}),a.generateAsync({type:"blob"}).then(t=>{!function(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)}(t,`${n}.zip`,"application/zip")}).catch(t=>{Qi("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=fr,Qi("error",["@vvfx/sdk"],"export is error",t)}onExport(t){this._status=ur,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?yr:fr,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=fr,this._exportMedia.onCancel(),this.emit("complete",!1,[],[],[])}dispose(){this._exportMedia.dispose()}},Dr=class{constructor(){d(this,"enabled",!0),d(this,"_player"),d(this,"_container"),this._container=document.createElement("canvas"),this._player=new ii.Player({canvas:this._container,manualRender:!0,renderOptions:{willCaptureImage:!0}})}async generate(t,e,i,s,r){if(!this.enabled)return void console.warn("Screen shot is not opened, use #SDK.setConfig() open this feature.");ws(this._player);const[n,a]=e;this._container.width=n,this._container.height=a,this._player.resize();const o=JSON.parse(JSON.stringify(t));await this._player.loadScene(o),this._player.gotoAndStop(s);const[c,l]=i,h=document.createElement("canvas");h.width=c,h.height=l;const p=h.getContext("2d");r??(r=[255,255,255,1]),p&&(p.fillStyle=`rgba(${r.join(",")})`,p.fillRect(0,0,c,l),this.drawImageCover(p,this._player.canvas,0,0,c,l,.5,.5));const d=h.toDataURL("image/png");return ws(this._player),d}dispose(){this._player.dispose()}drawImageCover(t,e,i,s,r,n,a,o,c){2===arguments.length&&(i=s=0,r=t.canvas.width,n=t.canvas.height),a="number"==typeof a?li(a,0,1):.5,o="number"==typeof o?li(o,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 l=c.width,h=c.height,p=Math.min(r/l,n/h);let d=l*p,m=h*p,g=1;d<r&&(g=r/d),Math.abs(g-1)<1e-14&&m<n&&(g=n/m),d*=g,m*=g;const u=Math.max(l/(d/r),0),y=Math.max(h/(m/n),0),f=Math.min((l-u)*a,l),x=Math.min((h-y)*o,h);t.drawImage(e,f+c.left,x+c.top,u,y,i,s,r,n)}},Sr={topAdsorption:"T",leftAdsorption:"L",rightAdsorption:"R",bottomAdsorption:"B",centerAdsorption:"C",bottomCenterAdsorption:"BC"},zr=class{constructor(t){d(this,"_player"),d(this,"_container"),d(this,"size",[0,0]),d(this,"_pageDataUtils"),this._container=document.createElement("canvas"),this._player=new ii.Player({canvas:this._container,manualRender:!0}),this._pageDataUtils=t}async adjustment(t,e,i,s,r,n){if(!Er.config.sizeAdaptConfig.enabled)return console.warn("Size adapt is not opened, use #SDK.setConfig() open this feature."),t;this._player??(this._player=new ii.Player({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],ws(this._player),this._player.resize();const a=JSON.parse(JSON.stringify(t));await this._player.loadScene(a,{reusable:!0,autoplay:!1}),this._player.gotoAndStop(e);const o=this._player.getCompositions()[0];if(o){const[e,a]=s,c=i[0]/i[1],l=e/a;c>l&&this.keepDistribute(t,o,l/c,s);const[h,p,d,m]=r,g=e-d-m,u=a-h-p,y=[(d-m)/2,(h-p)/2],f=(new Ii).setFromCenterAndSize(new oi(e,a).divide(2),new oi(e,a)),x=(new Ii).setFromCenterAndSize(new oi(e,a).divide(2).add(new oi(...y)),new oi(g,u));this.keepAdsorption("topAdsorption",t,o,y,f,x,n),this.keepAdsorption("bottomAdsorption",t,o,y,f,x,n),this.keepAdsorption("leftAdsorption",t,o,y,f,x,n),this.keepAdsorption("rightAdsorption",t,o,y,f,x,n),this.keepAdsorption("centerAdsorption",t,o,y,f,x,n),this.keepDoubleAdsorption("bottomCenterAdsorption",t,o,y,f,x)}return t}keepDistribute(t,e,i,s){const r=t=>{const i=(new Di).copyFrom(e.camera.getViewProjectionMatrix());return(new oi).copyFrom(t.applyMatrix(i).toVector2()).toViewCoordinate(s[0],s[1])};["topAdsorption","centerAdsorption","bottomAdsorption"].forEach(n=>{e.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===Sr[n]&&!t.parentId).forEach(n=>{const a=e.items.filter(t=>t.parentId===n.getInstanceId()),o=a.find(t=>"check-area"===t.name),c=o?this.getViewBoxByHeadlessPlayerItem(o,[],r):this.getViewBoxByHeadlessPlayerItem(n,a,r),l=n.transform.position.clone(),h=c.getCenter(),p=new oi(...s.map(t=>t/2)),d=h.y-p.y;((t,i,r)=>{const{z:n}=t.transform.getWorldPosition(),{x:a,y:o}=e.camera.getInverseVPRatio(n);t.transform.translate(2*i*a/s[0],-2*r*o/s[1],0)})(n,0,d/i-d),n.transform.updateLocalMatrix();const m=n.transform.position.clone().subtract(l).toArray();this._pageDataUtils.changeSceneItemProperty(t,{itemId:n.getInstanceId(),type:n.type,propertyName:"position",propertyValue:m})})})}keepAdsorption(t,e,i,s,r,n,a){const{x:o,y:c}=r.getSize(),l=(t,e,s)=>{const{z:r}=t.transform.getWorldPosition(),{x:n,y:a}=i.camera.getInverseVPRatio(r);t.transform.translate(2*e*n/o,-2*s*a/c,0)},h=t=>{const e=(new Di).copyFrom(i.camera.getViewProjectionMatrix());return(new oi).copyFrom(t.applyMatrix(e).toVector2()).toViewCoordinate(o,c)},p=Sr[t];i.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===p&&!t.parentId).forEach(r=>{const o=i.items.filter(t=>t.parentId===r.getInstanceId()),c=o.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,g=["leftAdsorption","topAdsorption"].includes(t)?"min":"max",u=["leftAdsorption","topAdsorption"].includes(t)?"max":"min",y=3===r.name.split("-").length,f=Number(r.name.split("-")[1]),x=new oi,w=[1,1],v=c?this.getViewBoxByHeadlessPlayerItem(c,[],h):this.getViewBoxByHeadlessPlayerItem(r,o,h);l(r,...s),v.getSize().x>n.getSize().x&&(w[0]=n.getSize().x/v.getSize().x,w[1]=n.getSize().x/v.getSize().x,r.scale(...w,1)),r.transform.updateLocalMatrix();const I=c?this.getViewBoxByHeadlessPlayerItem(c,[],h):this.getViewBoxByHeadlessPlayerItem(r,o,h),P=new oi;if(!n.containsBox(I)){const{min:t,max:e}=I,{min:i,max:s}=n;P.x+=t.x<i.x?i.x-t.x:0,P.x+=e.x>s.x?s.x-e.x:0,P.y+=t.y<i.y?i.y-t.y:0,P.y+=e.y>s.y?s.y-e.y:0,l(r,...P.toArray()),r.transform.updateLocalMatrix()}const C=c?this.getViewBoxByHeadlessPlayerItem(c,[],h):this.getViewBoxByHeadlessPlayerItem(r,o,h);if(!Number.isNaN(f)&&y)if("centerAdsorption"!==t){const t=Math.abs(C[u][d]-n[g][d]),e=n.getSize()[d]*f;t>e&&(x[d]=(e-t)*m,l(r,...x.toArray()),r.transform.updateLocalMatrix())}else{const t=C.getSize()[a],e=n.getSize()[a];if(t/e>f){const i=e*f/t;r.scale(i,i,1),w[0]*=i,w[1]*=i}}const b=c?this.getViewBoxByHeadlessPlayerItem(c,[],h):this.getViewBoxByHeadlessPlayerItem(r,o,h),D=i.items.filter(t=>"T"===t.name.split("-")[0]?.toLocaleUpperCase()&&!t.parentId),S=new Ii;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,[],h):this.getViewBoxByHeadlessPlayerItem(t,e,h);S.union(r)}),!S.isEmpty()&&S.max.y>b.min.y)if("centerAdsorption"===t){const t=S.max.y-b.min.y;l(r,0,t),r.transform.updateLocalMatrix()}else if(["leftAdsorption","rightAdsorption"].includes(t)){const t=b.getSize().y,e=n.getSize().y-(S.max.y-n.min.y);let i=S.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}l(r,0,i),r.transform.updateLocalMatrix()}const z=r.transform.position.clone().subtract(p).toArray();this._pageDataUtils.changeSceneItemProperty(e,{itemId:r.getInstanceId(),type:r.type,propertyName:"position",propertyValue:z}),this._pageDataUtils.changeSceneItemProperty(e,{itemId:r.getInstanceId(),type:r.type,propertyName:"size",propertyValue:w})})}keepDoubleAdsorption(t,e,i,s,r,n){const{x:a,y:o}=r.getSize(),c=(t,e,s)=>{const{z:r}=t.transform.getWorldPosition(),{x:n,y:c}=i.camera.getInverseVPRatio(r);t.transform.translate(2*e*n/a,-2*s*c/o,0)},l=t=>{const e=(new Di).copyFrom(i.camera.getViewProjectionMatrix());return(new oi).copyFrom(t.applyMatrix(e).toVector2()).toViewCoordinate(a,o)},h=Sr[t];i.items.filter(t=>t.name.split("-")[0]?.toLocaleUpperCase()===h&&!t.parentId).forEach(t=>{const r=i.items.filter(e=>e.parentId===t.getInstanceId()),a=r.find(t=>"check-area"===t.name),o=t.transform.position.clone(),h=3===t.name.split("-").length,p=Number(t.name.split("-")[1]),d=[1,1],m=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,r,l);c(t,...s),m.getSize().x>n.getSize().x&&(d[0]=n.getSize().x/m.getSize().x,d[1]=n.getSize().x/m.getSize().x,t.scale(...d,1)),t.transform.updateLocalMatrix();const g=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,r,l);if(!Number.isNaN(p)&&h){const e=g.getSize().y,i=n.getSize().y;if(e/i>p){const s=i*p/e;t.scale(s,s,1),d[0]*=s,d[1]*=s}}const u=a?this.getViewBoxByHeadlessPlayerItem(a,[],l):this.getViewBoxByHeadlessPlayerItem(t,r,l),y=new oi;if(!n.containsBox(u)){const{min:e,max:i}=u,{min:s,max:r}=n;y.x+=e.x<s.x?s.x-e.x:0,y.x+=i.x>r.x?r.x-i.x:0,y.y+=e.y<s.y?s.y-e.y:0,y.y+=i.y>r.y?r.y-i.y:0,c(t,...y.toArray()),t.transform.updateLocalMatrix()}const f=t.transform.position.clone().subtract(o).toArray();this._pageDataUtils.changeSceneItemProperty(e,{itemId:t.getInstanceId(),type:t.type,propertyName:"position",propertyValue:f}),this._pageDataUtils.changeSceneItemProperty(e,{itemId:t.getInstanceId(),type:t.type,propertyName:"size",propertyValue:d})})}getViewBoxByHeadlessPlayerItem(t,e,i){const s=new Ii,{transform:r,composition:n}=t;switch(t.type){case ii.spec.ItemType.sprite:case ii.spec.ItemType.plugin:case ii.spec.ItemType.video:case ii.spec.ItemType.richtext:case ii.spec.ItemType.text:case ii.spec.ItemType.shape:{r.setValid(!0),r.updateLocalMatrix();const{size:t}=r,a=(new Di).copyFrom(n?.transform.getWorldMatrix()??new Di).invert().multiply(r.getWorldMatrix()),{x:o,y:c}=t.clone().divide(2),l=new bi(o,c,0).applyMatrix(a),h=new bi(o,-c,0).applyMatrix(a),p=new bi(-o,-c,0).applyMatrix(a),d=new bi(-o,c,0).applyMatrix(a),m=i(l).round(2),g=i(h).round(2),u=i(p).round(2),y=i(d).round(2);s.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=>s.union(t));break}case ii.spec.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}dispose(){this._player?.dispose()}},_r=class{constructor(){d(this,"index",-1),d(this,"operations",[]),d(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=[]}},Ar=class t{constructor(e,i="template"){d(this,"_eventEmitter",new ii.EventEmitter),d(this,"_pageData"),d(this,"_screenShot"),d(this,"_exporter"),d(this,"_pageDataUtils"),d(this,"_sizeAdapt"),d(this,"_gestureHandler"),d(this,"disposables",[]),d(this,"_isSwitchScene",!1),d(this,"_undoRedo",new _r),d(this,"player"),d(this,"_container"),d(this,"_playerContainer"),d(this,"on",this._eventEmitter.on),this._container=e,t.config.mode=i;const s=document.createElement("div"),[r,n]="editor"===i?[this._container.clientWidth,this._container.clientHeight]:[this._container.offsetWidth,this._container.offsetHeight];this._playerContainer=s,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=`${n}px`,this._container.appendChild(s),this.player=new ii.Player({container:this._playerContainer,pixelRatio:2,interactive:!0,env:"editor"}),this.player.on("update",()=>{if((0,ii.assertExist)(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._eventEmitter.on("pageDataChange",t=>{this._pageData=t,this._gestureHandler.render()}),this._eventEmitter.on("preSelectedItemChange",t=>{(0,ii.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=t,this._gestureHandler.render()}),this._eventEmitter.on("selectedViewChange",t=>{(0,ii.assertExist)(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._pageDataUtils=new tr(this.player,s,this._eventEmitter,this),this._gestureHandler=new ps(e),this._screenShot=new Dr,this._sizeAdapt=new zr(this._pageDataUtils);const a=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()}});a.observe(e),this.disposables.push(()=>{a.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,s)=>{const{size:r,scene:n,export:{name:a,...o}}=t,c=r?.[0]&&r?.[1]?` (${s+1})_${r[0]}×${r[1]}`:` (${s+1})`;let l="";return l=a?function(t,e){if(!e.includes(t))return t;let i=1,s=`${t} (${i})`;for(;e.includes(s);)i++,s=`${t} (${i})`;return s}(a,i):`${e}${c}`,i.push(l),{folderName:e,name:l,size:r,scene:JSON.parse(JSON.stringify(n)),...o}})}dispose(){this.player?.dispose(),this._screenShot?.dispose(),this._pageData=void 0,this._playerContainer.remove(),this?._exporter?.dispose(),this._screenShot.dispose(),this._gestureHandler.dispose(),this.disposables.forEach(t=>{t()})}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",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=`${s}px`,this.player??(this.player=new ii.Player({container:this._playerContainer,interactive:!0,pixelRatio:window.devicePixelRatio||1,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:vs(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 br(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,a=[];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;a.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 o=JSON.parse(JSON.stringify(s));const c=o.compositions.find(t=>t.id===o.compositionId)??o.compositions[0];(0,ii.assertExist)(c);const l=c.previewSize??[750,1624],h=l,p=n.size??l;c.previewSize=p;const d=c.duration??0,m=n.safeArea??[0,0,0,0];t.config.sizeAdaptConfig.enabled&&(o=await this._sizeAdapt.adjustment(o,d,h,p,m,n.adaptionDirection)),(i=n.export).time??(i.time=d),a.push({...n,size:p,safeArea:m,previewSafeAreas:[...n.previewSafeAreas??[]],id:e+1,scene:o,ignoreInteraction:!1})}const o=a[0]?.scene;if(!o)return void console.warn("SDK need one view property at least.");const c=o.compositions.find(t=>t.id===o.compositionId)??o.compositions[0],l={...n,zoom:1,translation:[0,0],asyncMode:n.asyncMode??!1},h=(c?.duration??0)-.1,p=t.config.pageConfig.staticPreview?1:0;this._pageData={scene:JSON.parse(JSON.stringify(s)),time:h,property:l,activeData:{view:a[p].id,selectedItems:[]},items:[],viewProperties:a,playing:!1},this._pageDataUtils.init(),await this._gestureHandler.init(this._pageDataUtils,this._eventEmitter),this._gestureHandler.ignoreInteraction=!!a[1]?.ignoreInteraction,t.config.gestureHandlerConfig.preferenceGizmoConfig.safeAreaEnabled=l.safeAreaPreview,this._eventEmitter.emit("progress",{duration:h,time:h,end:this.player.getCompositions()[0]?.isDestroyed??!1,paused:!this._pageData.playing}),await this._pageDataUtils.loadScene(this._pageData.activeData.view),this._pageDataUtils.refreshPageTime(h)}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.getPageData()),this.initExporter(t.config.exportConfig)}getPageData(){return JSON.parse(JSON.stringify(this._pageData))}getActiveItems(){return(0,ii.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.selectedItems}setPreSelectedItem(t){(0,ii.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem=t}getPreSelectedItem(){return(0,ii.assertExist)(this._pageData,"You must call SDK#run() first"),this._pageData.activeData.preSelectedItem??""}setSelectedItems(t){this._pageDataUtils.clearPreSelectedItem(),this._pageDataUtils.clearSelectedItems(),this._pageDataUtils.addSelectedItems([...t])}getItemProperty(t){(0,ii.assertExist)(this._pageData,"You must call SDK#run() first");const e=this._pageData.items.find(e=>e.id===t.itemId);if(e&&e.type===t.type)return{type:e.type,property:e.property}}getItemPropertyValue(t){(0,ii.assertExist)(this._pageData,"You must call SDK#run() first");const e=this.getItemProperty(t)?.property?.[t.propertyName];return e}async setItemPropertyValue(t){(0,ii.assertExist)(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.changeItemProperty(t),this._gestureHandler.render(),t&&this._eventEmitter.emit("itemPropertyChange",{id:t.itemId,property:t.propertyName}),this._eventEmitter.emit("pageDataChange",this.getPageData()))}async generateScreenShot(t,e=[300,400],i,s){(0,ii.assertExist)(this._pageData,"You must call SDK#run() first");const r=this.getViewProperty(t);if(!r)return"";const{scene:n,size:[a,o]}=r,c=n.compositionId,l=n.compositions.find(t=>t.id===c);i??(i=l?.duration??0);const h=JSON.parse(JSON.stringify(n));return await this._screenShot.generate(h,[a,o],e,i,s)}async switchScene(t){if((0,ii.assertExist)(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.getPageData()),this._isSwitchScene=!1}getPageConfig(){return(0,ii.assertExist)(this._pageData,"You must call SDK#run() first"),{safeAreaPreview:this._pageData.property.safeAreaPreview,zoom:this._pageData.property.zoom,adsorption:this._pageData.property.adsorption,asyncMode:this._pageData.property.asyncMode,translation:this._pageData.property.translation}}setPageConfig(e){(0,ii.assertExist)(this._pageData,"You must call SDK#run() first");const{adsorption:i,safeAreaPreview:s,zoom:r}=this._pageData.property;this._pageData.property={...this._pageData.property,...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){(0,ii.assertExist)(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&&(ws(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)}getViewItems(){return this.getPageData()?.items??[]}async setPlayState(t){(0,ii.assertExist)(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(0,ii.assertExist)(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(0,ii.assertExist)(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){(0,ii.assertExist)(this._exporter,"You must init exporter first"),this._exporter.downloadByMediaBuffers(t,e,i)}onExport(){t.config.exportConfig.enabled&&((0,ii.assertExist)(this.pageData,"You must call SDK#run() first"),(0,ii.assertExist)(this._exporter,"You must init exporter first"),this._exporter.onExport(this.exportOptions))}cancelExport(){(0,ii.assertExist)(this._exporter,"You must init exporter first"),this._exporter.onCancel()}async loadPageData(t){(0,ii.assertExist)(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.getPageData())}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.getPageData())}async reloadPageDataByScene(t){(0,ii.assertExist)(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){var i;(0,ii.assertExist)(this._pageData);const s=[],r=this._pageData.viewProperties[this._pageData.viewProperties.length-1]?.id??this._pageData.viewProperties.length-1;for(let n=0;n<e.length;n++){const a=e[n];if(!a)continue;let o=JSON.parse(JSON.stringify(this._pageData.scene));const c=o.compositions.find(t=>t.id===o.compositionId)??o.compositions[0];(0,ii.assertExist)(c);const{previewSize:l=[750,1624]}=c,h=l,p=a.size??l;c.previewSize=p;const d=c.duration??0,m=a.safeArea??[0,0,0,0];t.config.sizeAdaptConfig.enabled&&(o=await this._sizeAdapt.adjustment(o,d,h,p,m,a.adaptionDirection)),(i=a.export).time??(i.time=d),s.push({...a,size:p,safeArea:m,previewSafeAreas:[...a.previewSafeAreas??[]],id:r+1+n,scene:o,ignoreInteraction:!1})}this._pageData.viewProperties.push(...s),this._eventEmitter.emit("pageDataChange",this.getPageData())}async deleteViewParams(t){t.sort((t,e)=>t-e);for(let e=0;e<t.length;e++){const i=t[e];(0,ii.assertExist)(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.getPageData())}setExportParam(t,e){(0,ii.assertExist)(this._pageData),this._pageData.viewProperties.forEach(i=>{void 0!==e&&i.id!==e||Object.assign(i.export,t)})}setPageZoom(t,e,i){(0,ii.assertExist)(this._pageData),this._pageData.property.zoom=t,this._pageDataUtils.setPageZoom(this._pageData.property.zoom,e,i),this._gestureHandler.render()}setPageMove(t){(0,ii.assertExist)(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?Bi(t.config.pageConfig.filterItemNames,e):e.forEach(e=>{Bi(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=ei({},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,e)}async addVideoItem(t,e){return await this._pageDataUtils.addVideoItem(t,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)}openLoadingGizmo(t,e,i){this._gestureHandler.openLoadingGizmo(t,e,i)}closeLoadingGizmo(t){this._gestureHandler.closeLoadingGizmo(t)}groupItems(t,e){return this._pageDataUtils.addNullItem(t,e)}async addTextItem(t,e){return await this._pageDataUtils.addTextItem(t,e)}deleteItems(t){if((0,ii.assertExist)(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.addViewItemsByItems(this._pageData.items,e.items),this._eventEmitter.emit("pageDataChange",this._pageData)}getItemCreateInfo(t){(0,ii.assertExist)(this._pageData,"You must call SDK#run() first");const e=[];if(Array.isArray(t))t.forEach(i=>{const s=this._pageDataUtils.getViewItemById(i),r=this._pageDataUtils.getItemCreateInfo(i,!(!s?.parentId||!t.includes(s?.parentId)));r&&e.push(r)});else{const i=this._pageDataUtils.getItemCreateInfo(t,!1);i&&e.push(i)}return 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)}getChildrenIds(t){return this._pageDataUtils.getChildrenIds(t)}updateItemOrder(t,e){(0,ii.assertExist)(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){(0,ii.assertExist)(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)}getViewItemById(t){return this._pageDataUtils.getViewItemById(t)}getViewProperty(t){return this._pageDataUtils.getViewProperty(t)}pageMove(t){this._pageDataUtils.pageMove(new oi(...t))}pageZoom(t,e){this._pageDataUtils.pageZoom(t,e?new oi(...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)}};d(Ar,"config",{mode:"template",pageConfig:{asncMode:!1,minZoom:.01,maxZoom:20,staticPreview:!0,staticPreviewName:"标准模板",filterItemNames:["check-area","ModelPluginItem"],groupVisible:!0},screenShotConfig:{enabled:!0},exportConfig:{enabled:!0,mediaType:"MP4",loggerInTranscoding:!1},sizeAdaptConfig:{enabled:!0},gestureHandlerConfig:{enabled:!0,adsorptionGizmoEnabled:!0,adsorptionGizmoConfig:{lineWidth:.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",nullLogoUrl:"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},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},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}}});var Er=Ar;
|
|
2
|
+
/*! Bundled license information:
|
|
3
|
+
|
|
4
|
+
lodash-es/lodash.js:
|
|
5
|
+
(**
|
|
6
|
+
* @license
|
|
7
|
+
* Lodash (Custom Build) <https://lodash.com/>
|
|
8
|
+
* Build: `lodash modularize exports="es" -o ./`
|
|
9
|
+
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
10
|
+
* Released under MIT license <https://lodash.com/license>
|
|
11
|
+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
12
|
+
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
13
|
+
*)
|
|
14
|
+
*/
|