framer-api 0.1.13-beta → 0.1.14
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 +144 -110
- package/dist/index.js +6 -6
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -4667,29 +4667,6 @@ declare const getChangedPaths: unique symbol;
|
|
|
4667
4667
|
declare const getChangeContributors: unique symbol;
|
|
4668
4668
|
declare const createManagedCollection: unique symbol;
|
|
4669
4669
|
declare const rejectAllPending: unique symbol;
|
|
4670
|
-
declare const readProjectForAgent: unique symbol;
|
|
4671
|
-
declare const getAgentSystemPrompt: unique symbol;
|
|
4672
|
-
declare const getAgentContext: unique symbol;
|
|
4673
|
-
declare const applyAgentChanges: unique symbol;
|
|
4674
|
-
declare const flattenComponentInstanceForAgent: unique symbol;
|
|
4675
|
-
declare const getAncestorsForAgent: unique symbol;
|
|
4676
|
-
declare const getGroundNodeForAgent: unique symbol;
|
|
4677
|
-
declare const getNodeForAgent: unique symbol;
|
|
4678
|
-
declare const getNodesForAgent: unique symbol;
|
|
4679
|
-
declare const getNodesOfTypesForAgent: unique symbol;
|
|
4680
|
-
declare const getParentNodeForAgent: unique symbol;
|
|
4681
|
-
declare const getScopeNodeForAgent: unique symbol;
|
|
4682
|
-
declare const makeExternalComponentLocalForAgent: unique symbol;
|
|
4683
|
-
declare const paginateForAgent: unique symbol;
|
|
4684
|
-
declare const publishForAgent: unique symbol;
|
|
4685
|
-
declare const queryImagesForAgent: unique symbol;
|
|
4686
|
-
declare const reviewChangesForAgent: unique symbol;
|
|
4687
|
-
declare const serializeForAgent: unique symbol;
|
|
4688
|
-
declare const serializeNodesForAgent: unique symbol;
|
|
4689
|
-
declare const startAgentConversation: unique symbol;
|
|
4690
|
-
declare const continueAgentConversation: unique symbol;
|
|
4691
|
-
declare const submitAgentClarification: unique symbol;
|
|
4692
|
-
declare const runSupervisorAgentCommand: unique symbol;
|
|
4693
4670
|
declare const ping: unique symbol;
|
|
4694
4671
|
declare const $framerApiOnly: {
|
|
4695
4672
|
readonly ping: typeof ping;
|
|
@@ -4700,29 +4677,6 @@ declare const $framerApiOnly: {
|
|
|
4700
4677
|
readonly getChangeContributors: typeof getChangeContributors;
|
|
4701
4678
|
readonly createManagedCollection: typeof createManagedCollection;
|
|
4702
4679
|
readonly rejectAllPending: typeof rejectAllPending;
|
|
4703
|
-
readonly readProjectForAgent: typeof readProjectForAgent;
|
|
4704
|
-
readonly getAgentSystemPrompt: typeof getAgentSystemPrompt;
|
|
4705
|
-
readonly getAgentContext: typeof getAgentContext;
|
|
4706
|
-
readonly applyAgentChanges: typeof applyAgentChanges;
|
|
4707
|
-
readonly flattenComponentInstanceForAgent: typeof flattenComponentInstanceForAgent;
|
|
4708
|
-
readonly getAncestorsForAgent: typeof getAncestorsForAgent;
|
|
4709
|
-
readonly getGroundNodeForAgent: typeof getGroundNodeForAgent;
|
|
4710
|
-
readonly getNodeForAgent: typeof getNodeForAgent;
|
|
4711
|
-
readonly getNodesForAgent: typeof getNodesForAgent;
|
|
4712
|
-
readonly getNodesOfTypesForAgent: typeof getNodesOfTypesForAgent;
|
|
4713
|
-
readonly getParentNodeForAgent: typeof getParentNodeForAgent;
|
|
4714
|
-
readonly getScopeNodeForAgent: typeof getScopeNodeForAgent;
|
|
4715
|
-
readonly makeExternalComponentLocalForAgent: typeof makeExternalComponentLocalForAgent;
|
|
4716
|
-
readonly paginateForAgent: typeof paginateForAgent;
|
|
4717
|
-
readonly publishForAgent: typeof publishForAgent;
|
|
4718
|
-
readonly queryImagesForAgent: typeof queryImagesForAgent;
|
|
4719
|
-
readonly reviewChangesForAgent: typeof reviewChangesForAgent;
|
|
4720
|
-
readonly serializeForAgent: typeof serializeForAgent;
|
|
4721
|
-
readonly serializeNodesForAgent: typeof serializeNodesForAgent;
|
|
4722
|
-
readonly startAgentConversation: typeof startAgentConversation;
|
|
4723
|
-
readonly continueAgentConversation: typeof continueAgentConversation;
|
|
4724
|
-
readonly submitAgentClarification: typeof submitAgentClarification;
|
|
4725
|
-
readonly runSupervisorAgentCommand: typeof runSupervisorAgentCommand;
|
|
4726
4680
|
};
|
|
4727
4681
|
|
|
4728
4682
|
type Ownership = {
|
|
@@ -4796,7 +4750,7 @@ type AllMembers = Omit<FramerPluginAPIAlpha, "isAllowedTo" | "subscribeToIsAllow
|
|
|
4796
4750
|
"WebPageNode.clone": WebPageNode["clone"];
|
|
4797
4751
|
"DesignPageNode.clone": DesignPageNode["clone"];
|
|
4798
4752
|
} & NamespaceMembers<ColorStyle, "ColorStyle"> & NamespaceMembers<TextStyle, "TextStyle"> & NamespaceMembers<Variable, "Variable"> & NamespaceMembers<BooleanVariable, "BooleanVariable", Variable> & NamespaceMembers<NumberVariable, "NumberVariable", Variable> & NamespaceMembers<StringVariable, "StringVariable", Variable> & NamespaceMembers<FormattedTextVariable, "FormattedTextVariable", Variable> & NamespaceMembers<EnumCase, "EnumCase"> & NamespaceMembers<EnumVariable, "EnumVariable", Variable> & NamespaceMembers<ColorVariable, "ColorVariable", Variable> & NamespaceMembers<ImageVariable, "ImageVariable", Variable> & NamespaceMembers<FileVariable, "FileVariable", Variable> & NamespaceMembers<LinkVariable, "LinkVariable", Variable> & NamespaceMembers<DateVariable, "DateVariable", Variable> & NamespaceMembers<BorderVariable, "BorderVariable", Variable> & NamespaceMembers<UnsupportedVariable, "UnsupportedVariable", Variable> & NamespaceMembers<VectorSet, "VectorSet"> & NamespaceMembers<VectorSetItem, "VectorSetItem">;
|
|
4799
|
-
declare const unprotectedMessageTypesSource: ["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", "getLocaleLanguages", "getLocaleRegions", "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", "unstable_getDependencyVersion", "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", "readProjectForAgent", "getAgentSystemPrompt", "getAgentContext", "ping", "queryImagesForAgent", "reviewChangesForAgent", "getNodeForAgent", "getNodesForAgent", "getNodesOfTypesForAgent", "getScopeNodeForAgent", "getGroundNodeForAgent", "getParentNodeForAgent", "getAncestorsForAgent", "paginateForAgent", "serializeForAgent", "serializeNodesForAgent", "INTERNAL_getAiServiceInfo", "INTERNAL_sendTrackingEvent", "INTERNAL_getCurrentUser", "INTERNAL_getProjectInfo", "INTERNAL_getHTMLForNode", "getAiServiceInfo", "sendTrackingEvent", "unstable_getCodeFile", "unstable_getCodeFiles", "unstable_getCodeFileVersionContent", "unstable_getCodeFileLint2", "unstable_getCodeFileTypecheck2", "unstable_getCodeFileVersions", "lintCode"];
|
|
4753
|
+
declare const unprotectedMessageTypesSource: ["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", "getLocaleLanguages", "getLocaleRegions", "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", "unstable_getDependencyVersion", "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", "readProjectForAgent", "readComponentControlsForAgent", "readIconSetControlsForAgent", "readIconsForAgent", "readLayoutTemplateControlsForAgent", "readShaderControlsForAgent", "getAgentSystemPrompt", "getAgentContext", "ping", "queryImagesForAgent", "reviewChangesForAgent", "getNodeForAgent", "getNodesForAgent", "getNodesOfTypesForAgent", "getScopeNodeForAgent", "getGroundNodeForAgent", "getParentNodeForAgent", "getAncestorsForAgent", "paginateForAgent", "serializeForAgent", "serializeNodesForAgent", "INTERNAL_getAiServiceInfo", "INTERNAL_sendTrackingEvent", "INTERNAL_getCurrentUser", "INTERNAL_getProjectInfo", "INTERNAL_getHTMLForNode", "getAiServiceInfo", "sendTrackingEvent", "unstable_getCodeFile", "unstable_getCodeFiles", "unstable_getCodeFileVersionContent", "unstable_getCodeFileLint2", "unstable_getCodeFileTypecheck2", "unstable_getCodeFileVersions", "lintCode"];
|
|
4800
4754
|
type UnprotectedMessageType = (typeof unprotectedMessageTypesSource)[number];
|
|
4801
4755
|
type ProtectedMessageType = Exclude<keyof PluginMessageAPI, UnprotectedMessageType>;
|
|
4802
4756
|
type Method = keyof {
|
|
@@ -5041,30 +4995,7 @@ declare const methodToMessageTypes: {
|
|
|
5041
4995
|
readonly [getChangeContributors]: [];
|
|
5042
4996
|
readonly [createManagedCollection]: ["createManagedCollection"];
|
|
5043
4997
|
readonly [rejectAllPending]: [];
|
|
5044
|
-
readonly [readProjectForAgent]: [];
|
|
5045
|
-
readonly [getAgentSystemPrompt]: [];
|
|
5046
|
-
readonly [getAgentContext]: [];
|
|
5047
4998
|
readonly [ping]: [];
|
|
5048
|
-
readonly [applyAgentChanges]: ["applyAgentChanges"];
|
|
5049
|
-
readonly [flattenComponentInstanceForAgent]: ["flattenComponentInstanceForAgent"];
|
|
5050
|
-
readonly [getAncestorsForAgent]: [];
|
|
5051
|
-
readonly [getGroundNodeForAgent]: [];
|
|
5052
|
-
readonly [getNodeForAgent]: [];
|
|
5053
|
-
readonly [getNodesForAgent]: [];
|
|
5054
|
-
readonly [getNodesOfTypesForAgent]: [];
|
|
5055
|
-
readonly [getParentNodeForAgent]: [];
|
|
5056
|
-
readonly [getScopeNodeForAgent]: [];
|
|
5057
|
-
readonly [makeExternalComponentLocalForAgent]: ["makeExternalComponentLocalForAgent"];
|
|
5058
|
-
readonly [paginateForAgent]: [];
|
|
5059
|
-
readonly [publishForAgent]: ["publishForAgent"];
|
|
5060
|
-
readonly [queryImagesForAgent]: [];
|
|
5061
|
-
readonly [reviewChangesForAgent]: [];
|
|
5062
|
-
readonly [serializeForAgent]: [];
|
|
5063
|
-
readonly [serializeNodesForAgent]: [];
|
|
5064
|
-
readonly [startAgentConversation]: ["startAgentConversation"];
|
|
5065
|
-
readonly [continueAgentConversation]: ["continueAgentConversation"];
|
|
5066
|
-
readonly [submitAgentClarification]: ["submitAgentClarification"];
|
|
5067
|
-
readonly [runSupervisorAgentCommand]: ["runSupervisorAgentCommand"];
|
|
5068
4999
|
};
|
|
5069
5000
|
type AllMethods = keyof {
|
|
5070
5001
|
[K in Method as (typeof methodToMessageTypes)[K] extends [] ? never : K]: (typeof methodToMessageTypes)[K];
|
|
@@ -6561,6 +6492,20 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6561
6492
|
[$framerApiOnly.createManagedCollection](name: string): Promise<ManagedCollection>;
|
|
6562
6493
|
/** @internal - Rejects all pending method calls with the given error */
|
|
6563
6494
|
[$framerApiOnly.rejectAllPending](error: FramerPluginError): void;
|
|
6495
|
+
/** Liveness round-trip: resolves once Vekter's plugin handler answers. Used by the headless backend to verify the transport actually routes, not just that the page is alive. */
|
|
6496
|
+
[$framerApiOnly.ping](): Promise<void>;
|
|
6497
|
+
}
|
|
6498
|
+
/**
|
|
6499
|
+
* Agent-specific methods exposed by framer-api as its agent namespace.
|
|
6500
|
+
*
|
|
6501
|
+
* Each method delegates to the corresponding wire-protocol name on the engine
|
|
6502
|
+
* (e.g. `agent.publish(...)` invokes `"publishForAgent"`).
|
|
6503
|
+
*
|
|
6504
|
+
* @internal - Available only through framer-api
|
|
6505
|
+
*/
|
|
6506
|
+
declare class FramerAgentAPI {
|
|
6507
|
+
#private;
|
|
6508
|
+
constructor(engine: PluginEngine);
|
|
6564
6509
|
/**
|
|
6565
6510
|
* Returns the static agent system prompt as a string.
|
|
6566
6511
|
*
|
|
@@ -6568,17 +6513,17 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6568
6513
|
* - **Command reference** — syntax for adding, updating, removing, moving, and duplicating nodes.
|
|
6569
6514
|
* - **Design rules** — spacing, layout, typography, and responsive design guidance.
|
|
6570
6515
|
* - **Examples** — common UI patterns expressed as commands.
|
|
6571
|
-
* - **`
|
|
6516
|
+
* - **`readProject` query reference** — available query types and their parameters.
|
|
6572
6517
|
*
|
|
6573
|
-
* This is the sole documentation for the command syntax used by {@link
|
|
6574
|
-
* and the query types used by {@link
|
|
6518
|
+
* This is the sole documentation for the command syntax used by {@link applyChanges}
|
|
6519
|
+
* and the query types used by {@link readProject}.
|
|
6575
6520
|
*
|
|
6576
6521
|
* The prompt is static and does not depend on any specific project.
|
|
6577
|
-
* Call {@link
|
|
6522
|
+
* Call {@link getContext} to get the project-specific context.
|
|
6578
6523
|
*
|
|
6579
6524
|
* @returns A string containing the agent system prompt.
|
|
6580
6525
|
*/
|
|
6581
|
-
|
|
6526
|
+
getSystemPrompt(): Promise<string>;
|
|
6582
6527
|
/**
|
|
6583
6528
|
* Returns the dynamic project context as a string.
|
|
6584
6529
|
*
|
|
@@ -6590,75 +6535,132 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6590
6535
|
* - **Icon sets** — available icon sets and their definitions.
|
|
6591
6536
|
*
|
|
6592
6537
|
* This data changes per project and page. Pair with the static prompt
|
|
6593
|
-
* from {@link
|
|
6538
|
+
* from {@link getSystemPrompt} for complete agent context.
|
|
6594
6539
|
*
|
|
6595
6540
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6596
6541
|
* @returns A string containing the project context.
|
|
6597
6542
|
*/
|
|
6598
|
-
|
|
6543
|
+
getContext(options?: {
|
|
6599
6544
|
pagePath?: string;
|
|
6600
6545
|
}): Promise<string>;
|
|
6601
6546
|
/**
|
|
6602
6547
|
* Reads project state by executing an array of queries against the project.
|
|
6603
6548
|
*
|
|
6604
6549
|
* Returns one result per query. Available query types and their parameters
|
|
6605
|
-
* are documented in the string returned by {@link
|
|
6550
|
+
* are documented in the string returned by {@link getSystemPrompt}.
|
|
6606
6551
|
*
|
|
6607
|
-
* @param queries - Array of query objects. See {@link
|
|
6552
|
+
* @param queries - Array of query objects. See {@link getSystemPrompt} for available types.
|
|
6608
6553
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6609
6554
|
* @returns An object with a `results` array, one entry per query.
|
|
6610
6555
|
*/
|
|
6611
|
-
|
|
6556
|
+
readProject(queries: Record<string, unknown>[], options?: {
|
|
6612
6557
|
pagePath?: string;
|
|
6613
6558
|
}): Promise<{
|
|
6614
6559
|
results: unknown[];
|
|
6615
6560
|
}>;
|
|
6561
|
+
/**
|
|
6562
|
+
* Reads control definitions for project components.
|
|
6563
|
+
*
|
|
6564
|
+
* @param input - `{ componentIds }`: component ids from project context or previous reads.
|
|
6565
|
+
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6566
|
+
* @returns The matching component control definitions.
|
|
6567
|
+
*/
|
|
6568
|
+
readComponentControls(input: {
|
|
6569
|
+
componentIds: readonly string[];
|
|
6570
|
+
}, options?: {
|
|
6571
|
+
pagePath?: string;
|
|
6572
|
+
}): Promise<unknown>;
|
|
6573
|
+
/**
|
|
6574
|
+
* Reads icon-set control definitions.
|
|
6575
|
+
*
|
|
6576
|
+
* @param input - `{ iconSetNames }`: icon set names from project context or previous reads.
|
|
6577
|
+
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6578
|
+
* @returns The matching icon-set control definitions.
|
|
6579
|
+
*/
|
|
6580
|
+
readIconSetControls(input: {
|
|
6581
|
+
iconSetNames: readonly string[];
|
|
6582
|
+
}, options?: {
|
|
6583
|
+
pagePath?: string;
|
|
6584
|
+
}): Promise<unknown>;
|
|
6585
|
+
/**
|
|
6586
|
+
* Reads exact icon names for an icon set.
|
|
6587
|
+
*
|
|
6588
|
+
* @param input - `{ iconSetName }`: icon set name from project context or previous reads.
|
|
6589
|
+
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6590
|
+
* @returns The available icon names in that set.
|
|
6591
|
+
*/
|
|
6592
|
+
readIcons(input: {
|
|
6593
|
+
iconSetName: string;
|
|
6594
|
+
}, options?: {
|
|
6595
|
+
pagePath?: string;
|
|
6596
|
+
}): Promise<string[]>;
|
|
6597
|
+
/**
|
|
6598
|
+
* Reads layout-template control definitions.
|
|
6599
|
+
*
|
|
6600
|
+
* @param input - `{ layoutTemplateIds }`: layout template ids from project context or previous reads.
|
|
6601
|
+
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6602
|
+
* @returns The matching layout-template control definitions.
|
|
6603
|
+
*/
|
|
6604
|
+
readLayoutTemplateControls(input: {
|
|
6605
|
+
layoutTemplateIds: readonly string[];
|
|
6606
|
+
}, options?: {
|
|
6607
|
+
pagePath?: string;
|
|
6608
|
+
}): Promise<unknown>;
|
|
6609
|
+
/**
|
|
6610
|
+
* Reads shader control definitions.
|
|
6611
|
+
*
|
|
6612
|
+
* @param input - `{ shaderNames }`: shader names from project context or previous reads.
|
|
6613
|
+
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6614
|
+
* @returns The matching shader control definitions.
|
|
6615
|
+
*/
|
|
6616
|
+
readShaderControls(input: {
|
|
6617
|
+
shaderNames: readonly string[];
|
|
6618
|
+
}, options?: {
|
|
6619
|
+
pagePath?: string;
|
|
6620
|
+
}): Promise<unknown>;
|
|
6616
6621
|
/**
|
|
6617
6622
|
* Applies commands to the canvas to create, update, remove, move, or duplicate nodes.
|
|
6618
6623
|
*
|
|
6619
|
-
* The command syntax is documented in the string returned by {@link
|
|
6624
|
+
* The command syntax is documented in the string returned by {@link getSystemPrompt}.
|
|
6620
6625
|
* Each call is scoped to a single page.
|
|
6621
6626
|
*
|
|
6622
|
-
* @param dsl - A string of commands separated by `;`. See {@link
|
|
6627
|
+
* @param dsl - A string of commands separated by `;`. See {@link getSystemPrompt} for syntax.
|
|
6623
6628
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6624
6629
|
*/
|
|
6625
|
-
|
|
6630
|
+
applyChanges(dsl: string, options?: {
|
|
6626
6631
|
pagePath?: string;
|
|
6627
6632
|
}): Promise<void>;
|
|
6628
|
-
/** Liveness round-trip: resolves once Vekter's plugin handler answers. Used by the headless
|
|
6629
|
-
* backend to verify the transport actually routes, not just that the page is alive. */
|
|
6630
|
-
[$framerApiOnly.ping](): Promise<void>;
|
|
6631
6633
|
/**
|
|
6632
6634
|
* Executes the publish flow on behalf of an agent.
|
|
6633
6635
|
*
|
|
6634
|
-
* The input schema is documented in the string returned by {@link
|
|
6636
|
+
* The input schema is documented in the string returned by {@link getSystemPrompt}.
|
|
6635
6637
|
*
|
|
6636
6638
|
* @param input - Action-discriminated input object (preview / confirm_publish / deploy_to_production).
|
|
6637
6639
|
* @returns The action's result — status, publish URLs, and any errors, warnings, or changes.
|
|
6638
6640
|
*/
|
|
6639
|
-
|
|
6641
|
+
publish(input?: Record<string, unknown>): Promise<unknown>;
|
|
6640
6642
|
/**
|
|
6641
6643
|
* Searches for stock images to use on the canvas (e.g. `"FrameNode"` `fill` values). Returns
|
|
6642
6644
|
* candidate images with preview thumbnails and a `url` field for each. The returned URLs are
|
|
6643
6645
|
* registered as trusted for this session so they can be applied directly via `fill="<url>"`
|
|
6644
|
-
* in a subsequent {@link
|
|
6646
|
+
* in a subsequent {@link applyChanges} DSL command. Without calling this method first,
|
|
6645
6647
|
* external image URLs are rejected at apply time.
|
|
6646
6648
|
*
|
|
6647
|
-
* The input schema is documented in the string returned by {@link
|
|
6649
|
+
* The input schema is documented in the string returned by {@link getSystemPrompt}.
|
|
6648
6650
|
*
|
|
6649
6651
|
* @param input - Search input object (source / query / count / orientation).
|
|
6650
6652
|
* @returns An object describing the candidates or an error.
|
|
6651
6653
|
*/
|
|
6652
|
-
|
|
6654
|
+
queryImages(input: Record<string, unknown>): Promise<unknown>;
|
|
6653
6655
|
/**
|
|
6654
|
-
* Reviews changes made by prior {@link
|
|
6656
|
+
* Reviews changes made by prior {@link applyChanges} calls in this session.
|
|
6655
6657
|
*
|
|
6656
6658
|
* Consumes accumulated diagnostics from the session's agent context.
|
|
6657
6659
|
*
|
|
6658
6660
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6659
6661
|
* @returns The session's accumulated changes, errors, warnings, and deferred trait reports.
|
|
6660
6662
|
*/
|
|
6661
|
-
|
|
6663
|
+
reviewChanges(options?: {
|
|
6662
6664
|
pagePath?: string;
|
|
6663
6665
|
}): Promise<unknown>;
|
|
6664
6666
|
/**
|
|
@@ -6668,7 +6670,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6668
6670
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6669
6671
|
* @returns The flatten result — `success` with a `replacementId`, or `blocked` with a reason.
|
|
6670
6672
|
*/
|
|
6671
|
-
|
|
6673
|
+
flattenComponentInstance(input: {
|
|
6672
6674
|
id: string;
|
|
6673
6675
|
}, options?: {
|
|
6674
6676
|
pagePath?: string;
|
|
@@ -6680,7 +6682,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6680
6682
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6681
6683
|
* @returns `success` (with the local component name), `needs_confirmation` (retry with `replaceAll`), or `blocked` with a reason.
|
|
6682
6684
|
*/
|
|
6683
|
-
|
|
6685
|
+
makeExternalComponentLocal(input: {
|
|
6684
6686
|
id: string;
|
|
6685
6687
|
replaceAll?: boolean;
|
|
6686
6688
|
}, options?: {
|
|
@@ -6693,7 +6695,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6693
6695
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6694
6696
|
* @returns The node, or `null` if no node with that id exists on the page.
|
|
6695
6697
|
*/
|
|
6696
|
-
|
|
6698
|
+
getNode(input: {
|
|
6697
6699
|
id: string;
|
|
6698
6700
|
}, options?: {
|
|
6699
6701
|
pagePath?: string;
|
|
@@ -6706,7 +6708,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6706
6708
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6707
6709
|
* @returns The nodes that were found, in input order.
|
|
6708
6710
|
*/
|
|
6709
|
-
|
|
6711
|
+
getNodes(input: {
|
|
6710
6712
|
ids: readonly string[];
|
|
6711
6713
|
}, options?: {
|
|
6712
6714
|
pagePath?: string;
|
|
@@ -6718,7 +6720,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6718
6720
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6719
6721
|
* @returns The matching nodes without their children.
|
|
6720
6722
|
*/
|
|
6721
|
-
|
|
6723
|
+
getNodesOfTypes(input: {
|
|
6722
6724
|
types: readonly string[];
|
|
6723
6725
|
}, options?: {
|
|
6724
6726
|
pagePath?: string;
|
|
@@ -6730,7 +6732,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6730
6732
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6731
6733
|
* @returns The enclosing scope node, or `null` if the node isn't in any scope.
|
|
6732
6734
|
*/
|
|
6733
|
-
|
|
6735
|
+
getScopeNode(input: {
|
|
6734
6736
|
id: string;
|
|
6735
6737
|
}, options?: {
|
|
6736
6738
|
pagePath?: string;
|
|
@@ -6742,7 +6744,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6742
6744
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6743
6745
|
* @returns The top-level node, or `null` if none applies.
|
|
6744
6746
|
*/
|
|
6745
|
-
|
|
6747
|
+
getGroundNode(input: {
|
|
6746
6748
|
id: string;
|
|
6747
6749
|
}, options?: {
|
|
6748
6750
|
pagePath?: string;
|
|
@@ -6754,7 +6756,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6754
6756
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6755
6757
|
* @returns The parent node, or `null` if the node has no parent or doesn't exist.
|
|
6756
6758
|
*/
|
|
6757
|
-
|
|
6759
|
+
getParentNode(input: {
|
|
6758
6760
|
id: string;
|
|
6759
6761
|
}, options?: {
|
|
6760
6762
|
pagePath?: string;
|
|
@@ -6766,7 +6768,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6766
6768
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6767
6769
|
* @returns The ancestors ordered from closest parent to the page root.
|
|
6768
6770
|
*/
|
|
6769
|
-
|
|
6771
|
+
getAncestors(input: {
|
|
6770
6772
|
id: string;
|
|
6771
6773
|
}, options?: {
|
|
6772
6774
|
pagePath?: string;
|
|
@@ -6781,7 +6783,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6781
6783
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6782
6784
|
* @returns The serialized node, or `null` if no node with that id exists on the page.
|
|
6783
6785
|
*/
|
|
6784
|
-
|
|
6786
|
+
serialize(input: {
|
|
6785
6787
|
id: string;
|
|
6786
6788
|
depth?: number;
|
|
6787
6789
|
attributeFilter?: readonly string[];
|
|
@@ -6799,7 +6801,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6799
6801
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6800
6802
|
* @returns The serialized nodes that were found, in input order.
|
|
6801
6803
|
*/
|
|
6802
|
-
|
|
6804
|
+
serializeNodes(input: {
|
|
6803
6805
|
ids: readonly string[];
|
|
6804
6806
|
depth?: number;
|
|
6805
6807
|
attributeFilter?: readonly string[];
|
|
@@ -6818,7 +6820,7 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6818
6820
|
* @param options.pagePath - Target page path (e.g. `"/about"`). Defaults to the active page.
|
|
6819
6821
|
* @returns The current page, including `keyName`, `cursor`, `results`, `totalResults`, and (if more pages remain) `nextCursor`.
|
|
6820
6822
|
*/
|
|
6821
|
-
|
|
6823
|
+
paginate(input: {
|
|
6822
6824
|
items: readonly unknown[];
|
|
6823
6825
|
keyName?: never;
|
|
6824
6826
|
cursor?: never;
|
|
@@ -6830,13 +6832,13 @@ declare class FramerPluginAPIAlpha extends FramerPluginAPIBeta {
|
|
|
6830
6832
|
pagePath?: string;
|
|
6831
6833
|
}): Promise<unknown>;
|
|
6832
6834
|
/** @internal - Available only through framer-api */
|
|
6833
|
-
|
|
6835
|
+
startConversation(prompt: string, options?: StartAgentConversationOptions): Promise<StartAgentConversationResult>;
|
|
6834
6836
|
/** @internal - Available only through framer-api */
|
|
6835
|
-
|
|
6837
|
+
continueConversation(prompt: string, options: ContinueAgentConversationOptions): Promise<ContinueAgentConversationResult>;
|
|
6836
6838
|
/** @internal - Available only through framer-api */
|
|
6837
|
-
|
|
6839
|
+
submitClarification(options: SubmitAgentClarificationOptions): Promise<SubmitAgentClarificationResult>;
|
|
6838
6840
|
/** @internal - Available only through framer-api */
|
|
6839
|
-
|
|
6841
|
+
runSupervisorCommand(options: RunSupervisorAgentCommandOptions): Promise<RunSupervisorAgentCommandResult>;
|
|
6840
6842
|
}
|
|
6841
6843
|
/**
|
|
6842
6844
|
* Methods that are only available through framer-api (server API),
|
|
@@ -7132,6 +7134,36 @@ interface PluginMessageAPI {
|
|
|
7132
7134
|
results: unknown[];
|
|
7133
7135
|
}>;
|
|
7134
7136
|
/** @alpha */
|
|
7137
|
+
readComponentControlsForAgent: (input: {
|
|
7138
|
+
componentIds: readonly string[];
|
|
7139
|
+
}, options?: {
|
|
7140
|
+
pagePath?: string;
|
|
7141
|
+
}) => Promise<unknown>;
|
|
7142
|
+
/** @alpha */
|
|
7143
|
+
readIconSetControlsForAgent: (input: {
|
|
7144
|
+
iconSetNames: readonly string[];
|
|
7145
|
+
}, options?: {
|
|
7146
|
+
pagePath?: string;
|
|
7147
|
+
}) => Promise<unknown>;
|
|
7148
|
+
/** @alpha */
|
|
7149
|
+
readIconsForAgent: (input: {
|
|
7150
|
+
iconSetName: string;
|
|
7151
|
+
}, options?: {
|
|
7152
|
+
pagePath?: string;
|
|
7153
|
+
}) => Promise<string[]>;
|
|
7154
|
+
/** @alpha */
|
|
7155
|
+
readLayoutTemplateControlsForAgent: (input: {
|
|
7156
|
+
layoutTemplateIds: readonly string[];
|
|
7157
|
+
}, options?: {
|
|
7158
|
+
pagePath?: string;
|
|
7159
|
+
}) => Promise<unknown>;
|
|
7160
|
+
/** @alpha */
|
|
7161
|
+
readShaderControlsForAgent: (input: {
|
|
7162
|
+
shaderNames: readonly string[];
|
|
7163
|
+
}, options?: {
|
|
7164
|
+
pagePath?: string;
|
|
7165
|
+
}) => Promise<unknown>;
|
|
7166
|
+
/** @alpha */
|
|
7135
7167
|
applyAgentChanges: (dsl: string, options?: {
|
|
7136
7168
|
pagePath?: string;
|
|
7137
7169
|
}) => Promise<void>;
|
|
@@ -7682,7 +7714,9 @@ interface FramerScreenshotMethods {
|
|
|
7682
7714
|
screenshot(nodeId: string, options?: ScreenshotOptions): Promise<ScreenshotResult>;
|
|
7683
7715
|
exportSVG(nodeId: string): Promise<string>;
|
|
7684
7716
|
}
|
|
7685
|
-
type Framer = AvailablePluginMethods & FramerConnectionMethods & FramerScreenshotMethods & FramerApiOnlyMethods
|
|
7717
|
+
type Framer = AvailablePluginMethods & FramerConnectionMethods & FramerScreenshotMethods & FramerApiOnlyMethods & {
|
|
7718
|
+
agent: FramerAgentAPI;
|
|
7719
|
+
};
|
|
7686
7720
|
|
|
7687
7721
|
/** @internal */
|
|
7688
7722
|
declare const $framerApiInternal: {
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {env,isDeno,isWorkerd}from'std-env';import*as ue from'devalue';/* Framer API SDK v0.1.
|
|
2
|
-
var
|
|
1
|
+
import {env,isDeno,isWorkerd}from'std-env';import*as ue from'devalue';/* Framer API SDK v0.1.14 */
|
|
2
|
+
var qr=Object.defineProperty;var r=(n,e)=>qr(n,"name",{value:e,configurable:true});function pt(n){return n!==void 0}r(pt,"isDefined");function ti(n){return n===void 0}r(ti,"isUndefined");function I(n){return n===null}r(I,"isNull");function ni(n){return n!==null}r(ni,"isNotNull");function Fe(n){return n===true||n===false}r(Fe,"isBoolean");function f(n){return typeof n=="string"}r(f,"isString");function q(n){return typeof n=="number"&&Number.isFinite(n)}r(q,"isNumber");function Yr(n){return typeof n=="function"}r(Yr,"isFunction");function k(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(k,"isObject");function ve(n){if(typeof n!="object"||n===null)return false;let e=Object.getPrototypeOf(n);return e===null||e===Object.prototype}r(ve,"isPlainObject");function gt(n){return Array.isArray(n)}r(gt,"isArray");function De(n,e){throw e instanceof Error?e:e!==void 0?new Error(String(e)):new Error(n?`Unexpected value: ${n}`:"Application entered invalid state")}r(De,"assertNever");function c(n,...e){if(n)return;let t=Error("Assertion Error"+(e.length>0?": "+e.join(" "):""));if(t.stack)try{let i=t.stack.split(`
|
|
3
3
|
`);i[1]?.includes("assert")?(i.splice(1,1),t.stack=i.join(`
|
|
4
4
|
`)):i[0]?.includes("assert")&&(i.splice(0,1),t.stack=i.join(`
|
|
5
|
-
`));}catch{}throw t}r(u,"assert");function v(n){for(let e of Reflect.ownKeys(n)){let t=n[e];!t||typeof t!="object"&&!xo(t)||v(t);}return Object.freeze(n)}r(v,"deepFreeze");function Fi(n){return [n.slice(0,-1),n.at(-1)]}r(Fi,"splitRestAndLast");var m="__class";var qt=Symbol(),Yt=Symbol(),Xt=Symbol(),Zt=Symbol(),Co=Symbol(),Io=Symbol(),To=Symbol(),Po=Symbol(),So=Symbol(),Jt=Symbol(),Qt=Symbol(),l={getAiServiceInfo:qt,sendTrackingEvent:Yt,getCurrentUser:Xt,getProjectInfo:Zt,environmentInfo:Co,initialState:Io,showUncheckedPermissionToasts:To,marshal:Po,unmarshal:So,getHTMLForNode:Jt,setHTMLForNode:Qt},pe="INTERNAL_",mt=`${pe}getAiServiceInfo`,ft=`${pe}sendTrackingEvent`,yt=`${pe}getCurrentUser`,ht=`${pe}getProjectInfo`,ge=`${pe}getHTMLForNode`,me=`${pe}setHTMLForNode`;var M=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(T(t))return null;let i=this.constructor;return new i(this.#e,t)}async remove(){await this.#e.invoke("removeVariables",this.nodeId,[this.id]);}},V="Variable";function L(n){let e=n.at(0);return u(!Pi(e)),`${e.toLowerCase()}${n.slice(1,-V.length)}`}r(L,"classToType");var Fo=`Boolean${V}`,vo=L(Fo),ve=class n extends M{static{r(this,"BooleanVariable");}type=vo;#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}},Do=`Number${V}`,No=L(Do),De=class n extends M{static{r(this,"NumberVariable");}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}},ko=`String${V}`,Ao=L(ko),Ne=class n extends M{static{r(this,"StringVariable");}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}},Eo=`FormattedText${V}`,Mo=L(Eo),ke=class n extends M{static{r(this,"FormattedTextVariable");}type=Mo;#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}},wo=`Enum${V}`,Vo=L(wo),Y=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);}},Ae=class n extends M{static{r(this,"EnumVariable");}type=Vo;#e;#t;#n;get cases(){return this.#n||(this.#n=v(this.#t.cases.map(e=>new Y(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 Y(this.#e,this.nodeId,this.id,t):null}async setCaseOrder(e){await this.#e.invoke("setEnumCaseOrder",this.nodeId,this.id,e);}},Lo=`Color${V}`,Wo=L(Lo),Ee=class n extends M{static{r(this,"ColorVariable");}type=Wo;#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}},Ro=`Image${V}`,Bo=L(Ro),Me=class n extends M{static{r(this,"ImageVariable");}type=Bo;#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}},Uo=`File${V}`,Oo=L(Uo),we=class n extends M{static{r(this,"FileVariable");}type=Oo;#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}},zo=`Link${V}`,Go=L(zo),Ve=class n extends M{static{r(this,"LinkVariable");}type=Go;#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}},Ko=`Date${V}`,$o=L(Ko),Le=class n extends M{static{r(this,"DateVariable");}type=$o;#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}},Ho=`Border${V}`,jo=L(Ho),We=class n extends M{static{r(this,"BorderVariable");}type=jo;#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}},_o=`Unsupported${V}`,qo=L(_o),Re=class n extends M{static{r(this,"UnsupportedVariable");}type=qo;#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 vi(n){return n instanceof M}r(vi,"isVariable");function Yo(n){return vi(n)&&n.nodeType==="component"}r(Yo,"isComponentVariable");var U=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(u(pt(i)),T(i))return null;u(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]);}},B=class extends U{static{r(this,"FieldBaseWithRequired");}#e;get required(){return this.#e.required}constructor(e,t,i){super(e,t,i),this.#e=i;}},bt=class extends U{static{r(this,"BooleanField");}type=nn},xt=class extends U{static{r(this,"ColorField");}type=rn},Ct=class extends U{static{r(this,"NumberField");}type=on},It=class extends B{static{r(this,"StringField");}type=an;#e;constructor(e,t,i){super(e,t,i),this.#e=i;}get basedOn(){return this.#e.basedOn}},Tt=class extends B{static{r(this,"FormattedTextField");}type=sn},Be=class extends B{static{r(this,"ImageField");}type=ln},Pt=class extends B{static{r(this,"LinkField");}type=un},St=class extends B{static{r(this,"DateField");}type=cn;#e;get displayTime(){return this.#e.displayTime}constructor(e,t,i){super(e,t,i),this.#e=i;}},Ft=class extends U{static{r(this,"FieldDivider");}type=yn},Ue=class extends U{static{r(this,"UnsupportedField");}type=hn},vt=class extends B{static{r(this,"FileField");}type=pn;#e;get allowedFileTypes(){return this.#e.allowedFileTypes}constructor(e,t,i){super(e,t,i),this.#e=i;}},Dt=class extends U{static{r(this,"EnumField");}type=gn;#e;#t;#n;#i;get cases(){return this.#i||(this.#i=this.#n.cases.map(e=>new Y(this.#e,this.#t,this.id,e)),v(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 Y(this.#e,this.#t,this.id,t):null}async setCaseOrder(e){await this.#e.invoke("setEnumCaseOrder",this.#t,this.id,e);}},Nt=class extends B{static{r(this,"CollectionReferenceField");}type=mn;#e;get collectionId(){return this.#e.collectionId}constructor(e,t,i){super(e,t,i),this.#e=i;}},kt=class extends B{static{r(this,"MultiCollectionReferenceField");}type=fn;#e;get collectionId(){return this.#e.collectionId}constructor(e,t,i){super(e,t,i),this.#e=i;}},en=class extends B{static{r(this,"ArrayField");}type=dn;fields;constructor(e,t,i){super(e,t,i);let o=i.fields[0];this.fields=[new Be(e,t,o)];}};function tn(n,e,t){return n.map(i=>{switch(i.type){case nn:return new bt(e,t,i);case rn:return new xt(e,t,i);case on:return new Ct(e,t,i);case an:return new It(e,t,i);case sn:return new Tt(e,t,i);case ln:return new Be(e,t,i);case un:return new Pt(e,t,i);case cn:return new St(e,t,i);case yn:return new Ft(e,t,i);case hn:return new Ue(e,t,i);case pn:return new vt(e,t,i);case gn:return new Dt(e,t,i);case mn:return new Nt(e,t,i);case fn:return new kt(e,t,i);case dn:return new en(e,t,i);default:return new Ue(e,t,i)}})}r(tn,"fieldDefinitionDataArrayToFieldClassInstances");function Xo(n){return n instanceof U}r(Xo,"isField");var Di="action";function Zo(n){return !!n&&Di in n&&f(n[Di])}r(Zo,"isLocalizedValueUpdate");function Ni(n){return Object.keys(n).reduce((e,t)=>{let i=n[t];return Zo(i)&&(e[t]=i),e},{})}r(Ni,"filterInlineLocalizationValues");var Oe=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 {[m]:"FileAsset",id:this.id,url:this.url,extension:this.extension}}};function Jo(n){return n instanceof Oe}r(Jo,"isFileAsset");var Qo="ImageAsset";function ki(n){return k(n)?n[m]===Qo:false}r(ki,"isImageAssetData");var X=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 {[m]:"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,{[m]:"ImageAsset",id:this.id,url:this.url,thumbnailUrl:this.thumbnailUrl,altText:e??this.altText,resolution:t??this.resolution})}async measure(){return na(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 ea(n){return n instanceof X}r(ea,"isImageAsset");function Z(n){return n.type==="bytes"?[n.bytes.buffer]:[]}r(Z,"getTransferable");function ta(n){if(!k(n))return false;let e="bytes",t="mimeType";return !(!(e in n)||!(t in n)||!(n[e]instanceof Uint8Array)||!f(n[t]))}r(ta,"isBytesData");async function ze(n){if(n instanceof File)return Cn(n);let e=await Ai(n.image);return {name:n.name,altText:n.altText,resolution:n.resolution,preferredImageRendering:n.preferredImageRendering,...e}}r(ze,"createImageTransferFromInput");async function bn(n){if(n instanceof File)return Cn(n);let e=await Ai(n.file);return {name:n.name,...e}}r(bn,"createFileTransferFromInput");async function Ai(n){return n instanceof File?Cn(n):ta(n)?{type:"bytes",mimeType:n.mimeType,bytes:n.bytes}:{type:"url",url:n}}r(Ai,"createAssetTransferFromAssetInput");function xn(n){return Promise.all(n.map(ze))}r(xn,"createNamedAssetDataTransferFromInput");async function Cn(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(Cn,"getAssetDataFromFile");async function na(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(na,"measureImage");var At=class{static{r(this,"ComputedValueBase");}};var ia="unsupported",Ge=class n extends At{static{r(this,"UnsupportedComputedValue");}type=ia;#e;constructor(e){super(),this.#e=e;}static[l.unmarshal](e,t){return new n(t)}[l.marshal](){return this.#e}};function ra(n){return n instanceof At}r(ra,"isComputedValue");var oa="Font";function Mi(n){return k(n)&&n[m]===oa}r(Mi,"isFontData");function aa(n){if(!q(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(aa,"isFontWeight");function sa(n){if(!f(n))return false;switch(n){case "normal":case "italic":return true;default:return false}}r(sa,"isFontStyle");function wi(n){return k(n)?f(n.family)&&f(n.selector)&&aa(n.weight)&&sa(n.style):false}r(wi,"isFont");var G=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=Ei.get(t.selector);if(i)return i;let o=new n(t);return Ei.set(t.selector,o),o}[l.marshal](){return {[m]:"Font",selector:this.selector,family:this.family,weight:this.weight,style:this.style}}},Ei=new Map;var Et="plugin-marshal";function In(n){return k(n)&&l.marshal in n}r(In,"isSelfMarshalable");function W(n){if(In(n))return n[l.marshal]();if(gt(n))return n.map(W);if(Se(n)){let e={};for(let t of Object.keys(n))e[t]=W(n[t]);return e}return n}r(W,"marshal");var la="LinearGradient",da="RadialGradient",ua="ConicGradient",fe=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})}},Ke=class n extends fe{static{r(this,"LinearGradient");}[m]=la;#e;get angle(){return this.#e.angle}constructor(e){super(e),this.#e=e;}static[l.unmarshal](e,t){return new n({...t,stops:y(e,t.stops)})}[l.marshal](){return W({...this.#e,[m]:this[m]})}toCSS(){let e=this.#e.stops.map(t=>(u(f(t.color),"ColorStyle not supported yet"),`${t.color} ${t.position*100}%`)).join(", ");return `linear-gradient(${this.angle}deg, ${e})`}},$e=class n extends fe{static{r(this,"RadialGradient");}[m]=da;#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:y(e,t.stops)})}[l.marshal](){return W({...this.#e,[m]:this[m]})}toCSS(){let e=this.stops.map((t,i)=>{u(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})`}},He=class n extends fe{static{r(this,"ConicGradient");}[m]=ua;#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:y(e,t.stops)})}[l.marshal](){return W({...this.#e,[m]:this[m]})}toCSS(){let e=this.stops.map(t=>(u(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 Vi(n){return n instanceof fe}r(Vi,"isGradient");var ca="ColorStyle";function Mt(n){return k(n)?n[m]===ca:false}r(Mt,"isColorStyleData");var te=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 {[m]:"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 ye(n){return n instanceof te}r(ye,"isColorStyle");var pa="TextStyle";function Li(n){return k(n)?n[m]===pa:false}r(Li,"isTextStyleData");var je=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=G[l.unmarshal](e,t.font),this.boldFont=t.boldFont&&G[l.unmarshal](e,t.boldFont),this.italicFont=t.italicFont&&G[l.unmarshal](e,t.italicFont),this.boldItalicFont=t.boldItalicFont&&G[l.unmarshal](e,t.boldItalicFont),this.color=Mt(t.color)?te[l.unmarshal](e,t.color):t.color,this.transform=t.transform,this.alignment=t.alignment,this.decoration=t.decoration,this.decorationColor=Mt(t.decorationColor)?te[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 {[m]:"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:ye(this.color)?this.color[l.marshal]():this.color,transform:this.transform,alignment:this.alignment,decoration:this.decoration,decorationColor:ye(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 Tn(n){return n instanceof je}r(Tn,"isTextStyle");var Wi={ColorStyle:te,ConicGradient:He,FileAsset:Oe,Font:G,ImageAsset:X,LinearGradient:Ke,RadialGradient:$e,TextStyle:je,BooleanVariable:ve,BorderVariable:We,ColorVariable:Ee,DateVariable:Le,EnumVariable:Ae,FileVariable:we,FormattedTextVariable:ke,ImageVariable:Me,LinkVariable:Ve,NumberVariable:De,StringVariable:Ne,UnsupportedVariable:Re,UnsupportedComputedValue:Ge};function ga(n){return Se(n)&&f(n[m])&&n[m]in Wi}r(ga,"isSelfUnmarshalable");function y(n,e){if(ga(e))return Wi[e[m]][l.unmarshal](n,e);if(gt(e))return e.map(t=>y(n,t));if(Se(e)){let t={};for(let i of Object.keys(e))t[i]=y(n,e[i]);return t}return e}r(y,"unmarshal");var ma={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 fa(n){return ma[n]}r(fa,"isSupportedArrayItemFieldType");function ya(n){return fa(n.type)}r(ya,"isSupportedArrayItemFieldDataEntry");var nn="boolean",rn="color",on="number",an="string",sn="formattedText",ln="image",dn="array",un="link",cn="date",pn="file",gn="enum",mn="collectionReference",fn="multiCollectionReference",yn="divider",hn="unsupported";function ha(n){return n.map(e=>{if(e.type!=="enum")return e;let t=e.cases.map(i=>{let o=i.nameByLocale?Ni(i.nameByLocale):void 0;return {...i,nameByLocale:o}});return {...e,cases:t}})}r(ha,"sanitizeEnumFieldForMessage");function Ri(n,e){let t={};for(let i in n){let o=n[i];if(!o)continue;if(o.type!=="array"){t[i]=y(e,o);continue}let a=o.value.map(s=>{let d=Ri(s.fieldData,e),g={};for(let C in d){let F=d[C];u(F&&ya(F),"Unsupported array item field data entry"),g[C]=F;}return {...s,fieldData:g}});t[i]={...o,value:a};}return t}r(Ri,"deserializeFieldData");var he=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,u(e.managedBy!=="user","Managed Collection can only be managed by a plugin"),this.managedBy=e.managedBy,this.#e=t,v(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=ha(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)}},ne=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,v(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 tn(e,this.#e,this.id)}async addFields(e){let t=await this.#e.invoke("addCollectionFields2",this.id,e);return u(t.every(Si)),tn(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 _e(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)}},_e=class n{static{r(this,"CollectionItem");}id;nodeId;slug;slugByLocale;draft;fieldData;#e;constructor(e,t){let i=Ri(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,v(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 ba={fixed:true,sticky:true,absolute:true,relative:true},Bi="position";function Nl(n){if(!(Bi in n))return false;let e=n[Bi];return f(e)&&ba[e]===true}r(Nl,"supportsPosition");var Ui="top";function kl(n){if(!(Ui in n))return false;let e=n[Ui];return f(e)||T(e)}r(kl,"supportsPins");var Oi="width";function Al(n){if(!(Oi in n))return false;let e=n[Oi];return f(e)||T(e)}r(Al,"supportsSize");var zi="maxWidth";function El(n){if(!(zi in n))return false;let e=n[zi];return f(e)||T(e)}r(El,"supportsSizeConstraints");var Gi="aspectRatio";function Ml(n){if(!(Gi in n))return false;let e=n[Gi];return q(e)||T(e)}r(Ml,"supportsAspectRatio");var Ki="name";function wl(n){if(!(Ki in n))return false;let e=n[Ki];return f(e)||T(e)}r(wl,"supportsName");var $i="visible";function Vl(n){if(!($i in n))return false;let e=n[$i];return Pe(e)}r(Vl,"supportsVisible");var Hi="locked";function Ll(n){if(!(Hi in n))return false;let e=n[Hi];return Pe(e)}r(Ll,"supportsLocked");var ji="backgroundColor";function Wl(n){if(!(ji in n))return false;let e=n[ji];return f(e)||ye(e)||T(e)}r(Wl,"supportsBackgroundColor");var _i="backgroundColor";function Rl(n){if(!(_i in n))return false;let e=n[_i];return f(e)||Mt(e)||T(e)}r(Rl,"supportsBackgroundColorData");var qi="backgroundImage";function Bl(n){if(!(qi in n))return false;let e=n[qi];return e instanceof X||T(e)}r(Bl,"supportsBackgroundImage");var Yi="backgroundImage";function Ul(n){if(!(Yi in n))return false;let e=n[Yi];return e instanceof X?false:ki(e)||T(e)}r(Ul,"supportsBackgroundImageData");var Xi="backgroundGradient";function Ol(n){if(!(Xi in n))return false;let e=n[Xi];return Vi(e)||T(e)}r(Ol,"supportsBackgroundGradient");var Zi="backgroundGradient";function zl(n){if(!(Zi in n))return false;let e=n[Zi];return k(e)||T(e)}r(zl,"supportsBackgroundGradientData");var Ji="rotation";function Gl(n){if(!(Ji in n))return false;let e=n[Ji];return q(e)}r(Gl,"supportsRotation");var Qi="opacity";function Kl(n){if(!(Qi in n))return false;let e=n[Qi];return q(e)}r(Kl,"supportsOpacity");var er="borderRadius";function $l(n){if(!(er in n))return false;let e=n[er];return f(e)||T(e)}r($l,"supportsBorderRadius");var tr="border";function Hl(n){if(!(tr in n))return false;let e=n[tr];return T(e)||ye(e.color)}r(Hl,"supportsBorder");var nr="svg";function jl(n){if(!(nr in n))return false;let e=n[nr];return f(e)}r(jl,"supportsSVG");var ir="textTruncation";function _l(n){if(!(ir in n))return false;let e=n[ir];return q(e)||T(e)}r(_l,"supportsTextTruncation");var rr="zIndex";function ql(n){if(!(rr in n))return false;let e=n[rr];return q(e)||T(e)}r(ql,"supportsZIndex");var or="overflow";function Yl(n){if(!(or in n))return false;let e=n[or];return f(e)||T(e)}r(Yl,"supportsOverflow");var ar="componentIdentifier";function Xl(n){if(!(ar in n))return false;let e=n[ar];return f(e)}r(Xl,"supportsComponentInfo");var sr="font";function Zl(n){if(!(sr in n))return false;let e=n[sr];return wi(e)}r(Zl,"supportsFont");var lr="font";function Jl(n){if(!(lr in n))return false;let e=n[lr];return Mi(e)||T(e)}r(Jl,"supportsFontData");var dr="inlineTextStyle";function Ql(n){if(!(dr in n))return false;let e=n[dr];return Tn(e)||T(e)}r(Ql,"supportsInlineTextStyle");var ur="inlineTextStyle";function ed(n){if(!(ur in n))return false;let e=n[ur];return Li(e)||T(e)}r(ed,"supportsInlineTextStyleData");var cr="link";function td(n){if(!(cr in n))return false;let e=n[cr];return f(e)||T(e)}r(td,"supportsLink");var pr="imageRendering";function nd(n){if(!(pr in n))return false;let e=n[pr];return f(e)||T(e)}r(nd,"supportsImageRendering");var gr="layout";function yr(n){if(!(gr in n))return false;let e=n[gr];return f(e)||T(e)}r(yr,"supportsLayout");function id(n){return yr(n)?n.layout==="stack":false}r(id,"hasStackLayout");function rd(n){return yr(n)?n.layout==="grid":false}r(rd,"hasGridLayout");var mr="isVariant";function hr(n){if(!(mr in n))return false;let e=n[mr];return Pe(e)}r(hr,"supportsComponentVariant");function Pn(n){return hr(n)?n.isVariant:false}r(Pn,"isComponentVariant");function br(n){return !hr(n)||!Pn(n)?false:!T(n.gesture)}r(br,"isComponentGestureVariant");var fr="isBreakpoint";function xa(n){if(!(fr in n))return false;let e=n[fr];return Pe(e)}r(xa,"supportsBreakpoint");function xr(n){return xa(n)?n.isBreakpoint:false}r(xr,"isBreakpoint");var R=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(){return this.#e.cloneNode(this.id)}async setAttributes(e){if(this[m]==="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 ie(this)?Promise.resolve([]):this.#e.getChildren(this.id)}async getNodesWithType(e){return ie(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithType",this.id,e)).map(i=>I(i,this.#e))}async getNodesWithAttribute(e){return ie(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithAttribute",this.id,e)).map(i=>I(i,this.#e))}async getNodesWithAttributeSet(e){return ie(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithAttributeSet",this.id,e)).map(i=>I(i,this.#e))}async*walk(){if(yield this,!ie(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)}},O=class extends R{static{r(this,"FrameNode");}[m]="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;linkSmoothScroll;linkClickTrackingId;linkRelValues;linkPreserveParams;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=y(t,e.backgroundColor)??null,this.backgroundImage=y(t,e.backgroundImage)??null,this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.borderRadius=e.borderRadius??null,this.border=y(t,e.border)??null,this.backgroundGradient=y(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.linkSmoothScroll=e.linkSmoothScroll??null,this.linkClickTrackingId=e.linkClickTrackingId??null,this.linkRelValues=e.linkRelValues??null,this.linkPreserveParams=e.linkPreserveParams??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,v(this);}},re=class extends R{static{r(this,"TextNode");}[m]="TextNode";name;visible;locked;rotation;opacity;zIndex;font;inlineTextStyle;position;top;right;bottom;left;centerX;centerY;width;height;maxWidth;minWidth;maxHeight;minHeight;link;linkOpenInNewTab;linkSmoothScroll;linkClickTrackingId;linkRelValues;linkPreserveParams;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=y(t,e.font)??null,this.inlineTextStyle=y(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.linkSmoothScroll=e.linkSmoothScroll??null,this.linkClickTrackingId=e.linkClickTrackingId??null,this.linkRelValues=e.linkRelValues??null,this.linkPreserveParams=e.linkPreserveParams??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,v(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(me,this.id,e),await new Promise(t=>{setTimeout(t,30);});}async getHTML(){return this.#e.invoke(ge,this.id)}},qe=class extends R{static{r(this,"SVGNode");}[m]="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,v(this);}},Ye=class extends R{static{r(this,"VectorSetItemNode");}[m]="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,v(this);}async getSVG(){return this.#e.invoke("getSVGForNode",this.id)}},Xe=class extends R{static{r(this,"ComponentInstanceNode");}[m]="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=y(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=y(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,v(this);}async getRuntimeError(){return this.#e.invoke("getRuntimeErrorForCodeComponentNode",this.id)}},K=class extends R{static{r(this,"WebPageNode");}[m]="WebPageNode";#e;path;collectionId;constructor(e,t){super(e,t),this.path=e.path??null,this.collectionId=e.collectionId??null,this.#e=t,v(this);}async clone(e){return this.#e.cloneWebPage(this.id,e)}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 u(o instanceof O),u(xr(o),"Expected node to be a FrameNode"),o}async getActiveCollectionItem(){let e=await this.#e.invoke("getActiveCollectionItemForWebPage",this.id);return e?new _e(e,this.#e):null}},oe=class extends R{static{r(this,"ComponentNode");}[m]="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,v(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 u(o instanceof O),u(Pn(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 u(a instanceof O),u(br(a),"Node is not a gesture variant"),a}async getVariables(){let e=await this.#e.invoke("getVariables",this.id);return y(this.#e,e)}async addVariables(e){let t=await this.#e.invoke("addVariables",this.id,W(e));return y(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);}},Ze=class extends R{static{r(this,"VectorSetNode");}[m]="VectorSetNode";name;constructor(e,t){super(e,t),this.name=e.name??null,v(this);}},$=class extends R{static{r(this,"DesignPageNode");}[m]="DesignPageNode";name;#e;constructor(e,t){super(e,t),this.#e=t,this.name=e.name??null,v(this);}async clone(e){return this.#e.cloneDesignPage(this.id,e)}},Je=class extends R{static{r(this,"UnknownNode");}[m]="UnknownNode";constructor(e,t){super(e,t),v(this);}async clone(){throw new Error("Cannot clone an unknown node")}};function I(n,e){switch(n[m]){case "DesignPageNode":return new $(n,e);case "WebPageNode":return new K(n,e);case "ComponentNode":return new oe(n,e);case "VectorSetNode":return new Ze(n,e);case "VectorSetItemNode":return new Ye(n,e);case "ComponentInstanceNode":return new Xe(n,e);case "FrameNode":return new O(n,e);case "SVGNode":return new qe(n,e);case "TextNode":return new re(n,e);case "UnknownNode":return new Je(n,e);default:return new Je(n,e)}}r(I,"convertRawNodeDataToNode");function wt(n){return n instanceof O}r(wt,"isFrameNode");function Cr(n){return n instanceof re}r(Cr,"isTextNode");function Ir(n){return n instanceof qe}r(Ir,"isSVGNode");function be(n){return n instanceof Xe}r(be,"isComponentInstanceNode");function Tr(n){return n instanceof K}r(Tr,"isWebPageNode");function Pr(n){return n instanceof oe}r(Pr,"isComponentNode");function Sr(n){return n instanceof $}r(Sr,"isDesignPageNode");function Fr(n){return n instanceof Ze}r(Fr,"isVectorSetNode");function vr(n){return n instanceof Ye}r(vr,"isVectorSetItemNode");function ie(n){return n instanceof Je}r(ie,"isUnknownNode");function Qe(n){return !!(wt(n)||Cr(n)||be(n)||Ir(n)||vr(n)||ie(n))}r(Qe,"isCanvasNode");function Sn(n){return !!(Tr(n)||Sr(n)||Pr(n)||Fr(n)||ie(n))}r(Sn,"isCanvasRootNode");var et=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 Vt(t,this.#e))}},Vt=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 tt=class extends Error{static{r(this,"FramerPluginError");}name=this.constructor.name},J=class extends Error{static{r(this,"FramerPluginClosedError");}name=this.constructor.name};function Ca(n){return n.type==="separator"}r(Ca,"isSeparatorMenuItem");function Lt(n,e){let t=[];for(let i of n){if(Ca(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=Lt(i.submenu,e)),t.push(s);}return t}r(Lt,"addMenuItemsToOnActionCallbackMap");var Wt="type",Dr={[Wt]:"pluginReadySignal"},Ta="pluginReadyResponse";var Pa={methodResponse:true,subscriptionMessage:true,permissionUpdate:true,menuAction:true};function Nr(n){return k(n)&&f(n[Wt])&&n[Wt]in Pa}r(Nr,"isVekterToPluginNonHandshakeMessage");function kr(n){return k(n)&&n[Wt]===Ta}r(kr,"isPluginReadyResponse");var Fn=Symbol(),vn=Symbol(),Dn=Symbol(),Nn=Symbol(),kn=Symbol(),An=Symbol(),En=Symbol(),Mn=Symbol(),wn=Symbol(),Vn=Symbol(),Ln=Symbol(),Wn=Symbol(),Rn=Symbol(),Bn=Symbol(),Un=Symbol(),On=Symbol(),zn=Symbol(),Gn=Symbol(),Kn=Symbol(),$n=Symbol(),Hn=Symbol(),jn=Symbol(),_n=Symbol(),qn=Symbol(),Yn=Symbol(),Xn=Symbol(),Zn=Symbol(),Jn=Symbol(),Qn=Symbol(),ei=Symbol(),ti=Symbol(),h={ping:ti,publish:Fn,getDeployments:vn,deploy:Dn,getChangedPaths:Nn,getChangeContributors:kn,createManagedCollection:An,rejectAllPending:En,readProjectForAgent:Mn,getAgentSystemPrompt:wn,getAgentContext:Vn,applyAgentChanges:Ln,flattenComponentInstanceForAgent:Wn,getAncestorsForAgent:Rn,getGroundNodeForAgent:Bn,getNodeForAgent:Un,getNodesForAgent:On,getNodesOfTypesForAgent:zn,getParentNodeForAgent:Gn,getScopeNodeForAgent:Kn,makeExternalComponentLocalForAgent:$n,paginateForAgent:Hn,publishForAgent:jn,queryImagesForAgent:_n,reviewChangesForAgent:qn,serializeForAgent:Yn,serializeNodesForAgent:Xn,startAgentConversation:Zn,continueAgentConversation:Jn,submitAgentClarification:Qn,runSupervisorAgentCommand:ei};function ni(n){return typeof n=="string"&&n in h}r(ni,"isFramerApiOnlyMethod");var Sa=["unstable_getCodeFile","unstable_getCodeFiles","unstable_getCodeFileVersionContent","unstable_getCodeFileLint2","unstable_getCodeFileTypecheck2","unstable_getCodeFileVersions","lintCode"],Fa=["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","getLocaleLanguages","getLocaleRegions","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","unstable_getDependencyVersion","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","readProjectForAgent","getAgentSystemPrompt","getAgentContext","ping","queryImagesForAgent","reviewChangesForAgent","getNodeForAgent","getNodesForAgent","getNodesOfTypesForAgent","getScopeNodeForAgent","getGroundNodeForAgent","getParentNodeForAgent","getAncestorsForAgent","paginateForAgent","serializeForAgent","serializeNodesForAgent",mt,ft,yt,ht,ge,"getAiServiceInfo","sendTrackingEvent",...Sa];new Set(Fa);var ii={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"],createLocale:["createLocale"],getLocaleLanguages:[],getLocaleRegions:[],setMenu:[],showContextMenu:[],setParent:["setParent"],setPluginData:["setPluginData"],setSelection:[],setText:["setText"],typecheckCode:[],showUI:[],subscribeToCanvasRoot:[],subscribeToColorStyles:[],subscribeToCustomCode:[],subscribeToImage:[],subscribeToPublishInfo:[],subscribeToSelection:[],subscribeToText:[],subscribeToTextStyles:[],createCodeFile:["createCodeFile"],unstable_getDependencyVersion:[],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","cloneWebPage","cloneDesignPage"],"WebPageNode.clone":["cloneWebPage"],"DesignPageNode.clone":["cloneDesignPage"],"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":[me],"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"],[qt]:[],[Yt]:[],[Xt]:[],[Zt]:[],[Jt]:[],[Qt]:[],[Fn]:["publish"],[vn]:[],[Dn]:["deploy"],[Nn]:[],[kn]:[],[An]:["createManagedCollection"],[En]:[],[Mn]:[],[wn]:[],[Vn]:[],[ti]:[],[Ln]:["applyAgentChanges"],[Wn]:["flattenComponentInstanceForAgent"],[Rn]:[],[Bn]:[],[Un]:[],[On]:[],[zn]:[],[Gn]:[],[Kn]:[],[$n]:["makeExternalComponentLocalForAgent"],[Hn]:[],[jn]:["publishForAgent"],[_n]:[],[qn]:[],[Yn]:[],[Xn]:[],[Zn]:["startAgentConversation"],[Jn]:["continueAgentConversation"],[Qn]:["submitAgentClarification"],[ei]:["runSupervisorAgentCommand"]},Rt=[];for(let n of Object.keys(ii))ii[n].length!==0&&Rt.push(n);v(Rt);function ri(n){let e={};for(let t of Rt){let i=ii[t];e[t]=i.every(o=>n[o]);}return e}r(ri,"createPerMethodPermissionMap");function Ar(){let n={};for(let e of Rt)n[e]=true;return n}r(Ar,"createPerMethodPermissionMapForTesting");var xe=null;function Er(n){if(typeof window>"u")return;if(!xe){let t=document.createElement("style");document.head.appendChild(t),xe=t.sheet;}if(!xe){n();return}let e=xe.insertRule("* { transition: none !important; animation: none !important; }");n(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{xe&&xe.deleteRule(e);});});}r(Er,"withDisabledCssTransitions");var nt=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=Ar(),this.initialState={mode:"canvas",intent:"plugin/open"};return}switch(e.transport.onMessage(this.onMessage),typeof window<"u"&&(window.addEventListener("error",t=>{t.error instanceof J&&(t.preventDefault(),t.stopImmediatePropagation());}),window.addEventListener("unhandledrejection",t=>{t.reason instanceof J&&(t.preventDefault(),t.stopImmediatePropagation());})),this.mode=e.mode,this.initialState=e.initialState??{mode:e.mode,intent:"plugin/open"},this.environmentInfo=e.environmentInfo,this.perMethodPermissionMap=ri(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),this.applyPrereleaseStyles();break;case "api":break;default:Fe(this.mode);}}async invoke(e,...t){return this.invokeTransferable(e,void 0,...t)}async invokeTransferable(e,t,...i){return new Promise((a,s)=>{let d={type:"methodInvocation",methodName:e,id:this.methodInvocationId,args:i.map(W)};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=r(e=>{let t=e?.data??e;if(Nr(t))switch(t.type){case "permissionUpdate":{this.perMethodPermissionMap=ri(t.permissionMap);for(let i of this.permissionSubscriptions)i();break}case "methodResponse":{let i=this.methodResponseHandlers.get(t.id);if(!i){switch(this.mode){case "canvas":case "image":case "editImage":case "configureManagedCollection":case "syncManagedCollection":case "collection":case "localization":case "code":throw new Error(`No handler for response with id ${t.id}`);case "api":{if(!(t.id<this.methodInvocationId))throw new Error(`No handler for unknown response id ${t.id}`);break}default:Fe(this.mode);}break}this.methodResponseHandlers.delete(t.id),f(t.error)?i.reject(new tt(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:Fe(t);}},"onMessage");getOnActionFromCallbackMap(e,t){switch(t){case "pluginMenu":return this.menuItemOnActionCallbackMap.get(e);case "contextMenu":return this.contextMenuItemOnActionCallbackMap.get(e);default:Fe(t);}}applyPluginTheme=r(e=>{Er(()=>{document.body.setAttribute("data-framer-theme",e.mode);for(let t in e.tokens)document.body.style.setProperty(t,e.tokens[t]);});},"applyPluginTheme");applyPrereleaseStyles(){typeof window>"u"||new URLSearchParams(window.location.search).get("styles")==="prerelease"&&document.body.setAttribute("data-framer-styles","prerelease");}async cloneNode(e){let t=await this.invoke("cloneNode",e);return t?I(t,this):null}async cloneWebPage(e,t){let i=await this.invoke("cloneWebPage",e,t);u(i,"Expected to receive data for cloned web page");let o=I(i,this);return u(o instanceof K,"Expected cloned node to be an instance of WebPageNode"),o}async cloneDesignPage(e,t){let i=await this.invoke("cloneDesignPage",e,t);u(i,"Expected to receive data for cloned design page");let o=I(i,this);return u(o instanceof $,"Expected cloned node to be an instance of DesignPageNode"),o}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 u(Qe(o)),o})}notify=r((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:r(()=>this.invoke("closeNotification",i),"close")}},"notify");async setMenu(e){this.menuItemOnActionCallbackMap=new Map;let t=Lt(e,this.menuItemOnActionCallbackMap);await this.invoke("setMenu",t);}async showContextMenu(e,t){this.contextMenuItemOnActionCallbackMap=new Map;let i=Lt(e,this.contextMenuItemOnActionCallbackMap);await this.invoke("showContextMenu",i,t);}};function va(n){return n.type==="component"}r(va,"isCodeFileComponentExport");function Da(n){return n.type==="override"}r(Da,"isCodeFileOverrideExport");var oi=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 oi(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 Bt=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 u(be(o)),o}};var Na=(()=>{let n=null;return {disableUntilMouseUp:r(()=>{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");},"disableUntilMouseUp")}})(),Mr=5,ka=(()=>{let n=1;return {next:r(()=>`drag-${n++}`,"next")}})();function Aa(){}r(Aa,"noop");function wr(n,e,t,i){if(n.mode!=="canvas")return Aa;let o=ka.next(),a=document.body.style.cursor,s={type:"idle"},d=document.body,g=ae.subscribeToIsAllowedTo("makeDraggable",p=>{p||P();}),C=r(p=>{ae.isAllowedTo("makeDraggable")&&s.type!=="idle"&&(s.type==="dragging"&&n.invoke("onDragEnd",{...p,dragSessionId:o}).then(b=>{try{i?.(b);}catch{}}).catch(b=>{if(b instanceof Error){i?.({status:"error",reason:b.message});return}if(typeof b=="string"){i?.({status:"error",reason:b});return}i?.({status:"error"});}),P());},"endDrag"),F=r(p=>{if(!ae.isAllowedTo("makeDraggable")||s.type==="idle")return;if(!(p.buttons>0&&!!(p.buttons&1))){C({cancelled:false});return}let{clientX:w,clientY:z}=p;if(s.type==="pointerDown"){let E=w-s.dragStart.mouse.x,ct=z-s.dragStart.mouse.y;if(Math.abs(E)<Mr&&Math.abs(ct)<Mr)return;s={type:"dragging",dragStart:s.dragStart},n.invoke("onDragStart",s.dragStart),document.getSelection()?.empty(),Na.disableUntilMouseUp();}d.setPointerCapture(p.pointerId);let ee={x:w,y:z};n.invoke("onDrag",{dragSessionId:o,mouse:ee}).then(E=>{s.type==="dragging"&&(document.body.style.cursor=E??"");});},"handlePointerChange"),D=r(p=>{p.key==="Escape"&&C({cancelled:true});},"handleKeyDown"),_=r(()=>{C({cancelled:true});},"handleBlur"),x=r(p=>{if(!ae.isAllowedTo("makeDraggable"))return;C({cancelled:true});let b=e.getBoundingClientRect(),w={x:b.x,y:b.y,width:b.width,height:b.height},z,ee=e.querySelectorAll("svg");if(ee.length===1){let ce=ee.item(0).getBoundingClientRect();z={x:ce.x,y:ce.y,width:ce.width,height:ce.height};}let E={x:p.clientX,y:p.clientY};s={type:"pointerDown",dragStart:{dragSessionId:o,elementRect:w,svgRect:z,mouse:E}},n.invoke("setDragData",o,t()),d.addEventListener("pointermove",F,true),d.addEventListener("pointerup",F,true),window.addEventListener("keydown",D,true),window.addEventListener("blur",_);},"handlePointerDown"),c=r(()=>{if(!ae.isAllowedTo("makeDraggable"))return;let p=t();p.type==="detachedComponentLayers"&&n.invoke("preloadDetachedComponentLayers",p.url),p.type==="image"&&n.invoke("preloadImageUrlForInsertion",p.image),p.previewImage&&n.invoke("preloadDragPreviewImage",p.previewImage);},"preload");e.addEventListener("pointerdown",x),e.addEventListener("mouseenter",c);function P(){s={type:"idle"},document.body.style.cursor=a,d.removeEventListener("pointermove",F,true),d.removeEventListener("pointerup",F,true),window.removeEventListener("keydown",D,true),window.removeEventListener("blur",_);}return r(P,"dragCleanup"),()=>{e.removeEventListener("pointerdown",x),e.removeEventListener("mouseenter",c),C({cancelled:true}),g();}}r(wr,"makeDraggable");var Ce=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 u(pt(i)),T(i)?null:new n(i,this.#t)}};var ai=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]=Fi(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 J}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 u(Qe(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 u(Qe(a)),a});e(i);})}async getCanvasRoot(){let e=await this.#e.invoke("getCanvasRoot"),t=I(e,this.#e);return u(Sn(t)),t}subscribeToCanvasRoot(e){return this.#e.subscribe("canvasRoot",t=>{let i=I(t,this.#e);u(Sn(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 u(o instanceof O),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?y(this.#e,e):null}subscribeToImage(e){return this.#e.subscribe("image",t=>{if(!t){e(null);return}e(y(this.#e,t));})}async addImage(e){let t=await ze(e),i=Z(t);return this.#e.invokeTransferable("addImage",i,t)}async setImage(e){let t=await ze(e),i=Z(t);return this.#e.invokeTransferable("setImage",i,t)}async uploadImage(e){let t=await ze(e),i=Z(t),o=await this.#e.invokeTransferable("uploadImage",i,t);return y(this.#e,o)}async addImages(e){let t=await xn(e),i=t.flatMap(Z);await this.#e.invokeTransferable("addImages",i,t);}async uploadImages(e){let t=await xn(e),i=t.flatMap(Z),o=await this.#e.invokeTransferable("uploadImages",i,t);return y(this.#e,o)}async uploadFile(e){let t=await bn(e),i=await this.#e.invokeTransferable("uploadFile",Z(t),t);return y(this.#e,i)}async uploadFiles(e){let t=await Promise.all(e.map(bn)),i=t.flatMap(Z),o=await this.#e.invokeTransferable("uploadFiles",i,t);return y(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 u(be(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 u(wt(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 wr(this.#e,e,t,i)}async getActiveManagedCollection(){let e=await this.#e.invoke("getActiveManagedCollection");return u(e,"Collection data must be defined"),new he(e,this.#e)}async getManagedCollection(){return this.getActiveManagedCollection()}async getManagedCollections(){let e=await this.#e.invoke("getManagedCollections");return u(e,"Collections data must be defined"),e.map(t=>new he(t,this.#e))}async getCollection(e){let t=await this.#e.invoke("getCollection",e);return t?new ne(t,this.#e):null}async getActiveCollection(){let e=await this.#e.invoke("getActiveCollection");return e?new ne(e,this.#e):null}async getCollections(){return (await this.#e.invoke("getCollections")).map(t=>new ne(t,this.#e))}notify=r((e,t)=>this.#e.notify(e,t),"notify");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 y(this.#e,e)}async getColorStyle(e){let t=await this.#e.invoke("getColorStyle",e);return t?y(this.#e,t):null}async createColorStyle(e){let t=await this.#e.invoke("createColorStyle",e);return y(this.#e,t)}subscribeToColorStyles(e){return this.#e.subscribe("colorStyles",t=>{let i=y(this.#e,t);return e(i)})}async getTextStyles(){let e=await this.#e.invoke("getTextStyles");return y(this.#e,e)}async getTextStyle(e){let t=await this.#e.invoke("getTextStyle",e);return t?y(this.#e,t):null}async createTextStyle(e){let t=await this.#e.invoke("createTextStyle",e);return y(this.#e,t)}subscribeToTextStyles(e){return this.#e.subscribe("textStyles",t=>{let i=y(this.#e,t);return e(i)})}async getFont(e,t){let i=await this.#e.invoke("getFont",e,t);return i?y(this.#e,i):null}async getFonts(){let e=await this.#e.invoke("getFonts");return y(this.#e,e)}getLocales(){return this.#e.invoke("getLocales")}getDefaultLocale(){return this.#e.invoke("getDefaultLocale")}getActiveLocale(){return this.#e.invoke("getActiveLocale")}async getLocalizationGroups(e){return this.#e.invoke("getLocalizationGroups",e)}setLocalizationData(e){return this.#e.invoke("setLocalizationData",e)}async getRedirects(){return (await this.#e.invoke("getRedirects")).map(t=>new Ce(t,this.#e))}subscribeToRedirects(e){return this.#e.subscribe("redirects",t=>{let i=t.map(o=>new Ce(o,this.#e));return e(i)})}async addRedirects(e){return (await this.#e.invoke("addRedirects",e)).map(i=>new Ce(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 u(i instanceof $,"Expected node to be a DesignPageNode"),i}async createWebPage(e){let t=await this.#e.invoke("createWebPage",e),i=I(t,this.#e);return u(i instanceof K,"Expected node to be a WebPageNode"),i}async createCollection(e){let t=await this.#e.invoke("createCollection",e);return new ne(t,this.#e)}async createManagedCollection(e){let t=await this.#e.invoke("createManagedCollection",e);return new he(t,this.#e)}async setCloseWarning(e){return this.#e.invoke("setCloseWarning",e)}get[l.initialState](){return this.#e.initialState}},si=class extends ai{static{r(this,"FramerPluginAPIBeta");}#e;constructor(e){super(e),this.#e=e,this.#e;}},it=class extends si{static{r(this,"FramerPluginAPIAlpha");}#e;constructor(e){super(e),this.#e=e,this.#e;}async unstable_getDependencyVersion(e){return this.#e.invoke("unstable_getDependencyVersion",e)}async addComponentInstancePlaceholder(e){let t=await this.#e.invoke("addComponentInstancePlaceholder",e);return new Bt(t,this.#e)}async[l.getAiServiceInfo](e){return this.#e.invoke(mt,e)}async[l.sendTrackingEvent](e,t,i){return this.#e.invoke(ft,e,t,i)}async[l.getCurrentUser](){return this.#e.invoke(yt)}async[l.getProjectInfo](){return this.#e.invoke(ht)}async[l.getHTMLForNode](e){return this.#e.invoke(ge,e)}async[l.setHTMLForNode](e,t){return this.#e.invoke(me,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 u(o instanceof re),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 u(i instanceof oe),i}async getVectorSets(){return (await this.#e.invoke("getVectorSets")).map(t=>new et(t,this.#e))}async createLocale(e){return this.#e.invoke("createLocale",e)}async getLocaleLanguages(){return this.#e.invoke("getLocaleLanguages")}async getLocaleRegions(e){return this.#e.invoke("getLocaleRegions",e)}async[h.publish](){return this.#e.invoke("publish")}async[h.getDeployments](){return this.#e.invoke("getDeployments")}async[h.deploy](e,t){return this.#e.invoke("deploy",e,t)}async[h.getChangedPaths](){return this.#e.invoke("getChangedPaths")}async[h.getChangeContributors](e,t){return this.#e.invoke("getChangeContributors",e,t)}async[h.createManagedCollection](e){return this.createManagedCollection(e)}[h.rejectAllPending](e){this.#e.rejectAllPending(e);}async[h.getAgentSystemPrompt](){return this.#e.invoke("getAgentSystemPrompt")}async[h.getAgentContext](e){return this.#e.invoke("getAgentContext",e)}async[h.readProjectForAgent](e,t){return this.#e.invoke("readProjectForAgent",e,t)}async[h.applyAgentChanges](e,t){return this.#e.invoke("applyAgentChanges",e,t)}async[h.ping](){return this.#e.invoke("ping")}async[h.publishForAgent](e){return this.#e.invoke("publishForAgent",e)}async[h.queryImagesForAgent](e){return this.#e.invoke("queryImagesForAgent",e)}async[h.reviewChangesForAgent](e){return this.#e.invoke("reviewChangesForAgent",e)}async[h.flattenComponentInstanceForAgent](e,t){return this.#e.invoke("flattenComponentInstanceForAgent",e,t)}async[h.makeExternalComponentLocalForAgent](e,t){return this.#e.invoke("makeExternalComponentLocalForAgent",e,t)}async[h.getNodeForAgent](e,t){return this.#e.invoke("getNodeForAgent",e,t)}async[h.getNodesForAgent](e,t){return this.#e.invoke("getNodesForAgent",e,t)}async[h.getNodesOfTypesForAgent](e,t){return this.#e.invoke("getNodesOfTypesForAgent",e,t)}async[h.getScopeNodeForAgent](e,t){return this.#e.invoke("getScopeNodeForAgent",e,t)}async[h.getGroundNodeForAgent](e,t){return this.#e.invoke("getGroundNodeForAgent",e,t)}async[h.getParentNodeForAgent](e,t){return this.#e.invoke("getParentNodeForAgent",e,t)}async[h.getAncestorsForAgent](e,t){return this.#e.invoke("getAncestorsForAgent",e,t)}async[h.serializeForAgent](e,t){return this.#e.invoke("serializeForAgent",e,t)}async[h.serializeNodesForAgent](e,t){return this.#e.invoke("serializeNodesForAgent",e,t)}async[h.paginateForAgent](e,t){return this.#e.invoke("paginateForAgent",e,t)}async[h.startAgentConversation](e,t){return this.#e.invoke("startAgentConversation",e,t)}async[h.continueAgentConversation](e,t){return this.#e.invoke("continueAgentConversation",e,t)}async[h.submitAgentClarification](e){return this.#e.invoke("submitAgentClarification",e)}async[h.runSupervisorAgentCommand](e){return this.#e.invoke("runSupervisorAgentCommand",e)}};var li=class{constructor(e){this.origin=e;}origin;static{r(this,"IframeTransport");}send(e,t){window.parent.postMessage(e,this.origin,t);}onMessage(e){window.addEventListener("message",e);}};async function Ea(){return new Promise(n=>{function e({data:t,origin:i}){if(!kr(t))return;window.removeEventListener("message",e);let a={transport:new li(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(Dr,"*");})}r(Ea,"createBrowserContext");async function Ma(){return typeof window>"u"||"Deno"in globalThis?null:Ea()}r(Ma,"bootstrap");var Vr=await Ma(),ae=Vr?new it(new nt(Vr)):new Proxy({},{get(n,e){throw new Error(`Cannot access framer.${String(e)} in server runtime. Use createFramerInstance() with a custom transport.`)}});function Lr(n){return new it(new nt(n))}r(Lr,"createFramerInstance");var Wr={};function Va(n){if(env)try{Object.assign(env,n);}catch{}Object.assign(Wr,n);}r(Va,"configure");function Ie(n,e){let t=Wr[n]??env[n];return t&&t.length>0?t:e}r(Ie,"getEnv");var Rr=isWorkerd,ui=globalThis.WebSocket;async function Br(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(Br,"connectWebSocketCF");async function Ur(){try{return {fs:await import('fs'),path:await import('path')}}catch{return {}}}r(Ur,"getNodeModules");var se=(D=>(D.PROJECT_CLOSED="PROJECT_CLOSED",D.POOL_EXHAUSTED="POOL_EXHAUSTED",D.TIMEOUT="TIMEOUT",D.INTERNAL="INTERNAL",D.NODE_NOT_FOUND="NODE_NOT_FOUND",D.SCREENSHOT_TOO_LARGE="SCREENSHOT_TOO_LARGE",D.SCREENSHOT_PREPARE_FAILED="SCREENSHOT_PREPARE_FAILED",D.EXPORT_SVG_FAILED="EXPORT_SVG_FAILED",D.INVALID_REQUEST="INVALID_REQUEST",D.INVALID_RELEASE_CHANNEL="INVALID_RELEASE_CHANNEL",D.UNAUTHORIZED="UNAUTHORIZED",D))(se||{}),N=class extends Error{static{r(this,"FramerAPIError");}code;ref;retryable;recentMethods;constructor(e,t,i){super(e),this.name="FramerAPIError",this.code=t,i?.ref!==void 0&&(this.ref=i.ref),this.retryable=i?.retryable??false,i?.recentMethods!==void 0&&(this.recentMethods=i.recentMethods),this.stack=void 0;}toString(){let e=super.toString();return this.ref?`${e} [ref: ${this.ref}]`:e}};function La(n){return n instanceof N?n.code==="POOL_EXHAUSTED"||n.retryable:false}r(La,"isRetryableError");var Wa=new Map(Object.values(se).map(n=>[n,n]));function zr(n){return typeof n=="string"?Wa.get(n)??"INTERNAL":"INTERNAL"}r(zr,"parseErrorCode");var Ra={pluginMarshalTag:Et};var ci={silent:0,error:1,warn:2,info:3,debug:4};function Ba(){let n=Ie("FRAMER_API_LOG_LEVEL")?.toLowerCase();return n&&n in ci?n:"warn"}r(Ba,"getLogLevel");var pi=Ba();function rt(n){return ci[n]<=ci[pi]}r(rt,"shouldLog");var ot=globalThis.console,Ua="\x1B[90m",Oa="\x1B[0m";function za(n){return n?`[FramerAPI:${n}]`:"[FramerAPI]"}r(za,"formatPrefix");function Ga(n,...e){return [Ua+n,...e,Oa]}r(Ga,"formatDebug");function Gr(n){let e=za(n);return {warn:r((...t)=>{rt("warn")&&ot.warn(e,...t);},"warn"),error:r((...t)=>{rt("error")&&ot.error(e,...t);},"error"),log:r((...t)=>{rt("info")&&ot.log(e,...t);},"log"),info:r((...t)=>{rt("info")&&ot.info(e,...t);},"info"),debug:r((...t)=>{rt("debug")&&ot.debug(...Ga(e,...t));},"debug"),setLevel:r(t=>{pi=t;},"setLevel"),getLevel:r(()=>pi,"getLevel"),withRequestId:r(t=>Gr(t),"withRequestId")}}r(Gr,"createLogger");var A=Gr();A.warn;A.error;A.log;A.info;A.debug;A.setLevel;A.getLevel;var Ut="0.1.13-beta";var Kr="wss://api.framer.com/channel/headless-plugin";function Te(n,...e){if(n)return;let t=Error("Assertion Error"+(e.length>0?": "+e.join(" "):""));if(t.stack)try{let i=t.stack.split(`
|
|
5
|
+
`));}catch{}throw t}r(c,"assert");function F(n){for(let e of Reflect.ownKeys(n)){let t=n[e];!t||typeof t!="object"&&!Yr(t)||F(t);}return Object.freeze(n)}r(F,"deepFreeze");function ii(n){return [n.slice(0,-1),n.at(-1)]}r(ii,"splitRestAndLast");var m="__class";var Yt=Symbol(),Xt=Symbol(),Zt=Symbol(),Jt=Symbol(),Xr=Symbol(),Zr=Symbol(),Jr=Symbol(),Qr=Symbol(),eo=Symbol(),Qt=Symbol(),en=Symbol(),l={getAiServiceInfo:Yt,sendTrackingEvent:Xt,getCurrentUser:Zt,getProjectInfo:Jt,environmentInfo:Xr,initialState:Zr,showUncheckedPermissionToasts:Jr,marshal:Qr,unmarshal:eo,getHTMLForNode:Qt,setHTMLForNode:en},pe="INTERNAL_",mt=`${pe}getAiServiceInfo`,ft=`${pe}sendTrackingEvent`,yt=`${pe}getCurrentUser`,ht=`${pe}getProjectInfo`,ge=`${pe}getHTMLForNode`,me=`${pe}setHTMLForNode`;var A=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(I(t))return null;let i=this.constructor;return new i(this.#e,t)}async remove(){await this.#e.invoke("removeVariables",this.nodeId,[this.id]);}},w="Variable";function L(n){let e=n.at(0);return c(!ti(e)),`${e.toLowerCase()}${n.slice(1,-w.length)}`}r(L,"classToType");var to=`Boolean${w}`,no=L(to),ke=class n extends A{static{r(this,"BooleanVariable");}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=`Number${w}`,ro=L(io),Ne=class n extends A{static{r(this,"NumberVariable");}type=ro;#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}},oo=`String${w}`,ao=L(oo),Ee=class n extends A{static{r(this,"StringVariable");}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=`FormattedText${w}`,lo=L(so),Ae=class n extends A{static{r(this,"FormattedTextVariable");}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}},uo=`Enum${w}`,co=L(uo),Y=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);}},Me=class n extends A{static{r(this,"EnumVariable");}type=co;#e;#t;#n;get cases(){return this.#n||(this.#n=F(this.#t.cases.map(e=>new Y(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 Y(this.#e,this.nodeId,this.id,t):null}async setCaseOrder(e){await this.#e.invoke("setEnumCaseOrder",this.nodeId,this.id,e);}},po=`Color${w}`,go=L(po),we=class n extends A{static{r(this,"ColorVariable");}type=go;#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}},mo=`Image${w}`,fo=L(mo),Ve=class n extends A{static{r(this,"ImageVariable");}type=fo;#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}},yo=`File${w}`,ho=L(yo),Le=class n extends A{static{r(this,"FileVariable");}type=ho;#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}},bo=`Link${w}`,xo=L(bo),We=class n extends A{static{r(this,"LinkVariable");}type=xo;#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}},Co=`Date${w}`,Io=L(Co),Re=class n extends A{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}},To=`Border${w}`,Po=L(To),Be=class n extends A{static{r(this,"BorderVariable");}type=Po;#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${w}`,Fo=L(So),Ue=class n extends A{static{r(this,"UnsupportedVariable");}type=Fo;#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 ri(n){return n instanceof A}r(ri,"isVariable");function vo(n){return ri(n)&&n.nodeType==="component"}r(vo,"isComponentVariable");var U=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(c(pt(i)),I(i))return null;c(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]);}},B=class extends U{static{r(this,"FieldBaseWithRequired");}#e;get required(){return this.#e.required}constructor(e,t,i){super(e,t,i),this.#e=i;}},bt=class extends U{static{r(this,"BooleanField");}type=rn},xt=class extends U{static{r(this,"ColorField");}type=on},Ct=class extends U{static{r(this,"NumberField");}type=an},It=class extends B{static{r(this,"StringField");}type=sn;#e;constructor(e,t,i){super(e,t,i),this.#e=i;}get basedOn(){return this.#e.basedOn}},Tt=class extends B{static{r(this,"FormattedTextField");}type=ln},Oe=class extends B{static{r(this,"ImageField");}type=dn},Pt=class extends B{static{r(this,"LinkField");}type=cn},St=class extends B{static{r(this,"DateField");}type=pn;#e;get displayTime(){return this.#e.displayTime}constructor(e,t,i){super(e,t,i),this.#e=i;}},Ft=class extends U{static{r(this,"FieldDivider");}type=hn},ze=class extends U{static{r(this,"UnsupportedField");}type=bn},vt=class extends B{static{r(this,"FileField");}type=gn;#e;get allowedFileTypes(){return this.#e.allowedFileTypes}constructor(e,t,i){super(e,t,i),this.#e=i;}},Dt=class extends U{static{r(this,"EnumField");}type=mn;#e;#t;#n;#i;get cases(){return this.#i||(this.#i=this.#n.cases.map(e=>new Y(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 Y(this.#e,this.#t,this.id,t):null}async setCaseOrder(e){await this.#e.invoke("setEnumCaseOrder",this.#t,this.id,e);}},kt=class extends B{static{r(this,"CollectionReferenceField");}type=fn;#e;get collectionId(){return this.#e.collectionId}constructor(e,t,i){super(e,t,i),this.#e=i;}},Nt=class extends B{static{r(this,"MultiCollectionReferenceField");}type=yn;#e;get collectionId(){return this.#e.collectionId}constructor(e,t,i){super(e,t,i),this.#e=i;}},tn=class extends B{static{r(this,"ArrayField");}type=un;fields;constructor(e,t,i){super(e,t,i);let o=i.fields[0];this.fields=[new Oe(e,t,o)];}};function nn(n,e,t){return n.map(i=>{switch(i.type){case rn:return new bt(e,t,i);case on:return new xt(e,t,i);case an:return new Ct(e,t,i);case sn:return new It(e,t,i);case ln:return new Tt(e,t,i);case dn:return new Oe(e,t,i);case cn:return new Pt(e,t,i);case pn:return new St(e,t,i);case hn:return new Ft(e,t,i);case bn:return new ze(e,t,i);case gn:return new vt(e,t,i);case mn:return new Dt(e,t,i);case fn:return new kt(e,t,i);case yn:return new Nt(e,t,i);case un:return new tn(e,t,i);default:return new ze(e,t,i)}})}r(nn,"fieldDefinitionDataArrayToFieldClassInstances");function Do(n){return n instanceof U}r(Do,"isField");var oi="action";function ko(n){return !!n&&oi in n&&f(n[oi])}r(ko,"isLocalizedValueUpdate");function ai(n){return Object.keys(n).reduce((e,t)=>{let i=n[t];return ko(i)&&(e[t]=i),e},{})}r(ai,"filterInlineLocalizationValues");var Ge=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 {[m]:"FileAsset",id:this.id,url:this.url,extension:this.extension}}};function No(n){return n instanceof Ge}r(No,"isFileAsset");var Eo="ImageAsset";function si(n){return k(n)?n[m]===Eo:false}r(si,"isImageAssetData");var X=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 {[m]:"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,{[m]:"ImageAsset",id:this.id,url:this.url,thumbnailUrl:this.thumbnailUrl,altText:e??this.altText,resolution:t??this.resolution})}async measure(){return wo(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 Ao(n){return n instanceof X}r(Ao,"isImageAsset");function Z(n){return n.type==="bytes"?[n.bytes.buffer]:[]}r(Z,"getTransferable");function Mo(n){if(!k(n))return false;let e="bytes",t="mimeType";return !(!(e in n)||!(t in n)||!(n[e]instanceof Uint8Array)||!f(n[t]))}r(Mo,"isBytesData");async function Ke(n){if(n instanceof File)return In(n);let e=await li(n.image);return {name:n.name,altText:n.altText,resolution:n.resolution,preferredImageRendering:n.preferredImageRendering,...e}}r(Ke,"createImageTransferFromInput");async function xn(n){if(n instanceof File)return In(n);let e=await li(n.file);return {name:n.name,...e}}r(xn,"createFileTransferFromInput");async function li(n){return n instanceof File?In(n):Mo(n)?{type:"bytes",mimeType:n.mimeType,bytes:n.bytes}:{type:"url",url:n}}r(li,"createAssetTransferFromAssetInput");function Cn(n){return Promise.all(n.map(Ke))}r(Cn,"createNamedAssetDataTransferFromInput");async function In(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(In,"getAssetDataFromFile");async function wo(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(wo,"measureImage");var Et=class{static{r(this,"ComputedValueBase");}};var Vo="unsupported",$e=class n extends Et{static{r(this,"UnsupportedComputedValue");}type=Vo;#e;constructor(e){super(),this.#e=e;}static[l.unmarshal](e,t){return new n(t)}[l.marshal](){return this.#e}};function Lo(n){return n instanceof Et}r(Lo,"isComputedValue");var Wo="Font";function ui(n){return k(n)&&n[m]===Wo}r(ui,"isFontData");function Ro(n){if(!q(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(Ro,"isFontWeight");function Bo(n){if(!f(n))return false;switch(n){case "normal":case "italic":return true;default:return false}}r(Bo,"isFontStyle");function ci(n){return k(n)?f(n.family)&&f(n.selector)&&Ro(n.weight)&&Bo(n.style):false}r(ci,"isFont");var G=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=di.get(t.selector);if(i)return i;let o=new n(t);return di.set(t.selector,o),o}[l.marshal](){return {[m]:"Font",selector:this.selector,family:this.family,weight:this.weight,style:this.style}}},di=new Map;var At="plugin-marshal";function Tn(n){return k(n)&&l.marshal in n}r(Tn,"isSelfMarshalable");function W(n){if(Tn(n))return n[l.marshal]();if(gt(n))return n.map(W);if(ve(n)){let e={};for(let t of Object.keys(n))e[t]=W(n[t]);return e}return n}r(W,"marshal");var Uo="LinearGradient",Oo="RadialGradient",zo="ConicGradient",fe=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})}},He=class n extends fe{static{r(this,"LinearGradient");}[m]=Uo;#e;get angle(){return this.#e.angle}constructor(e){super(e),this.#e=e;}static[l.unmarshal](e,t){return new n({...t,stops:y(e,t.stops)})}[l.marshal](){return W({...this.#e,[m]:this[m]})}toCSS(){let e=this.#e.stops.map(t=>(c(f(t.color),"ColorStyle not supported yet"),`${t.color} ${t.position*100}%`)).join(", ");return `linear-gradient(${this.angle}deg, ${e})`}},je=class n extends fe{static{r(this,"RadialGradient");}[m]=Oo;#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:y(e,t.stops)})}[l.marshal](){return W({...this.#e,[m]:this[m]})}toCSS(){let e=this.stops.map((t,i)=>{c(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})`}},_e=class n extends fe{static{r(this,"ConicGradient");}[m]=zo;#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:y(e,t.stops)})}[l.marshal](){return W({...this.#e,[m]:this[m]})}toCSS(){let e=this.stops.map(t=>(c(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 pi(n){return n instanceof fe}r(pi,"isGradient");var Go="ColorStyle";function Mt(n){return k(n)?n[m]===Go:false}r(Mt,"isColorStyleData");var te=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 {[m]:"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 ye(n){return n instanceof te}r(ye,"isColorStyle");var Ko="TextStyle";function gi(n){return k(n)?n[m]===Ko:false}r(gi,"isTextStyleData");var qe=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=G[l.unmarshal](e,t.font),this.boldFont=t.boldFont&&G[l.unmarshal](e,t.boldFont),this.italicFont=t.italicFont&&G[l.unmarshal](e,t.italicFont),this.boldItalicFont=t.boldItalicFont&&G[l.unmarshal](e,t.boldItalicFont),this.color=Mt(t.color)?te[l.unmarshal](e,t.color):t.color,this.transform=t.transform,this.alignment=t.alignment,this.decoration=t.decoration,this.decorationColor=Mt(t.decorationColor)?te[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 {[m]:"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:ye(this.color)?this.color[l.marshal]():this.color,transform:this.transform,alignment:this.alignment,decoration:this.decoration,decorationColor:ye(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 qe}r(Pn,"isTextStyle");var mi={ColorStyle:te,ConicGradient:_e,FileAsset:Ge,Font:G,ImageAsset:X,LinearGradient:He,RadialGradient:je,TextStyle:qe,BooleanVariable:ke,BorderVariable:Be,ColorVariable:we,DateVariable:Re,EnumVariable:Me,FileVariable:Le,FormattedTextVariable:Ae,ImageVariable:Ve,LinkVariable:We,NumberVariable:Ne,StringVariable:Ee,UnsupportedVariable:Ue,UnsupportedComputedValue:$e};function $o(n){return ve(n)&&f(n[m])&&n[m]in mi}r($o,"isSelfUnmarshalable");function y(n,e){if($o(e))return mi[e[m]][l.unmarshal](n,e);if(gt(e))return e.map(t=>y(n,t));if(ve(e)){let t={};for(let i of Object.keys(e))t[i]=y(n,e[i]);return t}return e}r(y,"unmarshal");var Ho={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 jo(n){return Ho[n]}r(jo,"isSupportedArrayItemFieldType");function _o(n){return jo(n.type)}r(_o,"isSupportedArrayItemFieldDataEntry");var rn="boolean",on="color",an="number",sn="string",ln="formattedText",dn="image",un="array",cn="link",pn="date",gn="file",mn="enum",fn="collectionReference",yn="multiCollectionReference",hn="divider",bn="unsupported";function qo(n){return n.map(e=>{if(e.type!=="enum")return e;let t=e.cases.map(i=>{let o=i.nameByLocale?ai(i.nameByLocale):void 0;return {...i,nameByLocale:o}});return {...e,cases:t}})}r(qo,"sanitizeEnumFieldForMessage");function fi(n,e){let t={};for(let i in n){let o=n[i];if(!o)continue;if(o.type!=="array"){t[i]=y(e,o);continue}let a=o.value.map(s=>{let d=fi(s.fieldData,e),g={};for(let x in d){let S=d[x];c(S&&_o(S),"Unsupported array item field data entry"),g[x]=S;}return {...s,fieldData:g}});t[i]={...o,value:a};}return t}r(fi,"deserializeFieldData");var he=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,c(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=qo(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)}},ne=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 nn(e,this.#e,this.id)}async addFields(e){let t=await this.#e.invoke("addCollectionFields2",this.id,e);return c(t.every(ni)),nn(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 Ye(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)}},Ye=class n{static{r(this,"CollectionItem");}id;nodeId;slug;slugByLocale;draft;fieldData;#e;constructor(e,t){let i=fi(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 Yo={fixed:true,sticky:true,absolute:true,relative:true},yi="position";function ol(n){if(!(yi in n))return false;let e=n[yi];return f(e)&&Yo[e]===true}r(ol,"supportsPosition");var hi="top";function al(n){if(!(hi in n))return false;let e=n[hi];return f(e)||I(e)}r(al,"supportsPins");var bi="width";function sl(n){if(!(bi in n))return false;let e=n[bi];return f(e)||I(e)}r(sl,"supportsSize");var xi="maxWidth";function ll(n){if(!(xi in n))return false;let e=n[xi];return f(e)||I(e)}r(ll,"supportsSizeConstraints");var Ci="aspectRatio";function dl(n){if(!(Ci in n))return false;let e=n[Ci];return q(e)||I(e)}r(dl,"supportsAspectRatio");var Ii="name";function ul(n){if(!(Ii in n))return false;let e=n[Ii];return f(e)||I(e)}r(ul,"supportsName");var Ti="visible";function cl(n){if(!(Ti in n))return false;let e=n[Ti];return Fe(e)}r(cl,"supportsVisible");var Pi="locked";function pl(n){if(!(Pi in n))return false;let e=n[Pi];return Fe(e)}r(pl,"supportsLocked");var Si="backgroundColor";function gl(n){if(!(Si in n))return false;let e=n[Si];return f(e)||ye(e)||I(e)}r(gl,"supportsBackgroundColor");var Fi="backgroundColor";function ml(n){if(!(Fi in n))return false;let e=n[Fi];return f(e)||Mt(e)||I(e)}r(ml,"supportsBackgroundColorData");var vi="backgroundImage";function fl(n){if(!(vi in n))return false;let e=n[vi];return e instanceof X||I(e)}r(fl,"supportsBackgroundImage");var Di="backgroundImage";function yl(n){if(!(Di in n))return false;let e=n[Di];return e instanceof X?false:si(e)||I(e)}r(yl,"supportsBackgroundImageData");var ki="backgroundGradient";function hl(n){if(!(ki in n))return false;let e=n[ki];return pi(e)||I(e)}r(hl,"supportsBackgroundGradient");var Ni="backgroundGradient";function bl(n){if(!(Ni in n))return false;let e=n[Ni];return k(e)||I(e)}r(bl,"supportsBackgroundGradientData");var Ei="rotation";function xl(n){if(!(Ei in n))return false;let e=n[Ei];return q(e)}r(xl,"supportsRotation");var Ai="opacity";function Cl(n){if(!(Ai in n))return false;let e=n[Ai];return q(e)}r(Cl,"supportsOpacity");var Mi="borderRadius";function Il(n){if(!(Mi in n))return false;let e=n[Mi];return f(e)||I(e)}r(Il,"supportsBorderRadius");var wi="border";function Tl(n){if(!(wi in n))return false;let e=n[wi];return I(e)||ye(e.color)}r(Tl,"supportsBorder");var Vi="svg";function Pl(n){if(!(Vi in n))return false;let e=n[Vi];return f(e)}r(Pl,"supportsSVG");var Li="textTruncation";function Sl(n){if(!(Li in n))return false;let e=n[Li];return q(e)||I(e)}r(Sl,"supportsTextTruncation");var Wi="zIndex";function Fl(n){if(!(Wi in n))return false;let e=n[Wi];return q(e)||I(e)}r(Fl,"supportsZIndex");var Ri="overflow";function vl(n){if(!(Ri in n))return false;let e=n[Ri];return f(e)||I(e)}r(vl,"supportsOverflow");var Bi="componentIdentifier";function Dl(n){if(!(Bi in n))return false;let e=n[Bi];return f(e)}r(Dl,"supportsComponentInfo");var Ui="font";function kl(n){if(!(Ui in n))return false;let e=n[Ui];return ci(e)}r(kl,"supportsFont");var Oi="font";function Nl(n){if(!(Oi in n))return false;let e=n[Oi];return ui(e)||I(e)}r(Nl,"supportsFontData");var zi="inlineTextStyle";function El(n){if(!(zi in n))return false;let e=n[zi];return Pn(e)||I(e)}r(El,"supportsInlineTextStyle");var Gi="inlineTextStyle";function Al(n){if(!(Gi in n))return false;let e=n[Gi];return gi(e)||I(e)}r(Al,"supportsInlineTextStyleData");var Ki="link";function Ml(n){if(!(Ki in n))return false;let e=n[Ki];return f(e)||I(e)}r(Ml,"supportsLink");var $i="imageRendering";function wl(n){if(!($i in n))return false;let e=n[$i];return f(e)||I(e)}r(wl,"supportsImageRendering");var Hi="layout";function qi(n){if(!(Hi in n))return false;let e=n[Hi];return f(e)||I(e)}r(qi,"supportsLayout");function Vl(n){return qi(n)?n.layout==="stack":false}r(Vl,"hasStackLayout");function Ll(n){return qi(n)?n.layout==="grid":false}r(Ll,"hasGridLayout");var ji="isVariant";function Yi(n){if(!(ji in n))return false;let e=n[ji];return Fe(e)}r(Yi,"supportsComponentVariant");function Sn(n){return Yi(n)?n.isVariant:false}r(Sn,"isComponentVariant");function Xi(n){return !Yi(n)||!Sn(n)?false:!I(n.gesture)}r(Xi,"isComponentGestureVariant");var _i="isBreakpoint";function Xo(n){if(!(_i in n))return false;let e=n[_i];return Fe(e)}r(Xo,"supportsBreakpoint");function Zi(n){return Xo(n)?n.isBreakpoint:false}r(Zi,"isBreakpoint");var R=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(){return this.#e.cloneNode(this.id)}async setAttributes(e){if(this[m]==="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 ie(this)?Promise.resolve([]):this.#e.getChildren(this.id)}async getNodesWithType(e){return ie(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithType",this.id,e)).map(i=>C(i,this.#e))}async getNodesWithAttribute(e){return ie(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithAttribute",this.id,e)).map(i=>C(i,this.#e))}async getNodesWithAttributeSet(e){return ie(this)?Promise.resolve([]):(await this.#e.invoke("getNodesWithAttributeSet",this.id,e)).map(i=>C(i,this.#e))}async*walk(){if(yield this,!ie(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)}},O=class extends R{static{r(this,"FrameNode");}[m]="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;linkSmoothScroll;linkClickTrackingId;linkRelValues;linkPreserveParams;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=y(t,e.backgroundColor)??null,this.backgroundImage=y(t,e.backgroundImage)??null,this.rotation=e.rotation??0,this.opacity=e.opacity??1,this.borderRadius=e.borderRadius??null,this.border=y(t,e.border)??null,this.backgroundGradient=y(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.linkSmoothScroll=e.linkSmoothScroll??null,this.linkClickTrackingId=e.linkClickTrackingId??null,this.linkRelValues=e.linkRelValues??null,this.linkPreserveParams=e.linkPreserveParams??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);}},re=class extends R{static{r(this,"TextNode");}[m]="TextNode";name;visible;locked;rotation;opacity;zIndex;font;inlineTextStyle;position;top;right;bottom;left;centerX;centerY;width;height;maxWidth;minWidth;maxHeight;minHeight;link;linkOpenInNewTab;linkSmoothScroll;linkClickTrackingId;linkRelValues;linkPreserveParams;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=y(t,e.font)??null,this.inlineTextStyle=y(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.linkSmoothScroll=e.linkSmoothScroll??null,this.linkClickTrackingId=e.linkClickTrackingId??null,this.linkRelValues=e.linkRelValues??null,this.linkPreserveParams=e.linkPreserveParams??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(me,this.id,e),await new Promise(t=>{setTimeout(t,30);});}async getHTML(){return this.#e.invoke(ge,this.id)}},Xe=class extends R{static{r(this,"SVGNode");}[m]="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);}},Ze=class extends R{static{r(this,"VectorSetItemNode");}[m]="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)}},Je=class extends R{static{r(this,"ComponentInstanceNode");}[m]="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=y(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=y(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)}},K=class extends R{static{r(this,"WebPageNode");}[m]="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);}async clone(e){return this.#e.cloneWebPage(this.id,e)}getBreakpointSuggestions(){return this.#e.invoke("getBreakpointSuggestionsForWebPage",this.id)}async addBreakpoint(e,t){let i=await this.#e.invoke("addBreakpointToWebPage",this.id,e,t),o=C(i,this.#e);return c(o instanceof O),c(Zi(o),"Expected node to be a FrameNode"),o}async getActiveCollectionItem(){let e=await this.#e.invoke("getActiveCollectionItemForWebPage",this.id);return e?new Ye(e,this.#e):null}},oe=class extends R{static{r(this,"ComponentNode");}[m]="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=C(i,this.#e);return c(o instanceof O),c(Sn(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=C(o,this.#e);return c(a instanceof O),c(Xi(a),"Node is not a gesture variant"),a}async getVariables(){let e=await this.#e.invoke("getVariables",this.id);return y(this.#e,e)}async addVariables(e){let t=await this.#e.invoke("addVariables",this.id,W(e));return y(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);}},Qe=class extends R{static{r(this,"VectorSetNode");}[m]="VectorSetNode";name;constructor(e,t){super(e,t),this.name=e.name??null,F(this);}},$=class extends R{static{r(this,"DesignPageNode");}[m]="DesignPageNode";name;#e;constructor(e,t){super(e,t),this.#e=t,this.name=e.name??null,F(this);}async clone(e){return this.#e.cloneDesignPage(this.id,e)}},et=class extends R{static{r(this,"UnknownNode");}[m]="UnknownNode";constructor(e,t){super(e,t),F(this);}async clone(){throw new Error("Cannot clone an unknown node")}};function C(n,e){switch(n[m]){case "DesignPageNode":return new $(n,e);case "WebPageNode":return new K(n,e);case "ComponentNode":return new oe(n,e);case "VectorSetNode":return new Qe(n,e);case "VectorSetItemNode":return new Ze(n,e);case "ComponentInstanceNode":return new Je(n,e);case "FrameNode":return new O(n,e);case "SVGNode":return new Xe(n,e);case "TextNode":return new re(n,e);case "UnknownNode":return new et(n,e);default:return new et(n,e)}}r(C,"convertRawNodeDataToNode");function wt(n){return n instanceof O}r(wt,"isFrameNode");function Ji(n){return n instanceof re}r(Ji,"isTextNode");function Qi(n){return n instanceof Xe}r(Qi,"isSVGNode");function be(n){return n instanceof Je}r(be,"isComponentInstanceNode");function er(n){return n instanceof K}r(er,"isWebPageNode");function tr(n){return n instanceof oe}r(tr,"isComponentNode");function nr(n){return n instanceof $}r(nr,"isDesignPageNode");function ir(n){return n instanceof Qe}r(ir,"isVectorSetNode");function rr(n){return n instanceof Ze}r(rr,"isVectorSetItemNode");function ie(n){return n instanceof et}r(ie,"isUnknownNode");function tt(n){return !!(wt(n)||Ji(n)||be(n)||Qi(n)||rr(n)||ie(n))}r(tt,"isCanvasNode");function Fn(n){return !!(er(n)||nr(n)||tr(n)||ir(n)||ie(n))}r(Fn,"isCanvasRootNode");var nt=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 Vt(t,this.#e))}},Vt=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 it=class extends Error{static{r(this,"FramerPluginError");}name=this.constructor.name},J=class extends Error{static{r(this,"FramerPluginClosedError");}name=this.constructor.name};function Zo(n){return n.type==="separator"}r(Zo,"isSeparatorMenuItem");function Lt(n,e){let t=[];for(let i of n){if(Zo(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=Lt(i.submenu,e)),t.push(s);}return t}r(Lt,"addMenuItemsToOnActionCallbackMap");var Wt="type",or={[Wt]:"pluginReadySignal"},Qo="pluginReadyResponse";var ea={methodResponse:true,subscriptionMessage:true,permissionUpdate:true,menuAction:true};function ar(n){return k(n)&&f(n[Wt])&&n[Wt]in ea}r(ar,"isVekterToPluginNonHandshakeMessage");function sr(n){return k(n)&&n[Wt]===Qo}r(sr,"isPluginReadyResponse");var vn=Symbol(),Dn=Symbol(),kn=Symbol(),Nn=Symbol(),En=Symbol(),An=Symbol(),Mn=Symbol(),wn=Symbol(),V={ping:wn,publish:vn,getDeployments:Dn,deploy:kn,getChangedPaths:Nn,getChangeContributors:En,createManagedCollection:An,rejectAllPending:Mn};function Vn(n){return typeof n=="string"&&n in V}r(Vn,"isFramerApiOnlyMethod");var ta=["unstable_getCodeFile","unstable_getCodeFiles","unstable_getCodeFileVersionContent","unstable_getCodeFileLint2","unstable_getCodeFileTypecheck2","unstable_getCodeFileVersions","lintCode"],na=["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","getLocaleLanguages","getLocaleRegions","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","unstable_getDependencyVersion","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","readProjectForAgent","readComponentControlsForAgent","readIconSetControlsForAgent","readIconsForAgent","readLayoutTemplateControlsForAgent","readShaderControlsForAgent","getAgentSystemPrompt","getAgentContext","ping","queryImagesForAgent","reviewChangesForAgent","getNodeForAgent","getNodesForAgent","getNodesOfTypesForAgent","getScopeNodeForAgent","getGroundNodeForAgent","getParentNodeForAgent","getAncestorsForAgent","paginateForAgent","serializeForAgent","serializeNodesForAgent",mt,ft,yt,ht,ge,"getAiServiceInfo","sendTrackingEvent",...ta];new Set(na);var Ln={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"],createLocale:["createLocale"],getLocaleLanguages:[],getLocaleRegions:[],setMenu:[],showContextMenu:[],setParent:["setParent"],setPluginData:["setPluginData"],setSelection:[],setText:["setText"],typecheckCode:[],showUI:[],subscribeToCanvasRoot:[],subscribeToColorStyles:[],subscribeToCustomCode:[],subscribeToImage:[],subscribeToPublishInfo:[],subscribeToSelection:[],subscribeToText:[],subscribeToTextStyles:[],createCodeFile:["createCodeFile"],unstable_getDependencyVersion:[],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","cloneWebPage","cloneDesignPage"],"WebPageNode.clone":["cloneWebPage"],"DesignPageNode.clone":["cloneDesignPage"],"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":[me],"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"],[Yt]:[],[Xt]:[],[Zt]:[],[Jt]:[],[Qt]:[],[en]:[],[vn]:["publish"],[Dn]:[],[kn]:["deploy"],[Nn]:[],[En]:[],[An]:["createManagedCollection"],[Mn]:[],[wn]:[]},Rt=[];for(let n of Object.keys(Ln))Ln[n].length!==0&&Rt.push(n);F(Rt);function Wn(n){let e={};for(let t of Rt){let i=Ln[t];e[t]=i.every(o=>n[o]);}return e}r(Wn,"createPerMethodPermissionMap");function lr(){let n={};for(let e of Rt)n[e]=true;return n}r(lr,"createPerMethodPermissionMapForTesting");var xe=null;function dr(n){if(typeof window>"u")return;if(!xe){let t=document.createElement("style");document.head.appendChild(t),xe=t.sheet;}if(!xe){n();return}let e=xe.insertRule("* { transition: none !important; animation: none !important; }");n(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{xe&&xe.deleteRule(e);});});}r(dr,"withDisabledCssTransitions");var Ce=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=lr(),this.initialState={mode:"canvas",intent:"plugin/open"};return}switch(e.transport.onMessage(this.onMessage),typeof window<"u"&&(window.addEventListener("error",t=>{t.error instanceof J&&(t.preventDefault(),t.stopImmediatePropagation());}),window.addEventListener("unhandledrejection",t=>{t.reason instanceof J&&(t.preventDefault(),t.stopImmediatePropagation());})),this.mode=e.mode,this.initialState=e.initialState??{mode:e.mode,intent:"plugin/open"},this.environmentInfo=e.environmentInfo,this.perMethodPermissionMap=Wn(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),this.applyPrereleaseStyles();break;case "api":break;default:De(this.mode);}}async invoke(e,...t){return this.invokeTransferable(e,void 0,...t)}async invokeTransferable(e,t,...i){return new Promise((a,s)=>{let d={type:"methodInvocation",methodName:e,id:this.methodInvocationId,args:i.map(W)};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=r(e=>{let t=e?.data??e;if(ar(t))switch(t.type){case "permissionUpdate":{this.perMethodPermissionMap=Wn(t.permissionMap);for(let i of this.permissionSubscriptions)i();break}case "methodResponse":{let i=this.methodResponseHandlers.get(t.id);if(!i){switch(this.mode){case "canvas":case "image":case "editImage":case "configureManagedCollection":case "syncManagedCollection":case "collection":case "localization":case "code":throw new Error(`No handler for response with id ${t.id}`);case "api":{if(!(t.id<this.methodInvocationId))throw new Error(`No handler for unknown response id ${t.id}`);break}default:De(this.mode);}break}this.methodResponseHandlers.delete(t.id),f(t.error)?i.reject(new it(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:De(t);}},"onMessage");getOnActionFromCallbackMap(e,t){switch(t){case "pluginMenu":return this.menuItemOnActionCallbackMap.get(e);case "contextMenu":return this.contextMenuItemOnActionCallbackMap.get(e);default:De(t);}}applyPluginTheme=r(e=>{dr(()=>{document.body.setAttribute("data-framer-theme",e.mode);for(let t in e.tokens)document.body.style.setProperty(t,e.tokens[t]);});},"applyPluginTheme");applyPrereleaseStyles(){typeof window>"u"||new URLSearchParams(window.location.search).get("styles")==="prerelease"&&document.body.setAttribute("data-framer-styles","prerelease");}async cloneNode(e){let t=await this.invoke("cloneNode",e);return t?C(t,this):null}async cloneWebPage(e,t){let i=await this.invoke("cloneWebPage",e,t);c(i,"Expected to receive data for cloned web page");let o=C(i,this);return c(o instanceof K,"Expected cloned node to be an instance of WebPageNode"),o}async cloneDesignPage(e,t){let i=await this.invoke("cloneDesignPage",e,t);c(i,"Expected to receive data for cloned design page");let o=C(i,this);return c(o instanceof $,"Expected cloned node to be an instance of DesignPageNode"),o}async setAttributes(e,t){let i=await this.invoke("setAttributes",e,t);return i?C(i,this):null}async getParent(e){let t=await this.invoke("getParent",e);return t?C(t,this):null}async getChildren(e){return (await this.invoke("getChildren",e)).map(i=>{let o=C(i,this);return c(tt(o)),o})}notify=r((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:r(()=>this.invoke("closeNotification",i),"close")}},"notify");async setMenu(e){this.menuItemOnActionCallbackMap=new Map;let t=Lt(e,this.menuItemOnActionCallbackMap);await this.invoke("setMenu",t);}async showContextMenu(e,t){this.contextMenuItemOnActionCallbackMap=new Map;let i=Lt(e,this.contextMenuItemOnActionCallbackMap);await this.invoke("showContextMenu",i,t);}};function ia(n){return n.type==="component"}r(ia,"isCodeFileComponentExport");function ra(n){return n.type==="override"}r(ra,"isCodeFileOverrideExport");var Rn=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 Rn(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 Bt=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=C(i,this.#t);return c(be(o)),o}};var oa=(()=>{let n=null;return {disableUntilMouseUp:r(()=>{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");},"disableUntilMouseUp")}})(),ur=5,aa=(()=>{let n=1;return {next:r(()=>`drag-${n++}`,"next")}})();function sa(){}r(sa,"noop");function cr(n,e,t,i){if(n.mode!=="canvas")return sa;let o=aa.next(),a=document.body.style.cursor,s={type:"idle"},d=document.body,g=ae.subscribeToIsAllowedTo("makeDraggable",p=>{p||T();}),x=r(p=>{ae.isAllowedTo("makeDraggable")&&s.type!=="idle"&&(s.type==="dragging"&&n.invoke("onDragEnd",{...p,dragSessionId:o}).then(b=>{try{i?.(b);}catch{}}).catch(b=>{if(b instanceof Error){i?.({status:"error",reason:b.message});return}if(typeof b=="string"){i?.({status:"error",reason:b});return}i?.({status:"error"});}),T());},"endDrag"),S=r(p=>{if(!ae.isAllowedTo("makeDraggable")||s.type==="idle")return;if(!(p.buttons>0&&!!(p.buttons&1))){x({cancelled:false});return}let{clientX:M,clientY:z}=p;if(s.type==="pointerDown"){let E=M-s.dragStart.mouse.x,ct=z-s.dragStart.mouse.y;if(Math.abs(E)<ur&&Math.abs(ct)<ur)return;s={type:"dragging",dragStart:s.dragStart},n.invoke("onDragStart",s.dragStart),document.getSelection()?.empty(),oa.disableUntilMouseUp();}d.setPointerCapture(p.pointerId);let ee={x:M,y:z};n.invoke("onDrag",{dragSessionId:o,mouse:ee}).then(E=>{s.type==="dragging"&&(document.body.style.cursor=E??"");});},"handlePointerChange"),v=r(p=>{p.key==="Escape"&&x({cancelled:true});},"handleKeyDown"),_=r(()=>{x({cancelled:true});},"handleBlur"),h=r(p=>{if(!ae.isAllowedTo("makeDraggable"))return;x({cancelled:true});let b=e.getBoundingClientRect(),M={x:b.x,y:b.y,width:b.width,height:b.height},z,ee=e.querySelectorAll("svg");if(ee.length===1){let ce=ee.item(0).getBoundingClientRect();z={x:ce.x,y:ce.y,width:ce.width,height:ce.height};}let E={x:p.clientX,y:p.clientY};s={type:"pointerDown",dragStart:{dragSessionId:o,elementRect:M,svgRect:z,mouse:E}},n.invoke("setDragData",o,t()),d.addEventListener("pointermove",S,true),d.addEventListener("pointerup",S,true),window.addEventListener("keydown",v,true),window.addEventListener("blur",_);},"handlePointerDown"),u=r(()=>{if(!ae.isAllowedTo("makeDraggable"))return;let p=t();p.type==="detachedComponentLayers"&&n.invoke("preloadDetachedComponentLayers",p.url),p.type==="image"&&n.invoke("preloadImageUrlForInsertion",p.image),p.previewImage&&n.invoke("preloadDragPreviewImage",p.previewImage);},"preload");e.addEventListener("pointerdown",h),e.addEventListener("mouseenter",u);function T(){s={type:"idle"},document.body.style.cursor=a,d.removeEventListener("pointermove",S,true),d.removeEventListener("pointerup",S,true),window.removeEventListener("keydown",v,true),window.removeEventListener("blur",_);}return r(T,"dragCleanup"),()=>{e.removeEventListener("pointerdown",h),e.removeEventListener("mouseenter",u),x({cancelled:true}),g();}}r(cr,"makeDraggable");var Ie=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 c(pt(i)),I(i)?null:new n(i,this.#t)}};var Bn=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]=ii(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 J}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=C(t,this.#e);return c(tt(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=C(o,this.#e);return c(tt(a)),a});e(i);})}async getCanvasRoot(){let e=await this.#e.invoke("getCanvasRoot"),t=C(e,this.#e);return c(Fn(t)),t}subscribeToCanvasRoot(e){return this.#e.subscribe("canvasRoot",t=>{let i=C(t,this.#e);c(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=C(i,this.#e);return c(o instanceof O),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?C(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=>C(i,this.#e))}async getNodesWithAttribute(e){return (await this.#e.invoke("getNodesWithAttribute",null,e)).map(i=>C(i,this.#e))}async getNodesWithAttributeSet(e){return (await this.#e.invoke("getNodesWithAttributeSet",null,e)).map(i=>C(i,this.#e))}async getImage(){let e=await this.#e.invoke("getImage");return e?y(this.#e,e):null}subscribeToImage(e){return this.#e.subscribe("image",t=>{if(!t){e(null);return}e(y(this.#e,t));})}async addImage(e){let t=await Ke(e),i=Z(t);return this.#e.invokeTransferable("addImage",i,t)}async setImage(e){let t=await Ke(e),i=Z(t);return this.#e.invokeTransferable("setImage",i,t)}async uploadImage(e){let t=await Ke(e),i=Z(t),o=await this.#e.invokeTransferable("uploadImage",i,t);return y(this.#e,o)}async addImages(e){let t=await Cn(e),i=t.flatMap(Z);await this.#e.invokeTransferable("addImages",i,t);}async uploadImages(e){let t=await Cn(e),i=t.flatMap(Z),o=await this.#e.invokeTransferable("uploadImages",i,t);return y(this.#e,o)}async uploadFile(e){let t=await xn(e),i=await this.#e.invokeTransferable("uploadFile",Z(t),t);return y(this.#e,i)}async uploadFiles(e){let t=await Promise.all(e.map(xn)),i=t.flatMap(Z),o=await this.#e.invokeTransferable("uploadFiles",i,t);return y(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=C(o,this.#e);return c(be(a)),a}async addDetachedComponentLayers({url:e,layout:t,attributes:i}){let o=await this.#e.invoke("addDetachedComponentLayers",{url:e,layout:t,attributes:i}),a=C(o,this.#e);return c(wt(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 cr(this.#e,e,t,i)}async getActiveManagedCollection(){let e=await this.#e.invoke("getActiveManagedCollection");return c(e,"Collection data must be defined"),new he(e,this.#e)}async getManagedCollection(){return this.getActiveManagedCollection()}async getManagedCollections(){let e=await this.#e.invoke("getManagedCollections");return c(e,"Collections data must be defined"),e.map(t=>new he(t,this.#e))}async getCollection(e){let t=await this.#e.invoke("getCollection",e);return t?new ne(t,this.#e):null}async getActiveCollection(){let e=await this.#e.invoke("getActiveCollection");return e?new ne(e,this.#e):null}async getCollections(){return (await this.#e.invoke("getCollections")).map(t=>new ne(t,this.#e))}notify=r((e,t)=>this.#e.notify(e,t),"notify");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 y(this.#e,e)}async getColorStyle(e){let t=await this.#e.invoke("getColorStyle",e);return t?y(this.#e,t):null}async createColorStyle(e){let t=await this.#e.invoke("createColorStyle",e);return y(this.#e,t)}subscribeToColorStyles(e){return this.#e.subscribe("colorStyles",t=>{let i=y(this.#e,t);return e(i)})}async getTextStyles(){let e=await this.#e.invoke("getTextStyles");return y(this.#e,e)}async getTextStyle(e){let t=await this.#e.invoke("getTextStyle",e);return t?y(this.#e,t):null}async createTextStyle(e){let t=await this.#e.invoke("createTextStyle",e);return y(this.#e,t)}subscribeToTextStyles(e){return this.#e.subscribe("textStyles",t=>{let i=y(this.#e,t);return e(i)})}async getFont(e,t){let i=await this.#e.invoke("getFont",e,t);return i?y(this.#e,i):null}async getFonts(){let e=await this.#e.invoke("getFonts");return y(this.#e,e)}getLocales(){return this.#e.invoke("getLocales")}getDefaultLocale(){return this.#e.invoke("getDefaultLocale")}getActiveLocale(){return this.#e.invoke("getActiveLocale")}async getLocalizationGroups(e){return this.#e.invoke("getLocalizationGroups",e)}setLocalizationData(e){return this.#e.invoke("setLocalizationData",e)}async getRedirects(){return (await this.#e.invoke("getRedirects")).map(t=>new Ie(t,this.#e))}subscribeToRedirects(e){return this.#e.subscribe("redirects",t=>{let i=t.map(o=>new Ie(o,this.#e));return e(i)})}async addRedirects(e){return (await this.#e.invoke("addRedirects",e)).map(i=>new Ie(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=C(t,this.#e);return c(i instanceof $,"Expected node to be a DesignPageNode"),i}async createWebPage(e){let t=await this.#e.invoke("createWebPage",e),i=C(t,this.#e);return c(i instanceof K,"Expected node to be a WebPageNode"),i}async createCollection(e){let t=await this.#e.invoke("createCollection",e);return new ne(t,this.#e)}async createManagedCollection(e){let t=await this.#e.invoke("createManagedCollection",e);return new he(t,this.#e)}async setCloseWarning(e){return this.#e.invoke("setCloseWarning",e)}get[l.initialState](){return this.#e.initialState}},Un=class extends Bn{static{r(this,"FramerPluginAPIBeta");}#e;constructor(e){super(e),this.#e=e,this.#e;}},Te=class extends Un{static{r(this,"FramerPluginAPIAlpha");}#e;constructor(e){super(e),this.#e=e,this.#e;}async unstable_getDependencyVersion(e){return this.#e.invoke("unstable_getDependencyVersion",e)}async addComponentInstancePlaceholder(e){let t=await this.#e.invoke("addComponentInstancePlaceholder",e);return new Bt(t,this.#e)}async[l.getAiServiceInfo](e){return this.#e.invoke(mt,e)}async[l.sendTrackingEvent](e,t,i){return this.#e.invoke(ft,e,t,i)}async[l.getCurrentUser](){return this.#e.invoke(yt)}async[l.getProjectInfo](){return this.#e.invoke(ht)}async[l.getHTMLForNode](e){return this.#e.invoke(ge,e)}async[l.setHTMLForNode](e,t){return this.#e.invoke(me,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=C(i,this.#e);return c(o instanceof re),o}async createComponentNode(e){let t=await this.#e.invoke("createNode","ComponentNode",null,{name:e});if(!t)return null;let i=C(t,this.#e);return c(i instanceof oe),i}async getVectorSets(){return (await this.#e.invoke("getVectorSets")).map(t=>new nt(t,this.#e))}async createLocale(e){return this.#e.invoke("createLocale",e)}async getLocaleLanguages(){return this.#e.invoke("getLocaleLanguages")}async getLocaleRegions(e){return this.#e.invoke("getLocaleRegions",e)}async[V.publish](){return this.#e.invoke("publish")}async[V.getDeployments](){return this.#e.invoke("getDeployments")}async[V.deploy](e,t){return this.#e.invoke("deploy",e,t)}async[V.getChangedPaths](){return this.#e.invoke("getChangedPaths")}async[V.getChangeContributors](e,t){return this.#e.invoke("getChangeContributors",e,t)}async[V.createManagedCollection](e){return this.createManagedCollection(e)}[V.rejectAllPending](e){this.#e.rejectAllPending(e);}async[V.ping](){return this.#e.invoke("ping")}},Ut=class{static{r(this,"FramerAgentAPI");}#e;constructor(e){this.#e=e;}async getSystemPrompt(){return this.#e.invoke("getAgentSystemPrompt")}async getContext(e){return this.#e.invoke("getAgentContext",e)}async readProject(e,t){return this.#e.invoke("readProjectForAgent",e,t)}async readComponentControls(e,t){return this.#e.invoke("readComponentControlsForAgent",e,t)}async readIconSetControls(e,t){return this.#e.invoke("readIconSetControlsForAgent",e,t)}async readIcons(e,t){return this.#e.invoke("readIconsForAgent",e,t)}async readLayoutTemplateControls(e,t){return this.#e.invoke("readLayoutTemplateControlsForAgent",e,t)}async readShaderControls(e,t){return this.#e.invoke("readShaderControlsForAgent",e,t)}async applyChanges(e,t){return this.#e.invoke("applyAgentChanges",e,t)}async publish(e){return this.#e.invoke("publishForAgent",e)}async queryImages(e){return this.#e.invoke("queryImagesForAgent",e)}async reviewChanges(e){return this.#e.invoke("reviewChangesForAgent",e)}async flattenComponentInstance(e,t){return this.#e.invoke("flattenComponentInstanceForAgent",e,t)}async makeExternalComponentLocal(e,t){return this.#e.invoke("makeExternalComponentLocalForAgent",e,t)}async getNode(e,t){return this.#e.invoke("getNodeForAgent",e,t)}async getNodes(e,t){return this.#e.invoke("getNodesForAgent",e,t)}async getNodesOfTypes(e,t){return this.#e.invoke("getNodesOfTypesForAgent",e,t)}async getScopeNode(e,t){return this.#e.invoke("getScopeNodeForAgent",e,t)}async getGroundNode(e,t){return this.#e.invoke("getGroundNodeForAgent",e,t)}async getParentNode(e,t){return this.#e.invoke("getParentNodeForAgent",e,t)}async getAncestors(e,t){return this.#e.invoke("getAncestorsForAgent",e,t)}async serialize(e,t){return this.#e.invoke("serializeForAgent",e,t)}async serializeNodes(e,t){return this.#e.invoke("serializeNodesForAgent",e,t)}async paginate(e,t){return this.#e.invoke("paginateForAgent",e,t)}async startConversation(e,t){return this.#e.invoke("startAgentConversation",e,t)}async continueConversation(e,t){return this.#e.invoke("continueAgentConversation",e,t)}async submitClarification(e){return this.#e.invoke("submitAgentClarification",e)}async runSupervisorCommand(e){return this.#e.invoke("runSupervisorAgentCommand",e)}};var On=class{constructor(e){this.origin=e;}origin;static{r(this,"IframeTransport");}send(e,t){window.parent.postMessage(e,this.origin,t);}onMessage(e){window.addEventListener("message",e);}};async function la(){return new Promise(n=>{function e({data:t,origin:i}){if(!sr(t))return;window.removeEventListener("message",e);let a={transport:new On(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(or,"*");})}r(la,"createBrowserContext");async function da(){return typeof window>"u"||"Deno"in globalThis?null:la()}r(da,"bootstrap");var pr=await da(),ae=pr?new Te(new Ce(pr)):new Proxy({},{get(n,e){throw new Error(`Cannot access framer.${String(e)} in server runtime. Use createFramerInstance() with a custom transport.`)}});var gr={};function ca(n){if(env)try{Object.assign(env,n);}catch{}Object.assign(gr,n);}r(ca,"configure");function Pe(n,e){let t=gr[n]??env[n];return t&&t.length>0?t:e}r(Pe,"getEnv");var mr=isWorkerd,Gn=globalThis.WebSocket;async function fr(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(fr,"connectWebSocketCF");async function yr(){try{return {fs:await import('fs'),path:await import('path')}}catch{return {}}}r(yr,"getNodeModules");var se=(v=>(v.PROJECT_CLOSED="PROJECT_CLOSED",v.POOL_EXHAUSTED="POOL_EXHAUSTED",v.TIMEOUT="TIMEOUT",v.INTERNAL="INTERNAL",v.NODE_NOT_FOUND="NODE_NOT_FOUND",v.SCREENSHOT_TOO_LARGE="SCREENSHOT_TOO_LARGE",v.SCREENSHOT_PREPARE_FAILED="SCREENSHOT_PREPARE_FAILED",v.EXPORT_SVG_FAILED="EXPORT_SVG_FAILED",v.INVALID_REQUEST="INVALID_REQUEST",v.INVALID_RELEASE_CHANNEL="INVALID_RELEASE_CHANNEL",v.UNAUTHORIZED="UNAUTHORIZED",v))(se||{}),D=class extends Error{static{r(this,"FramerAPIError");}code;ref;retryable;recentMethods;constructor(e,t,i){super(e),this.name="FramerAPIError",this.code=t,i?.ref!==void 0&&(this.ref=i.ref),this.retryable=i?.retryable??false,i?.recentMethods!==void 0&&(this.recentMethods=i.recentMethods),this.stack=void 0;}toString(){let e=super.toString();return this.ref?`${e} [ref: ${this.ref}]`:e}};function pa(n){return n instanceof D?n.code==="POOL_EXHAUSTED"||n.retryable:false}r(pa,"isRetryableError");var ga=new Map(Object.values(se).map(n=>[n,n]));function br(n){return typeof n=="string"?ga.get(n)??"INTERNAL":"INTERNAL"}r(br,"parseErrorCode");var ma={pluginMarshalTag:At};var Kn={silent:0,error:1,warn:2,info:3,debug:4};function fa(){let n=Pe("FRAMER_API_LOG_LEVEL")?.toLowerCase();return n&&n in Kn?n:"warn"}r(fa,"getLogLevel");var $n=fa();function rt(n){return Kn[n]<=Kn[$n]}r(rt,"shouldLog");var ot=globalThis.console,ya="\x1B[90m",ha="\x1B[0m";function ba(n){return n?`[FramerAPI:${n}]`:"[FramerAPI]"}r(ba,"formatPrefix");function xa(n,...e){return [ya+n,...e,ha]}r(xa,"formatDebug");function xr(n){let e=ba(n);return {warn:r((...t)=>{rt("warn")&&ot.warn(e,...t);},"warn"),error:r((...t)=>{rt("error")&&ot.error(e,...t);},"error"),log:r((...t)=>{rt("info")&&ot.log(e,...t);},"log"),info:r((...t)=>{rt("info")&&ot.info(e,...t);},"info"),debug:r((...t)=>{rt("debug")&&ot.debug(...xa(e,...t));},"debug"),setLevel:r(t=>{$n=t;},"setLevel"),getLevel:r(()=>$n,"getLevel"),withRequestId:r(t=>xr(t),"withRequestId")}}r(xr,"createLogger");var N=xr();N.warn;N.error;N.log;N.info;N.debug;N.setLevel;N.getLevel;var Ot="0.1.14";var Cr="wss://api.framer.com/channel/headless-plugin";function Se(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(
|
|
9
|
-
`)};return n.logs&&console?.warn("extras.logs is reserved for log replay buffer, use another key"),e},"enrichWithLogs"),Kt=class{constructor(e,t){this.id=e;this.errorIsCritical=t??(e==="fatal"||e.endsWith(":fatal"));}id;static{r(this,"Logger");}level=3;didLog={};errorIsCritical;extend(e){let t=this.id+":"+e;return dt(t)}getBufferedMessages(){return H.filter(e=>e.logger===this)}setLevel(e){let t=this.level;return this.level=e,t}isLoggingTraceMessages(){return this.level>=0}trace=r((...e)=>{if(this.level>0)return;let t=le(this,0,e);console?.log(...t.toConsoleMessage());},"trace");debug=r((...e)=>{let t=le(this,1,e);this.level>1||console?.log(...t.toConsoleMessage());},"debug");info=r((...e)=>{let t=le(this,2,e);this.level>2||console?.info(...t.toConsoleMessage());},"info");warn=r((...e)=>{let t=le(this,3,e);this.level>3||console?.warn(...t.toConsoleMessage());},"warn");warnOncePerMinute=r((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=le(this,3,t);this.level>3||console?.warn(...o.toConsoleMessage());},"warnOncePerMinute");error=r((...e)=>{let t=le(this,4,e);this.level>4||console?.error(...t.toConsoleMessage());},"error");errorOncePerMinute=r((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=le(this,4,t);this.level>4||console?.error(...o.toConsoleMessage());},"errorOncePerMinute");reportWithoutLogging=r((e,t,i,o)=>{let a=Za(t??{}),s=jr({caller:this.reportWithoutLogging,error:e,tags:{...i,where:this.id},extras:t,critical:o??this.errorIsCritical});return [a,s]},"reportWithoutLogging");reportError=r((e,t,i,o)=>{let[a,s]=this.reportWithoutLogging(e,t,i,o);a?this.error(s,a):this.error(s);},"reportError");reportErrorWithThrottle=r((e,t,i,o,a)=>{if(!Ja(t))return;let s=this.didLog[t.message];s&&s>Date.now()||(this.didLog[t.message]=Date.now()+e,this.reportError(t,i,o,a));},"reportErrorWithThrottle");reportErrorOncePerMinute=r((e,t,i,o)=>this.reportErrorWithThrottle(1e3*60,e,t,i,o),"reportErrorOncePerMinute");reportErrorOnceEveryTenMinutes=r((e,t,i,o)=>this.reportErrorWithThrottle(1e3*60*10,e,t,i,o),"reportErrorOnceEveryTenMinutes");reportCriticalError=r((e,t,i)=>this.reportError(e,t,i,true),"reportCriticalError")};function Ja(n){return Object.prototype.hasOwnProperty.call(n,"message")}r(Ja,"isErrorWithMessage");function ro(n){return n.replace(/[/\-\\^$*+?.()|[\]{}]/gu,"\\$&")}r(ro,"escapeRegExp");function Qa(n,e,t){let i=yi[t];if(!i)return n;let o=`${i}: [${e}]`,a=ro(o).replace("\\[","\\*?\\["),s=new RegExp(`^(?:T?\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z\\s+)?${a}\\s*`);return n.replace(s,"")}r(Qa,"stripLogEntryPrefix");var so;(_=>{function n(x,...c){return x.concat(c)}_.push=n,r(n,"push");function e(x){return x.slice(0,-1)}_.pop=e,r(e,"pop");function t(x,...c){return c.concat(x)}_.unshift=t,r(t,"unshift");function i(x,c,...P){let p=x.length;if(c<0||c>p)throw Error("index out of range: "+c);let b=x.slice();return b.splice(c,0,...P),b}_.insert=i,r(i,"insert");function o(x,c,P){let p=x.length;if(c<0||c>=p)throw Error("index out of range: "+c);let b=Array.isArray(P)?P:[P],w=x.slice();return w.splice(c,1,...b),w}_.replace=o,r(o,"replace");function a(x,c){let P=x.length;if(c<0||c>=P)throw Error("index out of range: "+c);let p=x.slice();return p.splice(c,1),p}_.remove=a,r(a,"remove");function s(x,c,P){let p=x.length;if(c<0||c>=p)throw Error("from index out of range: "+c);if(P<0||P>=p)throw Error("to index out of range: "+P);let b=x.slice();if(P===c)return b;let w=b[c];return c<P?(b.splice(P+1,0,w),b.splice(c,1)):(b.splice(c,1),b.splice(P,0,w)),b}_.move=s,r(s,"move");function d(x,c){let P=[],p=Math.min(x.length,c.length);for(let b=0;b<p;b++)P.push([x[b],c[b]]);return P}_.zip=d,r(d,"zip");function g(x,c,P){let p=x.slice(),b=p[c];return b===void 0||(p[c]=P(b)),p}_.update=g,r(g,"update");function C(x){return Array.from(new Set(x))}_.unique=C,r(C,"unique");function F(x,...c){return Array.from(new Set([...x,...c.flat()]))}_.union=F,r(F,"union");function D(x,c){return x.filter(c)}_.filter=D,r(D,"filter");})(so||={});var os=Object.prototype.hasOwnProperty;function as(n,e){return os.call(n,e)}r(as,"hasOwnProperty");var lo;(i=>{function n(o,a){for(let s of Object.keys(o))as(a,s)||delete o[s];for(let s of Object.keys(a))o[s]===void 0&&(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");})(lo||={});var uo;(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 g of s)d.delete(g);return d}o.remove=e,r(e,"remove");function t(...a){let s=new Set;for(let d of a)for(let g of d)s.add(g);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");})(uo||={});var co;(i=>{function n(o,...a){let s=new Map;o.forEach((g,C)=>s.set(C,g));let d=false;for(let g of a)g&&(g.forEach((C,F)=>s.set(F,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");})(co||={});var $t=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);};}};$t.prototype.constructor=Promise;dt("task-queue");function po(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(po,"isObject");var us=-1,cs=1e3,Ht=class{static{r(this,"WebSocketTransport");}onError;closed=false;ws;messageHandlers=new Set;chunkBuffers=new Map;#e;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=r(e=>{this.removeListeners(),this.closed=true,this.chunkBuffers.clear();let t=this.#e;if(t&&Date.now()-t.at<=cs){this.onError?.(t.error);return}let i=e?.code,o=i!==void 0?`Connection closed (code: ${i})`:"Connection closed";this.onError?.(new N(o,"PROJECT_CLOSED",{retryable:true}));},"handleClose");handleMessage=r(e=>{let t=typeof e.data=="string"?e.data:String(e.data),i=this.tryParseChunkEnvelope(t);if(i){let o=this.handleChunk(i);if(!o)return;let a=new MessageEvent("message",{data:o});if(this.tryHandleDebugArchive(o))return;for(let s of this.messageHandlers)s(a);return}if(!this.tryHandleDebugArchive(t))for(let o of this.messageHandlers)o(e);},"handleMessage");tryHandleDebugArchive(e){try{let t=ue.parse(e);if(po(t)&&t.type==="debug-archive")return t.data instanceof Uint8Array?(Ci(t.data),!0):!1}catch{}return false}replaceSocket(e){this.removeListeners(),this.chunkBuffers.clear(),this.#e=void 0,this.ws=e,this.closed=false,this.setupListeners();}setOnError(e){this.onError=e;}send(e){if(this.closed)throw new N("Connection closed","PROJECT_CLOSED");this.ws.send(ue.stringify(e,{[Et]:t=>In(t)&&W(t)}));}handleChunk(e){let t=this.chunkBuffers.get(e.id);return t||(t=[],this.chunkBuffers.set(e.id,t)),t.push(e.data),e.seq===us?(this.chunkBuffers.delete(e.id),t.join("")):null}tryParseChunkEnvelope(e){if(!e.startsWith('{"$chunk":'))return null;try{let t=JSON.parse(e);if(t.$chunk===1&&typeof t.id=="string"&&typeof t.seq=="number")return t}catch{}return null}onMessage(e){let t=r(i=>{let o=typeof i.data=="string"?i.data:String(i.data);this.dispatchMessage(o,e);},"listener");this.messageHandlers.add(t);}dispatchMessage(e,t){let i=ue.parse(e);if(po(i)&&i.type==="error"){let o=i.message||JSON.stringify(i),a=i.code??"INTERNAL",s=typeof i.ref=="string"?i.ref:void 0,d=i.retryable===true,g=Array.isArray(i.recentMethods)?i.recentMethods.filter(F=>typeof F=="string"):void 0;A.error(s?`Server error: ${o} [ref: ${s}]`:`Server error: ${o}`);let C=new N(`Server error: ${o}`,a,{ref:s,retryable:d,recentMethods:g});this.#e={error:C,at:Date.now()},this.onError?.(C);return}t(i);}};async function Ci(n){let{fs:e,path:t}=await Ur();Te(e,"File system module is not available."),Te(t,"Path module is not available.");let o=`debug-archive-${new Date().toISOString().replace(/[:.]/gu,"-")}.zip`,a=process.cwd(),s=t.resolve(a,o);e.writeFileSync(s,Buffer.from(n)),A.info(`Debug archive saved to ${s}`);}r(Ci,"handleDebugArchive");function de(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(de,"isObject");var ps={type:"pluginReadySignal"};function gs(n){return de(n)&&n.type==="pluginReadyResponse"}r(gs,"isPluginReadyResponse");var go=9e4,ms=2e4;function fs(n,e){return new Promise(t=>{let i=setTimeout(()=>{n.removeEventListener("message",o),t();},e),o=r(a=>{if(!(typeof a.data!="string"&&!(a.data instanceof String)))try{let s=ue.parse(a.data);de(s)&&s.type==="disconnect-ack"&&(clearTimeout(i),n.removeEventListener("message",o),t());}catch{}},"handler");n.addEventListener("message",o);})}r(fs,"waitForDisconnectAck");async function ys(n,e){let t={Authorization:`Token ${e}`};if(Rr)return A.debug("Using Cloudflare Workers WebSocket connection"),Br(n,t);if(isDeno)return new ui(n.href,[`token.${e}`]);let i=n.hostname==="api.framerlocal.com",o=process.env.NODE_TLS_REJECT_UNAUTHORIZED;i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0"),A.debug("Using standard WebSocket connection");let a=new ui(n.href,{headers:t});return i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED=o),a}r(ys,"createWebSocket");async function jt(n,e,t,i){let o=new URL(i??Ie("FRAMER_HEADLESS_SERVER_URL",Kr));o.protocol=o.protocol==="https:"?"wss:":o.protocol==="http:"?"ws:":o.protocol,o.searchParams.set("projectId",n),o.searchParams.set("sdkVersion",Ut),t&&o.searchParams.set("clientId",t),A.debug(`Connecting to ${o.href}`);let a=await ys(o,e);A.debug(`WebSocket created, readyState: ${a.readyState}`);let s,d,g=A,C=false,F=setInterval(()=>{a.readyState===a.OPEN&&(a.send(ue.stringify({type:"ping"})),g.debug("Sent ping"));},ms),D=r(()=>{clearInterval(F),a.readyState!==a.CLOSED&&a.readyState!==a.CLOSING&&a.close(1e3,"Client disconnect");},"forceClose"),_=r(async()=>{clearInterval(F),!(a.readyState===a.CLOSED||a.readyState===a.CLOSING)&&(C&&(g.debug("Initiating graceful disconnect"),a.send(ue.stringify({type:"client-disconnect"})),await fs(a,15e3)),a.readyState!==a.CLOSED&&a.readyState!==a.CLOSING&&a.close(1e3,"Client disconnect"));},"cleanup"),x=await new Promise((c,P)=>{let p=setTimeout(()=>{D(),P(new N(`Connection timeout after ${go}ms`,"TIMEOUT"));},go),b=r(()=>{g.debug("WebSocket opened, waiting for ready");},"onOpen"),w=r(E=>{g.debug("WebSocket error:",E),clearTimeout(p),D(),P(new N("No connection to the server","INTERNAL"));},"onError"),z=r(E=>{g.debug(`WebSocket closed: code=${E.code}, reason=${E.reason||"(no reason)"}, wasClean=${E.wasClean}`),clearTimeout(p),clearInterval(F),P(new N(`Connection to the server was closed (code: ${E.code})`,"PROJECT_CLOSED"));},"onClose");function ee(E){g.debug("Received message");let ct=typeof E.data=="string"?E.data:E.data.toString(),S=ue.parse(ct);if(g.debug(`Message type: ${S.type}`),S.type==="error"){clearTimeout(p),a.removeEventListener("close",z),a.removeEventListener("error",w);let ce=zr(S.code),Ti=de(S)&&"ref"in S&&typeof S.ref=="string"?S.ref:void 0;P(new N(S.message||"Server error",ce,Ti?{ref:Ti}:void 0)),D();}else S.type==="ready"?(de(S)&&"requestId"in S&&(s=String(S.requestId),g=A.withRequestId(s),g.debug(`Server request ID: ${s}`)),de(S)&&"sessionId"in S&&(d=String(S.sessionId),g.debug(`Server session ID: ${d}`)),de(S)&&"version"in S&&g.debug(`Server version: ${S.version}`),de(S)&&S.gracefulDisconnect===true&&(C=true),g.debug("Sending pluginReadySignal"),a.send(ue.stringify(ps))):S.type==="debug-archive"?S.data instanceof Uint8Array&&Ci(S.data):gs(S)&&(clearTimeout(p),a.removeEventListener("message",ee),a.removeEventListener("error",w),a.removeEventListener("close",z),c(S));}r(ee,"handshakeMessageHandler"),a.addEventListener("open",b),a.addEventListener("message",ee),a.addEventListener("error",w),a.addEventListener("close",z);});return a.addEventListener("close",()=>{_();}),{ws:a,pluginReadyData:x,requestId:s,sessionId:d,clientId:t,logger:g,gracefulDisconnect:C,cleanup:_}}r(jt,"connectAndHandshake");var mo={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_getDependencyVersion: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,createLocale:true,getLocaleLanguages:true,getLocaleRegions: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 Ii(n){return n in mo?mo[n]===true:false}r(Ii,"isAllowedMethod");var _t=class n{static{r(this,"FramerAPI");}requestId;sessionId;#e;#t;#n;#i=new Map;#r=new Map;#p=0;#a;#s;#l;#d;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.sessionId=e.sessionId,this.#d=e.clientId,this.#n.onMessage(t=>{this.#g(t);}),this.#n.setOnError(t=>{this.#u(t);});}#u(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[h.rejectAllPending](e);}#c(){return `req-${++this.#p}-${Date.now()}`}#g=r(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 N(e.error,i,e.ref?{ref:e.ref}:void 0));}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 N(e.error,i,e.ref?{ref:e.ref}:void 0));}return true}default:return false}},"#handleServerApiResponse");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(ni(o)){let s=h[o],d=Reflect.get(i.#t,s);return typeof d=="function"?d.bind(i.#t):d}if(!Ii(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||ni(o)?true:Ii(o)?o in i.#t:false}})}async#o(){this.#u(new N("Connection closed","PROJECT_CLOSED")),await this.#e();}disconnect=r(()=>this.#o(),"disconnect");reconnect=r(async()=>{await this.#o();let e=await jt(this.#a,this.#s,this.#d,this.#l);this.#n.replaceSocket(e.ws),this.#e=e.cleanup,this.requestId=e.requestId,this.sessionId=e.sessionId;},"reconnect");screenshot=r((e,t)=>{let i=this.#c(),{format:o,quality:a,scale:s,clip:d}=t??{};return new Promise((g,C)=>{this.#i.set(i,{resolve:g,reject:C}),this.#n.send({type:"screenshot",id:i,nodeId:e,format:o,quality:a,scale:s,clip:d});})},"screenshot");exportSVG=r(e=>{let t=this.#c();return new Promise((i,o)=>{this.#r.set(t,{resolve:i,reject:o}),this.#n.send({type:"exportSVG",id:t,nodeId:e});})},"exportSVG");[Symbol.dispose]=()=>{this.#o();};[Symbol.asyncDispose]=()=>this.#o()};var hs=/^.+--([A-Za-z0-9]+)/u,fo=/^[A-Za-z0-9]{20}$/u;function yo(n){if(fo.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(hs)?.[1]??a;if(fo.test(d))return d}}return null}catch{return null}}r(yo,"parseProjectId");async function ho(n,e,t){let i=performance.now();if(!n)throw new N("FRAMER_PROJECT_URL environment variable is required","INVALID_REQUEST");let o=yo(n);if(!o)throw new N(`Invalid project URL or ID: ${n}`,"INVALID_REQUEST");let a=e??Ie("FRAMER_API_KEY");if(!a)throw new N("FRAMER_API_KEY environment variable is required","INVALID_REQUEST");let s=t?.clientId?.trim()||`framer-api/${Ut}`,d=await jt(o,a,s,t?.serverUrl);try{let g=new Ht(d.ws),C={transport:g,mode:d.pluginReadyData.mode,permissionMap:d.pluginReadyData.permissionMap,environmentInfo:d.pluginReadyData.environmentInfo,origin:null,theme:null,initialState:d.pluginReadyData.initialState},F=Lr(C),D=r(async()=>{let _=((performance.now()-i)/1e3).toFixed(2);d.logger.debug(`Connection ended after ${_}s`),await d.cleanup();},"cleanup");return _t.create({pluginAPI:F,transport:g,cleanup:D,projectId:o,apiKey:a,serverUrl:t?.serverUrl,clientId:d.clientId,requestId:d.requestId,sessionId:d.sessionId})}catch(g){throw await d.cleanup(),g}}r(ho,"connect");async function bs(n,e,t,i){let o=await ho(n,t,i);try{return await e(o)}finally{await o.disconnect();}}r(bs,"withConnection");
|
|
10
|
-
export{
|
|
8
|
+
`));}catch{}throw t}r(Se,"assert");var Tr=false;function Pr({error:n,tags:e,extras:t,critical:i,caller:o}){let a=jn(n,o);return Tr||(Tr=true,console.error("Set up an error callback with setErrorReporter, or configure Sentry with initializeEnvironment")),a}r(Pr,"reportError");function jn(n,e=jn){return n instanceof Error?n:new Hn(n,e)}r(jn,"reportableError");var Hn=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 at=typeof window<"u"&&!("Deno"in globalThis)?window.location.hostname:void 0,Sr=!!(at&&["web.framerlocal.com","localhost","127.0.0.1","[::1]"].includes(at)),_n=(()=>{if(!at)return;if(Sr)return {main:at,previewLink:void 0};let n=/^(([^.]+\.)?beta\.)?((?:development\.)?framer\.com)$/u,e=at.match(n);if(!(!e||!e[3]))return {previewLink:e[2]&&e[0],main:e[3]}})();({isDevelopment:_n?.main==="development.framer.com",isProduction:_n?.main==="framer.com"});var zt;function Gt(){return typeof window>"u"?{}:zt||(zt=Ta(),zt)}r(Gt,"getServiceMap");function Ta(){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(Ta,"extractServiceMap");function st(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 st(n.toJSON(),e+1,t);if(Array.isArray(n))return n.map(i=>st(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]=st(a,e+1,t);return i}}catch(i){return `[Throws: ${i instanceof Error?i.message:i}]`}finally{t.delete(n);}}r(st,"jsonSafeCopy");var qn=["trace","debug","info","warn","error"],Pa=["\u{1F50D}","\u{1F9EA}","\u2139\uFE0F","\u26A0\uFE0F","\u274C"],Sa=[":trace",":debug",":info",":warn",":error"],Dr="logTimestamps";function kr(n){return new Date(n).toISOString().substring(10,24)}r(kr,"formatLogTimestamp");function Nr(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 x=0;x<=4;x++){let S=Sa[x];if(S&&o.endsWith(S)){a=x,s&&(a+=1),o=o.slice(0,o.length-S.length),o.length===0&&(o="*");break}}let d=new RegExp("^"+Lr(o).replace(/\\\*/gu,".*")+"$"),g=0;for(let x of e)x.id.match(d)&&(x.level=a,++g);g===0&&t.push(i);}return t}r(Nr,"applyLogLevelSpec");var lt=class n{constructor(e,t,i){this.logger=e;this.level=t;this.parts=i;this.id=n.nextId++,this.time=Date.now();}logger;level;parts;static{r(this,"LogEntry");}static nextId=0;id;time;stringPrefix;cachedMessage;toMessage(){if(this.stringPrefix)return this.cachedMessage??this.parts;let e=[qn[this.level]+": ["+this.logger.id+"]"];Kt&&e.unshift(kr(this.time)),this.stringPrefix=e.join(" ");let t=this.parts[0];if(typeof t=="string"){let i=Ea(t,this.logger.id,this.level);this.cachedMessage=[i.length>0?`${this.stringPrefix} ${i}`:this.stringPrefix,...this.parts.slice(1)];}else this.cachedMessage=[this.stringPrefix,...this.parts];return this.cachedMessage}resetMessagePrefix(){this.stringPrefix=void 0,this.cachedMessage=void 0;}toConsoleMessage(){let e=this.toMessage().slice(),t=e[0];if(typeof t!="string")return e;let i=qn[this.level],o=Pa[this.level];i&&o&&(e[0]=t.replace(`${i}:`,`${o}`));let a=`[${this.logger.id}]`,s=e[0];if(typeof s!="string")return e;let d=s.indexOf(a);return d<0||(e[0]=s.slice(0,d)+"%c"+a+"%c"+s.slice(d+a.length),e.splice(1,0,"color: #9ca3af","")),e}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(st(e));return i?.length>253?i.slice(0,250)+"...":i}).join(" ")}},j="*:app:info,app:info",Kt=true,Er=typeof process<"u"&&!!process.kill,Fa=Er&&!!process.env.CI;Fa?j="-:warn":Er&&(j="");try{typeof window<"u"&&window.localStorage&&(j=window.localStorage.logLevel||j,Kt=window.localStorage[Dr]!=="false");}catch{}try{typeof process<"u"&&(j=process.env.DEBUG||j);}catch{}try{typeof window<"u"&&Object.assign(window,{setLogLevel:wr,setLogTimestamps:Vr});}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=dt(e);if(t<0||t>5)return;i[0]=i[0].replace("[","*[");let s=new lt(a,t,i);s.stringPrefix=i[0],H.push(s),!o&&(a.level>t||console?.log(...s.toConsoleMessage()));});}catch{}var Xn;try{typeof window<"u"&&window.postMessage&&window.parent!==window&&!window.location.pathname.startsWith("/edit")&&(Xn=r(n=>{try{let e=n.toMessage().map(s=>st(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,Gt().app);}catch{}},"postLogEntry"));}catch{}var Yn={},H=[],Ar=1e3;function le(n,e,t){let i=new lt(n,e,t);for(H.push(i),Xn?.(i);H.length>Ar;)H.shift();return i}r(le,"createLogEntry");function Mr(n){return typeof n=="number"&&(Ar=n),H}r(Mr,"getLogReplayBuffer");var va=/\/(?<filename>[^/.]+)(?=\.(?:debug\.)?html$)/u,vr;function Da(){if(!(typeof window>"u"||!window.location))return vr??=va.exec(window.location.pathname)?.groups?.filename,vr}r(Da,"getFilenameFromWindowPathname");function dt(n){let e=Da();n=(e?e+":":"")+n;let t=Yn[n];if(t)return t;let i=new $t(n);return Yn[n]=i,Nr(j,[i]),Xn?.(new lt(i,-1,[])),i}r(dt,"getLogger");function wr(n,e=true){try{typeof window<"u"&&window.localStorage&&(window.localStorage.logLevel=n);}catch{}let t=j;j=n;let i=Object.values(Yn);for(let a of i)a.level=3;let o=Nr(n,i);if(o.length>0&&console?.warn("Some log level specs matched no loggers:",o),e&&H.length>0){console?.log("--- LOG REPLAY ---");for(let a of H)a.logger.level>a.level||(a.level>=3?console?.warn(...a.toConsoleMessage()):console?.log(...a.toConsoleMessage()));console?.log("--- END OF LOG REPLAY ---");}return t}r(wr,"setLogLevel");function Vr(n){let e=Kt;Kt=n;for(let t of H)t.resetMessagePrefix();try{typeof window<"u"&&window.localStorage&&(window.localStorage[Dr]=String(n));}catch{}return e}r(Vr,"setLogTimestamps");var ka=r(n=>{let e={...n,logs:Mr().slice(-50).map(t=>t.toString().slice(0,600)).join(`
|
|
9
|
+
`)};return n.logs&&console?.warn("extras.logs is reserved for log replay buffer, use another key"),e},"enrichWithLogs"),$t=class{constructor(e,t){this.id=e;this.errorIsCritical=t??(e==="fatal"||e.endsWith(":fatal"));}id;static{r(this,"Logger");}level=3;didLog={};errorIsCritical;extend(e){let t=this.id+":"+e;return dt(t)}getBufferedMessages(){return H.filter(e=>e.logger===this)}setLevel(e){let t=this.level;return this.level=e,t}isLoggingTraceMessages(){return this.level>=0}trace=r((...e)=>{if(this.level>0)return;let t=le(this,0,e);console?.log(...t.toConsoleMessage());},"trace");debug=r((...e)=>{let t=le(this,1,e);this.level>1||console?.log(...t.toConsoleMessage());},"debug");info=r((...e)=>{let t=le(this,2,e);this.level>2||console?.info(...t.toConsoleMessage());},"info");warn=r((...e)=>{let t=le(this,3,e);this.level>3||console?.warn(...t.toConsoleMessage());},"warn");warnOncePerMinute=r((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=le(this,3,t);this.level>3||console?.warn(...o.toConsoleMessage());},"warnOncePerMinute");error=r((...e)=>{let t=le(this,4,e);this.level>4||console?.error(...t.toConsoleMessage());},"error");errorOncePerMinute=r((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=le(this,4,t);this.level>4||console?.error(...o.toConsoleMessage());},"errorOncePerMinute");reportWithoutLogging=r((e,t,i,o)=>{let a=ka(t??{}),s=Pr({caller:this.reportWithoutLogging,error:e,tags:{...i,where:this.id},extras:t,critical:o??this.errorIsCritical});return [a,s]},"reportWithoutLogging");reportError=r((e,t,i,o)=>{let[a,s]=this.reportWithoutLogging(e,t,i,o);a?this.error(s,a):this.error(s);},"reportError");reportErrorWithThrottle=r((e,t,i,o,a)=>{if(!Na(t))return;let s=this.didLog[t.message];s&&s>Date.now()||(this.didLog[t.message]=Date.now()+e,this.reportError(t,i,o,a));},"reportErrorWithThrottle");reportErrorOncePerMinute=r((e,t,i,o)=>this.reportErrorWithThrottle(1e3*60,e,t,i,o),"reportErrorOncePerMinute");reportErrorOnceEveryTenMinutes=r((e,t,i,o)=>this.reportErrorWithThrottle(1e3*60*10,e,t,i,o),"reportErrorOnceEveryTenMinutes");reportCriticalError=r((e,t,i)=>this.reportError(e,t,i,true),"reportCriticalError")};function Na(n){return Object.prototype.hasOwnProperty.call(n,"message")}r(Na,"isErrorWithMessage");function Lr(n){return n.replace(/[/\-\\^$*+?.()|[\]{}]/gu,"\\$&")}r(Lr,"escapeRegExp");function Ea(n,e,t){let i=qn[t];if(!i)return n;let o=`${i}: [${e}]`,a=Lr(o).replace("\\[","\\*?\\["),s=new RegExp(`^(?:T?\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z\\s+)?${a}\\s*`);return n.replace(s,"")}r(Ea,"stripLogEntryPrefix");var Br;(_=>{function n(h,...u){return h.concat(u)}_.push=n,r(n,"push");function e(h){return h.slice(0,-1)}_.pop=e,r(e,"pop");function t(h,...u){return u.concat(h)}_.unshift=t,r(t,"unshift");function i(h,u,...T){let p=h.length;if(u<0||u>p)throw Error("index out of range: "+u);let b=h.slice();return b.splice(u,0,...T),b}_.insert=i,r(i,"insert");function o(h,u,T){let p=h.length;if(u<0||u>=p)throw Error("index out of range: "+u);let b=Array.isArray(T)?T:[T],M=h.slice();return M.splice(u,1,...b),M}_.replace=o,r(o,"replace");function a(h,u){let T=h.length;if(u<0||u>=T)throw Error("index out of range: "+u);let p=h.slice();return p.splice(u,1),p}_.remove=a,r(a,"remove");function s(h,u,T){let p=h.length;if(u<0||u>=p)throw Error("from index out of range: "+u);if(T<0||T>=p)throw Error("to index out of range: "+T);let b=h.slice();if(T===u)return b;let M=b[u];return u<T?(b.splice(T+1,0,M),b.splice(u,1)):(b.splice(u,1),b.splice(T,0,M)),b}_.move=s,r(s,"move");function d(h,u){let T=[],p=Math.min(h.length,u.length);for(let b=0;b<p;b++)T.push([h[b],u[b]]);return T}_.zip=d,r(d,"zip");function g(h,u,T){let p=h.slice(),b=p[u];return b===void 0||(p[u]=T(b)),p}_.update=g,r(g,"update");function x(h){return Array.from(new Set(h))}_.unique=x,r(x,"unique");function S(h,...u){return Array.from(new Set([...h,...u.flat()]))}_.union=S,r(S,"union");function v(h,u){return h.filter(u)}_.filter=v,r(v,"filter");})(Br||={});var Wa=Object.prototype.hasOwnProperty;function Ra(n,e){return Wa.call(n,e)}r(Ra,"hasOwnProperty");var Ur;(i=>{function n(o,a){for(let s of Object.keys(o))Ra(a,s)||delete o[s];for(let s of Object.keys(a))o[s]===void 0&&(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");})(Ur||={});var Or;(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 g of s)d.delete(g);return d}o.remove=e,r(e,"remove");function t(...a){let s=new Set;for(let d of a)for(let g of d)s.add(g);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");})(Or||={});var zr;(i=>{function n(o,...a){let s=new Map;o.forEach((g,x)=>s.set(x,g));let d=false;for(let g of a)g&&(g.forEach((x,S)=>s.set(S,x)),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");})(zr||={});var Ht=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);};}};Ht.prototype.constructor=Promise;dt("task-queue");function Gr(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(Gr,"isObject");var za=-1,Ga=1e3,jt=class{static{r(this,"WebSocketTransport");}onError;closed=false;ws;messageHandlers=new Set;chunkBuffers=new Map;#e;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=r(e=>{this.removeListeners(),this.closed=true,this.chunkBuffers.clear();let t=this.#e;if(t&&Date.now()-t.at<=Ga){this.onError?.(t.error);return}let i=e?.code,o=i!==void 0?`Connection closed (code: ${i})`:"Connection closed";this.onError?.(new D(o,"PROJECT_CLOSED",{retryable:true}));},"handleClose");handleMessage=r(e=>{let t=typeof e.data=="string"?e.data:String(e.data),i=this.tryParseChunkEnvelope(t);if(i){let o=this.handleChunk(i);if(!o)return;let a=new MessageEvent("message",{data:o});if(this.tryHandleDebugArchive(o))return;for(let s of this.messageHandlers)s(a);return}if(!this.tryHandleDebugArchive(t))for(let o of this.messageHandlers)o(e);},"handleMessage");tryHandleDebugArchive(e){try{let t=ue.parse(e);if(Gr(t)&&t.type==="debug-archive")return t.data instanceof Uint8Array?(Jn(t.data),!0):!1}catch{}return false}replaceSocket(e){this.removeListeners(),this.chunkBuffers.clear(),this.#e=void 0,this.ws=e,this.closed=false,this.setupListeners();}setOnError(e){this.onError=e;}send(e){if(this.closed)throw new D("Connection closed","PROJECT_CLOSED");this.ws.send(ue.stringify(e,{[At]:t=>Tn(t)&&W(t)}));}handleChunk(e){let t=this.chunkBuffers.get(e.id);return t||(t=[],this.chunkBuffers.set(e.id,t)),t.push(e.data),e.seq===za?(this.chunkBuffers.delete(e.id),t.join("")):null}tryParseChunkEnvelope(e){if(!e.startsWith('{"$chunk":'))return null;try{let t=JSON.parse(e);if(t.$chunk===1&&typeof t.id=="string"&&typeof t.seq=="number")return t}catch{}return null}onMessage(e){let t=r(i=>{let o=typeof i.data=="string"?i.data:String(i.data);this.dispatchMessage(o,e);},"listener");this.messageHandlers.add(t);}dispatchMessage(e,t){let i=ue.parse(e);if(Gr(i)&&i.type==="error"){let o=i.message||JSON.stringify(i),a=i.code??"INTERNAL",s=typeof i.ref=="string"?i.ref:void 0,d=i.retryable===true,g=Array.isArray(i.recentMethods)?i.recentMethods.filter(S=>typeof S=="string"):void 0;N.error(s?`Server error: ${o} [ref: ${s}]`:`Server error: ${o}`);let x=new D(`Server error: ${o}`,a,{ref:s,retryable:d,recentMethods:g});this.#e={error:x,at:Date.now()},this.onError?.(x);return}t(i);}};async function Jn(n){let{fs:e,path:t}=await yr();Se(e,"File system module is not available."),Se(t,"Path module is not available.");let o=`debug-archive-${new Date().toISOString().replace(/[:.]/gu,"-")}.zip`,a=process.cwd(),s=t.resolve(a,o);e.writeFileSync(s,Buffer.from(n)),N.info(`Debug archive saved to ${s}`);}r(Jn,"handleDebugArchive");function de(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}r(de,"isObject");var Ka={type:"pluginReadySignal"};function $a(n){return de(n)&&n.type==="pluginReadyResponse"}r($a,"isPluginReadyResponse");var Kr=9e4,Ha=2e4;function ja(n,e){return new Promise(t=>{let i=setTimeout(()=>{n.removeEventListener("message",o),t();},e),o=r(a=>{if(!(typeof a.data!="string"&&!(a.data instanceof String)))try{let s=ue.parse(a.data);de(s)&&s.type==="disconnect-ack"&&(clearTimeout(i),n.removeEventListener("message",o),t());}catch{}},"handler");n.addEventListener("message",o);})}r(ja,"waitForDisconnectAck");async function _a(n,e){let t={Authorization:`Token ${e}`};if(mr)return N.debug("Using Cloudflare Workers WebSocket connection"),fr(n,t);if(isDeno)return new Gn(n.href,[`token.${e}`]);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 Gn(n.href,{headers:t});return i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED=o),a}r(_a,"createWebSocket");async function _t(n,e,t,i){let o=new URL(i??Pe("FRAMER_HEADLESS_SERVER_URL",Cr));o.protocol=o.protocol==="https:"?"wss:":o.protocol==="http:"?"ws:":o.protocol,o.searchParams.set("projectId",n),o.searchParams.set("sdkVersion",Ot),t&&o.searchParams.set("clientId",t),N.debug(`Connecting to ${o.href}`);let a=await _a(o,e);N.debug(`WebSocket created, readyState: ${a.readyState}`);let s,d,g=N,x=false,S=setInterval(()=>{a.readyState===a.OPEN&&(a.send(ue.stringify({type:"ping"})),g.debug("Sent ping"));},Ha),v=r(()=>{clearInterval(S),a.readyState!==a.CLOSED&&a.readyState!==a.CLOSING&&a.close(1e3,"Client disconnect");},"forceClose"),_=r(async()=>{clearInterval(S),!(a.readyState===a.CLOSED||a.readyState===a.CLOSING)&&(x&&(g.debug("Initiating graceful disconnect"),a.send(ue.stringify({type:"client-disconnect"})),await ja(a,15e3)),a.readyState!==a.CLOSED&&a.readyState!==a.CLOSING&&a.close(1e3,"Client disconnect"));},"cleanup"),h=await new Promise((u,T)=>{let p=setTimeout(()=>{v(),T(new D(`Connection timeout after ${Kr}ms`,"TIMEOUT"));},Kr),b=r(()=>{g.debug("WebSocket opened, waiting for ready");},"onOpen"),M=r(E=>{g.debug("WebSocket error:",E),clearTimeout(p),v(),T(new D("No connection to the server","INTERNAL"));},"onError"),z=r(E=>{g.debug(`WebSocket closed: code=${E.code}, reason=${E.reason||"(no reason)"}, wasClean=${E.wasClean}`),clearTimeout(p),clearInterval(S),T(new D(`Connection to the server was closed (code: ${E.code})`,"PROJECT_CLOSED"));},"onClose");function ee(E){g.debug("Received message");let ct=typeof E.data=="string"?E.data:E.data.toString(),P=ue.parse(ct);if(g.debug(`Message type: ${P.type}`),P.type==="error"){clearTimeout(p),a.removeEventListener("close",z),a.removeEventListener("error",M);let ce=br(P.code),ei=de(P)&&"ref"in P&&typeof P.ref=="string"?P.ref:void 0;T(new D(P.message||"Server error",ce,ei?{ref:ei}:void 0)),v();}else P.type==="ready"?(de(P)&&"requestId"in P&&(s=String(P.requestId),g=N.withRequestId(s),g.debug(`Server request ID: ${s}`)),de(P)&&"sessionId"in P&&(d=String(P.sessionId),g.debug(`Server session ID: ${d}`)),de(P)&&"version"in P&&g.debug(`Server version: ${P.version}`),de(P)&&P.gracefulDisconnect===true&&(x=true),g.debug("Sending pluginReadySignal"),a.send(ue.stringify(Ka))):P.type==="debug-archive"?P.data instanceof Uint8Array&&Jn(P.data):$a(P)&&(clearTimeout(p),a.removeEventListener("message",ee),a.removeEventListener("error",M),a.removeEventListener("close",z),u(P));}r(ee,"handshakeMessageHandler"),a.addEventListener("open",b),a.addEventListener("message",ee),a.addEventListener("error",M),a.addEventListener("close",z);});return a.addEventListener("close",()=>{_();}),{ws:a,pluginReadyData:h,requestId:s,sessionId:d,clientId:t,logger:g,gracefulDisconnect:x,cleanup:_}}r(_t,"connectAndHandshake");var $r={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_getDependencyVersion: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,createLocale:true,getLocaleLanguages:true,getLocaleRegions: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 Qn(n){return n in $r?$r[n]===true:false}r(Qn,"isAllowedMethod");var qt=class n{static{r(this,"FramerAPI");}requestId;sessionId;#e;agent;#t;#n;#i=new Map;#r=new Map;#p=0;#a;#s;#l;#d;constructor(e){this.agent=e.agentAPI,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.sessionId=e.sessionId,this.#d=e.clientId,this.#n.onMessage(t=>{this.#g(t);}),this.#n.setOnError(t=>{this.#u(t);});}#u(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[V.rejectAllPending](e);}#c(){return `req-${++this.#p}-${Date.now()}`}#g=r(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 D(e.error,i,e.ref?{ref:e.ref}:void 0));}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 D(e.error,i,e.ref?{ref:e.ref}:void 0));}return true}default:return false}},"#handleServerApiResponse");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(Vn(o)){let s=V[o],d=Reflect.get(i.#t,s);return typeof d=="function"?d.bind(i.#t):d}if(!Qn(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||Vn(o)?true:Qn(o)?o in i.#t:false}})}async#o(){this.#u(new D("Connection closed","PROJECT_CLOSED")),await this.#e();}disconnect=r(()=>this.#o(),"disconnect");reconnect=r(async()=>{await this.#o();let e=await _t(this.#a,this.#s,this.#d,this.#l);this.#n.replaceSocket(e.ws),this.#e=e.cleanup,this.requestId=e.requestId,this.sessionId=e.sessionId;},"reconnect");screenshot=r((e,t)=>{let i=this.#c(),{format:o,quality:a,scale:s,clip:d}=t??{};return new Promise((g,x)=>{this.#i.set(i,{resolve:g,reject:x}),this.#n.send({type:"screenshot",id:i,nodeId:e,format:o,quality:a,scale:s,clip:d});})},"screenshot");exportSVG=r(e=>{let t=this.#c();return new Promise((i,o)=>{this.#r.set(t,{resolve:i,reject:o}),this.#n.send({type:"exportSVG",id:t,nodeId:e});})},"exportSVG");[Symbol.dispose]=()=>{this.#o();};[Symbol.asyncDispose]=()=>this.#o()};var qa=/^.+--([A-Za-z0-9]+)/u,Hr=/^[A-Za-z0-9]{20}$/u;function jr(n){if(Hr.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(qa)?.[1]??a;if(Hr.test(d))return d}}return null}catch{return null}}r(jr,"parseProjectId");async function _r(n,e,t){let i=performance.now();if(!n)throw new D("FRAMER_PROJECT_URL environment variable is required","INVALID_REQUEST");let o=jr(n);if(!o)throw new D(`Invalid project URL or ID: ${n}`,"INVALID_REQUEST");let a=e??Pe("FRAMER_API_KEY");if(!a)throw new D("FRAMER_API_KEY environment variable is required","INVALID_REQUEST");let s=t?.clientId?.trim()||`framer-api/${Ot}`,d=await _t(o,a,s,t?.serverUrl);try{let g=new jt(d.ws),x={transport:g,mode:d.pluginReadyData.mode,permissionMap:d.pluginReadyData.permissionMap,environmentInfo:d.pluginReadyData.environmentInfo,origin:null,theme:null,initialState:d.pluginReadyData.initialState},S=new Ce(x),v=new Te(S),_=new Ut(S),h=r(async()=>{let u=((performance.now()-i)/1e3).toFixed(2);d.logger.debug(`Connection ended after ${u}s`),await d.cleanup();},"cleanup");return qt.create({pluginAPI:v,agentAPI:_,transport:g,cleanup:h,projectId:o,apiKey:a,serverUrl:t?.serverUrl,clientId:d.clientId,requestId:d.requestId,sessionId:d.sessionId})}catch(g){throw await d.cleanup(),g}}r(_r,"connect");async function Ya(n,e,t,i){let o=await _r(n,t,i);try{return await e(o)}finally{await o.disconnect();}}r(Ya,"withConnection");
|
|
10
|
+
export{ma as $framerApiInternal,bt as BooleanField,ke as BooleanVariable,Be as BorderVariable,kt as CollectionReferenceField,xt as ColorField,we as ColorVariable,Je as ComponentInstanceNode,oe as ComponentNode,_e as ConicGradient,St as DateField,Re as DateVariable,$ as DesignPageNode,Y as EnumCase,Dt as EnumField,Me as EnumVariable,se as ErrorCode,Ft as FieldDivider,vt as FileField,Le as FileVariable,Tt as FormattedTextField,Ae as FormattedTextVariable,O as FrameNode,D as FramerAPIError,J as FramerPluginClosedError,it as FramerPluginError,Oe as ImageField,Ve as ImageVariable,He as LinearGradient,Pt as LinkField,We as LinkVariable,Nt as MultiCollectionReferenceField,Ct as NumberField,Ne as NumberVariable,je as RadialGradient,Xe as SVGNode,It as StringField,Ee as StringVariable,re as TextNode,$e as UnsupportedComputedValue,ze as UnsupportedField,Ue as UnsupportedVariable,nt as VectorSet,Vt as VectorSetItem,Ze as VectorSetItemNode,Qe as VectorSetNode,K as WebPageNode,ca as configure,_r as connect,ae as framer,Ll as hasGridLayout,Vl as hasStackLayout,Zi as isBreakpoint,ia as isCodeFileComponentExport,ra as isCodeFileOverrideExport,ye as isColorStyle,Xi as isComponentGestureVariant,be as isComponentInstanceNode,tr as isComponentNode,vo as isComponentVariable,Sn as isComponentVariant,Lo as isComputedValue,nr as isDesignPageNode,Do as isField,No as isFileAsset,wt as isFrameNode,Ao as isImageAsset,pa as isRetryableError,Qi as isSVGNode,Ji as isTextNode,Pn as isTextStyle,ri as isVariable,rr as isVectorSetItemNode,ir as isVectorSetNode,er as isWebPageNode,dl as supportsAspectRatio,gl as supportsBackgroundColor,ml as supportsBackgroundColorData,hl as supportsBackgroundGradient,bl as supportsBackgroundGradientData,fl as supportsBackgroundImage,yl as supportsBackgroundImageData,Tl as supportsBorder,Il as supportsBorderRadius,Xo as supportsBreakpoint,Dl as supportsComponentInfo,Yi as supportsComponentVariant,kl as supportsFont,Nl as supportsFontData,wl as supportsImageRendering,El as supportsInlineTextStyle,Al as supportsInlineTextStyleData,qi as supportsLayout,Ml as supportsLink,pl as supportsLocked,ul as supportsName,Cl as supportsOpacity,vl as supportsOverflow,al as supportsPins,ol as supportsPosition,xl as supportsRotation,Pl as supportsSVG,sl as supportsSize,ll as supportsSizeConstraints,Sl as supportsTextTruncation,cl as supportsVisible,Fl as supportsZIndex,Ya as withConnection};
|