framer-api 0.0.1-alpha.7 → 0.0.1-alpha.8

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.d.ts CHANGED
@@ -4847,6 +4847,8 @@ type BlockedMethods = {
4847
4847
  type AvailablePluginMethods = Omit<FramerPluginAPIAlpha, BlockedMethods>;
4848
4848
  interface FramerConnectionMethods {
4849
4849
  disconnect(): Promise<void>;
4850
+ /** @internal */
4851
+ reconnect(): Promise<void>;
4850
4852
  requestId?: string;
4851
4853
  [Symbol.dispose](): void;
4852
4854
  [Symbol.asyncDispose](): Promise<void>;
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import { process as process$1, isWorkerd } from 'std-env';
2
2
  import * as rt from 'devalue';
3
3
 
4
- /* Framer API SDK v0.0.1-alpha.7 */
5
- var Ar=Object.defineProperty;var r=(n,e)=>Ar(n,"name",{value:e,configurable:true});function lt(n){return n!==undefined}r(lt,"isDefined");function Kn(n){return n===undefined}r(Kn,"isUndefined");function C(n){return n===null}r(C,"isNull");function $n(n){return n!==null}r($n,"isNotNull");function xe(n){return n===true||n===false}r(xe,"isBoolean");function y(n){return typeof n=="string"}r(y,"isString");function $(n){return typeof n=="number"&&Number.isFinite(n)}r($,"isNumber");function wr(n){return typeof n=="function"}r(wr,"isFunction");function v(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(v,"isObject");function dt(n){if(typeof n!="object"||n===null)return false;let e=Object.getPrototypeOf(n);return e===null||e===Object.prototype}r(dt,"isPlainObject");function Ot(n){return Array.isArray(n)}r(Ot,"isArray");function ut(n,e){throw e||new Error(n?`Unexpected value: ${n}`:"Application entered invalid state")}r(ut,"assertNever");function g(n,...e){if(n)return;let t=Error("Assertion Error"+(e.length>0?": "+e.join(" "):""));if(t.stack)try{let i=t.stack.split(`
4
+ /* Framer API SDK v0.0.1-alpha.8 */
5
+ var Mr=Object.defineProperty;var r=(n,e)=>Mr(n,"name",{value:e,configurable:true});function lt(n){return n!==undefined}r(lt,"isDefined");function Kn(n){return n===undefined}r(Kn,"isUndefined");function x(n){return n===null}r(x,"isNull");function $n(n){return n!==null}r($n,"isNotNull");function xe(n){return n===true||n===false}r(xe,"isBoolean");function f(n){return typeof n=="string"}r(f,"isString");function K(n){return typeof n=="number"&&Number.isFinite(n)}r(K,"isNumber");function Ar(n){return typeof n=="function"}r(Ar,"isFunction");function v(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(v,"isObject");function dt(n){if(typeof n!="object"||n===null)return false;let e=Object.getPrototypeOf(n);return e===null||e===Object.prototype}r(dt,"isPlainObject");function zt(n){return Array.isArray(n)}r(zt,"isArray");function ut(n,e){throw e||new Error(n?`Unexpected value: ${n}`:"Application entered invalid state")}r(ut,"assertNever");function m(n,...e){if(n)return;let t=Error("Assertion Error"+(e.length>0?": "+e.join(" "):""));if(t.stack)try{let i=t.stack.split(`
6
6
  `);i[1]?.includes("assert")?(i.splice(1,1),t.stack=i.join(`
7
7
  `)):i[0]?.includes("assert")&&(i.splice(0,1),t.stack=i.join(`
8
- `));}catch{}throw t}r(g,"assert");function F(n){for(let e of Reflect.ownKeys(n)){let t=n[e];!t||typeof t!="object"&&!wr(t)||F(t);}return Object.freeze(n)}r(F,"deepFreeze");function Hn(n){return [n.slice(0,-1),n.at(-1)]}r(Hn,"splitRestAndLast");var p="__class";var zt=Symbol(),Gt=Symbol(),Vr=Symbol(),Wr=Symbol(),Lr=Symbol(),Rr=Symbol(),Br=Symbol(),Kt=Symbol(),$t=Symbol(),l={getAiServiceInfo:zt,sendTrackingEvent:Gt,environmentInfo:Vr,initialState:Wr,showUncheckedPermissionToasts:Lr,marshal:Rr,unmarshal:Br,getHTMLForNode:Kt,setHTMLForNode:$t},ct="INTERNAL_",pt=`${ct}getAiServiceInfo`,mt=`${ct}sendTrackingEvent`,de=`${ct}getHTMLForNode`,ue=`${ct}setHTMLForNode`;var k=class{static{r(this,"VariableBase");}#e;#t;get nodeId(){return this.#t.nodeId}get nodeType(){return this.#t.nodeType}get id(){return this.#t.id}get name(){return this.#t.name}get description(){return this.#t.description??null}constructor(e,t){this.#e=e,this.#t=t;}async setAttributes(e){let t=await this.#e.invoke("updateVariable",this.nodeId,this.id,{...e,type:this.type});if(C(t))return null;let i=this.constructor;return new i(this.#e,t)}async remove(){await this.#e.invoke("removeVariables",this.nodeId,[this.id]);}},A="Variable";function V(n){let e=n.at(0);return g(!Kn(e)),`${e.toLowerCase()}${n.slice(1,-A.length)}`}r(V,"classToType");var Ur=`Boolean${A}`,Or=V(Ur),Ce=class n extends k{static{r(this,"BooleanVariable");}type=Or;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},zr=`Number${A}`,Gr=V(zr),Ie=class n extends k{static{r(this,"NumberVariable");}type=Gr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},Kr=`String${A}`,$r=V(Kr),Te=class n extends k{static{r(this,"StringVariable");}type=$r;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},Hr=`FormattedText${A}`,jr=V(Hr),Pe=class n extends k{static{r(this,"FormattedTextVariable");}type=jr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},_r=`Enum${A}`,qr=V(_r),H=class n{static{r(this,"EnumCase");}#e;#t;#n;#i;get id(){return this.#i.id}get name(){return this.#i.name}get nameByLocale(){return this.#i.nameByLocale}constructor(e,t,i,o){this.#e=e,this.#t=t,this.#n=i,this.#i=o;}async setAttributes(e){let t=await this.#e.invoke("updateEnumCase",this.#t,this.#n,this.id,e);return t?new n(this.#e,this.#t,this.#n,t):null}async remove(){await this.#e.invoke("removeEnumCase",this.#t,this.#n,this.id);}},Se=class n extends k{static{r(this,"EnumVariable");}type=qr;#e;#t;#n;get cases(){return this.#n||(this.#n=F(this.#t.cases.map(e=>new H(this.#e,this.nodeId,this.id,e)))),this.#n}constructor(e,t){super(e,t),this.#e=e,this.#t=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#t}async addCase(e){let t=await this.#e.invoke("addEnumCase",this.nodeId,this.id,e);return t?new H(this.#e,this.nodeId,this.id,t):null}async setCaseOrder(e){await this.#e.invoke("setEnumCaseOrder",this.nodeId,this.id,e);}},Yr=`Color${A}`,Xr=V(Yr),Fe=class n extends k{static{r(this,"ColorVariable");}type=Xr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},Zr=`Image${A}`,Jr=V(Zr),De=class n extends k{static{r(this,"ImageVariable");}type=Jr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},Qr=`File${A}`,eo=V(Qr),ve=class n extends k{static{r(this,"FileVariable");}type=eo;#e;get allowedFileTypes(){return this.#e.allowedFileTypes}constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},to=`Link${A}`,no=V(to),Ne=class n extends k{static{r(this,"LinkVariable");}type=no;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},io=`Date${A}`,ro=V(io),Ee=class n extends k{static{r(this,"DateVariable");}type=ro;#e;get displayTime(){return this.#e.displayTime}constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},oo=`Border${A}`,ao=V(oo),ke=class n extends k{static{r(this,"BorderVariable");}type=ao;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},so=`Unsupported${A}`,lo=V(so),Me=class n extends k{static{r(this,"UnsupportedVariable");}type=lo;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}};function jn(n){return n instanceof k}r(jn,"isVariable");function uo(n){return jn(n)&&n.nodeType==="component"}r(uo,"isComponentVariable");var R=class{static{r(this,"FieldBase");}#e;#t;#n;get id(){return this.#n.id}get name(){return this.#n.name}constructor(e,t,i){this.#e=e,this.#t=t,this.#n=i;}async setAttributes(e){let t={...e,type:this.type,id:this.id},[i]=await this.#e.invoke("addCollectionFields2",this.#t,[t]);if(g(lt(i)),C(i))return null;g(i.type===this.type);let o=this.constructor;return new o(this.#e,this.#t,i)}async remove(){await this.#e.invoke("removeCollectionFields",this.#t,[this.id]);}},L=class extends R{static{r(this,"FieldBaseWithRequired");}#e;get required(){return this.#e.required}constructor(e,t,i){super(e,t,i),this.#e=i;}},gt=class extends R{static{r(this,"BooleanField");}type=_t},ft=class extends R{static{r(this,"ColorField");}type=qt},yt=class extends R{static{r(this,"NumberField");}type=Yt},ht=class extends L{static{r(this,"StringField");}type=Xt;#e;constructor(e,t,i){super(e,t,i),this.#e=i;}get basedOn(){return this.#e.basedOn}},bt=class extends L{static{r(this,"FormattedTextField");}type=Zt},Ae=class extends L{static{r(this,"ImageField");}type=Jt},xt=class extends L{static{r(this,"LinkField");}type=en},Ct=class extends L{static{r(this,"DateField");}type=tn;#e;get displayTime(){return this.#e.displayTime}constructor(e,t,i){super(e,t,i),this.#e=i;}},It=class extends R{static{r(this,"FieldDivider");}type=sn},we=class extends R{static{r(this,"UnsupportedField");}type=ln},Tt=class extends L{static{r(this,"FileField");}type=nn;#e;get allowedFileTypes(){return this.#e.allowedFileTypes}constructor(e,t,i){super(e,t,i),this.#e=i;}},Pt=class extends R{static{r(this,"EnumField");}type=rn;#e;#t;#n;#i;get cases(){return this.#i||(this.#i=this.#n.cases.map(e=>new H(this.#e,this.#t,this.id,e)),F(this.#i)),this.#i}constructor(e,t,i){super(e,t,i),this.#e=e,this.#t=t,this.#n=i;}async addCase(e){let t=await this.#e.invoke("addEnumCase",this.#t,this.id,e);return t?new H(this.#e,this.#t,this.id,t):null}async setCaseOrder(e){await this.#e.invoke("setEnumCaseOrder",this.#t,this.id,e);}},St=class extends L{static{r(this,"CollectionReferenceField");}type=on;#e;get collectionId(){return this.#e.collectionId}constructor(e,t,i){super(e,t,i),this.#e=i;}},Ft=class extends L{static{r(this,"MultiCollectionReferenceField");}type=an;#e;get collectionId(){return this.#e.collectionId}constructor(e,t,i){super(e,t,i),this.#e=i;}},Ht=class extends L{static{r(this,"ArrayField");}type=Qt;fields;constructor(e,t,i){super(e,t,i);let o=i.fields[0];this.fields=[new Ae(e,t,o)];}};function jt(n,e,t){return n.map(i=>{switch(i.type){case _t:return new gt(e,t,i);case qt:return new ft(e,t,i);case Yt:return new yt(e,t,i);case Xt:return new ht(e,t,i);case Zt:return new bt(e,t,i);case Jt:return new Ae(e,t,i);case en:return new xt(e,t,i);case tn:return new Ct(e,t,i);case sn:return new It(e,t,i);case ln:return new we(e,t,i);case nn:return new Tt(e,t,i);case rn:return new Pt(e,t,i);case on:return new St(e,t,i);case an:return new Ft(e,t,i);case Qt:return new Ht(e,t,i);default:return new we(e,t,i)}})}r(jt,"fieldDefinitionDataArrayToFieldClassInstances");function co(n){return n instanceof R}r(co,"isField");var _n="action";function po(n){return !!n&&_n in n&&y(n[_n])}r(po,"isLocalizedValueUpdate");function qn(n){return Object.keys(n).reduce((e,t)=>{let i=n[t];return po(i)&&(e[t]=i),e},{})}r(qn,"filterInlineLocalizationValues");var Ve=class n{static{r(this,"FileAsset");}id;url;extension;constructor(e){this.url=e.url,this.id=e.id,this.extension=e.extension;}static[l.unmarshal](e,t){return new n(t)}[l.marshal](){return {[p]:"FileAsset",id:this.id,url:this.url,extension:this.extension}}};function mo(n){return n instanceof Ve}r(mo,"isFileAsset");var go="ImageAsset";function Yn(n){return v(n)?n[p]===go:false}r(Yn,"isImageAssetData");var j=class n{static{r(this,"ImageAsset");}id;url;thumbnailUrl;altText;resolution;#e;#t;constructor(e,t){this.#t=e,this.url=t.url,this.id=t.id,this.thumbnailUrl=t.thumbnailUrl,this.altText=t.altText,this.resolution=t.resolution;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return {[p]:"ImageAsset",id:this.id,url:this.url,thumbnailUrl:this.thumbnailUrl,altText:this.altText,resolution:this.resolution}}cloneWithAttributes({altText:e,resolution:t}){return new n(this.#t,{[p]:"ImageAsset",id:this.id,url:this.url,thumbnailUrl:this.thumbnailUrl,altText:e??this.altText,resolution:t??this.resolution})}async measure(){return ho(this.url)}async getData(){if(this.#e&&this.#e.bytes.length>0)return this.#e;let e=await this.#t.invoke("getImageData",{id:this.id,resolution:this.resolution});if(!e)throw new Error("Failed to load image data");return this.#e=e,e}async loadBitmap(){let{mimeType:e,bytes:t}=await this.getData(),i=new Blob([t],{type:e});return createImageBitmap(i)}async loadImage(){let e=await this.getData(),t=URL.createObjectURL(new Blob([e.bytes]));return new Promise((i,o)=>{let s=new Image;s.onload=()=>i(s),s.onerror=()=>o(),s.src=t;})}};function fo(n){return n instanceof j}r(fo,"isImageAsset");function _(n){return n.type==="bytes"?[n.bytes.buffer]:[]}r(_,"getTransferable");function yo(n){if(!v(n))return false;let e="bytes",t="mimeType";return !(!(e in n)||!(t in n)||!(n[e]instanceof Uint8Array)||!y(n[t]))}r(yo,"isBytesData");async function We(n){if(n instanceof File)return cn(n);let e=await Xn(n.image);return {name:n.name,altText:n.altText,resolution:n.resolution,preferredImageRendering:n.preferredImageRendering,...e}}r(We,"createImageTransferFromInput");async function dn(n){if(n instanceof File)return cn(n);let e=await Xn(n.file);return {name:n.name,...e}}r(dn,"createFileTransferFromInput");async function Xn(n){return n instanceof File?cn(n):yo(n)?{type:"bytes",mimeType:n.mimeType,bytes:n.bytes}:{type:"url",url:n}}r(Xn,"createAssetTransferFromAssetInput");function un(n){return Promise.all(n.map(We))}r(un,"createNamedAssetDataTransferFromInput");async function cn(n){return new Promise((e,t)=>{let i=new FileReader;i.onload=o=>{let s=n.type,a=o.target?.result;if(!a||!(a instanceof ArrayBuffer)){t(new Error("Failed to read file, arrayBuffer is null"));return}let d=new Uint8Array(a);e({bytes:d,mimeType:s,type:"bytes",name:n.name});},i.onerror=o=>{t(o);},i.readAsArrayBuffer(n);})}r(cn,"getAssetDataFromFile");async function ho(n){let e=n instanceof File,t=e?URL.createObjectURL(n):n,i=new Image;return i.crossOrigin="anonymous",new Promise((o,s)=>{i.onload=()=>{o({width:i.naturalWidth,height:i.naturalHeight});},i.onerror=a=>{s(a);},i.src=t;}).finally(()=>{e&&URL.revokeObjectURL(t);})}r(ho,"measureImage");var Dt=class{static{r(this,"ComputedValueBase");}};var bo="unsupported",Le=class n extends Dt{static{r(this,"UnsupportedComputedValue");}type=bo;#e;constructor(e){super(),this.#e=e;}static[l.unmarshal](e,t){return new n(t)}[l.marshal](){return this.#e}};function xo(n){return n instanceof Dt}r(xo,"isComputedValue");var Co="Font";function Jn(n){return v(n)&&n[p]===Co}r(Jn,"isFontData");function Io(n){if(!$(n))return false;switch(n){case 100:case 200:case 300:case 400:case 500:case 600:case 700:case 800:case 900:return true;default:return false}}r(Io,"isFontWeight");function To(n){if(!y(n))return false;switch(n){case "normal":case "italic":return true;default:return false}}r(To,"isFontStyle");function Qn(n){return v(n)?y(n.family)&&y(n.selector)&&Io(n.weight)&&To(n.style):false}r(Qn,"isFont");var z=class n{static{r(this,"Font");}selector;family;weight;style;constructor(e){this.selector=e.selector,this.family=e.family,this.weight=e.weight,this.style=e.style;}static[l.unmarshal](e,t){let i=Zn.get(t.selector);if(i)return i;let o=new n(t);return Zn.set(t.selector,o),o}[l.marshal](){return {[p]:"Font",selector:this.selector,family:this.family,weight:this.weight,style:this.style}}},Zn=new Map;var Po="LinearGradient",So="RadialGradient",Fo="ConicGradient",ce=class{static{r(this,"GradientBase");}#e;get stops(){return this.#e.stops}constructor(e){this.#e=e;}cloneWithAttributes(e){let t=this.constructor;return new t({...this.#e,...e})}},Re=class n extends ce{static{r(this,"LinearGradient");}[p]=Po;#e;get angle(){return this.#e.angle}constructor(e){super(e),this.#e=e;}static[l.unmarshal](e,t){return new n({...t,stops:b(e,t.stops)})}[l.marshal](){return B({...this.#e,[p]:this[p]})}toCSS(){let e=this.#e.stops.map(t=>(g(y(t.color),"ColorStyle not supported yet"),`${t.color} ${t.position*100}%`)).join(", ");return `linear-gradient(${this.angle}deg, ${e})`}},Be=class n extends ce{static{r(this,"RadialGradient");}[p]=So;#e;get width(){return this.#e.width}get height(){return this.#e.height}get x(){return this.#e.x}get y(){return this.#e.y}constructor(e){super(e),this.#e=e;}static[l.unmarshal](e,t){return new n({...t,stops:b(e,t.stops)})}[l.marshal](){return B({...this.#e,[p]:this[p]})}toCSS(){let e=this.stops.map((t,i)=>{g(y(t.color),"ColorStyle not supported yet");let o=this.stops[i+1],s=t.position===1&&o?.position===1?t.position-1e-4:t.position;return `${t.color} ${s*100}%`}).join(", ");return `radial-gradient(${this.width} ${this.height} at ${this.x} ${this.y}, ${e})`}},Ue=class n extends ce{static{r(this,"ConicGradient");}[p]=Fo;#e;get angle(){return this.#e.angle}get x(){return this.#e.x}get y(){return this.#e.y}constructor(e){super(e),this.#e=e;}static[l.unmarshal](e,t){return new n({...t,stops:b(e,t.stops)})}[l.marshal](){return B({...this.#e,[p]:this[p]})}toCSS(){let e=this.stops.map(t=>(g(y(t.color),"ColorStyle not supported yet"),`${t.color} ${t.position*360}deg`)).join(", ");return `conic-gradient(from ${this.angle}deg at ${this.x} ${this.y}, ${e})`}};function ei(n){return n instanceof ce}r(ei,"isGradient");var Do="ColorStyle";function vt(n){return v(n)?n[p]===Do:false}r(vt,"isColorStyleData");var J=class n{static{r(this,"ColorStyle");}id;name;path;light;dark;#e;constructor(e,t){this.id=t.id,this.name=t.name,this.light=t.light,this.dark=t.dark,this.path=t.path,this.#e=e;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return {[p]:"ColorStyle",id:this.id,name:this.name,light:this.light,dark:this.dark,path:this.path}}async setAttributes(e){let t=await this.#e.invoke("setColorStyleAttributes",this.id,e);return t?new n(this.#e,t):null}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async remove(){return this.#e.invoke("removeColorStyle",this.id)}};function pe(n){return n instanceof J}r(pe,"isColorStyle");var vo="TextStyle";function ti(n){return v(n)?n[p]===vo:false}r(ti,"isTextStyleData");var Oe=class n{static{r(this,"TextStyle");}id;name;path;tag;font;boldFont;italicFont;boldItalicFont;color;transform;alignment;decoration;decorationColor;decorationThickness;decorationStyle;decorationSkipInk;decorationOffset;balance;breakpoints;minWidth;fontSize;letterSpacing;lineHeight;paragraphSpacing;#e;constructor(e,t){this.id=t.id,this.name=t.name,this.path=t.path,this.tag=t.tag,this.font=z[l.unmarshal](e,t.font),this.boldFont=t.boldFont&&z[l.unmarshal](e,t.boldFont),this.italicFont=t.italicFont&&z[l.unmarshal](e,t.italicFont),this.boldItalicFont=t.boldItalicFont&&z[l.unmarshal](e,t.boldItalicFont),this.color=vt(t.color)?J[l.unmarshal](e,t.color):t.color,this.transform=t.transform,this.alignment=t.alignment,this.decoration=t.decoration,this.decorationColor=vt(t.decorationColor)?J[l.unmarshal](e,t.decorationColor):t.decorationColor,this.decorationThickness=t.decorationThickness,this.decorationStyle=t.decorationStyle,this.decorationSkipInk=t.decorationSkipInk,this.decorationOffset=t.decorationOffset,this.balance=t.balance,this.breakpoints=t.breakpoints,this.minWidth=t.minWidth,this.fontSize=t.fontSize,this.letterSpacing=t.letterSpacing,this.lineHeight=t.lineHeight,this.paragraphSpacing=t.paragraphSpacing,this.#e=e;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return {[p]:"TextStyle",id:this.id,name:this.name,path:this.path,tag:this.tag,font:this.font[l.marshal](),boldFont:this.boldFont?.[l.marshal]()??null,italicFont:this.italicFont?.[l.marshal]()??null,boldItalicFont:this.boldItalicFont?.[l.marshal]()??null,color:pe(this.color)?this.color[l.marshal]():this.color,transform:this.transform,alignment:this.alignment,decoration:this.decoration,decorationColor:pe(this.decorationColor)?this.decorationColor[l.marshal]():this.decorationColor,decorationThickness:this.decorationThickness,decorationStyle:this.decorationStyle,decorationSkipInk:this.decorationSkipInk,decorationOffset:this.decorationOffset,balance:this.balance,breakpoints:this.breakpoints,minWidth:this.minWidth,fontSize:this.fontSize,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,paragraphSpacing:this.paragraphSpacing}}async setAttributes(e){let t=await this.#e.invoke("setTextStyleAttributes",this.id,e);return t?new n(this.#e,t):null}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async remove(){return this.#e.invoke("removeTextStyle",this.id)}};function pn(n){return n instanceof Oe}r(pn,"isTextStyle");function No(n){return v(n)&&l.marshal in n}r(No,"isSelfMarshalable");function B(n){if(No(n))return n[l.marshal]();if(Ot(n))return n.map(B);if(dt(n)){let e={};for(let t of Object.keys(n))e[t]=B(n[t]);return e}return n}r(B,"marshal");var ni={ColorStyle:J,ConicGradient:Ue,FileAsset:Ve,Font:z,ImageAsset:j,LinearGradient:Re,RadialGradient:Be,TextStyle:Oe,BooleanVariable:Ce,BorderVariable:ke,ColorVariable:Fe,DateVariable:Ee,EnumVariable:Se,FileVariable:ve,FormattedTextVariable:Pe,ImageVariable:De,LinkVariable:Ne,NumberVariable:Ie,StringVariable:Te,UnsupportedVariable:Me,UnsupportedComputedValue:Le};function Eo(n){return dt(n)&&y(n[p])&&n[p]in ni}r(Eo,"isSelfUnmarshalable");function b(n,e){if(Eo(e))return ni[e[p]][l.unmarshal](n,e);if(Ot(e))return e.map(t=>b(n,t));if(dt(e)){let t={};for(let i of Object.keys(e))t[i]=b(n,e[i]);return t}return e}r(b,"unmarshal");var ko={array:false,boolean:false,collectionReference:false,color:false,date:false,enum:false,file:false,formattedText:false,image:true,link:false,multiCollectionReference:false,number:false,string:false,unsupported:false};function Mo(n){return ko[n]}r(Mo,"isSupportedArrayItemFieldType");function Ao(n){return Mo(n.type)}r(Ao,"isSupportedArrayItemFieldDataEntry");var _t="boolean",qt="color",Yt="number",Xt="string",Zt="formattedText",Jt="image",Qt="array",en="link",tn="date",nn="file",rn="enum",on="collectionReference",an="multiCollectionReference",sn="divider",ln="unsupported";function wo(n){return n.map(e=>{if(e.type!=="enum")return e;let t=e.cases.map(i=>{let o=i.nameByLocale?qn(i.nameByLocale):undefined;return {...i,nameByLocale:o}});return {...e,cases:t}})}r(wo,"sanitizeEnumFieldForMessage");function ii(n,e){let t={};for(let i in n){let o=n[i];if(!o)continue;if(o.type!=="array"){t[i]=b(e,o);continue}let s=o.value.map(a=>{let d=ii(a.fieldData,e),m={};for(let x in d){let P=d[x];g(P&&Ao(P),"Unsupported array item field data entry"),m[x]=P;}return {...a,fieldData:m}});t[i]={...o,value:s};}return t}r(ii,"deserializeFieldData");var me=class{static{r(this,"ManagedCollection");}id;name;readonly;managedBy;#e;constructor(e,t){this.id=e.id,this.name=e.name,this.readonly=e.readonly,g(e.managedBy!=="user","Managed Collection can only be managed by a plugin"),this.managedBy=e.managedBy,this.#e=t,F(this);}async getItemIds(){return this.#e.invoke("getManagedCollectionItemIds",this.id)}async setItemOrder(e){return this.#e.invoke("setManagedCollectionItemOrder",this.id,e)}async getFields(){return this.#e.invoke("getManagedCollectionFields2",this.id)}async setFields(e){let t=wo(e);return this.#e.invoke("setManagedCollectionFields",this.id,t)}async addItems(e){return this.#e.invoke("addManagedCollectionItems2",this.id,e)}async removeItems(e){return this.#e.invoke("removeManagedCollectionItems",this.id,e)}async setAsActive(){return this.#e.invoke("setActiveCollection",this.id)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async navigateTo(e){return this.#e.invoke("navigateTo",this.id,e)}},Q=class{static{r(this,"Collection");}id;name;slugFieldName;slugFieldBasedOn;readonly;managedBy;#e;constructor(e,t){this.id=e.id,this.name=e.name,this.slugFieldName=e.slugFieldName,this.slugFieldBasedOn=e.slugFieldBasedOn,this.readonly=e.readonly,this.managedBy=e.managedBy,this.#e=t,F(this);}async setItemOrder(e){return this.#e.invoke("setCollectionItemOrder",this.id,e)}async getFields(){let e=await this.#e.invoke("getCollectionFields2",this.id,true);return jt(e,this.#e,this.id)}async addFields(e){let t=await this.#e.invoke("addCollectionFields2",this.id,e);return g(t.every($n)),jt(t,this.#e,this.id)}async removeFields(e){return this.#e.invoke("removeCollectionFields",this.id,e)}async setFieldOrder(e){return this.#e.invoke("setCollectionFieldOrder",this.id,e)}async getItems(){return (await this.#e.invoke("getCollectionItems2",this.id)).map(t=>new ze(t,this.#e))}async addItems(e){await this.#e.invoke("addCollectionItems2",this.id,e);}async removeItems(e){return this.#e.invoke("removeCollectionItems",e)}async setAsActive(){return this.#e.invoke("setActiveCollection",this.id)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async navigateTo(e){return this.#e.invoke("navigateTo",this.id,e)}},ze=class n{static{r(this,"CollectionItem");}id;nodeId;slug;slugByLocale;draft;fieldData;#e;constructor(e,t){let i=ii(e.fieldData,t);this.id=e.externalId??e.nodeId,this.nodeId=e.nodeId,this.slug=e.slug,this.slugByLocale=e.slugByLocale,this.draft=e.draft??false,this.fieldData=i,this.#e=t,F(this);}async remove(){return this.#e.invoke("removeCollectionItems",[this.id])}async setAttributes(e){let t=await this.#e.invoke("setCollectionItemAttributes2",this.id,e);return t?new n(t,this.#e):null}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async navigateTo(e){return this.#e.invoke("navigateTo",this.nodeId,e)}};var Vo={fixed:true,sticky:true,absolute:true,relative:true},ri="position";function Us(n){if(!(ri in n))return false;let e=n[ri];return y(e)&&Vo[e]===true}r(Us,"supportsPosition");var oi="top";function Os(n){if(!(oi in n))return false;let e=n[oi];return y(e)||C(e)}r(Os,"supportsPins");var ai="width";function zs(n){if(!(ai in n))return false;let e=n[ai];return y(e)||C(e)}r(zs,"supportsSize");var si="maxWidth";function Gs(n){if(!(si in n))return false;let e=n[si];return y(e)||C(e)}r(Gs,"supportsSizeConstraints");var li="aspectRatio";function Ks(n){if(!(li in n))return false;let e=n[li];return $(e)||C(e)}r(Ks,"supportsAspectRatio");var di="name";function $s(n){if(!(di in n))return false;let e=n[di];return y(e)||C(e)}r($s,"supportsName");var ui="visible";function Hs(n){if(!(ui in n))return false;let e=n[ui];return xe(e)}r(Hs,"supportsVisible");var ci="locked";function js(n){if(!(ci in n))return false;let e=n[ci];return xe(e)}r(js,"supportsLocked");var pi="backgroundColor";function _s(n){if(!(pi in n))return false;let e=n[pi];return y(e)||pe(e)||C(e)}r(_s,"supportsBackgroundColor");var mi="backgroundColor";function qs(n){if(!(mi in n))return false;let e=n[mi];return y(e)||vt(e)||C(e)}r(qs,"supportsBackgroundColorData");var gi="backgroundImage";function Ys(n){if(!(gi in n))return false;let e=n[gi];return e instanceof j||C(e)}r(Ys,"supportsBackgroundImage");var fi="backgroundImage";function Xs(n){if(!(fi in n))return false;let e=n[fi];return e instanceof j?false:Yn(e)||C(e)}r(Xs,"supportsBackgroundImageData");var yi="backgroundGradient";function Zs(n){if(!(yi in n))return false;let e=n[yi];return ei(e)||C(e)}r(Zs,"supportsBackgroundGradient");var hi="backgroundGradient";function Js(n){if(!(hi in n))return false;let e=n[hi];return v(e)||C(e)}r(Js,"supportsBackgroundGradientData");var bi="rotation";function Qs(n){if(!(bi in n))return false;let e=n[bi];return $(e)}r(Qs,"supportsRotation");var xi="opacity";function el(n){if(!(xi in n))return false;let e=n[xi];return $(e)}r(el,"supportsOpacity");var Ci="borderRadius";function tl(n){if(!(Ci in n))return false;let e=n[Ci];return y(e)||C(e)}r(tl,"supportsBorderRadius");var Ii="border";function nl(n){if(!(Ii in n))return false;let e=n[Ii];return C(e)||pe(e.color)}r(nl,"supportsBorder");var Ti="svg";function il(n){if(!(Ti in n))return false;let e=n[Ti];return y(e)}r(il,"supportsSVG");var Pi="textTruncation";function rl(n){if(!(Pi in n))return false;let e=n[Pi];return $(e)||C(e)}r(rl,"supportsTextTruncation");var Si="zIndex";function ol(n){if(!(Si in n))return false;let e=n[Si];return $(e)||C(e)}r(ol,"supportsZIndex");var Fi="overflow";function al(n){if(!(Fi in n))return false;let e=n[Fi];return y(e)||C(e)}r(al,"supportsOverflow");var Di="componentIdentifier";function sl(n){if(!(Di in n))return false;let e=n[Di];return y(e)}r(sl,"supportsComponentInfo");var vi="font";function ll(n){if(!(vi in n))return false;let e=n[vi];return Qn(e)}r(ll,"supportsFont");var Ni="font";function dl(n){if(!(Ni in n))return false;let e=n[Ni];return Jn(e)||C(e)}r(dl,"supportsFontData");var Ei="inlineTextStyle";function ul(n){if(!(Ei in n))return false;let e=n[Ei];return pn(e)||C(e)}r(ul,"supportsInlineTextStyle");var ki="inlineTextStyle";function cl(n){if(!(ki in n))return false;let e=n[ki];return ti(e)||C(e)}r(cl,"supportsInlineTextStyleData");var Mi="link";function pl(n){if(!(Mi in n))return false;let e=n[Mi];return y(e)||C(e)}r(pl,"supportsLink");var Ai="imageRendering";function ml(n){if(!(Ai in n))return false;let e=n[Ai];return y(e)||C(e)}r(ml,"supportsImageRendering");var wi="layout";function Li(n){if(!(wi in n))return false;let e=n[wi];return y(e)||C(e)}r(Li,"supportsLayout");function gl(n){return Li(n)?n.layout==="stack":false}r(gl,"hasStackLayout");function fl(n){return Li(n)?n.layout==="grid":false}r(fl,"hasGridLayout");var Vi="isVariant";function Ri(n){if(!(Vi in n))return false;let e=n[Vi];return xe(e)}r(Ri,"supportsComponentVariant");function mn(n){return Ri(n)?n.isVariant:false}r(mn,"isComponentVariant");function Bi(n){return !Ri(n)||!mn(n)?false:!C(n.gesture)}r(Bi,"isComponentGestureVariant");var Wi="isBreakpoint";function Wo(n){if(!(Wi in n))return false;let e=n[Wi];return xe(e)}r(Wo,"supportsBreakpoint");function Ui(n){return Wo(n)?n.isBreakpoint:false}r(Ui,"isBreakpoint");var W=class{static{r(this,"NodeMethods");}id;originalId;#e;constructor(e,t){this.id=e.id,this.originalId=e.originalId??null,this.#e=t;}get isReplica(){return this.originalId!==null}async remove(){return this.#e.invoke("removeNodes2",[this.id])}async select(){return this.#e.invoke("setSelection",[this.id])}async clone(){if(this[p]==="UnknownNode")throw Error("Can not clone unknown node");return this.#e.cloneNode(this.id)}async setAttributes(e){if(this[p]==="UnknownNode")throw Error("Can not set attributes on unknown node");return this.#e.setAttributes(this.id,e)}async getRect(){return this.#e.invoke("getRect",this.id)}async zoomIntoView(e){return this.#e.invoke("zoomIntoView",[this.id],e)}async navigateTo(e){return this.#e.invoke("navigateTo",this.id,e)}async getParent(){return this.#e.getParent(this.id)}async getChildren(){return ee(this)?Promise.resolve([]):this.#e.getChildren(this.id)}async getNodesWithType(e){return ee(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithType",this.id,e)).map(i=>I(i,this.#e))}async getNodesWithAttribute(e){return ee(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithAttribute",this.id,e)).map(i=>I(i,this.#e))}async getNodesWithAttributeSet(e){return ee(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithAttributeSet",this.id,e)).map(i=>I(i,this.#e))}async*walk(){if(yield this,!ee(this))for(let e of await this.getChildren())yield*e.walk();}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}},U=class extends W{static{r(this,"FrameNode");}[p]="FrameNode";name;visible;locked;backgroundColor;backgroundImage;backgroundGradient;rotation;opacity;borderRadius;border;imageRendering;position;top;right;bottom;left;centerX;centerY;width;height;maxWidth;minWidth;maxHeight;minHeight;aspectRatio;zIndex;link;linkOpenInNewTab;overflow;overflowX;overflowY;layout;gap;padding;stackDirection;stackDistribution;stackAlignment;stackWrapEnabled;gridColumnCount;gridRowCount;gridAlignment;gridColumnWidthType;gridColumnWidth;gridColumnMinWidth;gridRowHeightType;gridRowHeight;gridItemFillCellWidth;gridItemFillCellHeight;gridItemHorizontalAlignment;gridItemVerticalAlignment;gridItemColumnSpan;gridItemRowSpan;isVariant;isPrimaryVariant;isBreakpoint;isPrimaryBreakpoint;inheritsFromId;gesture;constructor(e,t){super(e,t),this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.backgroundColor=b(t,e.backgroundColor)??null,this.backgroundImage=b(t,e.backgroundImage)??null,this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.borderRadius=e.borderRadius??null,this.border=b(t,e.border)??null,this.backgroundGradient=b(t,e.backgroundGradient)??null,this.imageRendering=e.imageRendering??null,this.position=e.position,this.left=e.left??null,this.right=e.right??null,this.top=e.top??null,this.bottom=e.bottom??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,this.maxWidth=e.maxWidth??null,this.minWidth=e.minWidth??null,this.maxHeight=e.maxHeight??null,this.minHeight=e.minHeight??null,this.aspectRatio=e.aspectRatio??null,this.zIndex=e.zIndex??null,this.link=e.link??null,this.linkOpenInNewTab=e.linkOpenInNewTab??null,this.overflow=e.overflow??null,this.overflowX=e.overflowX??null,this.overflowY=e.overflowY??null,this.layout=e.layout??null,this.gap=e.gap??null,this.padding=e.padding??null,this.stackDirection=e.stackDirection??null,this.stackDistribution=e.stackDistribution??null,this.stackAlignment=e.stackAlignment??null,this.stackWrapEnabled=e.stackWrapEnabled??null,this.gridColumnCount=e.gridColumnCount??null,this.gridRowCount=e.gridRowCount??null,this.gridAlignment=e.gridAlignment??null,this.gridColumnWidthType=e.gridColumnWidthType??null,this.gridColumnWidth=e.gridColumnWidth??null,this.gridColumnMinWidth=e.gridColumnMinWidth??null,this.gridRowHeightType=e.gridRowHeightType??null,this.gridRowHeight=e.gridRowHeight??null,this.gridItemFillCellWidth=e.gridItemFillCellWidth??null,this.gridItemFillCellHeight=e.gridItemFillCellHeight??null,this.gridItemHorizontalAlignment=e.gridItemHorizontalAlignment??null,this.gridItemVerticalAlignment=e.gridItemVerticalAlignment??null,this.gridItemColumnSpan=e.gridItemColumnSpan??null,this.gridItemRowSpan=e.gridItemRowSpan??null,this.inheritsFromId=e.inheritsFromId??null,this.gesture=e.gesture??null,this.isVariant=e.isVariant??false,this.isPrimaryVariant=e.isPrimaryVariant??false,this.isBreakpoint=e.isBreakpoint??false,this.isPrimaryBreakpoint=e.isPrimaryBreakpoint??false,F(this);}},te=class extends W{static{r(this,"TextNode");}[p]="TextNode";name;visible;locked;rotation;opacity;zIndex;font;inlineTextStyle;position;top;right;bottom;left;centerX;centerY;width;height;maxWidth;minWidth;maxHeight;minHeight;link;linkOpenInNewTab;gridItemFillCellWidth;gridItemFillCellHeight;gridItemHorizontalAlignment;gridItemVerticalAlignment;gridItemColumnSpan;gridItemRowSpan;overflow;overflowX;overflowY;textTruncation;#e;constructor(e,t){super(e,t),this.#e=t,this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.zIndex=e.zIndex??null,this.font=b(t,e.font)??null,this.inlineTextStyle=b(t,e.inlineTextStyle)??null,this.position=e.position,this.left=e.left??null,this.right=e.right??null,this.top=e.top??null,this.bottom=e.bottom??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,this.maxWidth=e.maxWidth??null,this.minWidth=e.minWidth??null,this.maxHeight=e.maxHeight??null,this.minHeight=e.minHeight??null,this.link=e.link??null,this.linkOpenInNewTab=e.linkOpenInNewTab??null,this.overflow=e.overflow??null,this.overflowX=e.overflowX??null,this.overflowY=e.overflowY??null,this.textTruncation=e.textTruncation??null,this.gridItemFillCellWidth=e.gridItemFillCellWidth??null,this.gridItemFillCellHeight=e.gridItemFillCellHeight??null,this.gridItemHorizontalAlignment=e.gridItemHorizontalAlignment??null,this.gridItemVerticalAlignment=e.gridItemVerticalAlignment??null,this.gridItemColumnSpan=e.gridItemColumnSpan??null,this.gridItemRowSpan=e.gridItemRowSpan??null,F(this);}async setText(e){await this.#e.invoke("setTextForNode",this.id,e);}async getText(){return this.#e.invoke("getTextForNode",this.id)}async setHTML(e){await this.#e.invoke(ue,this.id,e),await new Promise(t=>{setTimeout(t,30);});}async getHTML(){return this.#e.invoke(de,this.id)}},Ge=class extends W{static{r(this,"SVGNode");}[p]="SVGNode";name;visible;locked;svg;rotation;opacity;position;top;right;bottom;left;centerX;centerY;width;height;constructor(e,t){super(e,t),this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.svg=e.svg,this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.position=e.position,this.left=e.left??null,this.right=e.right??null,this.top=e.top??null,this.bottom=e.bottom??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,F(this);}},Ke=class extends W{static{r(this,"VectorSetItemNode");}[p]="VectorSetItemNode";name;visible;locked;top;right;bottom;left;centerX;centerY;width;height;#e;constructor(e,t){super(e,t),this.#e=t,this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.top=e.top??null,this.right=e.right??null,this.bottom=e.bottom??null,this.left=e.left??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,F(this);}async getSVG(){return this.#e.invoke("getSVGForNode",this.id)}},$e=class extends W{static{r(this,"ComponentInstanceNode");}[p]="ComponentInstanceNode";name;visible;locked;componentIdentifier;insertURL;componentName;controls;rotation;opacity;position;top;right;bottom;left;centerX;centerY;width;height;maxWidth;minWidth;maxHeight;minHeight;aspectRatio;#e;#t;#n;get typedControls(){return this.#n||(this.#n=b(this.#e,this.#t.typedControls)??{}),this.#n}constructor(e,t){super(e,t),this.#e=t,this.#t=e,this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.componentIdentifier=e.componentIdentifier,this.componentName=e.componentName??null,this.insertURL=e.insertURL??null,this.controls=b(t,e.controls)??{},this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.position=e.position,this.left=e.left??null,this.right=e.right??null,this.top=e.top??null,this.bottom=e.bottom??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,this.maxWidth=e.maxWidth??null,this.minWidth=e.minWidth??null,this.maxHeight=e.maxHeight??null,this.minHeight=e.minHeight??null,this.aspectRatio=e.aspectRatio??null,F(this);}async getRuntimeError(){return this.#e.invoke("getRuntimeErrorForCodeComponentNode",this.id)}},ne=class extends W{static{r(this,"WebPageNode");}[p]="WebPageNode";#e;path;collectionId;constructor(e,t){super(e,t),this.path=e.path??null,this.collectionId=e.collectionId??null,this.#e=t,F(this);}getBreakpointSuggestions(){return this.#e.invoke("getBreakpointSuggestionsForWebPage",this.id)}async addBreakpoint(e,t){let i=await this.#e.invoke("addBreakpointToWebPage",this.id,e,t),o=I(i,this.#e);return g(o instanceof U),g(Ui(o),"Expected node to be a FrameNode"),o}async getActiveCollectionItem(){let e=await this.#e.invoke("getActiveCollectionItemForWebPage",this.id);return e?new ze(e,this.#e):null}},ie=class extends W{static{r(this,"ComponentNode");}[p]="ComponentNode";name;componentIdentifier;insertURL;componentName;#e;constructor(e,t){super(e,t),this.#e=t,this.componentIdentifier=e.componentIdentifier,this.insertURL=e.insertURL??null,this.componentName=e.componentName??null,this.name=e.name??null,F(this);}async addVariant(e,t){let i=await this.#e.invoke("addVariantToComponent",this.id,e,t);if(!i)throw new Error("Failed to add variant to component");let o=I(i,this.#e);return g(o instanceof U),g(mn(o),"Node is not a component variant"),o}async addGestureVariant(e,t,i){let o=await this.#e.invoke("addGestureVariantToComponent",this.id,e,t,i);if(!o)throw new Error("Failed to add state to component");let s=I(o,this.#e);return g(s instanceof U),g(Bi(s),"Node is not a gesture variant"),s}async getVariables(){let e=await this.#e.invoke("getVariables",this.id);return b(this.#e,e)}async addVariables(e){let t=await this.#e.invoke("addVariables",this.id,B(e));return b(this.#e,t)}async removeVariables(e){await this.#e.invoke("removeVariables",this.id,e);}async setVariableOrder(e){await this.#e.invoke("setVariableOrder",this.id,e);}},He=class extends W{static{r(this,"VectorSetNode");}[p]="VectorSetNode";name;constructor(e,t){super(e,t),this.name=e.name??null,F(this);}},re=class extends W{static{r(this,"DesignPageNode");}[p]="DesignPageNode";name;constructor(e,t){super(e,t),this.name=e.name??null,F(this);}},je=class extends W{static{r(this,"UnknownNode");}[p]="UnknownNode";constructor(e,t){super(e,t),F(this);}};function I(n,e){switch(n[p]){case "DesignPageNode":return new re(n,e);case "WebPageNode":return new ne(n,e);case "ComponentNode":return new ie(n,e);case "VectorSetNode":return new He(n,e);case "VectorSetItemNode":return new Ke(n,e);case "ComponentInstanceNode":return new $e(n,e);case "FrameNode":return new U(n,e);case "SVGNode":return new Ge(n,e);case "TextNode":return new te(n,e);case "UnknownNode":return new je(n,e);default:return new je(n,e)}}r(I,"convertRawNodeDataToNode");function Nt(n){return n instanceof U}r(Nt,"isFrameNode");function Oi(n){return n instanceof te}r(Oi,"isTextNode");function zi(n){return n instanceof Ge}r(zi,"isSVGNode");function ge(n){return n instanceof $e}r(ge,"isComponentInstanceNode");function Gi(n){return n instanceof ne}r(Gi,"isWebPageNode");function Ki(n){return n instanceof ie}r(Ki,"isComponentNode");function $i(n){return n instanceof re}r($i,"isDesignPageNode");function Hi(n){return n instanceof He}r(Hi,"isVectorSetNode");function ji(n){return n instanceof Ke}r(ji,"isVectorSetItemNode");function ee(n){return n instanceof je}r(ee,"isUnknownNode");function _e(n){return !!(Nt(n)||Oi(n)||ge(n)||zi(n)||ji(n)||ee(n))}r(_e,"isCanvasNode");function gn(n){return !!(Gi(n)||$i(n)||Ki(n)||Hi(n)||ee(n))}r(gn,"isCanvasRootNode");var qe=class{static{r(this,"VectorSet");}id;name;owner;#e;constructor(e,t){this.id=e.id,this.name=e.name,this.owner=e.owner,this.#e=t;}async getItems(){return (await this.#e.invoke("getVectorSetItems",this.id)).map(t=>new Et(t,this.#e))}},Et=class{static{r(this,"VectorSetItem");}id;name;insertUrl;iconUrl;#e;#t;constructor(e,t){this.id=e.id,this.name=e.name,this.insertUrl=e.insertUrl,this.iconUrl=e.iconUrl,this.#e=e.moduleId,this.#t=t;}async getVariables(){return this.#t.invoke("getVectorSetItemVariables",this.id,this.#e)}};var Ye=class extends Error{static{r(this,"FramerPluginError");}name=this.constructor.name},q=class extends Error{static{r(this,"FramerPluginClosedError");}name=this.constructor.name};function Lo(n){return n.type==="separator"}r(Lo,"isSeparatorMenuItem");function kt(n,e){let t=[];for(let i of n){if(Lo(i)){t.push(i);continue}let{onAction:o,...s}=i,a=s;if(i.onAction){let d=Math.random();e.set(d,i.onAction),a.actionId=d;}i.submenu&&(a.submenu=kt(i.submenu,e)),t.push(a);}return t}r(kt,"addMenuItemsToOnActionCallbackMap");var Mt="type",_i={[Mt]:"pluginReadySignal"},Bo="pluginReadyResponse";var Uo={methodResponse:true,subscriptionMessage:true,permissionUpdate:true,menuAction:true};function qi(n){return v(n)&&y(n[Mt])&&n[Mt]in Uo}r(qi,"isVekterToPluginNonHandshakeMessage");function Yi(n){return v(n)&&n[Mt]===Bo}r(Yi,"isPluginReadyResponse");var fn=Symbol(),yn=Symbol(),hn=Symbol(),bn=Symbol(),xn=Symbol(),Cn=Symbol(),In=Symbol(),w={publish:fn,getDeployments:yn,deploy:hn,getChangedPaths:bn,getChangeContributors:xn,createManagedCollection:Cn,rejectAllPending:In};function Tn(n){return typeof n=="string"&&n in w}r(Tn,"isFramerApiOnlyMethod");var Oo=["unstable_getCodeFile","unstable_getCodeFiles","unstable_getCodeFileVersionContent","unstable_getCodeFileLint2","unstable_getCodeFileTypecheck2","unstable_getCodeFileVersions","lintCode"],zo=["closeNotification","closePlugin","setCloseWarning","getActiveCollection","getActiveLocale","getActiveManagedCollection","getCanvasRoot","getChildren","getCollection","getCollectionFields","getCollectionFields2","getCollectionItems","getCollectionItems2","getCollections","getColorStyle","getColorStyles","getCurrentUser","getCurrentUser2","getCustomCode","getDefaultLocale","getFont","getFonts","getImage","getImageData","getLocales","getLocalizationGroups","getManagedCollection","getManagedCollectionFields","getManagedCollectionFields2","getManagedCollectionItemIds","getManagedCollections","getNode","getNodesWithAttribute","getNodesWithAttributeSet","getNodesWithType","getParent","getPluginData","getPluginDataForNode","getPluginDataKeys","getPluginDataKeysForNode","getProjectInfo","getProjectInfo2","getPublishInfo","getRect","getSelection","getSVGForNode","getText","getTextForNode","getTextStyle","getTextStyles","hideUI","setBackgroundMessage","notify","onPointerDown","setActiveCollection","setSelection","showUI","getCodeFileVersionContent","typecheckCode","getCodeFileVersions","getCodeFiles","getCodeFile","getRedirects","uploadFile","uploadFiles","uploadImage","uploadImages","zoomIntoView","navigateTo","getRuntimeErrorForModule","getRuntimeErrorForCodeComponentNode","showProgressOnInstances","removeProgressFromInstances","addComponentInstancePlaceholder","updateComponentInstancePlaceholder","removeComponentInstancePlaceholder","setMenu","showContextMenu","getBreakpointSuggestionsForWebPage","getActiveCollectionItemForWebPage","getVariables","getVectorSets","getVectorSetItems","getVectorSetItemVariables","getChangedPaths","getChangeContributors","getDeployments",pt,mt,de,"getAiServiceInfo","sendTrackingEvent",...Oo];new Set(zo);var Pn={addComponentInstance:["addComponentInstance"],addComponentInstancePlaceholder:[],addDetachedComponentLayers:["addDetachedComponentLayers"],addImage:["addImage"],addImages:["addImages"],addSVG:["addSVG"],addText:["addText"],addRedirects:["addRedirects"],getRedirects:[],removeRedirects:["removeRedirects"],setRedirectOrder:["setRedirectOrder"],subscribeToRedirects:[],cloneNode:["cloneNode"],closePlugin:[],createColorStyle:["createColorStyle"],createFrameNode:["createNode"],createTextNode:["createNode"],createComponentNode:["createNode"],createTextStyle:["createTextStyle"],createDesignPage:["createDesignPage"],createWebPage:["createWebPage"],getActiveCollection:[],getActiveLocale:[],getActiveManagedCollection:[],getCanvasRoot:[],getChildren:[],getCollection:[],getCollections:[],getColorStyle:[],getColorStyles:[],getCurrentUser:[],getCustomCode:[],getDefaultLocale:[],getFont:[],getFonts:[],getImage:[],getLocales:[],getLocalizationGroups:[],getManagedCollection:[],getManagedCollections:[],getNode:[],getNodesWithAttribute:[],getNodesWithAttributeSet:[],getNodesWithType:[],getParent:[],getPluginData:[],getPluginDataKeys:[],getProjectInfo:[],getPublishInfo:[],getRect:[],getSelection:[],getText:[],getTextStyle:[],getTextStyles:[],hideUI:[],setBackgroundMessage:[],setCloseWarning:[],lintCode:[],makeDraggable:["onDragEnd","onDragStart","onDrag","setDragData","preloadDetachedComponentLayers","preloadImageUrlForInsertion","preloadDragPreviewImage"],notify:[],preloadDetachedComponentLayers:["preloadDetachedComponentLayers"],preloadDragPreviewImage:["preloadDragPreviewImage"],preloadImageUrlForInsertion:["preloadImageUrlForInsertion"],removeNode:["removeNodes2"],removeNodes:["removeNodes2"],setAttributes:["setAttributes"],setCustomCode:["setCustomCode"],setImage:["setImage"],setLocalizationData:["setLocalizationData"],setMenu:[],showContextMenu:[],setParent:["setParent"],setPluginData:["setPluginData"],setSelection:[],setText:["setText"],typecheckCode:[],showUI:[],subscribeToCanvasRoot:[],subscribeToColorStyles:[],subscribeToCustomCode:[],subscribeToImage:[],subscribeToPublishInfo:[],subscribeToSelection:[],subscribeToText:[],subscribeToTextStyles:[],createCodeFile:["createCodeFile"],unstable_ensureMinimumDependencyVersion:["unstable_ensureMinimumDependencyVersion"],getCodeFiles:[],getCodeFile:[],subscribeToCodeFiles:[],subscribeToOpenCodeFile:[],uploadFile:[],uploadFiles:[],uploadImage:[],uploadImages:[],zoomIntoView:[],navigateTo:[],getVectorSets:[],"VectorSet.getItems":[],"VectorSetItem.getVariables":[],"Node.navigateTo":[],"CodeFile.navigateTo":[],"Collection.navigateTo":[],"ManagedCollection.navigateTo":[],"CollectionItem.navigateTo":[],"ComponentInstanceNode.getRuntimeError":[],"ImageAsset.cloneWithAttributes":[],"ImageAsset.getData":[],"ImageAsset.loadBitmap":[],"ImageAsset.loadImage":[],"ImageAsset.measure":[],"CodeFile.remove":["removeCodeFile"],"CodeFile.rename":["renameCodeFile"],"CodeFile.setFileContent":["setCodeFileContent"],"CodeFile.getVersions":[],"CodeFile.showProgressOnInstances":[],"CodeFile.removeProgressFromInstances":[],"CodeFile.lint":[],"CodeFile.typecheck":[],"CodeFileVersion.getContent":[],"ComponentInstancePlaceholder.setAttributes":[],"ComponentInstancePlaceholder.remove":[],"ComponentInstancePlaceholder.replaceWithComponentInstance":["replaceComponentInstancePlaceholderWithComponentInstance"],"Field.remove":["removeCollectionFields"],"Field.setAttributes":["addCollectionFields2"],"EnumField.addCase":["addEnumCase"],"EnumField.setCaseOrder":["setEnumCaseOrder"],"Collection.addFields":["addCollectionFields2"],"Collection.addItems":["addCollectionItems2"],"Collection.getFields":[],"Collection.getItems":[],"Collection.getPluginData":[],"Collection.getPluginDataKeys":[],"Collection.removeFields":["removeCollectionFields"],"Collection.removeItems":["removeCollectionItems"],"Collection.setAsActive":[],"Collection.setFieldOrder":["setCollectionFieldOrder"],"Collection.setItemOrder":["setCollectionItemOrder"],"Collection.setPluginData":["setPluginDataForNode"],"CollectionItem.getPluginData":[],"CollectionItem.getPluginDataKeys":[],"CollectionItem.remove":["removeCollectionItems"],"CollectionItem.setAttributes":["setCollectionItemAttributes2"],"CollectionItem.setPluginData":["setPluginDataForNode"],"ManagedCollection.addItems":["addManagedCollectionItems2"],"ManagedCollection.getFields":[],"ManagedCollection.getItemIds":[],"ManagedCollection.getPluginData":[],"ManagedCollection.getPluginDataKeys":[],"ManagedCollection.removeItems":["removeManagedCollectionItems"],"ManagedCollection.setAsActive":[],"ManagedCollection.setFields":["setManagedCollectionFields"],"ManagedCollection.setItemOrder":["setManagedCollectionItemOrder"],"ManagedCollection.setPluginData":["setPluginDataForNode"],"Node.clone":["cloneNode"],"Node.getChildren":[],"Node.getNodesWithAttribute":[],"Node.getNodesWithAttributeSet":[],"Node.getNodesWithType":[],"Node.getParent":[],"Node.getPluginData":[],"Node.getPluginDataKeys":[],"Node.getRect":[],"Node.remove":["removeNodes2"],"Node.select":[],"Node.setAttributes":["setAttributes"],"Node.setPluginData":["setPluginDataForNode"],"Node.walk":[],"Node.zoomIntoView":[],"TextNode.getText":[],"TextNode.setText":["setTextForNode"],"TextNode.setHTML":[ue],"TextNode.getHTML":[],"ComponentNode.addVariant":["addVariantToComponent"],"ComponentNode.addGestureVariant":["addGestureVariantToComponent"],"ComponentNode.getVariables":[],"ComponentNode.addVariables":["addVariables"],"ComponentNode.removeVariables":["removeVariables"],"WebPageNode.getBreakpointSuggestions":[],"WebPageNode.addBreakpoint":["addBreakpointToWebPage"],"WebPageNode.getActiveCollectionItem":[],"ColorStyle.getPluginData":[],"ColorStyle.getPluginDataKeys":[],"ColorStyle.remove":["removeColorStyle"],"ColorStyle.setAttributes":["setColorStyleAttributes"],"ColorStyle.setPluginData":["setPluginDataForNode"],"TextStyle.getPluginData":[],"TextStyle.getPluginDataKeys":[],"TextStyle.remove":["removeTextStyle"],"TextStyle.setAttributes":["setTextStyleAttributes"],"TextStyle.setPluginData":["setPluginDataForNode"],"Variable.setAttributes":["updateVariable"],"Variable.remove":["removeVariables"],"ComponentNode.setVariableOrder":["setVariableOrder"],"EnumCase.remove":["removeEnumCase"],"EnumCase.setAttributes":["updateEnumCase"],"EnumVariable.addCase":["addEnumCase"],"EnumVariable.setCaseOrder":["setEnumCaseOrder"],createCollection:["createCollection"],createManagedCollection:["createManagedCollection"],[zt]:[],[Gt]:[],[Kt]:[],[$t]:[],[fn]:["publish"],[yn]:[],[hn]:["deploy"],[bn]:[],[xn]:[],[Cn]:["createManagedCollection"],[In]:[]},At=[];for(let n of Object.keys(Pn))Pn[n].length!==0&&At.push(n);F(At);function Sn(n){let e={};for(let t of At){let i=Pn[t];e[t]=i.every(o=>n[o]);}return e}r(Sn,"createPerMethodPermissionMap");function Xi(){let n={};for(let e of At)n[e]=true;return n}r(Xi,"createPerMethodPermissionMapForTesting");var fe=null;function Zi(n){if(typeof window>"u")return;if(!fe){let t=document.createElement("style");document.head.appendChild(t),fe=t.sheet;}if(!fe){n();return}let e=fe.insertRule("* { transition: none !important; animation: none !important; }");n(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{fe&&fe.deleteRule(e);});});}r(Zi,"withDisabledCssTransitions");var Xe=class{static{r(this,"PluginEngine");}methodInvocationId=0;notificationId=0;postMessage;methodResponseHandlers=new Map;mode;subscriptions=new Map;perMethodPermissionMap;permissionSubscriptions=new Set;messageTypesCheckedInIsAllowedTo=new Set;showUncheckedPermissionToasts=true;environmentInfo=null;initialState;menuItemOnActionCallbackMap=new Map;contextMenuItemOnActionCallbackMap=new Map;rejectAllPending(e){for(let[t,i]of this.methodResponseHandlers)i.reject(e),this.methodResponseHandlers.delete(t);}constructor(e){if(!e){this.postMessage=()=>{},this.mode="canvas",this.perMethodPermissionMap=Xi(),this.initialState={mode:"canvas",intent:"plugin/open"};return}switch(e.transport.onMessage(this.onMessage),typeof window<"u"&&(window.addEventListener("error",t=>{t.error instanceof q&&(t.preventDefault(),t.stopImmediatePropagation());}),window.addEventListener("unhandledrejection",t=>{t.reason instanceof q&&(t.preventDefault(),t.stopImmediatePropagation());})),this.mode=e.mode,this.initialState=e.initialState??{mode:e.mode,intent:"plugin/open"},this.environmentInfo=e.environmentInfo,this.perMethodPermissionMap=Sn(e.permissionMap),this.postMessage=(t,i)=>e.transport.send(t,i),this.mode){case "canvas":case "image":case "editImage":case "configureManagedCollection":case "syncManagedCollection":case "collection":case "localization":case "code":typeof window<"u"&&window.addEventListener("pointerdown",()=>{this.invoke("onPointerDown");}),e.theme&&this.applyPluginTheme(e.theme),this.subscribe("theme",this.applyPluginTheme);break;case "api":break;default:ut(this.mode);}}async invoke(e,...t){return this.invokeTransferable(e,undefined,...t)}async invokeTransferable(e,t,...i){return new Promise((s,a)=>{let d={type:"methodInvocation",methodName:e,id:this.methodInvocationId,args:i.map(B)};this.methodInvocationId+=1,this.methodResponseHandlers.set(d.id,{resolve:s,reject:a}),this.postMessage(d,t);})}subscribe(e,t){this.postMessage({type:"subscribe",topic:e});let i=this.subscriptions.get(e)??new Set;return i.add(t),this.subscriptions.set(e,i),()=>{let o=this.subscriptions.get(e)??new Set;o.delete(t),o.size===0&&this.postMessage({type:"unsubscribe",topic:e}),this.subscriptions.set(e,o);}}onMessage=e=>{let t=e?.data??e;if(qi(t))switch(t.type){case "permissionUpdate":{this.perMethodPermissionMap=Sn(t.permissionMap);for(let i of this.permissionSubscriptions)i();break}case "methodResponse":{let i=this.methodResponseHandlers.get(t.id);if(!i)throw new Error(`No handler for response with id ${t.id}`);this.methodResponseHandlers.delete(t.id),y(t.error)?i.reject(new Ye(t.error)):i.resolve(t.result);break}case "subscriptionMessage":{let{topic:i,payload:o}=t,s=this.subscriptions.get(i);if(!s)throw new Error("Received a subscription message but no handler present");for(let a of s)a(o);break}case "menuAction":{let i=this.getOnActionFromCallbackMap(t.actionId,t.actionType);if(!i)throw new Error("Menu action received for an unknown menu item");i();break}default:ut(t);}};getOnActionFromCallbackMap(e,t){switch(t){case "pluginMenu":return this.menuItemOnActionCallbackMap.get(e);case "contextMenu":return this.contextMenuItemOnActionCallbackMap.get(e);default:ut(t);}}applyPluginTheme=e=>{Zi(()=>{document.body.setAttribute("data-framer-theme",e.mode);for(let t in e.tokens)document.body.style.setProperty(t,e.tokens[t]);});};async cloneNode(e){let t=await this.invoke("cloneNode",e);return t?I(t,this):null}async setAttributes(e,t){let i=await this.invoke("setAttributes",e,t);return i?I(i,this):null}async getParent(e){let t=await this.invoke("getParent",e);return t?I(t,this):null}async getChildren(e){return (await this.invoke("getChildren",e)).map(i=>{let o=I(i,this);return g(_e(o)),o})}notify=(e,t)=>{let i=`notification-${this.notificationId}`;return this.notificationId+=1,this.invoke("notify",e,{notificationId:i,variant:t?.variant??"info",buttonText:t?.button?.text,durationMs:t?.durationMs}).then(o=>{o==="actionButtonClicked"&&t?.button?.onClick&&t.button.onClick(),t?.onDisappear&&t.onDisappear();}),{close:()=>this.invoke("closeNotification",i)}};async setMenu(e){this.menuItemOnActionCallbackMap=new Map;let t=kt(e,this.menuItemOnActionCallbackMap);await this.invoke("setMenu",t);}async showContextMenu(e,t){this.contextMenuItemOnActionCallbackMap=new Map;let i=kt(e,this.contextMenuItemOnActionCallbackMap);await this.invoke("showContextMenu",i,t);}};function Go(n){return n.type==="component"}r(Go,"isCodeFileComponentExport");function Ko(n){return n.type==="override"}r(Ko,"isCodeFileOverrideExport");var Fn=class{static{r(this,"CodeFileVersion");}#e;#t;get id(){return this.#e.id}get name(){return this.#e.name}get createdAt(){return this.#e.createdAt}get createdBy(){return this.#e.createdBy}constructor(e,t){this.#t=t,this.#e=e;}async getContent(){return await this.#t.invoke("getCodeFileVersionContent",this.#e.fileId,this.#e.id)}},Y=class n{static{r(this,"CodeFile");}#e;#t;get id(){return this.#e.id}get name(){return this.#e.name}get path(){return this.#e.path}get content(){return this.#e.content}get exports(){return this.#e.exports}get versionId(){return this.#e.versionId}constructor(e,t){this.#t=t,this.#e=e;}async setFileContent(e){let t=await this.#t.invoke("setCodeFileContent",this.id,e);return new n(t,this.#t)}async rename(e){let t=await this.#t.invoke("renameCodeFile",this.id,e);return new n(t,this.#t)}async remove(){return this.#t.invoke("removeCodeFile",this.id)}async getVersions(){return (await this.#t.invoke("getCodeFileVersions",this.id)).map(t=>new Fn(t,this.#t))}async showProgressOnInstances(e){return this.#t.invoke("showProgressOnInstances",this.id,e)}async removeProgressFromInstances(){return this.#t.invoke("removeProgressFromInstances",this.id)}async lint(e){return Promise.resolve([])}async typecheck(e){return await this.#t.invoke("typecheckCode",this.name,this.content,e,this.id)}async navigateTo(){return this.#t.invoke("navigateTo",this.id)}};var wt=class n{static{r(this,"ComponentInstancePlaceholder");}#e;#t;constructor(e,t){this.#e=e,this.#t=t;}get id(){return this.#e.id}get width(){return this.#e.width}get height(){return this.#e.height}get title(){return this.#e.title}get codePreview(){return this.#e.codePreview}async setAttributes(e){let t=await this.#t.invoke("updateComponentInstancePlaceholder",this.id,e);return t?new n(t,this.#t):null}async remove(){await this.#t.invoke("removeComponentInstancePlaceholder",this.id);}async replaceWithComponentInstance(e,t){let i=await this.#t.invoke("replaceComponentInstancePlaceholderWithComponentInstance",this.id,e,t);if(!i)return null;let o=I(i,this.#t);return g(ge(o)),o}};var $o=(()=>{let n=null;return {disableUntilMouseUp:()=>{if(n)return;n=document.createElement("style"),n.textContent="* { pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; }",document.head.appendChild(n);let e=r(()=>{n&&(document.head.removeChild(n),n=null,o());},"enablePointerEvents"),t=r(s=>{s.buttons>0&&s.buttons&1||e();},"handlePointerChange"),i=r(()=>{e();},"handleBlur");window.addEventListener("pointerup",t,true),window.addEventListener("pointermove",t,true),window.addEventListener("blur",i);function o(){window.removeEventListener("pointerup",t,true),window.removeEventListener("pointermove",t,true),window.removeEventListener("blur",i);}r(o,"cleanup");}}})(),Ji=5,Ho=(()=>{let n=1;return {next:()=>`drag-${n++}`}})();function jo(){}r(jo,"noop");function Qi(n,e,t,i){if(n.mode!=="canvas")return jo;let o=Ho.next(),s=document.body.style.cursor,a={type:"idle"},d=document.body,m=oe.subscribeToIsAllowedTo("makeDraggable",c=>{c||T();}),x=r(c=>{oe.isAllowedTo("makeDraggable")&&a.type!=="idle"&&(a.type==="dragging"&&n.invoke("onDragEnd",{...c,dragSessionId:o}).then(f=>{try{i?.(f);}catch{}}).catch(f=>{if(f instanceof Error){i?.({status:"error",reason:f.message});return}if(typeof f=="string"){i?.({status:"error",reason:f});return}i?.({status:"error"});}),T());},"endDrag"),P=r(c=>{if(!oe.isAllowedTo("makeDraggable")||a.type==="idle")return;if(!(c.buttons>0&&!!(c.buttons&1))){x({cancelled:false});return}let{clientX:M,clientY:E}=c;if(a.type==="pointerDown"){let S=M-a.dragStart.mouse.x,at=E-a.dragStart.mouse.y;if(Math.abs(S)<Ji&&Math.abs(at)<Ji)return;a={type:"dragging",dragStart:a.dragStart},n.invoke("onDragStart",a.dragStart),document.getSelection()?.empty(),$o.disableUntilMouseUp();}d.setPointerCapture(c.pointerId);let le={x:M,y:E};n.invoke("onDrag",{dragSessionId:o,mouse:le}).then(S=>{a.type==="dragging"&&(document.body.style.cursor=S??"");});},"handlePointerChange"),O=r(c=>{c.key==="Escape"&&x({cancelled:true});},"handleKeyDown"),K=r(()=>{x({cancelled:true});},"handleBlur"),h=r(c=>{if(!oe.isAllowedTo("makeDraggable"))return;x({cancelled:true});let f=e.getBoundingClientRect(),M={x:f.x,y:f.y,width:f.width,height:f.height},E,le=e.querySelectorAll("svg");if(le.length===1){let st=le.item(0).getBoundingClientRect();E={x:st.x,y:st.y,width:st.width,height:st.height};}let S={x:c.clientX,y:c.clientY};a={type:"pointerDown",dragStart:{dragSessionId:o,elementRect:M,svgRect:E,mouse:S}},n.invoke("setDragData",o,t()),d.addEventListener("pointermove",P,true),d.addEventListener("pointerup",P,true),window.addEventListener("keydown",O,true),window.addEventListener("blur",K);},"handlePointerDown"),u=r(()=>{if(!oe.isAllowedTo("makeDraggable"))return;let c=t();c.type==="detachedComponentLayers"&&n.invoke("preloadDetachedComponentLayers",c.url),c.type==="image"&&n.invoke("preloadImageUrlForInsertion",c.image),c.previewImage&&n.invoke("preloadDragPreviewImage",c.previewImage);},"preload");e.addEventListener("pointerdown",h),e.addEventListener("mouseenter",u);function T(){a={type:"idle"},document.body.style.cursor=s,d.removeEventListener("pointermove",P,true),d.removeEventListener("pointerup",P,true),window.removeEventListener("keydown",O,true),window.removeEventListener("blur",K);}return r(T,"dragCleanup"),()=>{e.removeEventListener("pointerdown",h),e.removeEventListener("mouseenter",u),x({cancelled:true}),m();}}r(Qi,"makeDraggable");var ye=class n{static{r(this,"Redirect");}#e;#t;get id(){return this.#e.id}get from(){return this.#e.from}get to(){return this.#e.to}get expandToAllLocales(){return this.#e.expandToAllLocales}constructor(e,t){this.#t=t,this.#e=e;}remove(){return this.#t.invoke("removeRedirects",[this.id])}async setAttributes(e){let t={...e,id:this.id},[i]=await this.#t.invoke("addRedirects",[t]);return g(lt(i)),C(i)?null:new n(i,this.#t)}};var Dn=class{static{r(this,"FramerPluginAPI");}#e;constructor(e){this.#e=e;}get mode(){return this.#e.mode}isAllowedTo(...e){return e.every(t=>this.#e.perMethodPermissionMap[t])}subscribeToIsAllowedTo(...e){let[t,i]=Hn(e),o=this.isAllowedTo(...t),s=r(()=>{let a=this.isAllowedTo(...t);a!==o&&(o=a,i(o));},"update");return this.#e.permissionSubscriptions.add(s),()=>{this.#e.permissionSubscriptions.delete(s);}}async showUI(e){return this.#e.invoke("showUI",e)}async hideUI(){return this.#e.invoke("hideUI")}async setBackgroundMessage(e){return this.#e.invoke("setBackgroundMessage",e)}closePlugin(e,t){throw this.#e.invoke("closePlugin",e,t),new q}async getCurrentUser(){return this.#e.invoke("getCurrentUser2")}async getProjectInfo(){return this.#e.invoke("getProjectInfo2")}async getSelection(){return (await this.#e.invoke("getSelection")).map(t=>{let i=I(t,this.#e);return g(_e(i)),i})}async setSelection(e){let t=y(e)?[e]:Array.from(e);return this.#e.invoke("setSelection",t)}subscribeToSelection(e){return this.#e.subscribe("selection",t=>{let i=t.map(o=>{let s=I(o,this.#e);return g(_e(s)),s});e(i);})}async getCanvasRoot(){let e=await this.#e.invoke("getCanvasRoot"),t=I(e,this.#e);return g(gn(t)),t}subscribeToCanvasRoot(e){return this.#e.subscribe("canvasRoot",t=>{let i=I(t,this.#e);g(gn(i)),e(i);})}async getPublishInfo(){return this.#e.invoke("getPublishInfo")}subscribeToPublishInfo(e){return this.#e.subscribe("publishInfo",e)}async createFrameNode(e,t){let i=await this.#e.invoke("createNode","FrameNode",t??null,e);if(!i)return null;let o=I(i,this.#e);return g(o instanceof U),o}async removeNodes(e){return this.#e.invoke("removeNodes2",e)}async removeNode(e){return this.removeNodes([e])}async cloneNode(e){return this.#e.cloneNode(e)}async getNode(e){let t=await this.#e.invoke("getNode",e);return t?I(t,this.#e):null}async getParent(e){return this.#e.getParent(e)}async getChildren(e){return this.#e.getChildren(e)}async getRect(e){return this.#e.invoke("getRect",e)}async zoomIntoView(e,t){let i=y(e)?[e]:Array.from(e);return this.#e.invoke("zoomIntoView",i,t)}async setAttributes(e,t){return this.#e.setAttributes(e,t)}async setParent(e,t,i){return this.#e.invoke("setParent",e,t,i)}async getNodesWithType(e){return (await this.#e.invoke("getNodesWithType",null,e)).map(i=>I(i,this.#e))}async getNodesWithAttribute(e){return (await this.#e.invoke("getNodesWithAttribute",null,e)).map(i=>I(i,this.#e))}async getNodesWithAttributeSet(e){return (await this.#e.invoke("getNodesWithAttributeSet",null,e)).map(i=>I(i,this.#e))}async getImage(){let e=await this.#e.invoke("getImage");return e?b(this.#e,e):null}subscribeToImage(e){return this.#e.subscribe("image",t=>{if(!t){e(null);return}e(b(this.#e,t));})}async addImage(e){let t=await We(e),i=_(t);return this.#e.invokeTransferable("addImage",i,t)}async setImage(e){let t=await We(e),i=_(t);return this.#e.invokeTransferable("setImage",i,t)}async uploadImage(e){let t=await We(e),i=_(t),o=await this.#e.invokeTransferable("uploadImage",i,t);return b(this.#e,o)}async addImages(e){let t=await un(e),i=t.flatMap(_);await this.#e.invokeTransferable("addImages",i,t);}async uploadImages(e){let t=await un(e),i=t.flatMap(_),o=await this.#e.invokeTransferable("uploadImages",i,t);return b(this.#e,o)}async uploadFile(e){let t=await dn(e),i=await this.#e.invokeTransferable("uploadFile",_(t),t);return b(this.#e,i)}async uploadFiles(e){let t=await Promise.all(e.map(dn)),i=t.flatMap(_),o=await this.#e.invokeTransferable("uploadFiles",i,t);return b(this.#e,o)}async addSVG(e){return this.#e.invoke("addSVG",e)}async addComponentInstance({url:e,attributes:t,parentId:i}){let o=await this.#e.invoke("addComponentInstance",{url:e,attributes:t,parentId:i}),s=I(o,this.#e);return g(ge(s)),s}async addDetachedComponentLayers({url:e,layout:t,attributes:i}){let o=await this.#e.invoke("addDetachedComponentLayers",{url:e,layout:t,attributes:i}),s=I(o,this.#e);return g(Nt(s)),s}async preloadDetachedComponentLayers(e){await this.#e.invoke("preloadDetachedComponentLayers",e);}async preloadImageUrlForInsertion(e){await this.#e.invoke("preloadImageUrlForInsertion",e);}async preloadDragPreviewImage(e){await this.#e.invoke("preloadDragPreviewImage",e);}async getText(){return this.#e.invoke("getText")}async setText(e){return this.#e.invoke("setText",e)}async addText(e,t){return this.#e.invoke("addText",e,t)}async setCustomCode(e){return this.#e.invoke("setCustomCode",e)}async getCustomCode(){return this.#e.invoke("getCustomCode")}subscribeToCustomCode(e){return this.#e.subscribe("customCode",e)}subscribeToText(e){return this.#e.subscribe("text",e)}makeDraggable(e,t,i){return Qi(this.#e,e,t,i)}async getActiveManagedCollection(){let e=await this.#e.invoke("getActiveManagedCollection");return g(e,"Collection data must be defined"),new me(e,this.#e)}async getManagedCollection(){return this.getActiveManagedCollection()}async getManagedCollections(){let e=await this.#e.invoke("getManagedCollections");return g(e,"Collections data must be defined"),e.map(t=>new me(t,this.#e))}async getCollection(e){let t=await this.#e.invoke("getCollection",e);return t?new Q(t,this.#e):null}async getActiveCollection(){let e=await this.#e.invoke("getActiveCollection");return e?new Q(e,this.#e):null}async getCollections(){return (await this.#e.invoke("getCollections")).map(t=>new Q(t,this.#e))}notify=(e,t)=>this.#e.notify(e,t);async getPluginData(e){return this.#e.invoke("getPluginData",e)}async setPluginData(e,t){return this.#e.invoke("setPluginData",e,t)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeys")}async getColorStyles(){let e=await this.#e.invoke("getColorStyles");return b(this.#e,e)}async getColorStyle(e){let t=await this.#e.invoke("getColorStyle",e);return t?b(this.#e,t):null}async createColorStyle(e){let t=await this.#e.invoke("createColorStyle",e);return b(this.#e,t)}subscribeToColorStyles(e){return this.#e.subscribe("colorStyles",t=>{let i=b(this.#e,t);return e(i)})}async getTextStyles(){let e=await this.#e.invoke("getTextStyles");return b(this.#e,e)}async getTextStyle(e){let t=await this.#e.invoke("getTextStyle",e);return t?b(this.#e,t):null}async createTextStyle(e){let t=await this.#e.invoke("createTextStyle",e);return b(this.#e,t)}subscribeToTextStyles(e){return this.#e.subscribe("textStyles",t=>{let i=b(this.#e,t);return e(i)})}async getFont(e,t){let i=await this.#e.invoke("getFont",e,t);return i?b(this.#e,i):null}async getFonts(){let e=await this.#e.invoke("getFonts");return b(this.#e,e)}getLocales(){return this.#e.invoke("getLocales")}getDefaultLocale(){return this.#e.invoke("getDefaultLocale")}getActiveLocale(){return this.#e.invoke("getActiveLocale")}async getLocalizationGroups(){return this.#e.invoke("getLocalizationGroups")}setLocalizationData(e){return this.#e.invoke("setLocalizationData",e)}async getRedirects(){return (await this.#e.invoke("getRedirects")).map(t=>new ye(t,this.#e))}subscribeToRedirects(e){return this.#e.subscribe("redirects",t=>{let i=t.map(o=>new ye(o,this.#e));return e(i)})}async addRedirects(e){return (await this.#e.invoke("addRedirects",e)).map(i=>new ye(i,this.#e))}async removeRedirects(e){return this.#e.invoke("removeRedirects",e)}async setRedirectOrder(e){return this.#e.invoke("setRedirectOrder",e)}async createCodeFile(e,t,i){let o=await this.#e.invoke("createCodeFile",e,t,i);return new Y(o,this.#e)}async getCodeFiles(){let e=await this.#e.invoke("getCodeFiles"),t=[];for(let i of e)t.push(new Y(i,this.#e));return t}async getCodeFile(e){let t=await this.#e.invoke("getCodeFile",e);return t?new Y(t,this.#e):null}lintCode(e,t,i){return Promise.resolve([])}typecheckCode(e,t,i,o){return this.#e.invoke("typecheckCode",e,t,i,o)}subscribeToCodeFiles(e){return this.#e.subscribe("codeFiles",t=>{let i=t?.map(o=>new Y(o,this.#e));return e(i)})}setMenu(e){return this.#e.setMenu(e)}showContextMenu(e,t){return this.#e.showContextMenu(e,t)}async unstable_ensureMinimumDependencyVersion(e,t){return this.#e.invoke("unstable_ensureMinimumDependencyVersion",e,t)}async navigateTo(e,t){return this.#e.invoke("navigateTo",e,t)}subscribeToOpenCodeFile(e){return this.#e.subscribe("openCodeFile",t=>{let i=t?new Y(t,this.#e):null;return e(i)})}async createDesignPage(e){let t=await this.#e.invoke("createDesignPage",e),i=I(t,this.#e);return g(i instanceof re,"Expected node to be a DesignPageNode"),i}async createWebPage(e){let t=await this.#e.invoke("createWebPage",e),i=I(t,this.#e);return g(i instanceof ne,"Expected node to be a WebPageNode"),i}async createCollection(e){let t=await this.#e.invoke("createCollection",e);return new Q(t,this.#e)}async createManagedCollection(e){let t=await this.#e.invoke("createManagedCollection",e);return new me(t,this.#e)}async setCloseWarning(e){return this.#e.invoke("setCloseWarning",e)}get[l.initialState](){return this.#e.initialState}},vn=class extends Dn{static{r(this,"FramerPluginAPIBeta");}#e;constructor(e){super(e),this.#e=e,this.#e;}},Ze=class extends vn{static{r(this,"FramerPluginAPIAlpha");}#e;constructor(e){super(e),this.#e=e,this.#e;}async addComponentInstancePlaceholder(e){let t=await this.#e.invoke("addComponentInstancePlaceholder",e);return new wt(t,this.#e)}async[l.getAiServiceInfo](){return this.#e.invoke(pt)}async[l.sendTrackingEvent](e,t,i){return this.#e.invoke(mt,e,t,i)}async[l.getHTMLForNode](e){return this.#e.invoke(de,e)}async[l.setHTMLForNode](e,t){return this.#e.invoke(ue,e,t)}get[l.environmentInfo](){return this.#e.environmentInfo}get[l.showUncheckedPermissionToasts](){return this.#e.showUncheckedPermissionToasts}set[l.showUncheckedPermissionToasts](e){this.#e.showUncheckedPermissionToasts=e;}async createTextNode(e,t){let i=await this.#e.invoke("createNode","TextNode",t??null,e);if(!i)return null;let o=I(i,this.#e);return g(o instanceof te),o}async createComponentNode(e){let t=await this.#e.invoke("createNode","ComponentNode",null,{name:e});if(!t)return null;let i=I(t,this.#e);return g(i instanceof ie),i}async getVectorSets(){return (await this.#e.invoke("getVectorSets")).map(t=>new qe(t,this.#e))}async[w.publish](){return this.#e.invoke("publish")}async[w.getDeployments](){return this.#e.invoke("getDeployments")}async[w.deploy](e,t){return this.#e.invoke("deploy",e,t)}async[w.getChangedPaths](){return this.#e.invoke("getChangedPaths")}async[w.getChangeContributors](e,t){return this.#e.invoke("getChangeContributors",e,t)}async[w.createManagedCollection](e){return this.createManagedCollection(e)}[w.rejectAllPending](e){this.#e.rejectAllPending(e);}};var Nn=class{constructor(e){this.origin=e;}static{r(this,"IframeTransport");}send(e,t){window.parent.postMessage(e,this.origin,t);}onMessage(e){window.addEventListener("message",e);}};async function _o(){return new Promise(n=>{function e({data:t,origin:i}){if(!Yi(t))return;window.removeEventListener("message",e);let s={transport:new Nn(i),mode:t.mode,permissionMap:t.permissionMap,environmentInfo:t.environmentInfo,origin:i,theme:t.theme??null,initialState:t.initialState};n(s);}r(e,"handshakeListener"),window.addEventListener("message",e),window.parent.postMessage(_i,"*");})}r(_o,"createBrowserContext");async function qo(){return typeof window<"u"?_o():null}r(qo,"bootstrap");var er=await qo(),oe=er?new Ze(new Xe(er)):new Proxy({},{get(n,e){throw new Error(`Cannot access framer.${String(e)} in server runtime. Use createFramerInstance() with a custom transport.`)}});function tr(n){return new Ze(new Xe(n))}r(tr,"createFramerInstance");var nr=process$1.env;function Zo(n){Object.assign(nr,n);}r(Zo,"configure");function he(n,e){let t=nr[n];return t&&t.length>0?t:e}r(he,"getEnv");var ir=isWorkerd,rr=globalThis.WebSocket;async function or(n,e){let t=new URL(n.href);t.protocol=t.protocol==="wss:"?"https:":t.protocol==="ws:"?"http:":t.protocol;let o=(await fetch(t.href,{headers:{Upgrade:"websocket",...e}})).webSocket;if(!o)throw new Error("WebSocket upgrade failed - server did not accept");return o.accept(),o}r(or,"connectWebSocketCF");var ar,sr;try{ar=await import('node:fs'),sr=await import('node:path');}catch{}var En=ar,kn=sr;var ae=(m=>(m.PROJECT_CLOSED="PROJECT_CLOSED",m.POOL_EXHAUSTED="POOL_EXHAUSTED",m.TIMEOUT="TIMEOUT",m.INTERNAL="INTERNAL",m.NODE_NOT_FOUND="NODE_NOT_FOUND",m.SCREENSHOT_TOO_LARGE="SCREENSHOT_TOO_LARGE",m.INVALID_REQUEST="INVALID_REQUEST",m.UNAUTHORIZED="UNAUTHORIZED",m))(ae||{}),D=class extends Error{static{r(this,"FramerAPIError");}code;constructor(e,t){super(e),this.name="FramerAPIError",this.code=t,this.stack=undefined;}};function Jo(n){return n instanceof D?n.code==="POOL_EXHAUSTED":false}r(Jo,"isRetryableError");var Qo=new Map(Object.values(ae).map(n=>[n,n]));function lr(n){return typeof n=="string"?Qo.get(n)??"INTERNAL":"INTERNAL"}r(lr,"parseErrorCode");function ea(n,e,t){return n.throwIfAborted(),new Promise((i,o)=>{let s=r(()=>o(t()),"handleAbort");n.addEventListener("abort",s,{once:true}),e.then(a=>{n.removeEventListener("abort",s),i(a);},a=>{n.removeEventListener("abort",s),o(a);});})}r(ea,"raceWithAbortSignal");function Mn(n,e,t){return ea(n,new Promise(e),t)}r(Mn,"withAbortSignal");var dr={showUI:false,hideUI:false,closePlugin:false,setCloseWarning:true,notify:false,setMenu:false,showContextMenu:false,preloadDetachedComponentLayers:false,preloadDragPreviewImage:false,preloadImageUrlForInsertion:false,setBackgroundMessage:false,getSelection:false,getActiveCollection:false,getActiveManagedCollection:false,getActiveLocale:false,zoomIntoView:false,navigateTo:false,getPluginData:false,setPluginData:false,getPluginDataKeys:false,makeDraggable:false,subscribeToSelection:false,subscribeToImage:false,subscribeToText:false,subscribeToCustomCode:false,subscribeToColorStyles:false,subscribeToTextStyles:false,subscribeToRedirects:false,subscribeToCodeFiles:false,subscribeToOpenCodeFile:false,subscribeToIsAllowedTo:false,subscribeToCanvasRoot:false,subscribeToPublishInfo:false,unstable_ensureMinimumDependencyVersion:false,removeNode:true,removeNodes:true,addSVG:true,getRect:true,setText:true,getText:true,addText:true,setCustomCode:true,getCustomCode:true,getLocales:true,getDefaultLocale:true,getLocalizationGroups:true,setLocalizationData:true,getCurrentUser:true,getProjectInfo:true,setSelection:true,getCanvasRoot:true,getPublishInfo:true,cloneNode:true,getNode:true,getParent:true,getChildren:true,setAttributes:true,getNodesWithType:true,getNodesWithAttribute:true,getNodesWithAttributeSet:true,addImages:true,getImage:true,addImage:true,setImage:true,uploadImage:true,uploadImages:true,uploadFile:true,uploadFiles:true,setParent:true,addComponentInstance:true,addDetachedComponentLayers:true,getManagedCollection:true,getManagedCollections:true,getCollection:true,getCollections:true,getColorStyle:true,getColorStyles:true,createColorStyle:true,getTextStyle:true,getTextStyles:true,createTextStyle:true,getFont:true,getFonts:true,createCodeFile:true,getCodeFiles:true,getCodeFile:true,lintCode:true,typecheckCode:true,addRedirects:true,getRedirects:true,setRedirectOrder:true,removeRedirects:true,addComponentInstancePlaceholder:true,createCollection:true,getVectorSets:true,createDesignPage:true,createWebPage:true,createTextNode:true,createComponentNode:true,mode:true,isAllowedTo:false,createFrameNode:true,createManagedCollection:true};function An(n){return n in dr?dr[n]===true:false}r(An,"isAllowedMethod");var Vt=class n{static{r(this,"FramerAPI");}requestId;#e;#t;#n;#i=new AbortController;#r=new Map;#o=new Map;#l=0;constructor(e,t,i,o){this.#t=e,this.#n=t,this.#e=i,this.requestId=o,this.#u();}#a(){return `req-${++this.#l}-${Date.now()}`}#d=e=>{switch(e.type){case "screenshotResult":{let t=this.#r.get(e.id);if(t){this.#r.delete(e.id);let i=Buffer.from(e.data,"base64");t.resolve({data:i,mimeType:e.mimeType});}return true}case "screenshotError":{let t=this.#r.get(e.id);if(t){this.#r.delete(e.id);let i=e.code??"INTERNAL";t.reject(new D(e.error,i));}return true}case "exportSVGResult":{let t=this.#o.get(e.id);return t&&(this.#o.delete(e.id),t.resolve(e.data)),true}case "exportSVGError":{let t=this.#o.get(e.id);if(t){this.#o.delete(e.id);let i=e.code??"INTERNAL";t.reject(new D(e.error,i));}return true}default:return false}};static create(e,t,i,o){let s=new n(e,t,i,o);return new Proxy(s,{get(a,d){if(d in a)return Reflect.get(a,d);if(Tn(d)){let x=w[d],P=Reflect.get(a.#t,x);return typeof P=="function"?P.bind(a.#t):P}if(!An(d))return;let m=Reflect.get(a.#t,d);return typeof m=="function"?m.bind(a.#t):m},has(a,d){return d in a||Tn(d)?true:An(d)?d in a.#t:false}})}#u(){this.#n.onMessage(e=>{this.#d(e);},this.#i.signal);}disconnect=async()=>{this.#i.abort(),await this.#e();};#s=()=>(this.#r.clear(),this.#o.clear(),new D("Connection closed","PROJECT_CLOSED"));screenshot=(e,t)=>{let i=this.#a(),{format:o,quality:s,scale:a,clip:d}=t??{};return Mn(this.#i.signal,(m,x)=>{this.#r.set(i,{resolve:m,reject:x}),this.#n.send({type:"screenshot",id:i,nodeId:e,format:o,quality:s,scale:a,clip:d});},this.#s)};exportSVG=e=>{let t=this.#a();return Mn(this.#i.signal,(i,o)=>{this.#o.set(t,{resolve:i,reject:o}),this.#n.send({type:"exportSVG",id:t,nodeId:e});},this.#s)};[Symbol.dispose]=()=>{this.#i.abort(),this.#e();};[Symbol.asyncDispose]=()=>(this.#i.abort(),this.#e())};var ta=/^.+--([A-Za-z0-9]+)/u,ur=/^[A-Za-z0-9]{20}$/u;function cr(n){if(ur.test(n))return n;try{let t=new URL(n,"https://framer.com").pathname.split("/").filter(Boolean),i=t.findIndex(o=>o.toLowerCase()==="projects");if(i>=0){let o=t[i+1];if(o!==void 0){let s=decodeURIComponent(o),d=s.match(ta)?.[1]??s;if(ur.test(d))return d}}return null}catch{return null}}r(cr,"parseProjectId");var wn={silent:0,error:1,warn:2,info:3,debug:4};function na(){let n=he("FRAMER_API_LOG_LEVEL")?.toLowerCase();return n&&n in wn?n:"warn"}r(na,"getLogLevel");var Vn=na();function Je(n){return wn[n]<=wn[Vn]}r(Je,"shouldLog");var Qe=globalThis.console,ia="\x1B[90m",ra="\x1B[0m";function oa(n){return n?`[FramerAPI:${n}]`:"[FramerAPI]"}r(oa,"formatPrefix");function aa(n,...e){return [ia+n,...e,ra]}r(aa,"formatDebug");function pr(n){let e=oa(n);return {warn:(...t)=>{Je("warn")&&Qe.warn(e,...t);},error:(...t)=>{Je("error")&&Qe.error(e,...t);},log:(...t)=>{Je("info")&&Qe.log(e,...t);},info:(...t)=>{Je("info")&&Qe.info(e,...t);},debug:(...t)=>{Je("debug")&&Qe.debug(...aa(e,...t));},setLevel:t=>{Vn=t;},getLevel:()=>Vn,withRequestId:t=>pr(t)}}r(pr,"createLogger");var N=pr();N.warn;N.error;N.log;N.info;N.debug;N.setLevel;N.getLevel;function X(n,...e){if(n)return;let t=Error("Assertion Error"+(e.length>0?": "+e.join(" "):""));if(t.stack)try{let i=t.stack.split(`
8
+ `));}catch{}throw t}r(m,"assert");function S(n){for(let e of Reflect.ownKeys(n)){let t=n[e];!t||typeof t!="object"&&!Ar(t)||S(t);}return Object.freeze(n)}r(S,"deepFreeze");function Hn(n){return [n.slice(0,-1),n.at(-1)]}r(Hn,"splitRestAndLast");var p="__class";var Gt=Symbol(),Kt=Symbol(),wr=Symbol(),Vr=Symbol(),Wr=Symbol(),Lr=Symbol(),Rr=Symbol(),$t=Symbol(),Ht=Symbol(),l={getAiServiceInfo:Gt,sendTrackingEvent:Kt,environmentInfo:wr,initialState:Vr,showUncheckedPermissionToasts:Wr,marshal:Lr,unmarshal:Rr,getHTMLForNode:$t,setHTMLForNode:Ht},ct="INTERNAL_",pt=`${ct}getAiServiceInfo`,mt=`${ct}sendTrackingEvent`,de=`${ct}getHTMLForNode`,ue=`${ct}setHTMLForNode`;var k=class{static{r(this,"VariableBase");}#e;#t;get nodeId(){return this.#t.nodeId}get nodeType(){return this.#t.nodeType}get id(){return this.#t.id}get name(){return this.#t.name}get description(){return this.#t.description??null}constructor(e,t){this.#e=e,this.#t=t;}async setAttributes(e){let t=await this.#e.invoke("updateVariable",this.nodeId,this.id,{...e,type:this.type});if(x(t))return null;let i=this.constructor;return new i(this.#e,t)}async remove(){await this.#e.invoke("removeVariables",this.nodeId,[this.id]);}},A="Variable";function w(n){let e=n.at(0);return m(!Kn(e)),`${e.toLowerCase()}${n.slice(1,-A.length)}`}r(w,"classToType");var Br=`Boolean${A}`,Ur=w(Br),Ce=class n extends k{static{r(this,"BooleanVariable");}type=Ur;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},Or=`Number${A}`,zr=w(Or),Ie=class n extends k{static{r(this,"NumberVariable");}type=zr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},Gr=`String${A}`,Kr=w(Gr),Te=class n extends k{static{r(this,"StringVariable");}type=Kr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},$r=`FormattedText${A}`,Hr=w($r),Pe=class n extends k{static{r(this,"FormattedTextVariable");}type=Hr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},jr=`Enum${A}`,_r=w(jr),$=class n{static{r(this,"EnumCase");}#e;#t;#n;#i;get id(){return this.#i.id}get name(){return this.#i.name}get nameByLocale(){return this.#i.nameByLocale}constructor(e,t,i,o){this.#e=e,this.#t=t,this.#n=i,this.#i=o;}async setAttributes(e){let t=await this.#e.invoke("updateEnumCase",this.#t,this.#n,this.id,e);return t?new n(this.#e,this.#t,this.#n,t):null}async remove(){await this.#e.invoke("removeEnumCase",this.#t,this.#n,this.id);}},Se=class n extends k{static{r(this,"EnumVariable");}type=_r;#e;#t;#n;get cases(){return this.#n||(this.#n=S(this.#t.cases.map(e=>new $(this.#e,this.nodeId,this.id,e)))),this.#n}constructor(e,t){super(e,t),this.#e=e,this.#t=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#t}async addCase(e){let t=await this.#e.invoke("addEnumCase",this.nodeId,this.id,e);return t?new $(this.#e,this.nodeId,this.id,t):null}async setCaseOrder(e){await this.#e.invoke("setEnumCaseOrder",this.nodeId,this.id,e);}},qr=`Color${A}`,Yr=w(qr),Fe=class n extends k{static{r(this,"ColorVariable");}type=Yr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},Xr=`Image${A}`,Zr=w(Xr),De=class n extends k{static{r(this,"ImageVariable");}type=Zr;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},Jr=`File${A}`,Qr=w(Jr),ve=class n extends k{static{r(this,"FileVariable");}type=Qr;#e;get allowedFileTypes(){return this.#e.allowedFileTypes}constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},eo=`Link${A}`,to=w(eo),Ne=class n extends k{static{r(this,"LinkVariable");}type=to;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},no=`Date${A}`,io=w(no),Ee=class n extends k{static{r(this,"DateVariable");}type=io;#e;get displayTime(){return this.#e.displayTime}constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},ro=`Border${A}`,oo=w(ro),ke=class n extends k{static{r(this,"BorderVariable");}type=oo;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}},ao=`Unsupported${A}`,so=w(ao),Me=class n extends k{static{r(this,"UnsupportedVariable");}type=so;#e;constructor(e,t){super(e,t),this.#e=t;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return this.#e}};function jn(n){return n instanceof k}r(jn,"isVariable");function lo(n){return jn(n)&&n.nodeType==="component"}r(lo,"isComponentVariable");var R=class{static{r(this,"FieldBase");}#e;#t;#n;get id(){return this.#n.id}get name(){return this.#n.name}constructor(e,t,i){this.#e=e,this.#t=t,this.#n=i;}async setAttributes(e){let t={...e,type:this.type,id:this.id},[i]=await this.#e.invoke("addCollectionFields2",this.#t,[t]);if(m(lt(i)),x(i))return null;m(i.type===this.type);let o=this.constructor;return new o(this.#e,this.#t,i)}async remove(){await this.#e.invoke("removeCollectionFields",this.#t,[this.id]);}},L=class extends R{static{r(this,"FieldBaseWithRequired");}#e;get required(){return this.#e.required}constructor(e,t,i){super(e,t,i),this.#e=i;}},gt=class extends R{static{r(this,"BooleanField");}type=qt},ft=class extends R{static{r(this,"ColorField");}type=Yt},yt=class extends R{static{r(this,"NumberField");}type=Xt},ht=class extends L{static{r(this,"StringField");}type=Zt;#e;constructor(e,t,i){super(e,t,i),this.#e=i;}get basedOn(){return this.#e.basedOn}},bt=class extends L{static{r(this,"FormattedTextField");}type=Jt},Ae=class extends L{static{r(this,"ImageField");}type=Qt},xt=class extends L{static{r(this,"LinkField");}type=tn},Ct=class extends L{static{r(this,"DateField");}type=nn;#e;get displayTime(){return this.#e.displayTime}constructor(e,t,i){super(e,t,i),this.#e=i;}},It=class extends R{static{r(this,"FieldDivider");}type=ln},we=class extends R{static{r(this,"UnsupportedField");}type=dn},Tt=class extends L{static{r(this,"FileField");}type=rn;#e;get allowedFileTypes(){return this.#e.allowedFileTypes}constructor(e,t,i){super(e,t,i),this.#e=i;}},Pt=class extends R{static{r(this,"EnumField");}type=on;#e;#t;#n;#i;get cases(){return this.#i||(this.#i=this.#n.cases.map(e=>new $(this.#e,this.#t,this.id,e)),S(this.#i)),this.#i}constructor(e,t,i){super(e,t,i),this.#e=e,this.#t=t,this.#n=i;}async addCase(e){let t=await this.#e.invoke("addEnumCase",this.#t,this.id,e);return t?new $(this.#e,this.#t,this.id,t):null}async setCaseOrder(e){await this.#e.invoke("setEnumCaseOrder",this.#t,this.id,e);}},St=class extends L{static{r(this,"CollectionReferenceField");}type=an;#e;get collectionId(){return this.#e.collectionId}constructor(e,t,i){super(e,t,i),this.#e=i;}},Ft=class extends L{static{r(this,"MultiCollectionReferenceField");}type=sn;#e;get collectionId(){return this.#e.collectionId}constructor(e,t,i){super(e,t,i),this.#e=i;}},jt=class extends L{static{r(this,"ArrayField");}type=en;fields;constructor(e,t,i){super(e,t,i);let o=i.fields[0];this.fields=[new Ae(e,t,o)];}};function _t(n,e,t){return n.map(i=>{switch(i.type){case qt:return new gt(e,t,i);case Yt:return new ft(e,t,i);case Xt:return new yt(e,t,i);case Zt:return new ht(e,t,i);case Jt:return new bt(e,t,i);case Qt:return new Ae(e,t,i);case tn:return new xt(e,t,i);case nn:return new Ct(e,t,i);case ln:return new It(e,t,i);case dn:return new we(e,t,i);case rn:return new Tt(e,t,i);case on:return new Pt(e,t,i);case an:return new St(e,t,i);case sn:return new Ft(e,t,i);case en:return new jt(e,t,i);default:return new we(e,t,i)}})}r(_t,"fieldDefinitionDataArrayToFieldClassInstances");function uo(n){return n instanceof R}r(uo,"isField");var _n="action";function co(n){return !!n&&_n in n&&f(n[_n])}r(co,"isLocalizedValueUpdate");function qn(n){return Object.keys(n).reduce((e,t)=>{let i=n[t];return co(i)&&(e[t]=i),e},{})}r(qn,"filterInlineLocalizationValues");var Ve=class n{static{r(this,"FileAsset");}id;url;extension;constructor(e){this.url=e.url,this.id=e.id,this.extension=e.extension;}static[l.unmarshal](e,t){return new n(t)}[l.marshal](){return {[p]:"FileAsset",id:this.id,url:this.url,extension:this.extension}}};function po(n){return n instanceof Ve}r(po,"isFileAsset");var mo="ImageAsset";function Yn(n){return v(n)?n[p]===mo:false}r(Yn,"isImageAssetData");var H=class n{static{r(this,"ImageAsset");}id;url;thumbnailUrl;altText;resolution;#e;#t;constructor(e,t){this.#t=e,this.url=t.url,this.id=t.id,this.thumbnailUrl=t.thumbnailUrl,this.altText=t.altText,this.resolution=t.resolution;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return {[p]:"ImageAsset",id:this.id,url:this.url,thumbnailUrl:this.thumbnailUrl,altText:this.altText,resolution:this.resolution}}cloneWithAttributes({altText:e,resolution:t}){return new n(this.#t,{[p]:"ImageAsset",id:this.id,url:this.url,thumbnailUrl:this.thumbnailUrl,altText:e??this.altText,resolution:t??this.resolution})}async measure(){return yo(this.url)}async getData(){if(this.#e&&this.#e.bytes.length>0)return this.#e;let e=await this.#t.invoke("getImageData",{id:this.id,resolution:this.resolution});if(!e)throw new Error("Failed to load image data");return this.#e=e,e}async loadBitmap(){let{mimeType:e,bytes:t}=await this.getData(),i=new Blob([t],{type:e});return createImageBitmap(i)}async loadImage(){let e=await this.getData(),t=URL.createObjectURL(new Blob([e.bytes]));return new Promise((i,o)=>{let a=new Image;a.onload=()=>i(a),a.onerror=()=>o(),a.src=t;})}};function go(n){return n instanceof H}r(go,"isImageAsset");function j(n){return n.type==="bytes"?[n.bytes.buffer]:[]}r(j,"getTransferable");function fo(n){if(!v(n))return false;let e="bytes",t="mimeType";return !(!(e in n)||!(t in n)||!(n[e]instanceof Uint8Array)||!f(n[t]))}r(fo,"isBytesData");async function We(n){if(n instanceof File)return pn(n);let e=await Xn(n.image);return {name:n.name,altText:n.altText,resolution:n.resolution,preferredImageRendering:n.preferredImageRendering,...e}}r(We,"createImageTransferFromInput");async function un(n){if(n instanceof File)return pn(n);let e=await Xn(n.file);return {name:n.name,...e}}r(un,"createFileTransferFromInput");async function Xn(n){return n instanceof File?pn(n):fo(n)?{type:"bytes",mimeType:n.mimeType,bytes:n.bytes}:{type:"url",url:n}}r(Xn,"createAssetTransferFromAssetInput");function cn(n){return Promise.all(n.map(We))}r(cn,"createNamedAssetDataTransferFromInput");async function pn(n){return new Promise((e,t)=>{let i=new FileReader;i.onload=o=>{let a=n.type,s=o.target?.result;if(!s||!(s instanceof ArrayBuffer)){t(new Error("Failed to read file, arrayBuffer is null"));return}let d=new Uint8Array(s);e({bytes:d,mimeType:a,type:"bytes",name:n.name});},i.onerror=o=>{t(o);},i.readAsArrayBuffer(n);})}r(pn,"getAssetDataFromFile");async function yo(n){let e=n instanceof File,t=e?URL.createObjectURL(n):n,i=new Image;return i.crossOrigin="anonymous",new Promise((o,a)=>{i.onload=()=>{o({width:i.naturalWidth,height:i.naturalHeight});},i.onerror=s=>{a(s);},i.src=t;}).finally(()=>{e&&URL.revokeObjectURL(t);})}r(yo,"measureImage");var Dt=class{static{r(this,"ComputedValueBase");}};var ho="unsupported",Le=class n extends Dt{static{r(this,"UnsupportedComputedValue");}type=ho;#e;constructor(e){super(),this.#e=e;}static[l.unmarshal](e,t){return new n(t)}[l.marshal](){return this.#e}};function bo(n){return n instanceof Dt}r(bo,"isComputedValue");var xo="Font";function Jn(n){return v(n)&&n[p]===xo}r(Jn,"isFontData");function Co(n){if(!K(n))return false;switch(n){case 100:case 200:case 300:case 400:case 500:case 600:case 700:case 800:case 900:return true;default:return false}}r(Co,"isFontWeight");function Io(n){if(!f(n))return false;switch(n){case "normal":case "italic":return true;default:return false}}r(Io,"isFontStyle");function Qn(n){return v(n)?f(n.family)&&f(n.selector)&&Co(n.weight)&&Io(n.style):false}r(Qn,"isFont");var O=class n{static{r(this,"Font");}selector;family;weight;style;constructor(e){this.selector=e.selector,this.family=e.family,this.weight=e.weight,this.style=e.style;}static[l.unmarshal](e,t){let i=Zn.get(t.selector);if(i)return i;let o=new n(t);return Zn.set(t.selector,o),o}[l.marshal](){return {[p]:"Font",selector:this.selector,family:this.family,weight:this.weight,style:this.style}}},Zn=new Map;var To="LinearGradient",Po="RadialGradient",So="ConicGradient",ce=class{static{r(this,"GradientBase");}#e;get stops(){return this.#e.stops}constructor(e){this.#e=e;}cloneWithAttributes(e){let t=this.constructor;return new t({...this.#e,...e})}},Re=class n extends ce{static{r(this,"LinearGradient");}[p]=To;#e;get angle(){return this.#e.angle}constructor(e){super(e),this.#e=e;}static[l.unmarshal](e,t){return new n({...t,stops:h(e,t.stops)})}[l.marshal](){return B({...this.#e,[p]:this[p]})}toCSS(){let e=this.#e.stops.map(t=>(m(f(t.color),"ColorStyle not supported yet"),`${t.color} ${t.position*100}%`)).join(", ");return `linear-gradient(${this.angle}deg, ${e})`}},Be=class n extends ce{static{r(this,"RadialGradient");}[p]=Po;#e;get width(){return this.#e.width}get height(){return this.#e.height}get x(){return this.#e.x}get y(){return this.#e.y}constructor(e){super(e),this.#e=e;}static[l.unmarshal](e,t){return new n({...t,stops:h(e,t.stops)})}[l.marshal](){return B({...this.#e,[p]:this[p]})}toCSS(){let e=this.stops.map((t,i)=>{m(f(t.color),"ColorStyle not supported yet");let o=this.stops[i+1],a=t.position===1&&o?.position===1?t.position-1e-4:t.position;return `${t.color} ${a*100}%`}).join(", ");return `radial-gradient(${this.width} ${this.height} at ${this.x} ${this.y}, ${e})`}},Ue=class n extends ce{static{r(this,"ConicGradient");}[p]=So;#e;get angle(){return this.#e.angle}get x(){return this.#e.x}get y(){return this.#e.y}constructor(e){super(e),this.#e=e;}static[l.unmarshal](e,t){return new n({...t,stops:h(e,t.stops)})}[l.marshal](){return B({...this.#e,[p]:this[p]})}toCSS(){let e=this.stops.map(t=>(m(f(t.color),"ColorStyle not supported yet"),`${t.color} ${t.position*360}deg`)).join(", ");return `conic-gradient(from ${this.angle}deg at ${this.x} ${this.y}, ${e})`}};function ei(n){return n instanceof ce}r(ei,"isGradient");var Fo="ColorStyle";function vt(n){return v(n)?n[p]===Fo:false}r(vt,"isColorStyleData");var J=class n{static{r(this,"ColorStyle");}id;name;path;light;dark;#e;constructor(e,t){this.id=t.id,this.name=t.name,this.light=t.light,this.dark=t.dark,this.path=t.path,this.#e=e;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return {[p]:"ColorStyle",id:this.id,name:this.name,light:this.light,dark:this.dark,path:this.path}}async setAttributes(e){let t=await this.#e.invoke("setColorStyleAttributes",this.id,e);return t?new n(this.#e,t):null}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async remove(){return this.#e.invoke("removeColorStyle",this.id)}};function pe(n){return n instanceof J}r(pe,"isColorStyle");var Do="TextStyle";function ti(n){return v(n)?n[p]===Do:false}r(ti,"isTextStyleData");var Oe=class n{static{r(this,"TextStyle");}id;name;path;tag;font;boldFont;italicFont;boldItalicFont;color;transform;alignment;decoration;decorationColor;decorationThickness;decorationStyle;decorationSkipInk;decorationOffset;balance;breakpoints;minWidth;fontSize;letterSpacing;lineHeight;paragraphSpacing;#e;constructor(e,t){this.id=t.id,this.name=t.name,this.path=t.path,this.tag=t.tag,this.font=O[l.unmarshal](e,t.font),this.boldFont=t.boldFont&&O[l.unmarshal](e,t.boldFont),this.italicFont=t.italicFont&&O[l.unmarshal](e,t.italicFont),this.boldItalicFont=t.boldItalicFont&&O[l.unmarshal](e,t.boldItalicFont),this.color=vt(t.color)?J[l.unmarshal](e,t.color):t.color,this.transform=t.transform,this.alignment=t.alignment,this.decoration=t.decoration,this.decorationColor=vt(t.decorationColor)?J[l.unmarshal](e,t.decorationColor):t.decorationColor,this.decorationThickness=t.decorationThickness,this.decorationStyle=t.decorationStyle,this.decorationSkipInk=t.decorationSkipInk,this.decorationOffset=t.decorationOffset,this.balance=t.balance,this.breakpoints=t.breakpoints,this.minWidth=t.minWidth,this.fontSize=t.fontSize,this.letterSpacing=t.letterSpacing,this.lineHeight=t.lineHeight,this.paragraphSpacing=t.paragraphSpacing,this.#e=e;}static[l.unmarshal](e,t){return new n(e,t)}[l.marshal](){return {[p]:"TextStyle",id:this.id,name:this.name,path:this.path,tag:this.tag,font:this.font[l.marshal](),boldFont:this.boldFont?.[l.marshal]()??null,italicFont:this.italicFont?.[l.marshal]()??null,boldItalicFont:this.boldItalicFont?.[l.marshal]()??null,color:pe(this.color)?this.color[l.marshal]():this.color,transform:this.transform,alignment:this.alignment,decoration:this.decoration,decorationColor:pe(this.decorationColor)?this.decorationColor[l.marshal]():this.decorationColor,decorationThickness:this.decorationThickness,decorationStyle:this.decorationStyle,decorationSkipInk:this.decorationSkipInk,decorationOffset:this.decorationOffset,balance:this.balance,breakpoints:this.breakpoints,minWidth:this.minWidth,fontSize:this.fontSize,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,paragraphSpacing:this.paragraphSpacing}}async setAttributes(e){let t=await this.#e.invoke("setTextStyleAttributes",this.id,e);return t?new n(this.#e,t):null}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async remove(){return this.#e.invoke("removeTextStyle",this.id)}};function mn(n){return n instanceof Oe}r(mn,"isTextStyle");function vo(n){return v(n)&&l.marshal in n}r(vo,"isSelfMarshalable");function B(n){if(vo(n))return n[l.marshal]();if(zt(n))return n.map(B);if(dt(n)){let e={};for(let t of Object.keys(n))e[t]=B(n[t]);return e}return n}r(B,"marshal");var ni={ColorStyle:J,ConicGradient:Ue,FileAsset:Ve,Font:O,ImageAsset:H,LinearGradient:Re,RadialGradient:Be,TextStyle:Oe,BooleanVariable:Ce,BorderVariable:ke,ColorVariable:Fe,DateVariable:Ee,EnumVariable:Se,FileVariable:ve,FormattedTextVariable:Pe,ImageVariable:De,LinkVariable:Ne,NumberVariable:Ie,StringVariable:Te,UnsupportedVariable:Me,UnsupportedComputedValue:Le};function No(n){return dt(n)&&f(n[p])&&n[p]in ni}r(No,"isSelfUnmarshalable");function h(n,e){if(No(e))return ni[e[p]][l.unmarshal](n,e);if(zt(e))return e.map(t=>h(n,t));if(dt(e)){let t={};for(let i of Object.keys(e))t[i]=h(n,e[i]);return t}return e}r(h,"unmarshal");var Eo={array:false,boolean:false,collectionReference:false,color:false,date:false,enum:false,file:false,formattedText:false,image:true,link:false,multiCollectionReference:false,number:false,string:false,unsupported:false};function ko(n){return Eo[n]}r(ko,"isSupportedArrayItemFieldType");function Mo(n){return ko(n.type)}r(Mo,"isSupportedArrayItemFieldDataEntry");var qt="boolean",Yt="color",Xt="number",Zt="string",Jt="formattedText",Qt="image",en="array",tn="link",nn="date",rn="file",on="enum",an="collectionReference",sn="multiCollectionReference",ln="divider",dn="unsupported";function Ao(n){return n.map(e=>{if(e.type!=="enum")return e;let t=e.cases.map(i=>{let o=i.nameByLocale?qn(i.nameByLocale):undefined;return {...i,nameByLocale:o}});return {...e,cases:t}})}r(Ao,"sanitizeEnumFieldForMessage");function ii(n,e){let t={};for(let i in n){let o=n[i];if(!o)continue;if(o.type!=="array"){t[i]=h(e,o);continue}let a=o.value.map(s=>{let d=ii(s.fieldData,e),b={};for(let C in d){let D=d[C];m(D&&Mo(D),"Unsupported array item field data entry"),b[C]=D;}return {...s,fieldData:b}});t[i]={...o,value:a};}return t}r(ii,"deserializeFieldData");var me=class{static{r(this,"ManagedCollection");}id;name;readonly;managedBy;#e;constructor(e,t){this.id=e.id,this.name=e.name,this.readonly=e.readonly,m(e.managedBy!=="user","Managed Collection can only be managed by a plugin"),this.managedBy=e.managedBy,this.#e=t,S(this);}async getItemIds(){return this.#e.invoke("getManagedCollectionItemIds",this.id)}async setItemOrder(e){return this.#e.invoke("setManagedCollectionItemOrder",this.id,e)}async getFields(){return this.#e.invoke("getManagedCollectionFields2",this.id)}async setFields(e){let t=Ao(e);return this.#e.invoke("setManagedCollectionFields",this.id,t)}async addItems(e){return this.#e.invoke("addManagedCollectionItems2",this.id,e)}async removeItems(e){return this.#e.invoke("removeManagedCollectionItems",this.id,e)}async setAsActive(){return this.#e.invoke("setActiveCollection",this.id)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async navigateTo(e){return this.#e.invoke("navigateTo",this.id,e)}},Q=class{static{r(this,"Collection");}id;name;slugFieldName;slugFieldBasedOn;readonly;managedBy;#e;constructor(e,t){this.id=e.id,this.name=e.name,this.slugFieldName=e.slugFieldName,this.slugFieldBasedOn=e.slugFieldBasedOn,this.readonly=e.readonly,this.managedBy=e.managedBy,this.#e=t,S(this);}async setItemOrder(e){return this.#e.invoke("setCollectionItemOrder",this.id,e)}async getFields(){let e=await this.#e.invoke("getCollectionFields2",this.id,true);return _t(e,this.#e,this.id)}async addFields(e){let t=await this.#e.invoke("addCollectionFields2",this.id,e);return m(t.every($n)),_t(t,this.#e,this.id)}async removeFields(e){return this.#e.invoke("removeCollectionFields",this.id,e)}async setFieldOrder(e){return this.#e.invoke("setCollectionFieldOrder",this.id,e)}async getItems(){return (await this.#e.invoke("getCollectionItems2",this.id)).map(t=>new ze(t,this.#e))}async addItems(e){await this.#e.invoke("addCollectionItems2",this.id,e);}async removeItems(e){return this.#e.invoke("removeCollectionItems",e)}async setAsActive(){return this.#e.invoke("setActiveCollection",this.id)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async navigateTo(e){return this.#e.invoke("navigateTo",this.id,e)}},ze=class n{static{r(this,"CollectionItem");}id;nodeId;slug;slugByLocale;draft;fieldData;#e;constructor(e,t){let i=ii(e.fieldData,t);this.id=e.externalId??e.nodeId,this.nodeId=e.nodeId,this.slug=e.slug,this.slugByLocale=e.slugByLocale,this.draft=e.draft??false,this.fieldData=i,this.#e=t,S(this);}async remove(){return this.#e.invoke("removeCollectionItems",[this.id])}async setAttributes(e){let t=await this.#e.invoke("setCollectionItemAttributes2",this.id,e);return t?new n(t,this.#e):null}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}async navigateTo(e){return this.#e.invoke("navigateTo",this.nodeId,e)}};var wo={fixed:true,sticky:true,absolute:true,relative:true},ri="position";function Rs(n){if(!(ri in n))return false;let e=n[ri];return f(e)&&wo[e]===true}r(Rs,"supportsPosition");var oi="top";function Bs(n){if(!(oi in n))return false;let e=n[oi];return f(e)||x(e)}r(Bs,"supportsPins");var ai="width";function Us(n){if(!(ai in n))return false;let e=n[ai];return f(e)||x(e)}r(Us,"supportsSize");var si="maxWidth";function Os(n){if(!(si in n))return false;let e=n[si];return f(e)||x(e)}r(Os,"supportsSizeConstraints");var li="aspectRatio";function zs(n){if(!(li in n))return false;let e=n[li];return K(e)||x(e)}r(zs,"supportsAspectRatio");var di="name";function Gs(n){if(!(di in n))return false;let e=n[di];return f(e)||x(e)}r(Gs,"supportsName");var ui="visible";function Ks(n){if(!(ui in n))return false;let e=n[ui];return xe(e)}r(Ks,"supportsVisible");var ci="locked";function $s(n){if(!(ci in n))return false;let e=n[ci];return xe(e)}r($s,"supportsLocked");var pi="backgroundColor";function Hs(n){if(!(pi in n))return false;let e=n[pi];return f(e)||pe(e)||x(e)}r(Hs,"supportsBackgroundColor");var mi="backgroundColor";function js(n){if(!(mi in n))return false;let e=n[mi];return f(e)||vt(e)||x(e)}r(js,"supportsBackgroundColorData");var gi="backgroundImage";function _s(n){if(!(gi in n))return false;let e=n[gi];return e instanceof H||x(e)}r(_s,"supportsBackgroundImage");var fi="backgroundImage";function qs(n){if(!(fi in n))return false;let e=n[fi];return e instanceof H?false:Yn(e)||x(e)}r(qs,"supportsBackgroundImageData");var yi="backgroundGradient";function Ys(n){if(!(yi in n))return false;let e=n[yi];return ei(e)||x(e)}r(Ys,"supportsBackgroundGradient");var hi="backgroundGradient";function Xs(n){if(!(hi in n))return false;let e=n[hi];return v(e)||x(e)}r(Xs,"supportsBackgroundGradientData");var bi="rotation";function Zs(n){if(!(bi in n))return false;let e=n[bi];return K(e)}r(Zs,"supportsRotation");var xi="opacity";function Js(n){if(!(xi in n))return false;let e=n[xi];return K(e)}r(Js,"supportsOpacity");var Ci="borderRadius";function Qs(n){if(!(Ci in n))return false;let e=n[Ci];return f(e)||x(e)}r(Qs,"supportsBorderRadius");var Ii="border";function el(n){if(!(Ii in n))return false;let e=n[Ii];return x(e)||pe(e.color)}r(el,"supportsBorder");var Ti="svg";function tl(n){if(!(Ti in n))return false;let e=n[Ti];return f(e)}r(tl,"supportsSVG");var Pi="textTruncation";function nl(n){if(!(Pi in n))return false;let e=n[Pi];return K(e)||x(e)}r(nl,"supportsTextTruncation");var Si="zIndex";function il(n){if(!(Si in n))return false;let e=n[Si];return K(e)||x(e)}r(il,"supportsZIndex");var Fi="overflow";function rl(n){if(!(Fi in n))return false;let e=n[Fi];return f(e)||x(e)}r(rl,"supportsOverflow");var Di="componentIdentifier";function ol(n){if(!(Di in n))return false;let e=n[Di];return f(e)}r(ol,"supportsComponentInfo");var vi="font";function al(n){if(!(vi in n))return false;let e=n[vi];return Qn(e)}r(al,"supportsFont");var Ni="font";function sl(n){if(!(Ni in n))return false;let e=n[Ni];return Jn(e)||x(e)}r(sl,"supportsFontData");var Ei="inlineTextStyle";function ll(n){if(!(Ei in n))return false;let e=n[Ei];return mn(e)||x(e)}r(ll,"supportsInlineTextStyle");var ki="inlineTextStyle";function dl(n){if(!(ki in n))return false;let e=n[ki];return ti(e)||x(e)}r(dl,"supportsInlineTextStyleData");var Mi="link";function ul(n){if(!(Mi in n))return false;let e=n[Mi];return f(e)||x(e)}r(ul,"supportsLink");var Ai="imageRendering";function cl(n){if(!(Ai in n))return false;let e=n[Ai];return f(e)||x(e)}r(cl,"supportsImageRendering");var wi="layout";function Li(n){if(!(wi in n))return false;let e=n[wi];return f(e)||x(e)}r(Li,"supportsLayout");function pl(n){return Li(n)?n.layout==="stack":false}r(pl,"hasStackLayout");function ml(n){return Li(n)?n.layout==="grid":false}r(ml,"hasGridLayout");var Vi="isVariant";function Ri(n){if(!(Vi in n))return false;let e=n[Vi];return xe(e)}r(Ri,"supportsComponentVariant");function gn(n){return Ri(n)?n.isVariant:false}r(gn,"isComponentVariant");function Bi(n){return !Ri(n)||!gn(n)?false:!x(n.gesture)}r(Bi,"isComponentGestureVariant");var Wi="isBreakpoint";function Vo(n){if(!(Wi in n))return false;let e=n[Wi];return xe(e)}r(Vo,"supportsBreakpoint");function Ui(n){return Vo(n)?n.isBreakpoint:false}r(Ui,"isBreakpoint");var V=class{static{r(this,"NodeMethods");}id;originalId;#e;constructor(e,t){this.id=e.id,this.originalId=e.originalId??null,this.#e=t;}get isReplica(){return this.originalId!==null}async remove(){return this.#e.invoke("removeNodes2",[this.id])}async select(){return this.#e.invoke("setSelection",[this.id])}async clone(){if(this[p]==="UnknownNode")throw Error("Can not clone unknown node");return this.#e.cloneNode(this.id)}async setAttributes(e){if(this[p]==="UnknownNode")throw Error("Can not set attributes on unknown node");return this.#e.setAttributes(this.id,e)}async getRect(){return this.#e.invoke("getRect",this.id)}async zoomIntoView(e){return this.#e.invoke("zoomIntoView",[this.id],e)}async navigateTo(e){return this.#e.invoke("navigateTo",this.id,e)}async getParent(){return this.#e.getParent(this.id)}async getChildren(){return ee(this)?Promise.resolve([]):this.#e.getChildren(this.id)}async getNodesWithType(e){return ee(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithType",this.id,e)).map(i=>I(i,this.#e))}async getNodesWithAttribute(e){return ee(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithAttribute",this.id,e)).map(i=>I(i,this.#e))}async getNodesWithAttributeSet(e){return ee(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithAttributeSet",this.id,e)).map(i=>I(i,this.#e))}async*walk(){if(yield this,!ee(this))for(let e of await this.getChildren())yield*e.walk();}async getPluginData(e){return this.#e.invoke("getPluginDataForNode",this.id,e)}async setPluginData(e,t){return this.#e.invoke("setPluginDataForNode",this.id,e,t)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeysForNode",this.id)}},U=class extends V{static{r(this,"FrameNode");}[p]="FrameNode";name;visible;locked;backgroundColor;backgroundImage;backgroundGradient;rotation;opacity;borderRadius;border;imageRendering;position;top;right;bottom;left;centerX;centerY;width;height;maxWidth;minWidth;maxHeight;minHeight;aspectRatio;zIndex;link;linkOpenInNewTab;overflow;overflowX;overflowY;layout;gap;padding;stackDirection;stackDistribution;stackAlignment;stackWrapEnabled;gridColumnCount;gridRowCount;gridAlignment;gridColumnWidthType;gridColumnWidth;gridColumnMinWidth;gridRowHeightType;gridRowHeight;gridItemFillCellWidth;gridItemFillCellHeight;gridItemHorizontalAlignment;gridItemVerticalAlignment;gridItemColumnSpan;gridItemRowSpan;isVariant;isPrimaryVariant;isBreakpoint;isPrimaryBreakpoint;inheritsFromId;gesture;constructor(e,t){super(e,t),this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.backgroundColor=h(t,e.backgroundColor)??null,this.backgroundImage=h(t,e.backgroundImage)??null,this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.borderRadius=e.borderRadius??null,this.border=h(t,e.border)??null,this.backgroundGradient=h(t,e.backgroundGradient)??null,this.imageRendering=e.imageRendering??null,this.position=e.position,this.left=e.left??null,this.right=e.right??null,this.top=e.top??null,this.bottom=e.bottom??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,this.maxWidth=e.maxWidth??null,this.minWidth=e.minWidth??null,this.maxHeight=e.maxHeight??null,this.minHeight=e.minHeight??null,this.aspectRatio=e.aspectRatio??null,this.zIndex=e.zIndex??null,this.link=e.link??null,this.linkOpenInNewTab=e.linkOpenInNewTab??null,this.overflow=e.overflow??null,this.overflowX=e.overflowX??null,this.overflowY=e.overflowY??null,this.layout=e.layout??null,this.gap=e.gap??null,this.padding=e.padding??null,this.stackDirection=e.stackDirection??null,this.stackDistribution=e.stackDistribution??null,this.stackAlignment=e.stackAlignment??null,this.stackWrapEnabled=e.stackWrapEnabled??null,this.gridColumnCount=e.gridColumnCount??null,this.gridRowCount=e.gridRowCount??null,this.gridAlignment=e.gridAlignment??null,this.gridColumnWidthType=e.gridColumnWidthType??null,this.gridColumnWidth=e.gridColumnWidth??null,this.gridColumnMinWidth=e.gridColumnMinWidth??null,this.gridRowHeightType=e.gridRowHeightType??null,this.gridRowHeight=e.gridRowHeight??null,this.gridItemFillCellWidth=e.gridItemFillCellWidth??null,this.gridItemFillCellHeight=e.gridItemFillCellHeight??null,this.gridItemHorizontalAlignment=e.gridItemHorizontalAlignment??null,this.gridItemVerticalAlignment=e.gridItemVerticalAlignment??null,this.gridItemColumnSpan=e.gridItemColumnSpan??null,this.gridItemRowSpan=e.gridItemRowSpan??null,this.inheritsFromId=e.inheritsFromId??null,this.gesture=e.gesture??null,this.isVariant=e.isVariant??false,this.isPrimaryVariant=e.isPrimaryVariant??false,this.isBreakpoint=e.isBreakpoint??false,this.isPrimaryBreakpoint=e.isPrimaryBreakpoint??false,S(this);}},te=class extends V{static{r(this,"TextNode");}[p]="TextNode";name;visible;locked;rotation;opacity;zIndex;font;inlineTextStyle;position;top;right;bottom;left;centerX;centerY;width;height;maxWidth;minWidth;maxHeight;minHeight;link;linkOpenInNewTab;gridItemFillCellWidth;gridItemFillCellHeight;gridItemHorizontalAlignment;gridItemVerticalAlignment;gridItemColumnSpan;gridItemRowSpan;overflow;overflowX;overflowY;textTruncation;#e;constructor(e,t){super(e,t),this.#e=t,this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.zIndex=e.zIndex??null,this.font=h(t,e.font)??null,this.inlineTextStyle=h(t,e.inlineTextStyle)??null,this.position=e.position,this.left=e.left??null,this.right=e.right??null,this.top=e.top??null,this.bottom=e.bottom??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,this.maxWidth=e.maxWidth??null,this.minWidth=e.minWidth??null,this.maxHeight=e.maxHeight??null,this.minHeight=e.minHeight??null,this.link=e.link??null,this.linkOpenInNewTab=e.linkOpenInNewTab??null,this.overflow=e.overflow??null,this.overflowX=e.overflowX??null,this.overflowY=e.overflowY??null,this.textTruncation=e.textTruncation??null,this.gridItemFillCellWidth=e.gridItemFillCellWidth??null,this.gridItemFillCellHeight=e.gridItemFillCellHeight??null,this.gridItemHorizontalAlignment=e.gridItemHorizontalAlignment??null,this.gridItemVerticalAlignment=e.gridItemVerticalAlignment??null,this.gridItemColumnSpan=e.gridItemColumnSpan??null,this.gridItemRowSpan=e.gridItemRowSpan??null,S(this);}async setText(e){await this.#e.invoke("setTextForNode",this.id,e);}async getText(){return this.#e.invoke("getTextForNode",this.id)}async setHTML(e){await this.#e.invoke(ue,this.id,e),await new Promise(t=>{setTimeout(t,30);});}async getHTML(){return this.#e.invoke(de,this.id)}},Ge=class extends V{static{r(this,"SVGNode");}[p]="SVGNode";name;visible;locked;svg;rotation;opacity;position;top;right;bottom;left;centerX;centerY;width;height;constructor(e,t){super(e,t),this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.svg=e.svg,this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.position=e.position,this.left=e.left??null,this.right=e.right??null,this.top=e.top??null,this.bottom=e.bottom??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,S(this);}},Ke=class extends V{static{r(this,"VectorSetItemNode");}[p]="VectorSetItemNode";name;visible;locked;top;right;bottom;left;centerX;centerY;width;height;#e;constructor(e,t){super(e,t),this.#e=t,this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.top=e.top??null,this.right=e.right??null,this.bottom=e.bottom??null,this.left=e.left??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,S(this);}async getSVG(){return this.#e.invoke("getSVGForNode",this.id)}},$e=class extends V{static{r(this,"ComponentInstanceNode");}[p]="ComponentInstanceNode";name;visible;locked;componentIdentifier;insertURL;componentName;controls;rotation;opacity;position;top;right;bottom;left;centerX;centerY;width;height;maxWidth;minWidth;maxHeight;minHeight;aspectRatio;#e;#t;#n;get typedControls(){return this.#n||(this.#n=h(this.#e,this.#t.typedControls)??{}),this.#n}constructor(e,t){super(e,t),this.#e=t,this.#t=e,this.name=e.name??null,this.visible=e.visible??true,this.locked=e.locked??false,this.componentIdentifier=e.componentIdentifier,this.componentName=e.componentName??null,this.insertURL=e.insertURL??null,this.controls=h(t,e.controls)??{},this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.position=e.position,this.left=e.left??null,this.right=e.right??null,this.top=e.top??null,this.bottom=e.bottom??null,this.centerX=e.centerX??null,this.centerY=e.centerY??null,this.width=e.width??null,this.height=e.height??null,this.maxWidth=e.maxWidth??null,this.minWidth=e.minWidth??null,this.maxHeight=e.maxHeight??null,this.minHeight=e.minHeight??null,this.aspectRatio=e.aspectRatio??null,S(this);}async getRuntimeError(){return this.#e.invoke("getRuntimeErrorForCodeComponentNode",this.id)}},ne=class extends V{static{r(this,"WebPageNode");}[p]="WebPageNode";#e;path;collectionId;constructor(e,t){super(e,t),this.path=e.path??null,this.collectionId=e.collectionId??null,this.#e=t,S(this);}getBreakpointSuggestions(){return this.#e.invoke("getBreakpointSuggestionsForWebPage",this.id)}async addBreakpoint(e,t){let i=await this.#e.invoke("addBreakpointToWebPage",this.id,e,t),o=I(i,this.#e);return m(o instanceof U),m(Ui(o),"Expected node to be a FrameNode"),o}async getActiveCollectionItem(){let e=await this.#e.invoke("getActiveCollectionItemForWebPage",this.id);return e?new ze(e,this.#e):null}},ie=class extends V{static{r(this,"ComponentNode");}[p]="ComponentNode";name;componentIdentifier;insertURL;componentName;#e;constructor(e,t){super(e,t),this.#e=t,this.componentIdentifier=e.componentIdentifier,this.insertURL=e.insertURL??null,this.componentName=e.componentName??null,this.name=e.name??null,S(this);}async addVariant(e,t){let i=await this.#e.invoke("addVariantToComponent",this.id,e,t);if(!i)throw new Error("Failed to add variant to component");let o=I(i,this.#e);return m(o instanceof U),m(gn(o),"Node is not a component variant"),o}async addGestureVariant(e,t,i){let o=await this.#e.invoke("addGestureVariantToComponent",this.id,e,t,i);if(!o)throw new Error("Failed to add state to component");let a=I(o,this.#e);return m(a instanceof U),m(Bi(a),"Node is not a gesture variant"),a}async getVariables(){let e=await this.#e.invoke("getVariables",this.id);return h(this.#e,e)}async addVariables(e){let t=await this.#e.invoke("addVariables",this.id,B(e));return h(this.#e,t)}async removeVariables(e){await this.#e.invoke("removeVariables",this.id,e);}async setVariableOrder(e){await this.#e.invoke("setVariableOrder",this.id,e);}},He=class extends V{static{r(this,"VectorSetNode");}[p]="VectorSetNode";name;constructor(e,t){super(e,t),this.name=e.name??null,S(this);}},re=class extends V{static{r(this,"DesignPageNode");}[p]="DesignPageNode";name;constructor(e,t){super(e,t),this.name=e.name??null,S(this);}},je=class extends V{static{r(this,"UnknownNode");}[p]="UnknownNode";constructor(e,t){super(e,t),S(this);}};function I(n,e){switch(n[p]){case "DesignPageNode":return new re(n,e);case "WebPageNode":return new ne(n,e);case "ComponentNode":return new ie(n,e);case "VectorSetNode":return new He(n,e);case "VectorSetItemNode":return new Ke(n,e);case "ComponentInstanceNode":return new $e(n,e);case "FrameNode":return new U(n,e);case "SVGNode":return new Ge(n,e);case "TextNode":return new te(n,e);case "UnknownNode":return new je(n,e);default:return new je(n,e)}}r(I,"convertRawNodeDataToNode");function Nt(n){return n instanceof U}r(Nt,"isFrameNode");function Oi(n){return n instanceof te}r(Oi,"isTextNode");function zi(n){return n instanceof Ge}r(zi,"isSVGNode");function ge(n){return n instanceof $e}r(ge,"isComponentInstanceNode");function Gi(n){return n instanceof ne}r(Gi,"isWebPageNode");function Ki(n){return n instanceof ie}r(Ki,"isComponentNode");function $i(n){return n instanceof re}r($i,"isDesignPageNode");function Hi(n){return n instanceof He}r(Hi,"isVectorSetNode");function ji(n){return n instanceof Ke}r(ji,"isVectorSetItemNode");function ee(n){return n instanceof je}r(ee,"isUnknownNode");function _e(n){return !!(Nt(n)||Oi(n)||ge(n)||zi(n)||ji(n)||ee(n))}r(_e,"isCanvasNode");function fn(n){return !!(Gi(n)||$i(n)||Ki(n)||Hi(n)||ee(n))}r(fn,"isCanvasRootNode");var qe=class{static{r(this,"VectorSet");}id;name;owner;#e;constructor(e,t){this.id=e.id,this.name=e.name,this.owner=e.owner,this.#e=t;}async getItems(){return (await this.#e.invoke("getVectorSetItems",this.id)).map(t=>new Et(t,this.#e))}},Et=class{static{r(this,"VectorSetItem");}id;name;insertUrl;iconUrl;#e;#t;constructor(e,t){this.id=e.id,this.name=e.name,this.insertUrl=e.insertUrl,this.iconUrl=e.iconUrl,this.#e=e.moduleId,this.#t=t;}async getVariables(){return this.#t.invoke("getVectorSetItemVariables",this.id,this.#e)}};var Ye=class extends Error{static{r(this,"FramerPluginError");}name=this.constructor.name},_=class extends Error{static{r(this,"FramerPluginClosedError");}name=this.constructor.name};function Wo(n){return n.type==="separator"}r(Wo,"isSeparatorMenuItem");function kt(n,e){let t=[];for(let i of n){if(Wo(i)){t.push(i);continue}let{onAction:o,...a}=i,s=a;if(i.onAction){let d=Math.random();e.set(d,i.onAction),s.actionId=d;}i.submenu&&(s.submenu=kt(i.submenu,e)),t.push(s);}return t}r(kt,"addMenuItemsToOnActionCallbackMap");var Mt="type",_i={[Mt]:"pluginReadySignal"},Ro="pluginReadyResponse";var Bo={methodResponse:true,subscriptionMessage:true,permissionUpdate:true,menuAction:true};function qi(n){return v(n)&&f(n[Mt])&&n[Mt]in Bo}r(qi,"isVekterToPluginNonHandshakeMessage");function Yi(n){return v(n)&&n[Mt]===Ro}r(Yi,"isPluginReadyResponse");var yn=Symbol(),hn=Symbol(),bn=Symbol(),xn=Symbol(),Cn=Symbol(),In=Symbol(),Tn=Symbol(),W={publish:yn,getDeployments:hn,deploy:bn,getChangedPaths:xn,getChangeContributors:Cn,createManagedCollection:In,rejectAllPending:Tn};function Pn(n){return typeof n=="string"&&n in W}r(Pn,"isFramerApiOnlyMethod");var Uo=["unstable_getCodeFile","unstable_getCodeFiles","unstable_getCodeFileVersionContent","unstable_getCodeFileLint2","unstable_getCodeFileTypecheck2","unstable_getCodeFileVersions","lintCode"],Oo=["closeNotification","closePlugin","setCloseWarning","getActiveCollection","getActiveLocale","getActiveManagedCollection","getCanvasRoot","getChildren","getCollection","getCollectionFields","getCollectionFields2","getCollectionItems","getCollectionItems2","getCollections","getColorStyle","getColorStyles","getCurrentUser","getCurrentUser2","getCustomCode","getDefaultLocale","getFont","getFonts","getImage","getImageData","getLocales","getLocalizationGroups","getManagedCollection","getManagedCollectionFields","getManagedCollectionFields2","getManagedCollectionItemIds","getManagedCollections","getNode","getNodesWithAttribute","getNodesWithAttributeSet","getNodesWithType","getParent","getPluginData","getPluginDataForNode","getPluginDataKeys","getPluginDataKeysForNode","getProjectInfo","getProjectInfo2","getPublishInfo","getRect","getSelection","getSVGForNode","getText","getTextForNode","getTextStyle","getTextStyles","hideUI","setBackgroundMessage","notify","onPointerDown","setActiveCollection","setSelection","showUI","getCodeFileVersionContent","typecheckCode","getCodeFileVersions","getCodeFiles","getCodeFile","getRedirects","uploadFile","uploadFiles","uploadImage","uploadImages","zoomIntoView","navigateTo","getRuntimeErrorForModule","getRuntimeErrorForCodeComponentNode","showProgressOnInstances","removeProgressFromInstances","addComponentInstancePlaceholder","updateComponentInstancePlaceholder","removeComponentInstancePlaceholder","setMenu","showContextMenu","getBreakpointSuggestionsForWebPage","getActiveCollectionItemForWebPage","getVariables","getVectorSets","getVectorSetItems","getVectorSetItemVariables","getChangedPaths","getChangeContributors","getDeployments",pt,mt,de,"getAiServiceInfo","sendTrackingEvent",...Uo];new Set(Oo);var Sn={addComponentInstance:["addComponentInstance"],addComponentInstancePlaceholder:[],addDetachedComponentLayers:["addDetachedComponentLayers"],addImage:["addImage"],addImages:["addImages"],addSVG:["addSVG"],addText:["addText"],addRedirects:["addRedirects"],getRedirects:[],removeRedirects:["removeRedirects"],setRedirectOrder:["setRedirectOrder"],subscribeToRedirects:[],cloneNode:["cloneNode"],closePlugin:[],createColorStyle:["createColorStyle"],createFrameNode:["createNode"],createTextNode:["createNode"],createComponentNode:["createNode"],createTextStyle:["createTextStyle"],createDesignPage:["createDesignPage"],createWebPage:["createWebPage"],getActiveCollection:[],getActiveLocale:[],getActiveManagedCollection:[],getCanvasRoot:[],getChildren:[],getCollection:[],getCollections:[],getColorStyle:[],getColorStyles:[],getCurrentUser:[],getCustomCode:[],getDefaultLocale:[],getFont:[],getFonts:[],getImage:[],getLocales:[],getLocalizationGroups:[],getManagedCollection:[],getManagedCollections:[],getNode:[],getNodesWithAttribute:[],getNodesWithAttributeSet:[],getNodesWithType:[],getParent:[],getPluginData:[],getPluginDataKeys:[],getProjectInfo:[],getPublishInfo:[],getRect:[],getSelection:[],getText:[],getTextStyle:[],getTextStyles:[],hideUI:[],setBackgroundMessage:[],setCloseWarning:[],lintCode:[],makeDraggable:["onDragEnd","onDragStart","onDrag","setDragData","preloadDetachedComponentLayers","preloadImageUrlForInsertion","preloadDragPreviewImage"],notify:[],preloadDetachedComponentLayers:["preloadDetachedComponentLayers"],preloadDragPreviewImage:["preloadDragPreviewImage"],preloadImageUrlForInsertion:["preloadImageUrlForInsertion"],removeNode:["removeNodes2"],removeNodes:["removeNodes2"],setAttributes:["setAttributes"],setCustomCode:["setCustomCode"],setImage:["setImage"],setLocalizationData:["setLocalizationData"],setMenu:[],showContextMenu:[],setParent:["setParent"],setPluginData:["setPluginData"],setSelection:[],setText:["setText"],typecheckCode:[],showUI:[],subscribeToCanvasRoot:[],subscribeToColorStyles:[],subscribeToCustomCode:[],subscribeToImage:[],subscribeToPublishInfo:[],subscribeToSelection:[],subscribeToText:[],subscribeToTextStyles:[],createCodeFile:["createCodeFile"],unstable_ensureMinimumDependencyVersion:["unstable_ensureMinimumDependencyVersion"],getCodeFiles:[],getCodeFile:[],subscribeToCodeFiles:[],subscribeToOpenCodeFile:[],uploadFile:[],uploadFiles:[],uploadImage:[],uploadImages:[],zoomIntoView:[],navigateTo:[],getVectorSets:[],"VectorSet.getItems":[],"VectorSetItem.getVariables":[],"Node.navigateTo":[],"CodeFile.navigateTo":[],"Collection.navigateTo":[],"ManagedCollection.navigateTo":[],"CollectionItem.navigateTo":[],"ComponentInstanceNode.getRuntimeError":[],"ImageAsset.cloneWithAttributes":[],"ImageAsset.getData":[],"ImageAsset.loadBitmap":[],"ImageAsset.loadImage":[],"ImageAsset.measure":[],"CodeFile.remove":["removeCodeFile"],"CodeFile.rename":["renameCodeFile"],"CodeFile.setFileContent":["setCodeFileContent"],"CodeFile.getVersions":[],"CodeFile.showProgressOnInstances":[],"CodeFile.removeProgressFromInstances":[],"CodeFile.lint":[],"CodeFile.typecheck":[],"CodeFileVersion.getContent":[],"ComponentInstancePlaceholder.setAttributes":[],"ComponentInstancePlaceholder.remove":[],"ComponentInstancePlaceholder.replaceWithComponentInstance":["replaceComponentInstancePlaceholderWithComponentInstance"],"Field.remove":["removeCollectionFields"],"Field.setAttributes":["addCollectionFields2"],"EnumField.addCase":["addEnumCase"],"EnumField.setCaseOrder":["setEnumCaseOrder"],"Collection.addFields":["addCollectionFields2"],"Collection.addItems":["addCollectionItems2"],"Collection.getFields":[],"Collection.getItems":[],"Collection.getPluginData":[],"Collection.getPluginDataKeys":[],"Collection.removeFields":["removeCollectionFields"],"Collection.removeItems":["removeCollectionItems"],"Collection.setAsActive":[],"Collection.setFieldOrder":["setCollectionFieldOrder"],"Collection.setItemOrder":["setCollectionItemOrder"],"Collection.setPluginData":["setPluginDataForNode"],"CollectionItem.getPluginData":[],"CollectionItem.getPluginDataKeys":[],"CollectionItem.remove":["removeCollectionItems"],"CollectionItem.setAttributes":["setCollectionItemAttributes2"],"CollectionItem.setPluginData":["setPluginDataForNode"],"ManagedCollection.addItems":["addManagedCollectionItems2"],"ManagedCollection.getFields":[],"ManagedCollection.getItemIds":[],"ManagedCollection.getPluginData":[],"ManagedCollection.getPluginDataKeys":[],"ManagedCollection.removeItems":["removeManagedCollectionItems"],"ManagedCollection.setAsActive":[],"ManagedCollection.setFields":["setManagedCollectionFields"],"ManagedCollection.setItemOrder":["setManagedCollectionItemOrder"],"ManagedCollection.setPluginData":["setPluginDataForNode"],"Node.clone":["cloneNode"],"Node.getChildren":[],"Node.getNodesWithAttribute":[],"Node.getNodesWithAttributeSet":[],"Node.getNodesWithType":[],"Node.getParent":[],"Node.getPluginData":[],"Node.getPluginDataKeys":[],"Node.getRect":[],"Node.remove":["removeNodes2"],"Node.select":[],"Node.setAttributes":["setAttributes"],"Node.setPluginData":["setPluginDataForNode"],"Node.walk":[],"Node.zoomIntoView":[],"TextNode.getText":[],"TextNode.setText":["setTextForNode"],"TextNode.setHTML":[ue],"TextNode.getHTML":[],"ComponentNode.addVariant":["addVariantToComponent"],"ComponentNode.addGestureVariant":["addGestureVariantToComponent"],"ComponentNode.getVariables":[],"ComponentNode.addVariables":["addVariables"],"ComponentNode.removeVariables":["removeVariables"],"WebPageNode.getBreakpointSuggestions":[],"WebPageNode.addBreakpoint":["addBreakpointToWebPage"],"WebPageNode.getActiveCollectionItem":[],"ColorStyle.getPluginData":[],"ColorStyle.getPluginDataKeys":[],"ColorStyle.remove":["removeColorStyle"],"ColorStyle.setAttributes":["setColorStyleAttributes"],"ColorStyle.setPluginData":["setPluginDataForNode"],"TextStyle.getPluginData":[],"TextStyle.getPluginDataKeys":[],"TextStyle.remove":["removeTextStyle"],"TextStyle.setAttributes":["setTextStyleAttributes"],"TextStyle.setPluginData":["setPluginDataForNode"],"Variable.setAttributes":["updateVariable"],"Variable.remove":["removeVariables"],"ComponentNode.setVariableOrder":["setVariableOrder"],"EnumCase.remove":["removeEnumCase"],"EnumCase.setAttributes":["updateEnumCase"],"EnumVariable.addCase":["addEnumCase"],"EnumVariable.setCaseOrder":["setEnumCaseOrder"],createCollection:["createCollection"],createManagedCollection:["createManagedCollection"],[Gt]:[],[Kt]:[],[$t]:[],[Ht]:[],[yn]:["publish"],[hn]:[],[bn]:["deploy"],[xn]:[],[Cn]:[],[In]:["createManagedCollection"],[Tn]:[]},At=[];for(let n of Object.keys(Sn))Sn[n].length!==0&&At.push(n);S(At);function Fn(n){let e={};for(let t of At){let i=Sn[t];e[t]=i.every(o=>n[o]);}return e}r(Fn,"createPerMethodPermissionMap");function Xi(){let n={};for(let e of At)n[e]=true;return n}r(Xi,"createPerMethodPermissionMapForTesting");var fe=null;function Zi(n){if(typeof window>"u")return;if(!fe){let t=document.createElement("style");document.head.appendChild(t),fe=t.sheet;}if(!fe){n();return}let e=fe.insertRule("* { transition: none !important; animation: none !important; }");n(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{fe&&fe.deleteRule(e);});});}r(Zi,"withDisabledCssTransitions");var Xe=class{static{r(this,"PluginEngine");}methodInvocationId=0;notificationId=0;postMessage;methodResponseHandlers=new Map;mode;subscriptions=new Map;perMethodPermissionMap;permissionSubscriptions=new Set;messageTypesCheckedInIsAllowedTo=new Set;showUncheckedPermissionToasts=true;environmentInfo=null;initialState;menuItemOnActionCallbackMap=new Map;contextMenuItemOnActionCallbackMap=new Map;rejectAllPending(e){for(let[t,i]of this.methodResponseHandlers)i.reject(e),this.methodResponseHandlers.delete(t);}constructor(e){if(!e){this.postMessage=()=>{},this.mode="canvas",this.perMethodPermissionMap=Xi(),this.initialState={mode:"canvas",intent:"plugin/open"};return}switch(e.transport.onMessage(this.onMessage),typeof window<"u"&&(window.addEventListener("error",t=>{t.error instanceof _&&(t.preventDefault(),t.stopImmediatePropagation());}),window.addEventListener("unhandledrejection",t=>{t.reason instanceof _&&(t.preventDefault(),t.stopImmediatePropagation());})),this.mode=e.mode,this.initialState=e.initialState??{mode:e.mode,intent:"plugin/open"},this.environmentInfo=e.environmentInfo,this.perMethodPermissionMap=Fn(e.permissionMap),this.postMessage=(t,i)=>e.transport.send(t,i),this.mode){case "canvas":case "image":case "editImage":case "configureManagedCollection":case "syncManagedCollection":case "collection":case "localization":case "code":typeof window<"u"&&window.addEventListener("pointerdown",()=>{this.invoke("onPointerDown");}),e.theme&&this.applyPluginTheme(e.theme),this.subscribe("theme",this.applyPluginTheme);break;case "api":break;default:ut(this.mode);}}async invoke(e,...t){return this.invokeTransferable(e,undefined,...t)}async invokeTransferable(e,t,...i){return new Promise((a,s)=>{let d={type:"methodInvocation",methodName:e,id:this.methodInvocationId,args:i.map(B)};this.methodInvocationId+=1,this.methodResponseHandlers.set(d.id,{resolve:a,reject:s}),this.postMessage(d,t);})}subscribe(e,t){this.postMessage({type:"subscribe",topic:e});let i=this.subscriptions.get(e)??new Set;return i.add(t),this.subscriptions.set(e,i),()=>{let o=this.subscriptions.get(e)??new Set;o.delete(t),o.size===0&&this.postMessage({type:"unsubscribe",topic:e}),this.subscriptions.set(e,o);}}onMessage=e=>{let t=e?.data??e;if(qi(t))switch(t.type){case "permissionUpdate":{this.perMethodPermissionMap=Fn(t.permissionMap);for(let i of this.permissionSubscriptions)i();break}case "methodResponse":{let i=this.methodResponseHandlers.get(t.id);if(!i)throw new Error(`No handler for response with id ${t.id}`);this.methodResponseHandlers.delete(t.id),f(t.error)?i.reject(new Ye(t.error)):i.resolve(t.result);break}case "subscriptionMessage":{let{topic:i,payload:o}=t,a=this.subscriptions.get(i);if(!a)throw new Error("Received a subscription message but no handler present");for(let s of a)s(o);break}case "menuAction":{let i=this.getOnActionFromCallbackMap(t.actionId,t.actionType);if(!i)throw new Error("Menu action received for an unknown menu item");i();break}default:ut(t);}};getOnActionFromCallbackMap(e,t){switch(t){case "pluginMenu":return this.menuItemOnActionCallbackMap.get(e);case "contextMenu":return this.contextMenuItemOnActionCallbackMap.get(e);default:ut(t);}}applyPluginTheme=e=>{Zi(()=>{document.body.setAttribute("data-framer-theme",e.mode);for(let t in e.tokens)document.body.style.setProperty(t,e.tokens[t]);});};async cloneNode(e){let t=await this.invoke("cloneNode",e);return t?I(t,this):null}async setAttributes(e,t){let i=await this.invoke("setAttributes",e,t);return i?I(i,this):null}async getParent(e){let t=await this.invoke("getParent",e);return t?I(t,this):null}async getChildren(e){return (await this.invoke("getChildren",e)).map(i=>{let o=I(i,this);return m(_e(o)),o})}notify=(e,t)=>{let i=`notification-${this.notificationId}`;return this.notificationId+=1,this.invoke("notify",e,{notificationId:i,variant:t?.variant??"info",buttonText:t?.button?.text,durationMs:t?.durationMs}).then(o=>{o==="actionButtonClicked"&&t?.button?.onClick&&t.button.onClick(),t?.onDisappear&&t.onDisappear();}),{close:()=>this.invoke("closeNotification",i)}};async setMenu(e){this.menuItemOnActionCallbackMap=new Map;let t=kt(e,this.menuItemOnActionCallbackMap);await this.invoke("setMenu",t);}async showContextMenu(e,t){this.contextMenuItemOnActionCallbackMap=new Map;let i=kt(e,this.contextMenuItemOnActionCallbackMap);await this.invoke("showContextMenu",i,t);}};function zo(n){return n.type==="component"}r(zo,"isCodeFileComponentExport");function Go(n){return n.type==="override"}r(Go,"isCodeFileOverrideExport");var Dn=class{static{r(this,"CodeFileVersion");}#e;#t;get id(){return this.#e.id}get name(){return this.#e.name}get createdAt(){return this.#e.createdAt}get createdBy(){return this.#e.createdBy}constructor(e,t){this.#t=t,this.#e=e;}async getContent(){return await this.#t.invoke("getCodeFileVersionContent",this.#e.fileId,this.#e.id)}},q=class n{static{r(this,"CodeFile");}#e;#t;get id(){return this.#e.id}get name(){return this.#e.name}get path(){return this.#e.path}get content(){return this.#e.content}get exports(){return this.#e.exports}get versionId(){return this.#e.versionId}constructor(e,t){this.#t=t,this.#e=e;}async setFileContent(e){let t=await this.#t.invoke("setCodeFileContent",this.id,e);return new n(t,this.#t)}async rename(e){let t=await this.#t.invoke("renameCodeFile",this.id,e);return new n(t,this.#t)}async remove(){return this.#t.invoke("removeCodeFile",this.id)}async getVersions(){return (await this.#t.invoke("getCodeFileVersions",this.id)).map(t=>new Dn(t,this.#t))}async showProgressOnInstances(e){return this.#t.invoke("showProgressOnInstances",this.id,e)}async removeProgressFromInstances(){return this.#t.invoke("removeProgressFromInstances",this.id)}async lint(e){return Promise.resolve([])}async typecheck(e){return await this.#t.invoke("typecheckCode",this.name,this.content,e,this.id)}async navigateTo(){return this.#t.invoke("navigateTo",this.id)}};var wt=class n{static{r(this,"ComponentInstancePlaceholder");}#e;#t;constructor(e,t){this.#e=e,this.#t=t;}get id(){return this.#e.id}get width(){return this.#e.width}get height(){return this.#e.height}get title(){return this.#e.title}get codePreview(){return this.#e.codePreview}async setAttributes(e){let t=await this.#t.invoke("updateComponentInstancePlaceholder",this.id,e);return t?new n(t,this.#t):null}async remove(){await this.#t.invoke("removeComponentInstancePlaceholder",this.id);}async replaceWithComponentInstance(e,t){let i=await this.#t.invoke("replaceComponentInstancePlaceholderWithComponentInstance",this.id,e,t);if(!i)return null;let o=I(i,this.#t);return m(ge(o)),o}};var Ko=(()=>{let n=null;return {disableUntilMouseUp:()=>{if(n)return;n=document.createElement("style"),n.textContent="* { pointer-events: none !important; user-select: none !important; -webkit-user-select: none !important; }",document.head.appendChild(n);let e=r(()=>{n&&(document.head.removeChild(n),n=null,o());},"enablePointerEvents"),t=r(a=>{a.buttons>0&&a.buttons&1||e();},"handlePointerChange"),i=r(()=>{e();},"handleBlur");window.addEventListener("pointerup",t,true),window.addEventListener("pointermove",t,true),window.addEventListener("blur",i);function o(){window.removeEventListener("pointerup",t,true),window.removeEventListener("pointermove",t,true),window.removeEventListener("blur",i);}r(o,"cleanup");}}})(),Ji=5,$o=(()=>{let n=1;return {next:()=>`drag-${n++}`}})();function Ho(){}r(Ho,"noop");function Qi(n,e,t,i){if(n.mode!=="canvas")return Ho;let o=$o.next(),a=document.body.style.cursor,s={type:"idle"},d=document.body,b=oe.subscribeToIsAllowedTo("makeDraggable",c=>{c||T();}),C=r(c=>{oe.isAllowedTo("makeDraggable")&&s.type!=="idle"&&(s.type==="dragging"&&n.invoke("onDragEnd",{...c,dragSessionId:o}).then(g=>{try{i?.(g);}catch{}}).catch(g=>{if(g instanceof Error){i?.({status:"error",reason:g.message});return}if(typeof g=="string"){i?.({status:"error",reason:g});return}i?.({status:"error"});}),T());},"endDrag"),D=r(c=>{if(!oe.isAllowedTo("makeDraggable")||s.type==="idle")return;if(!(c.buttons>0&&!!(c.buttons&1))){C({cancelled:false});return}let{clientX:M,clientY:E}=c;if(s.type==="pointerDown"){let P=M-s.dragStart.mouse.x,at=E-s.dragStart.mouse.y;if(Math.abs(P)<Ji&&Math.abs(at)<Ji)return;s={type:"dragging",dragStart:s.dragStart},n.invoke("onDragStart",s.dragStart),document.getSelection()?.empty(),Ko.disableUntilMouseUp();}d.setPointerCapture(c.pointerId);let le={x:M,y:E};n.invoke("onDrag",{dragSessionId:o,mouse:le}).then(P=>{s.type==="dragging"&&(document.body.style.cursor=P??"");});},"handlePointerChange"),Z=r(c=>{c.key==="Escape"&&C({cancelled:true});},"handleKeyDown"),G=r(()=>{C({cancelled:true});},"handleBlur"),y=r(c=>{if(!oe.isAllowedTo("makeDraggable"))return;C({cancelled:true});let g=e.getBoundingClientRect(),M={x:g.x,y:g.y,width:g.width,height:g.height},E,le=e.querySelectorAll("svg");if(le.length===1){let st=le.item(0).getBoundingClientRect();E={x:st.x,y:st.y,width:st.width,height:st.height};}let P={x:c.clientX,y:c.clientY};s={type:"pointerDown",dragStart:{dragSessionId:o,elementRect:M,svgRect:E,mouse:P}},n.invoke("setDragData",o,t()),d.addEventListener("pointermove",D,true),d.addEventListener("pointerup",D,true),window.addEventListener("keydown",Z,true),window.addEventListener("blur",G);},"handlePointerDown"),u=r(()=>{if(!oe.isAllowedTo("makeDraggable"))return;let c=t();c.type==="detachedComponentLayers"&&n.invoke("preloadDetachedComponentLayers",c.url),c.type==="image"&&n.invoke("preloadImageUrlForInsertion",c.image),c.previewImage&&n.invoke("preloadDragPreviewImage",c.previewImage);},"preload");e.addEventListener("pointerdown",y),e.addEventListener("mouseenter",u);function T(){s={type:"idle"},document.body.style.cursor=a,d.removeEventListener("pointermove",D,true),d.removeEventListener("pointerup",D,true),window.removeEventListener("keydown",Z,true),window.removeEventListener("blur",G);}return r(T,"dragCleanup"),()=>{e.removeEventListener("pointerdown",y),e.removeEventListener("mouseenter",u),C({cancelled:true}),b();}}r(Qi,"makeDraggable");var ye=class n{static{r(this,"Redirect");}#e;#t;get id(){return this.#e.id}get from(){return this.#e.from}get to(){return this.#e.to}get expandToAllLocales(){return this.#e.expandToAllLocales}constructor(e,t){this.#t=t,this.#e=e;}remove(){return this.#t.invoke("removeRedirects",[this.id])}async setAttributes(e){let t={...e,id:this.id},[i]=await this.#t.invoke("addRedirects",[t]);return m(lt(i)),x(i)?null:new n(i,this.#t)}};var vn=class{static{r(this,"FramerPluginAPI");}#e;constructor(e){this.#e=e;}get mode(){return this.#e.mode}isAllowedTo(...e){return e.every(t=>this.#e.perMethodPermissionMap[t])}subscribeToIsAllowedTo(...e){let[t,i]=Hn(e),o=this.isAllowedTo(...t),a=r(()=>{let s=this.isAllowedTo(...t);s!==o&&(o=s,i(o));},"update");return this.#e.permissionSubscriptions.add(a),()=>{this.#e.permissionSubscriptions.delete(a);}}async showUI(e){return this.#e.invoke("showUI",e)}async hideUI(){return this.#e.invoke("hideUI")}async setBackgroundMessage(e){return this.#e.invoke("setBackgroundMessage",e)}closePlugin(e,t){throw this.#e.invoke("closePlugin",e,t),new _}async getCurrentUser(){return this.#e.invoke("getCurrentUser2")}async getProjectInfo(){return this.#e.invoke("getProjectInfo2")}async getSelection(){return (await this.#e.invoke("getSelection")).map(t=>{let i=I(t,this.#e);return m(_e(i)),i})}async setSelection(e){let t=f(e)?[e]:Array.from(e);return this.#e.invoke("setSelection",t)}subscribeToSelection(e){return this.#e.subscribe("selection",t=>{let i=t.map(o=>{let a=I(o,this.#e);return m(_e(a)),a});e(i);})}async getCanvasRoot(){let e=await this.#e.invoke("getCanvasRoot"),t=I(e,this.#e);return m(fn(t)),t}subscribeToCanvasRoot(e){return this.#e.subscribe("canvasRoot",t=>{let i=I(t,this.#e);m(fn(i)),e(i);})}async getPublishInfo(){return this.#e.invoke("getPublishInfo")}subscribeToPublishInfo(e){return this.#e.subscribe("publishInfo",e)}async createFrameNode(e,t){let i=await this.#e.invoke("createNode","FrameNode",t??null,e);if(!i)return null;let o=I(i,this.#e);return m(o instanceof U),o}async removeNodes(e){return this.#e.invoke("removeNodes2",e)}async removeNode(e){return this.removeNodes([e])}async cloneNode(e){return this.#e.cloneNode(e)}async getNode(e){let t=await this.#e.invoke("getNode",e);return t?I(t,this.#e):null}async getParent(e){return this.#e.getParent(e)}async getChildren(e){return this.#e.getChildren(e)}async getRect(e){return this.#e.invoke("getRect",e)}async zoomIntoView(e,t){let i=f(e)?[e]:Array.from(e);return this.#e.invoke("zoomIntoView",i,t)}async setAttributes(e,t){return this.#e.setAttributes(e,t)}async setParent(e,t,i){return this.#e.invoke("setParent",e,t,i)}async getNodesWithType(e){return (await this.#e.invoke("getNodesWithType",null,e)).map(i=>I(i,this.#e))}async getNodesWithAttribute(e){return (await this.#e.invoke("getNodesWithAttribute",null,e)).map(i=>I(i,this.#e))}async getNodesWithAttributeSet(e){return (await this.#e.invoke("getNodesWithAttributeSet",null,e)).map(i=>I(i,this.#e))}async getImage(){let e=await this.#e.invoke("getImage");return e?h(this.#e,e):null}subscribeToImage(e){return this.#e.subscribe("image",t=>{if(!t){e(null);return}e(h(this.#e,t));})}async addImage(e){let t=await We(e),i=j(t);return this.#e.invokeTransferable("addImage",i,t)}async setImage(e){let t=await We(e),i=j(t);return this.#e.invokeTransferable("setImage",i,t)}async uploadImage(e){let t=await We(e),i=j(t),o=await this.#e.invokeTransferable("uploadImage",i,t);return h(this.#e,o)}async addImages(e){let t=await cn(e),i=t.flatMap(j);await this.#e.invokeTransferable("addImages",i,t);}async uploadImages(e){let t=await cn(e),i=t.flatMap(j),o=await this.#e.invokeTransferable("uploadImages",i,t);return h(this.#e,o)}async uploadFile(e){let t=await un(e),i=await this.#e.invokeTransferable("uploadFile",j(t),t);return h(this.#e,i)}async uploadFiles(e){let t=await Promise.all(e.map(un)),i=t.flatMap(j),o=await this.#e.invokeTransferable("uploadFiles",i,t);return h(this.#e,o)}async addSVG(e){return this.#e.invoke("addSVG",e)}async addComponentInstance({url:e,attributes:t,parentId:i}){let o=await this.#e.invoke("addComponentInstance",{url:e,attributes:t,parentId:i}),a=I(o,this.#e);return m(ge(a)),a}async addDetachedComponentLayers({url:e,layout:t,attributes:i}){let o=await this.#e.invoke("addDetachedComponentLayers",{url:e,layout:t,attributes:i}),a=I(o,this.#e);return m(Nt(a)),a}async preloadDetachedComponentLayers(e){await this.#e.invoke("preloadDetachedComponentLayers",e);}async preloadImageUrlForInsertion(e){await this.#e.invoke("preloadImageUrlForInsertion",e);}async preloadDragPreviewImage(e){await this.#e.invoke("preloadDragPreviewImage",e);}async getText(){return this.#e.invoke("getText")}async setText(e){return this.#e.invoke("setText",e)}async addText(e,t){return this.#e.invoke("addText",e,t)}async setCustomCode(e){return this.#e.invoke("setCustomCode",e)}async getCustomCode(){return this.#e.invoke("getCustomCode")}subscribeToCustomCode(e){return this.#e.subscribe("customCode",e)}subscribeToText(e){return this.#e.subscribe("text",e)}makeDraggable(e,t,i){return Qi(this.#e,e,t,i)}async getActiveManagedCollection(){let e=await this.#e.invoke("getActiveManagedCollection");return m(e,"Collection data must be defined"),new me(e,this.#e)}async getManagedCollection(){return this.getActiveManagedCollection()}async getManagedCollections(){let e=await this.#e.invoke("getManagedCollections");return m(e,"Collections data must be defined"),e.map(t=>new me(t,this.#e))}async getCollection(e){let t=await this.#e.invoke("getCollection",e);return t?new Q(t,this.#e):null}async getActiveCollection(){let e=await this.#e.invoke("getActiveCollection");return e?new Q(e,this.#e):null}async getCollections(){return (await this.#e.invoke("getCollections")).map(t=>new Q(t,this.#e))}notify=(e,t)=>this.#e.notify(e,t);async getPluginData(e){return this.#e.invoke("getPluginData",e)}async setPluginData(e,t){return this.#e.invoke("setPluginData",e,t)}async getPluginDataKeys(){return this.#e.invoke("getPluginDataKeys")}async getColorStyles(){let e=await this.#e.invoke("getColorStyles");return h(this.#e,e)}async getColorStyle(e){let t=await this.#e.invoke("getColorStyle",e);return t?h(this.#e,t):null}async createColorStyle(e){let t=await this.#e.invoke("createColorStyle",e);return h(this.#e,t)}subscribeToColorStyles(e){return this.#e.subscribe("colorStyles",t=>{let i=h(this.#e,t);return e(i)})}async getTextStyles(){let e=await this.#e.invoke("getTextStyles");return h(this.#e,e)}async getTextStyle(e){let t=await this.#e.invoke("getTextStyle",e);return t?h(this.#e,t):null}async createTextStyle(e){let t=await this.#e.invoke("createTextStyle",e);return h(this.#e,t)}subscribeToTextStyles(e){return this.#e.subscribe("textStyles",t=>{let i=h(this.#e,t);return e(i)})}async getFont(e,t){let i=await this.#e.invoke("getFont",e,t);return i?h(this.#e,i):null}async getFonts(){let e=await this.#e.invoke("getFonts");return h(this.#e,e)}getLocales(){return this.#e.invoke("getLocales")}getDefaultLocale(){return this.#e.invoke("getDefaultLocale")}getActiveLocale(){return this.#e.invoke("getActiveLocale")}async getLocalizationGroups(){return this.#e.invoke("getLocalizationGroups")}setLocalizationData(e){return this.#e.invoke("setLocalizationData",e)}async getRedirects(){return (await this.#e.invoke("getRedirects")).map(t=>new ye(t,this.#e))}subscribeToRedirects(e){return this.#e.subscribe("redirects",t=>{let i=t.map(o=>new ye(o,this.#e));return e(i)})}async addRedirects(e){return (await this.#e.invoke("addRedirects",e)).map(i=>new ye(i,this.#e))}async removeRedirects(e){return this.#e.invoke("removeRedirects",e)}async setRedirectOrder(e){return this.#e.invoke("setRedirectOrder",e)}async createCodeFile(e,t,i){let o=await this.#e.invoke("createCodeFile",e,t,i);return new q(o,this.#e)}async getCodeFiles(){let e=await this.#e.invoke("getCodeFiles"),t=[];for(let i of e)t.push(new q(i,this.#e));return t}async getCodeFile(e){let t=await this.#e.invoke("getCodeFile",e);return t?new q(t,this.#e):null}lintCode(e,t,i){return Promise.resolve([])}typecheckCode(e,t,i,o){return this.#e.invoke("typecheckCode",e,t,i,o)}subscribeToCodeFiles(e){return this.#e.subscribe("codeFiles",t=>{let i=t?.map(o=>new q(o,this.#e));return e(i)})}setMenu(e){return this.#e.setMenu(e)}showContextMenu(e,t){return this.#e.showContextMenu(e,t)}async unstable_ensureMinimumDependencyVersion(e,t){return this.#e.invoke("unstable_ensureMinimumDependencyVersion",e,t)}async navigateTo(e,t){return this.#e.invoke("navigateTo",e,t)}subscribeToOpenCodeFile(e){return this.#e.subscribe("openCodeFile",t=>{let i=t?new q(t,this.#e):null;return e(i)})}async createDesignPage(e){let t=await this.#e.invoke("createDesignPage",e),i=I(t,this.#e);return m(i instanceof re,"Expected node to be a DesignPageNode"),i}async createWebPage(e){let t=await this.#e.invoke("createWebPage",e),i=I(t,this.#e);return m(i instanceof ne,"Expected node to be a WebPageNode"),i}async createCollection(e){let t=await this.#e.invoke("createCollection",e);return new Q(t,this.#e)}async createManagedCollection(e){let t=await this.#e.invoke("createManagedCollection",e);return new me(t,this.#e)}async setCloseWarning(e){return this.#e.invoke("setCloseWarning",e)}get[l.initialState](){return this.#e.initialState}},Nn=class extends vn{static{r(this,"FramerPluginAPIBeta");}#e;constructor(e){super(e),this.#e=e,this.#e;}},Ze=class extends Nn{static{r(this,"FramerPluginAPIAlpha");}#e;constructor(e){super(e),this.#e=e,this.#e;}async addComponentInstancePlaceholder(e){let t=await this.#e.invoke("addComponentInstancePlaceholder",e);return new wt(t,this.#e)}async[l.getAiServiceInfo](){return this.#e.invoke(pt)}async[l.sendTrackingEvent](e,t,i){return this.#e.invoke(mt,e,t,i)}async[l.getHTMLForNode](e){return this.#e.invoke(de,e)}async[l.setHTMLForNode](e,t){return this.#e.invoke(ue,e,t)}get[l.environmentInfo](){return this.#e.environmentInfo}get[l.showUncheckedPermissionToasts](){return this.#e.showUncheckedPermissionToasts}set[l.showUncheckedPermissionToasts](e){this.#e.showUncheckedPermissionToasts=e;}async createTextNode(e,t){let i=await this.#e.invoke("createNode","TextNode",t??null,e);if(!i)return null;let o=I(i,this.#e);return m(o instanceof te),o}async createComponentNode(e){let t=await this.#e.invoke("createNode","ComponentNode",null,{name:e});if(!t)return null;let i=I(t,this.#e);return m(i instanceof ie),i}async getVectorSets(){return (await this.#e.invoke("getVectorSets")).map(t=>new qe(t,this.#e))}async[W.publish](){return this.#e.invoke("publish")}async[W.getDeployments](){return this.#e.invoke("getDeployments")}async[W.deploy](e,t){return this.#e.invoke("deploy",e,t)}async[W.getChangedPaths](){return this.#e.invoke("getChangedPaths")}async[W.getChangeContributors](e,t){return this.#e.invoke("getChangeContributors",e,t)}async[W.createManagedCollection](e){return this.createManagedCollection(e)}[W.rejectAllPending](e){this.#e.rejectAllPending(e);}};var En=class{constructor(e){this.origin=e;}static{r(this,"IframeTransport");}send(e,t){window.parent.postMessage(e,this.origin,t);}onMessage(e){window.addEventListener("message",e);}};async function jo(){return new Promise(n=>{function e({data:t,origin:i}){if(!Yi(t))return;window.removeEventListener("message",e);let a={transport:new En(i),mode:t.mode,permissionMap:t.permissionMap,environmentInfo:t.environmentInfo,origin:i,theme:t.theme??null,initialState:t.initialState};n(a);}r(e,"handshakeListener"),window.addEventListener("message",e),window.parent.postMessage(_i,"*");})}r(jo,"createBrowserContext");async function _o(){return typeof window<"u"?jo():null}r(_o,"bootstrap");var er=await _o(),oe=er?new Ze(new Xe(er)):new Proxy({},{get(n,e){throw new Error(`Cannot access framer.${String(e)} in server runtime. Use createFramerInstance() with a custom transport.`)}});function tr(n){return new Ze(new Xe(n))}r(tr,"createFramerInstance");var nr=process$1.env;function Xo(n){Object.assign(nr,n);}r(Xo,"configure");function he(n,e){let t=nr[n];return t&&t.length>0?t:e}r(he,"getEnv");var ir=isWorkerd,rr=globalThis.WebSocket;async function or(n,e){let t=new URL(n.href);t.protocol=t.protocol==="wss:"?"https:":t.protocol==="ws:"?"http:":t.protocol;let o=(await fetch(t.href,{headers:{Upgrade:"websocket",...e}})).webSocket;if(!o)throw new Error("WebSocket upgrade failed - server did not accept");return o.accept(),o}r(or,"connectWebSocketCF");var ar,sr;try{ar=await import('node:fs'),sr=await import('node:path');}catch{}var kn=ar,Mn=sr;var ae=(b=>(b.PROJECT_CLOSED="PROJECT_CLOSED",b.POOL_EXHAUSTED="POOL_EXHAUSTED",b.TIMEOUT="TIMEOUT",b.INTERNAL="INTERNAL",b.NODE_NOT_FOUND="NODE_NOT_FOUND",b.SCREENSHOT_TOO_LARGE="SCREENSHOT_TOO_LARGE",b.INVALID_REQUEST="INVALID_REQUEST",b.UNAUTHORIZED="UNAUTHORIZED",b))(ae||{}),F=class extends Error{static{r(this,"FramerAPIError");}code;constructor(e,t){super(e),this.name="FramerAPIError",this.code=t,this.stack=undefined;}};function Zo(n){return n instanceof F?n.code==="POOL_EXHAUSTED":false}r(Zo,"isRetryableError");var Jo=new Map(Object.values(ae).map(n=>[n,n]));function lr(n){return typeof n=="string"?Jo.get(n)??"INTERNAL":"INTERNAL"}r(lr,"parseErrorCode");var An={silent:0,error:1,warn:2,info:3,debug:4};function Qo(){let n=he("FRAMER_API_LOG_LEVEL")?.toLowerCase();return n&&n in An?n:"warn"}r(Qo,"getLogLevel");var wn=Qo();function Je(n){return An[n]<=An[wn]}r(Je,"shouldLog");var Qe=globalThis.console,ea="\x1B[90m",ta="\x1B[0m";function na(n){return n?`[FramerAPI:${n}]`:"[FramerAPI]"}r(na,"formatPrefix");function ia(n,...e){return [ea+n,...e,ta]}r(ia,"formatDebug");function dr(n){let e=na(n);return {warn:(...t)=>{Je("warn")&&Qe.warn(e,...t);},error:(...t)=>{Je("error")&&Qe.error(e,...t);},log:(...t)=>{Je("info")&&Qe.log(e,...t);},info:(...t)=>{Je("info")&&Qe.info(e,...t);},debug:(...t)=>{Je("debug")&&Qe.debug(...ia(e,...t));},setLevel:t=>{wn=t;},getLevel:()=>wn,withRequestId:t=>dr(t)}}r(dr,"createLogger");var N=dr();N.warn;N.error;N.log;N.info;N.debug;N.setLevel;N.getLevel;function Y(n,...e){if(n)return;let t=Error("Assertion Error"+(e.length>0?": "+e.join(" "):""));if(t.stack)try{let i=t.stack.split(`
9
9
  `);i[1]?.includes("assert")?(i.splice(1,1),t.stack=i.join(`
10
10
  `)):i[0]?.includes("assert")&&(i.splice(0,1),t.stack=i.join(`
11
- `));}catch{}throw t}r(X,"assert");var mr;function gr({error:n,tags:e,extras:t,critical:i,caller:o}){X(mr,"Set up an error callback with setErrorReporter, or configure Sentry with initializeEnvironment");let s=Ln(n,o);return mr({error:s,tags:{...s.tags,...e},extras:{...s.extras,...t},critical:!!i}),s}r(gr,"reportError");function Ln(n,e=Ln){return n instanceof Error?n:new Wn(n,e)}r(Ln,"reportableError");var Wn=class extends Error{static{r(this,"UnhandledError");}constructor(e,t){let i=e?JSON.stringify(e):"No error message provided";if(super(i),this.message=i,t&&Error.captureStackTrace)Error.captureStackTrace(this,t);else try{throw new Error}catch(o){this.stack=o.stack;}}};var et=typeof window<"u"?window.location.hostname:undefined,fr=!!(et&&["web.framerlocal.com","localhost","127.0.0.1","[::1]"].includes(et)),Rn=(()=>{if(!et)return;if(fr)return {main:et,previewLink:undefined};let n=/^(([^.]+\.)?beta\.)?((?:development\.)?framer\.com)$/u,e=et.match(n);if(!(!e||!e[3]))return {previewLink:e[2]&&e[0],main:e[3]}})();({hosts:Rn,isDevelopment:Rn?.main==="development.framer.com",isProduction:Rn?.main==="framer.com",isLocal:fr});var Wt;function Lt(){return typeof window>"u"?{}:Wt||(Wt=da(),Wt)}r(Lt,"getServiceMap");function da(){let n=window.location,e=window?.bootstrap?.services;if(e)return e;let t;try{if(t=window.top.location.origin,e=window.top?.bootstrap?.services,e)return e}catch{}if(t&&t!==n.origin)throw Error(`Unexpectedly embedded by ${t} (expected ${n.origin})`);if(n.origin.endsWith("framer.com")||n.origin.endsWith("framer.dev"))throw Error("ServiceMap data was not provided in document");try{let i=new URLSearchParams(n.search).get("services")||new URLSearchParams(n.hash.substring(1)).get("services");i&&(e=JSON.parse(i));}catch{}if(e&&typeof e=="object"&&e.api)return e;throw Error("ServiceMap requested but not available")}r(da,"extractServiceMap");function tt(n,e=0,t=new Set){if(n===null)return n;if(typeof n=="function")return `[Function: ${n.name??"unknown"}]`;if(typeof n!="object")return n;if(n instanceof Error)return `[${n.toString()}]`;if(t.has(n))return "[Circular]";if(e>2)return "...";t.add(n);try{if("toJSON"in n&&typeof n.toJSON=="function")return tt(n.toJSON(),e+1,t);if(Array.isArray(n))return n.map(i=>tt(i,e+1,t));if(Object.getPrototypeOf(n)!==Object.prototype)return `[Object: ${"__class"in n&&n.__class||n.constructor?.name}]`;{let i={};for(let[o,s]of Object.entries(n))i[o]=tt(s,e+1,t);return i}}catch(i){return `[Throws: ${i instanceof Error?i.message:i}]`}finally{t.delete(n);}}r(tt,"jsonSafeCopy");var ua=["trace","debug","info","warn","error"],ca=[":trace",":debug",":info",":warn",":error"];function br(n,e){let t=[];for(let i of n.split(/[ ,]/u)){let o=i.trim();if(o.length===0)continue;let s=1,a=false;o.startsWith("-")&&(o=o.slice(1),s=3,a=true);for(let x=0;x<=4;x++){let P=ca[x];if(P&&o.endsWith(P)){s=x,a&&(s+=1),o=o.slice(0,o.length-P.length),o.length===0&&(o="*");break}}let d=new RegExp("^"+ha(o).replace(/\\\*/gu,".*")+"$"),m=0;for(let x of e)x.id.match(d)&&(x.level=s,++m);m===0&&t.push(i);}return t}r(br,"applyLogLevelSpec");var nt=class n{constructor(e,t,i){this.logger=e;this.level=t;this.parts=i;this.id=n.nextId++,this.time=Date.now();}static{r(this,"LogEntry");}static nextId=0;id;time;stringPrefix;toMessage(){if(this.stringPrefix)return this.parts;let e=[new Date(this.time).toISOString().substr(-14,14),ua[this.level]+": ["+this.logger.id+"]"],t=0;for(;t<this.parts.length;t++){let i=this.parts[t];if(typeof i=="string"){e.push(i);continue}break}return this.stringPrefix=e.join(" "),this.parts.splice(0,t,this.stringPrefix),this.parts}toString(){return this.toMessage().map(e=>{let t=typeof e;if(t==="string")return e;if(t==="function")return `[Function: ${e.name??"unknown"}]`;if(e instanceof Error)return e.stack??e.toString();let i=JSON.stringify(tt(e));return i?.length>253?i.slice(0,250)+"...":i}).join(" ")}},G="*:app:info,app:info",xr=typeof process<"u"&&!!process.kill,pa=xr&&!!process.env.CI;pa?G="-:warn":xr&&(G="");try{typeof window<"u"&&window.localStorage&&(G=window.localStorage.logLevel||G);}catch{}try{typeof process<"u"&&(G=process.env.DEBUG||G);}catch{}try{typeof window<"u"&&Object.assign(window,{setLogLevel:Tr});}catch{}try{typeof window<"u"&&window.postMessage&&window.top===window&&window.addEventListener("message",n=>{if(!n.data||typeof n.data!="object")return;let{loggerId:e,level:t,parts:i,printed:o}=n.data;if(typeof e!="string"||!Array.isArray(i)||i.length<1||typeof t!="number")return;let s=it(e);if(t<0||t>5)return;i[0]=i[0].replace("[","*[");let a=new nt(s,t,i);a.stringPrefix=i[0],Z.push(a),!o&&(s.level>t||console?.log(...a.toMessage()));});}catch{}var Un;try{typeof window<"u"&&window.postMessage&&window.parent!==window&&!window.location.pathname.startsWith("/edit")&&(Un=r(n=>{try{let e=n.toMessage().map(a=>tt(a)),t=n.logger,i=n.level,o=t.level<=n.level,s={loggerId:t.id,level:i,parts:e,printed:o};window.parent?.postMessage(s,Lt().app);}catch{}},"postLogEntry"));}catch{}var Bn={},Z=[],Cr=1e3;function se(n,e,t){let i=new nt(n,e,t);for(Z.push(i),Un?.(i);Z.length>Cr;)Z.shift();return i}r(se,"createLogEntry");function Ir(n){return typeof n=="number"&&(Cr=n),Z}r(Ir,"getLogReplayBuffer");var ma=/\/(?<filename>[^/.]+)(?=\.(?:debug\.)?html$)/u,hr;function ga(){if(!(typeof window>"u"||!window.location))return hr??=ma.exec(window.location.pathname)?.groups?.filename,hr}r(ga,"getFilenameFromWindowPathname");function it(n){let e=ga();n=(e?e+":":"")+n;let t=Bn[n];if(t)return t;let i=new Rt(n);return Bn[n]=i,br(G,[i]),Un?.(new nt(i,-1,[])),i}r(it,"getLogger");function Tr(n,e=true){try{typeof window<"u"&&window.localStorage&&(window.localStorage.logLevel=n);}catch{}let t=G;G=n;let i=Object.values(Bn);for(let s of i)s.level=3;let o=br(n,i);if(o.length>0&&console?.warn("Some log level specs matched no loggers:",o),e&&Z.length>0){console?.log("--- LOG REPLAY ---");for(let s of Z)s.logger.level>s.level||(s.level>=3?console?.warn(...s.toMessage()):console?.log(...s.toMessage()));console?.log("--- END OF LOG REPLAY ---");}return t}r(Tr,"setLogLevel");var fa=r(n=>{let e={...n,logs:Ir().slice(-50).map(t=>t.toString().slice(0,600)).join(`
12
- `)};return n.logs&&console?.warn("extras.logs is reserved for log replay buffer, use another key"),e},"enrichWithLogs"),Rt=class{constructor(e,t){this.id=e;this.errorIsCritical=t??(e==="fatal"||e.endsWith(":fatal"));}static{r(this,"Logger");}level=3;didLog={};errorIsCritical;extend(e){let t=this.id+":"+e;return it(t)}getBufferedMessages(){return Z.filter(e=>e.logger===this)}setLevel(e){let t=this.level;return this.level=e,t}isLoggingTraceMessages(){return this.level>=0}trace=(...e)=>{if(this.level>0)return;let t=se(this,0,e);console?.log(...t.toMessage());};debug=(...e)=>{let t=se(this,1,e);this.level>1||console?.log(...t.toMessage());};info=(...e)=>{let t=se(this,2,e);this.level>2||console?.info(...t.toMessage());};warn=(...e)=>{let t=se(this,3,e);this.level>3||console?.warn(...t.toMessage());};warnOncePerMinute=(e,...t)=>{let i=this.didLog[e];if(i&&i>Date.now())return;this.didLog[e]=Date.now()+1e3*60,t.unshift(e);let o=se(this,3,t);this.level>3||console?.warn(...o.toMessage());};error=(...e)=>{let t=se(this,4,e);this.level>4||console?.error(...t.toMessage());};errorOncePerMinute=(e,...t)=>{let i=this.didLog[e];if(i&&i>Date.now())return;this.didLog[e]=Date.now()+1e3*60,t.unshift(e);let o=se(this,4,t);this.level>4||console?.error(...o.toMessage());};reportWithoutLogging=(e,t,i,o)=>{let s=fa(t??{}),a=gr({caller:this.reportWithoutLogging,error:e,tags:{...i,handler:"logger",where:this.id},extras:t,critical:o??this.errorIsCritical});return [s,a]};reportError=(e,t,i,o)=>{let[s,a]=this.reportWithoutLogging(e,t,i,o);s?this.error(a,s):this.error(a);};reportErrorOncePerMinute=(e,t)=>{if(!ya(e))return;let i=this.didLog[e.message];i&&i>Date.now()||(this.didLog[e.message]=Date.now()+1e3*60,this.reportError(e,t));};reportCriticalError=(e,t,i)=>this.reportError(e,t,i,true)};function ya(n){return Object.prototype.hasOwnProperty.call(n,"message")}r(ya,"isErrorWithMessage");function ha(n){return n.replace(/[/\-\\^$*+?.()|[\]{}]/gu,"\\$&")}r(ha,"escapeRegExp");var Fr;(K=>{function n(h,...u){return h.concat(u)}K.push=n,r(n,"push");function e(h){return h.slice(0,-1)}K.pop=e,r(e,"pop");function t(h,...u){return u.concat(h)}K.unshift=t,r(t,"unshift");function i(h,u,...T){let c=h.length;if(u<0||u>c)throw Error("index out of range: "+u);let f=h.slice();return f.splice(u,0,...T),f}K.insert=i,r(i,"insert");function o(h,u,T){let c=h.length;if(u<0||u>=c)throw Error("index out of range: "+u);let f=Array.isArray(T)?T:[T],M=h.slice();return M.splice(u,1,...f),M}K.replace=o,r(o,"replace");function s(h,u){let T=h.length;if(u<0||u>=T)throw Error("index out of range: "+u);let c=h.slice();return c.splice(u,1),c}K.remove=s,r(s,"remove");function a(h,u,T){let c=h.length;if(u<0||u>=c)throw Error("from index out of range: "+u);if(T<0||T>=c)throw Error("to index out of range: "+T);let f=h.slice();if(T===u)return f;let M=f[u];return u<T?(f.splice(T+1,0,M),f.splice(u,1)):(f.splice(u,1),f.splice(T,0,M)),f}K.move=a,r(a,"move");function d(h,u){let T=[],c=Math.min(h.length,u.length);for(let f=0;f<c;f++)T.push([h[f],u[f]]);return T}K.zip=d,r(d,"zip");function m(h,u,T){let c=h.slice(),f=c[u];return f===undefined||(c[u]=T(f)),c}K.update=m,r(m,"update");function x(h){return Array.from(new Set(h))}K.unique=x,r(x,"unique");function P(h,...u){return Array.from(new Set([...h,...u.flat()]))}K.union=P,r(P,"union");function O(h,u){return h.filter(u)}K.filter=O,r(O,"filter");})(Fr||={});var Sa=Object.prototype.hasOwnProperty;function Fa(n,e){return Sa.call(n,e)}r(Fa,"hasOwnProperty");var Dr;(i=>{function n(o,s){for(let a of Object.keys(o))Fa(s,a)||delete o[a];for(let a of Object.keys(s))o[a]===undefined&&(o[a]=s[a]);return Object.setPrototypeOf(o,Object.getPrototypeOf(s)),o}i.morphUsingTemplate=n,r(n,"morphUsingTemplate");function e(o,s){s&&Object.assign(o,s);}i.writeOnce=e,r(e,"writeOnce");function t(o,s){return Object.assign(Object.create(Object.getPrototypeOf(o)),o,s)}i.update=t,r(t,"update");})(Dr||={});var vr;(o=>{function n(s,...a){return new Set([...s,...a])}o.add=n,r(n,"add");function e(s,...a){let d=new Set(s);for(let m of a)d.delete(m);return d}o.remove=e,r(e,"remove");function t(...s){let a=new Set;for(let d of s)for(let m of d)a.add(m);return a}o.union=t,r(t,"union");function i(s,a){return s.has(a)?o.remove(s,a):o.add(s,a)}o.toggle=i,r(i,"toggle");})(vr||={});var Nr;(i=>{function n(o,...s){let a=new Map;o.forEach((m,x)=>a.set(x,m));let d=false;for(let m of s)m&&(m.forEach((x,P)=>a.set(P,x)),d=true);return d?a:o}i.merge=n,r(n,"merge");function e(o,s,a){let d=new Map(o);return d.set(s,a),d}i.set=e,r(e,"set");function t(o,s){let a=new Map(o);return a.delete(s),a}i.remove=t,r(t,"remove");})(Nr||={});(class extends Promise{static{r(this,"ResolvablePromise");}_state="initial";resolve;reject;get state(){return this._state}pending(){return this._state="pending",this}isResolved(){return this._state==="fulfilled"||this._state==="rejected"}constructor(){let e,t;super((i,o)=>{e=i,t=o;}),this.resolve=i=>{this._state="fulfilled",e(i);},this.reject=i=>{this._state="rejected",t(i);};}});it("task-queue");function zn(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(zn,"isObject");var be=class{constructor(e){this.ws=e;this.ws.addEventListener("close",()=>{this.closed=true,this.onError?.(new D("Connection closed","PROJECT_CLOSED"));});}static{r(this,"WebSocketTransport");}onError;closed=false;setOnError(e){this.onError=e;}send(e){if(this.closed)throw new D("Connection closed","PROJECT_CLOSED");this.ws.send(rt.stringify(e));}waitForDisconnectAck(e){return new Promise(t=>{let i=setTimeout(()=>{this.ws.removeEventListener("message",o),t();},e),o=r(s=>{if(!(typeof s.data!="string"&&!(s.data instanceof String)))try{let a=rt.parse(s.data);zn(a)&&a.type==="disconnect-ack"&&(clearTimeout(i),this.ws.removeEventListener("message",o),t());}catch{}},"handler");this.ws.addEventListener("message",o);})}onMessage(e,t){let i=r(o=>{let s=typeof o.data=="string"?o.data:o.data.toString(),a=rt.parse(s);if(zn(a)&&a.type==="error"){let d=a.message||JSON.stringify(a),m=a.code??"INTERNAL";N.error(`Server error: ${d}`),this.onError?.(new D(`Server error: ${d}`,m));return}if(zn(a)&&a.type==="debug-archive"){Gn(a.data);return}e(a);},"listener");this.ws.addEventListener("message",i),t?.addEventListener("abort",()=>this.ws.removeEventListener("message",i));}};function Gn(n){X(En,"File system module is not available."),X(kn,"Path module is not available.");let t=`debug-archive-${new Date().toISOString().replace(/[:.]/gu,"-")}.zip`,i=process.cwd(),o=kn.resolve(i,t);En.writeFileSync(o,Buffer.from(n)),N.info(`Debug archive saved to ${o}`);}r(Gn,"handleDebugArchive");function Ut(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(Ut,"isObject");var Ea={type:"pluginReadySignal"};function ka(n){return Ut(n)&&n.type==="pluginReadyResponse"}r(ka,"isPluginReadyResponse");var Er=45e3,Ma=2e4;async function Aa(n,e){let t={Authorization:`Token ${e}`};if(ir)return N.debug("Using Cloudflare Workers WebSocket connection"),or(n,t);let i=n.hostname==="api.framerlocal.com",o=process.env.NODE_TLS_REJECT_UNAUTHORIZED;i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0"),N.debug("Using standard WebSocket connection");let s=new rr(n.href,{headers:t});return i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED=o),s}r(Aa,"createWebSocket");async function kr(n,e,t){let i=new URL(t??he("FRAMER_HEADLESS_SERVER_URL","wss://api.framer.com/channel/headless-plugin"));i.protocol=i.protocol==="https:"?"wss:":i.protocol==="http:"?"ws:":i.protocol,i.searchParams.set("projectId",n),N.debug(`Connecting to ${i.href}`);let o=await Aa(i,e);N.debug(`WebSocket created, readyState: ${o.readyState}`);let s,a=N,d=false,m=setInterval(()=>{o.readyState===o.OPEN&&(o.send(rt.stringify({type:"ping"})),a.debug("Sent ping"));},Ma),x=r(()=>{clearInterval(m),o.readyState!==o.CLOSED&&o.readyState!==o.CLOSING&&o.close(1e3,"Client disconnect");},"forceClose"),P=r(async()=>{if(clearInterval(m),!(o.readyState===o.CLOSED||o.readyState===o.CLOSING)){if(d){a.debug("Initiating graceful disconnect");let K=new be(o);K.send({type:"client-disconnect"}),await K.waitForDisconnectAck(15e3);}o.readyState!==o.CLOSED&&o.readyState!==o.CLOSING&&o.close(1e3,"Client disconnect");}},"cleanup"),O=await new Promise((K,h)=>{let u=setTimeout(()=>{x(),h(new D(`Connection timeout after ${Er}ms`,"TIMEOUT"));},Er),T=r(()=>{a.debug("WebSocket opened, waiting for ready");},"onOpen"),c=r(E=>{a.debug("WebSocket error:",E),clearTimeout(u),x(),h(new D("No connection to the server","INTERNAL"));},"onError"),f=r(E=>{a.debug(`WebSocket closed: code=${E.code}, reason=${E.reason||"(no reason)"}, wasClean=${E.wasClean}`),clearTimeout(u),clearInterval(m),h(new D(`Connection to the server was closed (code: ${E.code})`,"PROJECT_CLOSED"));},"onClose");function M(E){a.debug("Received message");let le=typeof E.data=="string"?E.data:E.data.toString(),S=rt.parse(le);if(a.debug(`Message type: ${S.type}`),S.type==="error"){clearTimeout(u),o.removeEventListener("close",f),o.removeEventListener("error",c);let at=lr(S.code);h(new D(S.message||"Server error",at)),x();}else S.type==="ready"?(Ut(S)&&"requestId"in S&&(s=String(S.requestId),a=N.withRequestId(s),a.debug(`Server request ID: ${s}`)),Ut(S)&&"version"in S&&a.debug(`Server version: ${S.version}`),Ut(S)&&S.gracefulDisconnect===true&&(d=true),a.debug("Sending pluginReadySignal"),o.send(rt.stringify(Ea))):S.type==="debug-archive"?Gn(S.data):ka(S)&&(clearTimeout(u),o.removeEventListener("message",M),o.removeEventListener("error",c),o.removeEventListener("close",f),K(S));}r(M,"handshakeMessageHandler"),o.addEventListener("open",T),o.addEventListener("message",M),o.addEventListener("error",c),o.addEventListener("close",f);});return o.addEventListener("close",()=>{P();}),{ws:o,pluginReadyData:O,requestId:s,logger:a,gracefulDisconnect:d,cleanup:P}}r(kr,"connectAndHandshake");async function Mr(n,e,t){let i=performance.now();if(!n)throw new D("FRAMER_PROJECT_URL environment variable is required","INVALID_REQUEST");let o=cr(n);if(!o)throw new D(`Invalid project URL or ID: ${n}`,"INVALID_REQUEST");let s=e??he("FRAMER_API_KEY");if(!s)throw new D("FRAMER_API_KEY environment variable is required","INVALID_REQUEST");let a=await kr(o,s,t?.serverUrl);try{let d=new be(a.ws),m={transport:d,mode:a.pluginReadyData.mode,permissionMap:a.pluginReadyData.permissionMap,environmentInfo:a.pluginReadyData.environmentInfo,origin:null,theme:null,initialState:a.pluginReadyData.initialState},x=tr(m);d.setOnError(O=>{x[w.rejectAllPending](O);});let P=r(async()=>{let O=((performance.now()-i)/1e3).toFixed(2);a.logger.debug(`Connection ended after ${O}s`),await a.cleanup();},"cleanup");return Vt.create(x,d,P,a.requestId)}catch(d){throw await a.cleanup(),d}}r(Mr,"connect");async function wa(n,e,t,i){let o=await Mr(n,t,i);try{return await e(o)}finally{await o.disconnect();}}r(wa,"withConnection");
11
+ `));}catch{}throw t}r(Y,"assert");var ur;function cr({error:n,tags:e,extras:t,critical:i,caller:o}){Y(ur,"Set up an error callback with setErrorReporter, or configure Sentry with initializeEnvironment");let a=Wn(n,o);return ur({error:a,tags:{...a.tags,...e},extras:{...a.extras,...t},critical:!!i}),a}r(cr,"reportError");function Wn(n,e=Wn){return n instanceof Error?n:new Vn(n,e)}r(Wn,"reportableError");var Vn=class extends Error{static{r(this,"UnhandledError");}constructor(e,t){let i=e?JSON.stringify(e):"No error message provided";if(super(i),this.message=i,t&&Error.captureStackTrace)Error.captureStackTrace(this,t);else try{throw new Error}catch(o){this.stack=o.stack;}}};var et=typeof window<"u"?window.location.hostname:undefined,pr=!!(et&&["web.framerlocal.com","localhost","127.0.0.1","[::1]"].includes(et)),Ln=(()=>{if(!et)return;if(pr)return {main:et,previewLink:undefined};let n=/^(([^.]+\.)?beta\.)?((?:development\.)?framer\.com)$/u,e=et.match(n);if(!(!e||!e[3]))return {previewLink:e[2]&&e[0],main:e[3]}})();({hosts:Ln,isDevelopment:Ln?.main==="development.framer.com",isProduction:Ln?.main==="framer.com",isLocal:pr});var Vt;function Wt(){return typeof window>"u"?{}:Vt||(Vt=aa(),Vt)}r(Wt,"getServiceMap");function aa(){let n=window.location,e=window?.bootstrap?.services;if(e)return e;let t;try{if(t=window.top.location.origin,e=window.top?.bootstrap?.services,e)return e}catch{}if(t&&t!==n.origin)throw Error(`Unexpectedly embedded by ${t} (expected ${n.origin})`);if(n.origin.endsWith("framer.com")||n.origin.endsWith("framer.dev"))throw Error("ServiceMap data was not provided in document");try{let i=new URLSearchParams(n.search).get("services")||new URLSearchParams(n.hash.substring(1)).get("services");i&&(e=JSON.parse(i));}catch{}if(e&&typeof e=="object"&&e.api)return e;throw Error("ServiceMap requested but not available")}r(aa,"extractServiceMap");function tt(n,e=0,t=new Set){if(n===null)return n;if(typeof n=="function")return `[Function: ${n.name??"unknown"}]`;if(typeof n!="object")return n;if(n instanceof Error)return `[${n.toString()}]`;if(t.has(n))return "[Circular]";if(e>2)return "...";t.add(n);try{if("toJSON"in n&&typeof n.toJSON=="function")return tt(n.toJSON(),e+1,t);if(Array.isArray(n))return n.map(i=>tt(i,e+1,t));if(Object.getPrototypeOf(n)!==Object.prototype)return `[Object: ${"__class"in n&&n.__class||n.constructor?.name}]`;{let i={};for(let[o,a]of Object.entries(n))i[o]=tt(a,e+1,t);return i}}catch(i){return `[Throws: ${i instanceof Error?i.message:i}]`}finally{t.delete(n);}}r(tt,"jsonSafeCopy");var sa=["trace","debug","info","warn","error"],la=[":trace",":debug",":info",":warn",":error"];function fr(n,e){let t=[];for(let i of n.split(/[ ,]/u)){let o=i.trim();if(o.length===0)continue;let a=1,s=false;o.startsWith("-")&&(o=o.slice(1),a=3,s=true);for(let C=0;C<=4;C++){let D=la[C];if(D&&o.endsWith(D)){a=C,s&&(a+=1),o=o.slice(0,o.length-D.length),o.length===0&&(o="*");break}}let d=new RegExp("^"+ga(o).replace(/\\\*/gu,".*")+"$"),b=0;for(let C of e)C.id.match(d)&&(C.level=a,++b);b===0&&t.push(i);}return t}r(fr,"applyLogLevelSpec");var nt=class n{constructor(e,t,i){this.logger=e;this.level=t;this.parts=i;this.id=n.nextId++,this.time=Date.now();}static{r(this,"LogEntry");}static nextId=0;id;time;stringPrefix;toMessage(){if(this.stringPrefix)return this.parts;let e=[new Date(this.time).toISOString().substr(-14,14),sa[this.level]+": ["+this.logger.id+"]"],t=0;for(;t<this.parts.length;t++){let i=this.parts[t];if(typeof i=="string"){e.push(i);continue}break}return this.stringPrefix=e.join(" "),this.parts.splice(0,t,this.stringPrefix),this.parts}toString(){return this.toMessage().map(e=>{let t=typeof e;if(t==="string")return e;if(t==="function")return `[Function: ${e.name??"unknown"}]`;if(e instanceof Error)return e.stack??e.toString();let i=JSON.stringify(tt(e));return i?.length>253?i.slice(0,250)+"...":i}).join(" ")}},z="*:app:info,app:info",yr=typeof process<"u"&&!!process.kill,da=yr&&!!process.env.CI;da?z="-:warn":yr&&(z="");try{typeof window<"u"&&window.localStorage&&(z=window.localStorage.logLevel||z);}catch{}try{typeof process<"u"&&(z=process.env.DEBUG||z);}catch{}try{typeof window<"u"&&Object.assign(window,{setLogLevel:xr});}catch{}try{typeof window<"u"&&window.postMessage&&window.top===window&&window.addEventListener("message",n=>{if(!n.data||typeof n.data!="object")return;let{loggerId:e,level:t,parts:i,printed:o}=n.data;if(typeof e!="string"||!Array.isArray(i)||i.length<1||typeof t!="number")return;let a=it(e);if(t<0||t>5)return;i[0]=i[0].replace("[","*[");let s=new nt(a,t,i);s.stringPrefix=i[0],X.push(s),!o&&(a.level>t||console?.log(...s.toMessage()));});}catch{}var Bn;try{typeof window<"u"&&window.postMessage&&window.parent!==window&&!window.location.pathname.startsWith("/edit")&&(Bn=r(n=>{try{let e=n.toMessage().map(s=>tt(s)),t=n.logger,i=n.level,o=t.level<=n.level,a={loggerId:t.id,level:i,parts:e,printed:o};window.parent?.postMessage(a,Wt().app);}catch{}},"postLogEntry"));}catch{}var Rn={},X=[],hr=1e3;function se(n,e,t){let i=new nt(n,e,t);for(X.push(i),Bn?.(i);X.length>hr;)X.shift();return i}r(se,"createLogEntry");function br(n){return typeof n=="number"&&(hr=n),X}r(br,"getLogReplayBuffer");var ua=/\/(?<filename>[^/.]+)(?=\.(?:debug\.)?html$)/u,gr;function ca(){if(!(typeof window>"u"||!window.location))return gr??=ua.exec(window.location.pathname)?.groups?.filename,gr}r(ca,"getFilenameFromWindowPathname");function it(n){let e=ca();n=(e?e+":":"")+n;let t=Rn[n];if(t)return t;let i=new Lt(n);return Rn[n]=i,fr(z,[i]),Bn?.(new nt(i,-1,[])),i}r(it,"getLogger");function xr(n,e=true){try{typeof window<"u"&&window.localStorage&&(window.localStorage.logLevel=n);}catch{}let t=z;z=n;let i=Object.values(Rn);for(let a of i)a.level=3;let o=fr(n,i);if(o.length>0&&console?.warn("Some log level specs matched no loggers:",o),e&&X.length>0){console?.log("--- LOG REPLAY ---");for(let a of X)a.logger.level>a.level||(a.level>=3?console?.warn(...a.toMessage()):console?.log(...a.toMessage()));console?.log("--- END OF LOG REPLAY ---");}return t}r(xr,"setLogLevel");var pa=r(n=>{let e={...n,logs:br().slice(-50).map(t=>t.toString().slice(0,600)).join(`
12
+ `)};return n.logs&&console?.warn("extras.logs is reserved for log replay buffer, use another key"),e},"enrichWithLogs"),Lt=class{constructor(e,t){this.id=e;this.errorIsCritical=t??(e==="fatal"||e.endsWith(":fatal"));}static{r(this,"Logger");}level=3;didLog={};errorIsCritical;extend(e){let t=this.id+":"+e;return it(t)}getBufferedMessages(){return X.filter(e=>e.logger===this)}setLevel(e){let t=this.level;return this.level=e,t}isLoggingTraceMessages(){return this.level>=0}trace=(...e)=>{if(this.level>0)return;let t=se(this,0,e);console?.log(...t.toMessage());};debug=(...e)=>{let t=se(this,1,e);this.level>1||console?.log(...t.toMessage());};info=(...e)=>{let t=se(this,2,e);this.level>2||console?.info(...t.toMessage());};warn=(...e)=>{let t=se(this,3,e);this.level>3||console?.warn(...t.toMessage());};warnOncePerMinute=(e,...t)=>{let i=this.didLog[e];if(i&&i>Date.now())return;this.didLog[e]=Date.now()+1e3*60,t.unshift(e);let o=se(this,3,t);this.level>3||console?.warn(...o.toMessage());};error=(...e)=>{let t=se(this,4,e);this.level>4||console?.error(...t.toMessage());};errorOncePerMinute=(e,...t)=>{let i=this.didLog[e];if(i&&i>Date.now())return;this.didLog[e]=Date.now()+1e3*60,t.unshift(e);let o=se(this,4,t);this.level>4||console?.error(...o.toMessage());};reportWithoutLogging=(e,t,i,o)=>{let a=pa(t??{}),s=cr({caller:this.reportWithoutLogging,error:e,tags:{...i,handler:"logger",where:this.id},extras:t,critical:o??this.errorIsCritical});return [a,s]};reportError=(e,t,i,o)=>{let[a,s]=this.reportWithoutLogging(e,t,i,o);a?this.error(s,a):this.error(s);};reportErrorOncePerMinute=(e,t)=>{if(!ma(e))return;let i=this.didLog[e.message];i&&i>Date.now()||(this.didLog[e.message]=Date.now()+1e3*60,this.reportError(e,t));};reportCriticalError=(e,t,i)=>this.reportError(e,t,i,true)};function ma(n){return Object.prototype.hasOwnProperty.call(n,"message")}r(ma,"isErrorWithMessage");function ga(n){return n.replace(/[/\-\\^$*+?.()|[\]{}]/gu,"\\$&")}r(ga,"escapeRegExp");var Tr;(G=>{function n(y,...u){return y.concat(u)}G.push=n,r(n,"push");function e(y){return y.slice(0,-1)}G.pop=e,r(e,"pop");function t(y,...u){return u.concat(y)}G.unshift=t,r(t,"unshift");function i(y,u,...T){let c=y.length;if(u<0||u>c)throw Error("index out of range: "+u);let g=y.slice();return g.splice(u,0,...T),g}G.insert=i,r(i,"insert");function o(y,u,T){let c=y.length;if(u<0||u>=c)throw Error("index out of range: "+u);let g=Array.isArray(T)?T:[T],M=y.slice();return M.splice(u,1,...g),M}G.replace=o,r(o,"replace");function a(y,u){let T=y.length;if(u<0||u>=T)throw Error("index out of range: "+u);let c=y.slice();return c.splice(u,1),c}G.remove=a,r(a,"remove");function s(y,u,T){let c=y.length;if(u<0||u>=c)throw Error("from index out of range: "+u);if(T<0||T>=c)throw Error("to index out of range: "+T);let g=y.slice();if(T===u)return g;let M=g[u];return u<T?(g.splice(T+1,0,M),g.splice(u,1)):(g.splice(u,1),g.splice(T,0,M)),g}G.move=s,r(s,"move");function d(y,u){let T=[],c=Math.min(y.length,u.length);for(let g=0;g<c;g++)T.push([y[g],u[g]]);return T}G.zip=d,r(d,"zip");function b(y,u,T){let c=y.slice(),g=c[u];return g===undefined||(c[u]=T(g)),c}G.update=b,r(b,"update");function C(y){return Array.from(new Set(y))}G.unique=C,r(C,"unique");function D(y,...u){return Array.from(new Set([...y,...u.flat()]))}G.union=D,r(D,"union");function Z(y,u){return y.filter(u)}G.filter=Z,r(Z,"filter");})(Tr||={});var Ia=Object.prototype.hasOwnProperty;function Ta(n,e){return Ia.call(n,e)}r(Ta,"hasOwnProperty");var Pr;(i=>{function n(o,a){for(let s of Object.keys(o))Ta(a,s)||delete o[s];for(let s of Object.keys(a))o[s]===undefined&&(o[s]=a[s]);return Object.setPrototypeOf(o,Object.getPrototypeOf(a)),o}i.morphUsingTemplate=n,r(n,"morphUsingTemplate");function e(o,a){a&&Object.assign(o,a);}i.writeOnce=e,r(e,"writeOnce");function t(o,a){return Object.assign(Object.create(Object.getPrototypeOf(o)),o,a)}i.update=t,r(t,"update");})(Pr||={});var Sr;(o=>{function n(a,...s){return new Set([...a,...s])}o.add=n,r(n,"add");function e(a,...s){let d=new Set(a);for(let b of s)d.delete(b);return d}o.remove=e,r(e,"remove");function t(...a){let s=new Set;for(let d of a)for(let b of d)s.add(b);return s}o.union=t,r(t,"union");function i(a,s){return a.has(s)?o.remove(a,s):o.add(a,s)}o.toggle=i,r(i,"toggle");})(Sr||={});var Fr;(i=>{function n(o,...a){let s=new Map;o.forEach((b,C)=>s.set(C,b));let d=false;for(let b of a)b&&(b.forEach((C,D)=>s.set(D,C)),d=true);return d?s:o}i.merge=n,r(n,"merge");function e(o,a,s){let d=new Map(o);return d.set(a,s),d}i.set=e,r(e,"set");function t(o,a){let s=new Map(o);return s.delete(a),s}i.remove=t,r(t,"remove");})(Fr||={});var Rt=class extends Promise{static{r(this,"ResolvablePromise");}_state="initial";resolve;reject;get state(){return this._state}pending(){return this._state="pending",this}isResolved(){return this._state==="fulfilled"||this._state==="rejected"}constructor(){let e,t;super((i,o)=>{e=i,t=o;}),this.resolve=i=>{this._state="fulfilled",e(i);},this.reject=i=>{this._state="rejected",t(i);};}};Rt.prototype.constructor=Promise;it("task-queue");function On(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(On,"isObject");var be=class{static{r(this,"WebSocketTransport");}onError;closed=false;ws;messageHandlers=new Set;constructor(e){this.ws=e,this.setupListeners();}setupListeners(){this.ws.addEventListener("close",this.handleClose),this.ws.addEventListener("message",this.handleMessage);}removeListeners(){this.ws.removeEventListener("close",this.handleClose),this.ws.removeEventListener("message",this.handleMessage);}handleClose=()=>{this.removeListeners(),this.closed=true,this.onError?.(new F("Connection closed","PROJECT_CLOSED"));};handleMessage=e=>{for(let t of this.messageHandlers)t(e);};replaceSocket(e){this.removeListeners(),this.ws=e,this.closed=false,this.setupListeners();}setOnError(e){this.onError=e;}send(e){if(this.closed)throw new F("Connection closed","PROJECT_CLOSED");this.ws.send(rt.stringify(e));}waitForDisconnectAck(e){return new Promise(t=>{let i=setTimeout(()=>{this.ws.removeEventListener("message",o),t();},e),o=r(a=>{if(!(typeof a.data!="string"&&!(a.data instanceof String)))try{let s=rt.parse(a.data);On(s)&&s.type==="disconnect-ack"&&(clearTimeout(i),this.ws.removeEventListener("message",o),t());}catch{}},"handler");this.ws.addEventListener("message",o);})}onMessage(e){let t=r(i=>{let o=typeof i.data=="string"?i.data:i.data.toString(),a=rt.parse(o);if(On(a)&&a.type==="error"){let s=a.message||JSON.stringify(a),d=a.code??"INTERNAL";N.error(`Server error: ${s}`),this.onError?.(new F(`Server error: ${s}`,d));return}if(On(a)&&a.type==="debug-archive"){zn(a.data);return}e(a);},"listener");this.messageHandlers.add(t);}};function zn(n){Y(kn,"File system module is not available."),Y(Mn,"Path module is not available.");let t=`debug-archive-${new Date().toISOString().replace(/[:.]/gu,"-")}.zip`,i=process.cwd(),o=Mn.resolve(i,t);kn.writeFileSync(o,Buffer.from(n)),N.info(`Debug archive saved to ${o}`);}r(zn,"handleDebugArchive");function Bt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(Bt,"isObject");var Da={type:"pluginReadySignal"};function va(n){return Bt(n)&&n.type==="pluginReadyResponse"}r(va,"isPluginReadyResponse");var Dr=9e4,Na=2e4;async function Ea(n,e){let t={Authorization:`Token ${e}`};if(ir)return N.debug("Using Cloudflare Workers WebSocket connection"),or(n,t);let i=n.hostname==="api.framerlocal.com",o=process.env.NODE_TLS_REJECT_UNAUTHORIZED;i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0"),N.debug("Using standard WebSocket connection");let a=new rr(n.href,{headers:t});return i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED=o),a}r(Ea,"createWebSocket");async function Ut(n,e,t){let i=new URL(t??he("FRAMER_HEADLESS_SERVER_URL","wss://api.framer.com/channel/headless-plugin"));i.protocol=i.protocol==="https:"?"wss:":i.protocol==="http:"?"ws:":i.protocol,i.searchParams.set("projectId",n),N.debug(`Connecting to ${i.href}`);let o=await Ea(i,e);N.debug(`WebSocket created, readyState: ${o.readyState}`);let a,s=N,d=false,b=setInterval(()=>{o.readyState===o.OPEN&&(o.send(rt.stringify({type:"ping"})),s.debug("Sent ping"));},Na),C=r(()=>{clearInterval(b),o.readyState!==o.CLOSED&&o.readyState!==o.CLOSING&&o.close(1e3,"Client disconnect");},"forceClose"),D=r(async()=>{if(clearInterval(b),!(o.readyState===o.CLOSED||o.readyState===o.CLOSING)){if(d){s.debug("Initiating graceful disconnect");let G=new be(o);G.send({type:"client-disconnect"}),await G.waitForDisconnectAck(15e3);}o.readyState!==o.CLOSED&&o.readyState!==o.CLOSING&&o.close(1e3,"Client disconnect");}},"cleanup"),Z=await new Promise((G,y)=>{let u=setTimeout(()=>{C(),y(new F(`Connection timeout after ${Dr}ms`,"TIMEOUT"));},Dr),T=r(()=>{s.debug("WebSocket opened, waiting for ready");},"onOpen"),c=r(E=>{s.debug("WebSocket error:",E),clearTimeout(u),C(),y(new F("No connection to the server","INTERNAL"));},"onError"),g=r(E=>{s.debug(`WebSocket closed: code=${E.code}, reason=${E.reason||"(no reason)"}, wasClean=${E.wasClean}`),clearTimeout(u),clearInterval(b),y(new F(`Connection to the server was closed (code: ${E.code})`,"PROJECT_CLOSED"));},"onClose");function M(E){s.debug("Received message");let le=typeof E.data=="string"?E.data:E.data.toString(),P=rt.parse(le);if(s.debug(`Message type: ${P.type}`),P.type==="error"){clearTimeout(u),o.removeEventListener("close",g),o.removeEventListener("error",c);let at=lr(P.code);y(new F(P.message||"Server error",at)),C();}else P.type==="ready"?(Bt(P)&&"requestId"in P&&(a=String(P.requestId),s=N.withRequestId(a),s.debug(`Server request ID: ${a}`)),Bt(P)&&"version"in P&&s.debug(`Server version: ${P.version}`),Bt(P)&&P.gracefulDisconnect===true&&(d=true),s.debug("Sending pluginReadySignal"),o.send(rt.stringify(Da))):P.type==="debug-archive"?zn(P.data):va(P)&&(clearTimeout(u),o.removeEventListener("message",M),o.removeEventListener("error",c),o.removeEventListener("close",g),G(P));}r(M,"handshakeMessageHandler"),o.addEventListener("open",T),o.addEventListener("message",M),o.addEventListener("error",c),o.addEventListener("close",g);});return o.addEventListener("close",()=>{D();}),{ws:o,pluginReadyData:Z,requestId:a,logger:s,gracefulDisconnect:d,cleanup:D}}r(Ut,"connectAndHandshake");var vr={showUI:false,hideUI:false,closePlugin:false,setCloseWarning:true,notify:false,setMenu:false,showContextMenu:false,preloadDetachedComponentLayers:false,preloadDragPreviewImage:false,preloadImageUrlForInsertion:false,setBackgroundMessage:false,getSelection:false,getActiveCollection:false,getActiveManagedCollection:false,getActiveLocale:false,zoomIntoView:false,navigateTo:false,getPluginData:false,setPluginData:false,getPluginDataKeys:false,makeDraggable:false,subscribeToSelection:false,subscribeToImage:false,subscribeToText:false,subscribeToCustomCode:false,subscribeToColorStyles:false,subscribeToTextStyles:false,subscribeToRedirects:false,subscribeToCodeFiles:false,subscribeToOpenCodeFile:false,subscribeToIsAllowedTo:false,subscribeToCanvasRoot:false,subscribeToPublishInfo:false,unstable_ensureMinimumDependencyVersion:false,removeNode:true,removeNodes:true,addSVG:true,getRect:true,setText:true,getText:true,addText:true,setCustomCode:true,getCustomCode:true,getLocales:true,getDefaultLocale:true,getLocalizationGroups:true,setLocalizationData:true,getCurrentUser:true,getProjectInfo:true,setSelection:true,getCanvasRoot:true,getPublishInfo:true,cloneNode:true,getNode:true,getParent:true,getChildren:true,setAttributes:true,getNodesWithType:true,getNodesWithAttribute:true,getNodesWithAttributeSet:true,addImages:true,getImage:true,addImage:true,setImage:true,uploadImage:true,uploadImages:true,uploadFile:true,uploadFiles:true,setParent:true,addComponentInstance:true,addDetachedComponentLayers:true,getManagedCollection:true,getManagedCollections:true,getCollection:true,getCollections:true,getColorStyle:true,getColorStyles:true,createColorStyle:true,getTextStyle:true,getTextStyles:true,createTextStyle:true,getFont:true,getFonts:true,createCodeFile:true,getCodeFiles:true,getCodeFile:true,lintCode:true,typecheckCode:true,addRedirects:true,getRedirects:true,setRedirectOrder:true,removeRedirects:true,addComponentInstancePlaceholder:true,createCollection:true,getVectorSets:true,createDesignPage:true,createWebPage:true,createTextNode:true,createComponentNode:true,mode:true,isAllowedTo:false,createFrameNode:true,createManagedCollection:true};function Gn(n){return n in vr?vr[n]===true:false}r(Gn,"isAllowedMethod");var Ot=class n{static{r(this,"FramerAPI");}requestId;#e;#t;#n;#i=new Map;#r=new Map;#c=0;#a;#s;#l;constructor(e){this.#t=e.pluginAPI,this.#n=e.transport,this.#e=e.cleanup,this.#a=e.projectId,this.#s=e.apiKey,this.#l=e.serverUrl,this.requestId=e.requestId,this.#n.onMessage(t=>{this.#p(t);}),this.#n.setOnError(t=>{this.#d(t);});}#d(e){for(let t of this.#i.values())t.reject(e);this.#i.clear();for(let t of this.#r.values())t.reject(e);this.#r.clear(),this.#t[W.rejectAllPending](e);}#u(){return `req-${++this.#c}-${Date.now()}`}#p=e=>{switch(e.type){case "screenshotResult":{let t=this.#i.get(e.id);if(t){this.#i.delete(e.id);let i=Buffer.from(e.data,"base64");t.resolve({data:i,mimeType:e.mimeType});}return true}case "screenshotError":{let t=this.#i.get(e.id);if(t){this.#i.delete(e.id);let i=e.code??"INTERNAL";t.reject(new F(e.error,i));}return true}case "exportSVGResult":{let t=this.#r.get(e.id);return t&&(this.#r.delete(e.id),t.resolve(e.data)),true}case "exportSVGError":{let t=this.#r.get(e.id);if(t){this.#r.delete(e.id);let i=e.code??"INTERNAL";t.reject(new F(e.error,i));}return true}default:return false}};static create(e){let t=new n(e);return new Proxy(t,{get(i,o){if(o in i)return Reflect.get(i,o);if(Pn(o)){let s=W[o],d=Reflect.get(i.#t,s);return typeof d=="function"?d.bind(i.#t):d}if(!Gn(o))return;let a=Reflect.get(i.#t,o);return typeof a=="function"?a.bind(i.#t):a},has(i,o){return o in i||Pn(o)?true:Gn(o)?o in i.#t:false}})}async#o(){this.#d(new F("Connection closed","PROJECT_CLOSED")),await this.#e();}disconnect=()=>this.#o();reconnect=async()=>{await this.#o();let e=await Ut(this.#a,this.#s,this.#l);this.#n.replaceSocket(e.ws),this.#e=e.cleanup,this.requestId=e.requestId;};screenshot=(e,t)=>{let i=this.#u(),{format:o,quality:a,scale:s,clip:d}=t??{};return new Promise((b,C)=>{this.#i.set(i,{resolve:b,reject:C}),this.#n.send({type:"screenshot",id:i,nodeId:e,format:o,quality:a,scale:s,clip:d});})};exportSVG=e=>{let t=this.#u();return new Promise((i,o)=>{this.#r.set(t,{resolve:i,reject:o}),this.#n.send({type:"exportSVG",id:t,nodeId:e});})};[Symbol.dispose]=()=>void this.#o();[Symbol.asyncDispose]=()=>this.#o()};var ka=/^.+--([A-Za-z0-9]+)/u,Nr=/^[A-Za-z0-9]{20}$/u;function Er(n){if(Nr.test(n))return n;try{let t=new URL(n,"https://framer.com").pathname.split("/").filter(Boolean),i=t.findIndex(o=>o.toLowerCase()==="projects");if(i>=0){let o=t[i+1];if(o!==void 0){let a=decodeURIComponent(o),d=a.match(ka)?.[1]??a;if(Nr.test(d))return d}}return null}catch{return null}}r(Er,"parseProjectId");async function kr(n,e,t){let i=performance.now();if(!n)throw new F("FRAMER_PROJECT_URL environment variable is required","INVALID_REQUEST");let o=Er(n);if(!o)throw new F(`Invalid project URL or ID: ${n}`,"INVALID_REQUEST");let a=e??he("FRAMER_API_KEY");if(!a)throw new F("FRAMER_API_KEY environment variable is required","INVALID_REQUEST");let s=await Ut(o,a,t?.serverUrl);try{let d=new be(s.ws),b={transport:d,mode:s.pluginReadyData.mode,permissionMap:s.pluginReadyData.permissionMap,environmentInfo:s.pluginReadyData.environmentInfo,origin:null,theme:null,initialState:s.pluginReadyData.initialState},C=tr(b),D=r(async()=>{let Z=((performance.now()-i)/1e3).toFixed(2);s.logger.debug(`Connection ended after ${Z}s`),await s.cleanup();},"cleanup");return Ot.create({pluginAPI:C,transport:d,cleanup:D,projectId:o,apiKey:a,serverUrl:t?.serverUrl,requestId:s.requestId})}catch(d){throw await s.cleanup(),d}}r(kr,"connect");async function Ma(n,e,t,i){let o=await kr(n,t,i);try{return await e(o)}finally{await o.disconnect();}}r(Ma,"withConnection");
13
13
 
14
- export { gt as BooleanField, Ce as BooleanVariable, ke as BorderVariable, St as CollectionReferenceField, ft as ColorField, Fe as ColorVariable, $e as ComponentInstanceNode, ie as ComponentNode, Ue as ConicGradient, Ct as DateField, Ee as DateVariable, re as DesignPageNode, H as EnumCase, Pt as EnumField, Se as EnumVariable, ae as ErrorCode, It as FieldDivider, Tt as FileField, ve as FileVariable, bt as FormattedTextField, Pe as FormattedTextVariable, U as FrameNode, D as FramerAPIError, q as FramerPluginClosedError, Ye as FramerPluginError, Ae as ImageField, De as ImageVariable, Re as LinearGradient, xt as LinkField, Ne as LinkVariable, Ft as MultiCollectionReferenceField, yt as NumberField, Ie as NumberVariable, Be as RadialGradient, Ge as SVGNode, ht as StringField, Te as StringVariable, te as TextNode, Le as UnsupportedComputedValue, we as UnsupportedField, Me as UnsupportedVariable, qe as VectorSet, Et as VectorSetItem, Ke as VectorSetItemNode, He as VectorSetNode, ne as WebPageNode, Zo as configure, Mr as connect, oe as framer, fl as hasGridLayout, gl as hasStackLayout, Ui as isBreakpoint, Go as isCodeFileComponentExport, Ko as isCodeFileOverrideExport, pe as isColorStyle, Bi as isComponentGestureVariant, ge as isComponentInstanceNode, Ki as isComponentNode, uo as isComponentVariable, mn as isComponentVariant, xo as isComputedValue, $i as isDesignPageNode, co as isField, mo as isFileAsset, Nt as isFrameNode, fo as isImageAsset, Jo as isRetryableError, zi as isSVGNode, Oi as isTextNode, pn as isTextStyle, jn as isVariable, ji as isVectorSetItemNode, Hi as isVectorSetNode, Gi as isWebPageNode, Ks as supportsAspectRatio, _s as supportsBackgroundColor, qs as supportsBackgroundColorData, Zs as supportsBackgroundGradient, Js as supportsBackgroundGradientData, Ys as supportsBackgroundImage, Xs as supportsBackgroundImageData, nl as supportsBorder, tl as supportsBorderRadius, Wo as supportsBreakpoint, sl as supportsComponentInfo, Ri as supportsComponentVariant, ll as supportsFont, dl as supportsFontData, ml as supportsImageRendering, ul as supportsInlineTextStyle, cl as supportsInlineTextStyleData, Li as supportsLayout, pl as supportsLink, js as supportsLocked, $s as supportsName, el as supportsOpacity, al as supportsOverflow, Os as supportsPins, Us as supportsPosition, Qs as supportsRotation, il as supportsSVG, zs as supportsSize, Gs as supportsSizeConstraints, rl as supportsTextTruncation, Hs as supportsVisible, ol as supportsZIndex, wa as withConnection };
14
+ export { gt as BooleanField, Ce as BooleanVariable, ke as BorderVariable, St as CollectionReferenceField, ft as ColorField, Fe as ColorVariable, $e as ComponentInstanceNode, ie as ComponentNode, Ue as ConicGradient, Ct as DateField, Ee as DateVariable, re as DesignPageNode, $ as EnumCase, Pt as EnumField, Se as EnumVariable, ae as ErrorCode, It as FieldDivider, Tt as FileField, ve as FileVariable, bt as FormattedTextField, Pe as FormattedTextVariable, U as FrameNode, F as FramerAPIError, _ as FramerPluginClosedError, Ye as FramerPluginError, Ae as ImageField, De as ImageVariable, Re as LinearGradient, xt as LinkField, Ne as LinkVariable, Ft as MultiCollectionReferenceField, yt as NumberField, Ie as NumberVariable, Be as RadialGradient, Ge as SVGNode, ht as StringField, Te as StringVariable, te as TextNode, Le as UnsupportedComputedValue, we as UnsupportedField, Me as UnsupportedVariable, qe as VectorSet, Et as VectorSetItem, Ke as VectorSetItemNode, He as VectorSetNode, ne as WebPageNode, Xo as configure, kr as connect, oe as framer, ml as hasGridLayout, pl as hasStackLayout, Ui as isBreakpoint, zo as isCodeFileComponentExport, Go as isCodeFileOverrideExport, pe as isColorStyle, Bi as isComponentGestureVariant, ge as isComponentInstanceNode, Ki as isComponentNode, lo as isComponentVariable, gn as isComponentVariant, bo as isComputedValue, $i as isDesignPageNode, uo as isField, po as isFileAsset, Nt as isFrameNode, go as isImageAsset, Zo as isRetryableError, zi as isSVGNode, Oi as isTextNode, mn as isTextStyle, jn as isVariable, ji as isVectorSetItemNode, Hi as isVectorSetNode, Gi as isWebPageNode, zs as supportsAspectRatio, Hs as supportsBackgroundColor, js as supportsBackgroundColorData, Ys as supportsBackgroundGradient, Xs as supportsBackgroundGradientData, _s as supportsBackgroundImage, qs as supportsBackgroundImageData, el as supportsBorder, Qs as supportsBorderRadius, Vo as supportsBreakpoint, ol as supportsComponentInfo, Ri as supportsComponentVariant, al as supportsFont, sl as supportsFontData, cl as supportsImageRendering, ll as supportsInlineTextStyle, dl as supportsInlineTextStyleData, Li as supportsLayout, ul as supportsLink, $s as supportsLocked, Gs as supportsName, Js as supportsOpacity, rl as supportsOverflow, Bs as supportsPins, Rs as supportsPosition, Zs as supportsRotation, tl as supportsSVG, Us as supportsSize, Os as supportsSizeConstraints, nl as supportsTextTruncation, Ks as supportsVisible, il as supportsZIndex, Ma as withConnection };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framer-api",
3
- "version": "0.0.1-alpha.7",
3
+ "version": "0.0.1-alpha.8",
4
4
  "type": "module",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {