@adobe/ccweb-add-on-sdk-types 1.23.0 → 1.26.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/ccweb-add-on-sdk-types",
3
- "version": "1.23.0",
3
+ "version": "1.26.0",
4
4
  "author": "Adobe",
5
5
  "license": "MIT",
6
6
  "description": "Type definitions for Adobe Creative Cloud Web Add-on SDK.",
@@ -46,7 +46,7 @@
46
46
  "@types/node": "18.18.2",
47
47
  "prettier": "2.8.0",
48
48
  "ts-node": "10.9.2",
49
- "typescript": "5.7.3"
49
+ "typescript": "5.9.3"
50
50
  },
51
51
  "scripts": {
52
52
  "clean": "",
@@ -92,19 +92,16 @@ declare namespace ApiConstants {
92
92
  }
93
93
 
94
94
  declare interface ApiModuleExport {
95
- editor: ExpressEditor;
95
+ editor: ExpressEditorWrapper;
96
96
  constants: unknown;
97
- colorUtils: ExpressColorUtils;
98
- fonts: ExpressFonts;
99
- viewport: ExpressViewport;
97
+ colorUtils: ExpressColorUtilsWrapper;
98
+ fonts: ExpressFontsWrapper;
99
+ viewport: ExpressViewportWrapper;
100
100
  }
101
101
 
102
102
  /**
103
- * <InlineAlert slots="text" variant="warning"/>
104
- *
105
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
106
- *
107
- * @experimental
103
+ * Area text: both width and height are explicitly set. If text content is too long to fit, the end of the text will be
104
+ * clipped. If text content is short, the frame's bounds will occupy extra height that is just blank space.
108
105
  */
109
106
  export declare interface AreaTextLayout {
110
107
  type: TextLayout.area;
@@ -140,8 +137,8 @@ declare enum ArrowHeadType {
140
137
  }
141
138
 
142
139
  /**
143
- * ArtboardList represents an ordered list of ArtboardNodes arranged in a timeline sequence, where they are called "scenes."
144
- * All items in the list are children of a single {@link PageNode}.
140
+ * ArtboardList represents an ordered list of ArtboardNodes, which are the children of one {@link PageNode}. If multiple
141
+ * artboards are present, each represents a keyframe "scene" in the page's animation timeline.
145
142
  *
146
143
  * ArtboardList also provides APIs for adding/removing artboards from the page. ArtboardList is never empty: it is illegal to
147
144
  * remove the last remaining artboard from the list.
@@ -158,13 +155,10 @@ export declare class ArtboardList extends RestrictedItemList<ArtboardNode> {
158
155
  }
159
156
 
160
157
  /**
161
- * An ArtboardNode represents an artboard object in the scenegraph. All user visual content must be contained on an artboard.
162
- * Artboards are always contained on a {@link PageNode}; when a page contains multiple artboards, the artboards represent
163
- * "scenes" in a linear timeline sequence.
158
+ * An ArtboardNode represents the topmost container of visual content within a {@link PageNode}. When a page contains
159
+ * multiple artboards, each represents a keyframe "scene" in the page's animation timeline.
164
160
  *
165
161
  * To create a new artboard, see {@link ArtboardList.addArtboard}.
166
- *
167
- * Please note that creating and deleting an artboard in a single frame will crash the editor.
168
162
  */
169
163
  export declare class ArtboardNode extends VisualNode implements Readonly<IRectangularNode>, ContainerNode {
170
164
  /**
@@ -173,11 +167,13 @@ export declare class ArtboardNode extends VisualNode implements Readonly<IRectan
173
167
  * hold children in various discrete "slots"; this `allChildren` list includes *all* such children and reflects their
174
168
  * overall display z-order.
175
169
  *
176
- * The children of an Artboard are always other Node classes (never the more minimal BaseNode).
170
+ * The children of an Artboard are all subclasses of Node (not just the more minimal BaseNode or VisualNode).
177
171
  */
178
172
  get allChildren(): Readonly<Iterable<Node>>;
179
173
  /**
180
- * The node's children. Use the methods on this ItemList object to get, add, and remove children.
174
+ * The artboards's regular children (does not include any "background layer" content if present; use {@link allChildren}
175
+ * for a read-only view that includes background content). Use the methods on this `children` ItemList object to get,
176
+ * add, and remove regular children.
181
177
  */
182
178
  get children(): ItemList<Node>;
183
179
  /**
@@ -205,11 +201,8 @@ export declare class ArtboardNode extends VisualNode implements Readonly<IRectan
205
201
  }
206
202
 
207
203
  /**
208
- * <InlineAlert slots="text" variant="warning"/>
209
- *
210
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
211
- *
212
- * @experimental
204
+ * Auto-height text: Width is explicitly set, and text wraps to use as much vertical space as necessary to display the
205
+ * full content.
213
206
  */
214
207
  export declare interface AutoHeightTextLayout {
215
208
  type: TextLayout.autoHeight;
@@ -220,11 +213,8 @@ export declare interface AutoHeightTextLayout {
220
213
  }
221
214
 
222
215
  /**
223
- * <InlineAlert slots="text" variant="warning"/>
224
- *
225
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
226
- *
227
- * @experimental
216
+ * Auto-width, aka point text: both width and height are automatically determined based on the content. There is no
217
+ * automatic line wrapping, so the text will all be on one line unless the text contains explicit newlines.
228
218
  */
229
219
  export declare interface AutoWidthTextLayout {
230
220
  type: TextLayout.autoWidth;
@@ -353,11 +343,6 @@ export declare class BaseNode {
353
343
  }
354
344
 
355
345
  /**
356
- * <InlineAlert slots="text" variant="warning"/>
357
- *
358
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
359
- *
360
- * @experimental
361
346
  * BaseParagraphListStyle interface represents common properties shared between ordered and unordered list types.
362
347
  */
363
348
  declare interface BaseParagraphListStyle {
@@ -366,11 +351,6 @@ declare interface BaseParagraphListStyle {
366
351
  }
367
352
 
368
353
  /**
369
- * <InlineAlert slots="text" variant="warning"/>
370
- *
371
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
372
- *
373
- * @experimental
374
354
  * Base paragraph styles that can be applied to an entire paragraph atomically.
375
355
  * Excludes list style settings, which differ between the getter-oriented {@link ParagraphStyles} interface and the
376
356
  * setter-oriented {@link ParagraphStylesRangeInput}.
@@ -406,6 +386,15 @@ export declare class BitmapImage {
406
386
  * Original height of the bitmap in pixels.
407
387
  */
408
388
  get height(): number;
389
+ /**
390
+ * <InlineAlert slots="text" variant="warning"/>
391
+ *
392
+ * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
393
+ *
394
+ * @experimental
395
+ * Fetches the bitmap data as a Blob. This will wait for the bitmap to be available if necessary.
396
+ */
397
+ data(): Promise<Blob>;
409
398
  }
410
399
 
411
400
  /**
@@ -562,7 +551,7 @@ export declare class ColorUtils {
562
551
  toHex(color: Color): string;
563
552
  }
564
553
 
565
- export declare const colorUtils: ExpressColorUtils;
554
+ export declare const colorUtils: ExpressColorUtilsWrapper;
566
555
 
567
556
  /**
568
557
  * A ComplexShapeNode is a complex prepackaged shape that appears as a leaf node in the UI, even if it is composed
@@ -608,7 +597,8 @@ export declare class Context {
608
597
  */
609
598
  off(eventName: EditorEvent, handlerId: EventHandlerId): void;
610
599
  /**
611
- * @returns the current selection. Nodes that are locked or otherwise non-editable are never included in the selection.
600
+ * @returns the current selection. Nodes that are locked or otherwise non-editable are never included in the regular
601
+ * selection (see {@link selectionIncludingNonEditable} to get any locked nodes the user may have clicked).
612
602
  */
613
603
  get selection(): readonly Node[];
614
604
  /**
@@ -638,10 +628,6 @@ export declare class Context {
638
628
  * other UI state.
639
629
  */
640
630
  get insertionParent(): ContainerNode;
641
- /**
642
- * @returns The currently viewed page.
643
- */
644
- get currentPage(): PageNode;
645
631
  }
646
632
 
647
633
  /**
@@ -707,7 +693,7 @@ export declare class Editor {
707
693
  /**
708
694
  * @returns the root of the document.
709
695
  */
710
- get documentRoot(): ExpressRootNode;
696
+ get documentRoot(): BaseNode;
711
697
  /**
712
698
  * @returns an ellipse node with default x/y radii, a black fill, and no initial stroke.
713
699
  * Transform values default to 0.
@@ -791,11 +777,14 @@ export declare class Editor {
791
777
  * Note that the path data will be normalized, and therefore the `path` getter may return a different SVG string from the path creation input.
792
778
  * For example, "M 10 80 Q 52.5 10, 95 80 T 180 80" becomes "M 10 80 C 38.33 33.33 66.67 33.33 95 80...".
793
779
  * Throws if the input is empty or is not legal SVG path syntax.
780
+ *
781
+ * Note: the visual top-left corner of a path may not be its local (0,0) origin point, so it's easiest to position
782
+ * a newly created path using {@link Node.setPositionInParent} rather than setting {@link Node.translation} directly.
794
783
  */
795
784
  createPath(path: string): PathNode;
796
785
  }
797
786
 
798
- export declare const editor: ExpressEditor;
787
+ export declare const editor: ExpressEditorWrapper;
799
788
 
800
789
  /**
801
790
  * This enum represents the supported editor events.
@@ -843,16 +832,40 @@ export declare type EventHandlerId = string;
843
832
  declare const expressApiModule: ApiModuleExport;
844
833
  export default expressApiModule;
845
834
 
846
- declare class ExpressColorUtils extends ColorUtils {}
835
+ declare class ExpressColorUtilsWrapper extends ColorUtils {}
836
+
837
+ /**
838
+ * Contains The Express specific APIs related to the current selection state.
839
+ */
840
+ export declare class ExpressContext extends Context {
841
+ /**
842
+ * @returns The currently viewed page.
843
+ * To change the current page, call {@link ExpressViewport.bringIntoView} with an artboard or other content on that page.
844
+ */
845
+ get currentPage(): PageNode;
846
+ }
847
+
848
+ /**
849
+ * Entry point for Express specific APIs that read or modify the document's content.
850
+ */
851
+ export declare class ExpressEditor extends Editor {
852
+ /**
853
+ * User's current selection context
854
+ */
855
+ get context(): ExpressContext;
856
+ /**
857
+ * @returns the root of the document.
858
+ */
859
+ get documentRoot(): ExpressRootNode;
860
+ }
847
861
 
848
- declare class ExpressEditor extends Editor {}
862
+ declare class ExpressEditorWrapper extends ExpressEditor {}
849
863
 
850
- declare class ExpressFonts extends Fonts {}
864
+ declare class ExpressFontsWrapper extends Fonts {}
851
865
 
852
866
  /**
853
867
  * An ExpressRootNode represents the root node of the document's "scenegraph" artwork tree. The root contains a collection
854
- * of {@link pages}. Each page contains one or more artboards, arranged in a timeline sequence. All the visual content of
855
- * the document lies within those artboards.
868
+ * of {@link pages}. Each page contains one or more artboards, which in turn hold all the visual content of the document.
856
869
  *
857
870
  * The parent of ExpressRootNode is undefined, since it is the root of the document tree.
858
871
  */
@@ -864,7 +877,27 @@ export declare class ExpressRootNode extends BaseNode {
864
877
  get pages(): PageList;
865
878
  }
866
879
 
867
- declare class ExpressViewport extends Viewport {}
880
+ /**
881
+ * Represents the area of the canvas that is currently visible on-screen.
882
+ */
883
+ export declare class ExpressViewport {
884
+ /**
885
+ * Adjusts the viewport to make the node's bounds visible on-screen, assuming all bounds are within the artboard bounds.
886
+ * Makes the node's {@link ArtboardNode} or {@link PageNode} visible if they were not already visible
887
+ * (which may result in {@link Context.selection} being cleared). It is strongly recommended
888
+ * to further draw user's attention to the node, set it as the {@link Context.selection} following this call.
889
+ *
890
+ * After this call, the value of {@link Context.insertionParent} will always be the node containing {@link ArtboardNode}.
891
+ *
892
+ * Note that the node might still not appear visible if:
893
+ * - Its animation settings make it invisible at the beginning of the {@link ArtboardNode} "scene".
894
+ * - It is obscured underneath other artwork in the z-order.
895
+ * - It is hidden by a {@link GroupNode}'s mask or similar cropping.
896
+ */
897
+ bringIntoView(node: VisualNode): void;
898
+ }
899
+
900
+ declare class ExpressViewportWrapper extends ExpressViewport {}
868
901
 
869
902
  /**
870
903
  * Base interface representing any fill in the scenegraph. See {@link FillableNode}.
@@ -939,7 +972,7 @@ export declare class Fonts {
939
972
  fromPostscriptName(postscriptName: string): Promise<AvailableFont | undefined>;
940
973
  }
941
974
 
942
- export declare const fonts: ExpressFonts;
975
+ export declare const fonts: ExpressFontsWrapper;
943
976
 
944
977
  /**
945
978
  * A GridCellNode represents the media aspect of a grid cell. Unlike MediaContainerNodes, grid cells cannot be
@@ -948,11 +981,6 @@ export declare const fonts: ExpressFonts;
948
981
  */
949
982
  export declare class GridCellNode extends Node implements IMediaContainerNode {
950
983
  /**
951
- * <InlineAlert slots="text" variant="warning"/>
952
- *
953
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
954
- *
955
- * @experimental
956
984
  * Always throws as it's not possible to clone a single grid slot.
957
985
  * Use the parent grid container instead.
958
986
  *
@@ -965,31 +993,30 @@ export declare class GridCellNode extends Node implements IMediaContainerNode {
965
993
  }
966
994
 
967
995
  /**
968
- * A GridLayoutNode represents a grid layout in the scenegraph. The GridLayoutNode is used to create
969
- * a layout grid that other content can be placed into.
996
+ * A GridLayoutNode represents a grid layout in the scenegraph. Currently, grids contain only images but in the future
997
+ * they may support other types of content as well.
970
998
  *
971
999
  * APIs to create a new grid layout are not yet available.
972
1000
  */
973
1001
  export declare class GridLayoutNode extends Node implements IRectangularNode {
974
1002
  /**
975
- * The Grid's regular children. Does not include rectangles and skips over media constainer nodes to return fill grandchildren.
976
- * Grid Cells are ordered by the y and then x position of their top left corner, i.e. left to right and top to bottom.
977
- * The children cannot be added or removed.
1003
+ * The GridLayout's child nodes. Nodes are returned in order sorted by the y and then x position of their top left
1004
+ * corner, i.e. left to right and top to bottom. These children cannot be added or removed.
978
1005
  */
979
1006
  get allChildren(): Readonly<Iterable<GridCellNode>>;
980
1007
  /**
981
- * The background fill of the GridLayout.
1008
+ * The background fill of the GridLayout. GridLayouts must always have a fill.
982
1009
  */
983
1010
  set fill(fill: Fill);
984
1011
  get fill(): Readonly<Fill>;
985
1012
  /**
986
- * The width of the node.
1013
+ * The width of the entire GridLayout node.
987
1014
  * Must be at least {@link MIN_DIMENSION}.
988
1015
  */
989
1016
  get width(): number;
990
1017
  set width(value: number);
991
1018
  /**
992
- * The height of the node.
1019
+ * The height of the entire GridLayout node.
993
1020
  * Must be at least {@link MIN_DIMENSION}.
994
1021
  */
995
1022
  get height(): number;
@@ -1004,8 +1031,8 @@ export declare class GridLayoutNode extends Node implements IRectangularNode {
1004
1031
  */
1005
1032
  export declare class GroupNode extends Node implements ContainerNode {
1006
1033
  /**
1007
- * The Group's regular children. Does not include the maskShape if one is present.
1008
- * Use the methods on this ItemList object to get, add, and remove children.
1034
+ * The Group's regular children. Does not include the {@link maskShape} if one is present.
1035
+ * Use the methods on this ItemList object to get, add, and remove regular children.
1009
1036
  */
1010
1037
  get children(): ItemList<Node>;
1011
1038
  /**
@@ -1046,7 +1073,17 @@ declare interface IFillableNode {
1046
1073
  * ImageRectangleNodes cannot be created directly; use {@link Editor.createImageContainer} to create the entire
1047
1074
  * container structure together.
1048
1075
  */
1049
- export declare class ImageRectangleNode extends MediaRectangleNode {}
1076
+ export declare class ImageRectangleNode extends MediaRectangleNode {
1077
+ /**
1078
+ * <InlineAlert slots="text" variant="warning"/>
1079
+ *
1080
+ * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1081
+ *
1082
+ * @experimental
1083
+ * Fetches the bitmap image resource used by this node. This will wait for the bitmap to be available if necessary.
1084
+ */
1085
+ fetchBitmapImage(): Promise<BitmapImage>;
1086
+ }
1050
1087
 
1051
1088
  /**
1052
1089
  * Interface for nodes that contain media.
@@ -1131,20 +1168,18 @@ declare interface IStrokableNode {
1131
1168
  }
1132
1169
 
1133
1170
  /**
1134
- * ItemList represents an ordered list of API objects, representing items that are all children of the
1135
- * same parent node. (The reverse is not necessarily true, however: this list might not include all
1136
- * children that exist in the parent node. See {@link Node.allChildren} for details).
1171
+ * ItemList represents an ordered list of API objects that are all children of the same parent node. It is most
1172
+ * frequently encountered as {@link ArtboardNode.children} or {@link GroupNode.children}.
1137
1173
  *
1138
1174
  * ItemList also provides APIs for manipulating the list by adding items to the parent or removing items from the parent.
1139
1175
  *
1140
- * This class is used in different places for various types of items, including Nodes, Fills, and Strokes.
1176
+ * Note that some parent nodes may have additional children that are *not* present in the main `children` ItemList
1177
+ * (e.g. {@link GroupNode.maskShape}). Use the read-only {@link Node.allChildren} for a combined view of all children.
1141
1178
  */
1142
1179
  export declare class ItemList<T extends ListItem> extends RestrictedItemList<T> {
1143
1180
  /**
1144
1181
  * Add one or more items to the end of the list. The last argument will become the last item in this list. Items are
1145
1182
  * removed from their previous parent, if any – or if an item is already in *this* list, its index is simply changed.
1146
- *
1147
- * @throws - if item has a different parent and item is a {@link ThreadedTextNode}, or if item's children subtree contains a {@link ThreadedTextNode}.
1148
1183
  */
1149
1184
  append(...items: T[]): void;
1150
1185
  /**
@@ -1155,24 +1190,18 @@ export declare class ItemList<T extends ListItem> extends RestrictedItemList<T>
1155
1190
  * Replace `oldItem` with `newItem` in this list. Throws if `oldItem` is not a member of this list.
1156
1191
  * `newItem` is removed from its previous parent, if any – or if it's already in *this* list, its index is simply
1157
1192
  * changed. No-op if both arguments are the same item.
1158
- *
1159
- * @throws - if newItem has a different parent and newItem is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}.
1160
1193
  */
1161
1194
  replace(oldItem: T, newItem: T): void;
1162
1195
  /**
1163
1196
  * Insert `newItem` so it is immediately before `before` in this list: places `newItem` at the index that `before` used
1164
1197
  * to occupy, shifting `before` and all later items to higher indices. `newItem` is removed from its previous parent,
1165
1198
  * if any – or if it's already in *this* list, its index is simply changed. No-op if both arguments are the same item.
1166
- *
1167
- * @throws - if newItem has a different parent and it is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}.
1168
1199
  */
1169
1200
  insertBefore(newItem: T, before: T): void;
1170
1201
  /**
1171
1202
  * Insert `newItem` so it is immediately after `after` in this list: places `newItem` at the index one higher than `after`,
1172
1203
  * shifting all later items to higher indices (the index of `after` remains unchanged). `newItem` is removed from its previous parent,
1173
1204
  * if any – or if it's already in *this* list, its index is simply changed. No-op if both arguments are the same item.
1174
- *
1175
- * @throws - if newItem has a different parent and it is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}.
1176
1205
  */
1177
1206
  insertAfter(newItem: T, after: T): void;
1178
1207
  }
@@ -1273,11 +1302,12 @@ export declare class LineNode extends StrokableNode {
1273
1302
  }
1274
1303
 
1275
1304
  /**
1276
- * Base interface for any item that can be used in {@link ItemList}. ItemList is used in different places to hold various
1277
- * types of items, including Nodes, Fills, and Strokes.
1305
+ * Base interface for any item that can be stored in an {@link ItemList} (typically a {@link Node} type).
1278
1306
  */
1279
1307
  export declare interface ListItem {}
1280
1308
 
1309
+ declare type ListStyleInput = OrderedListStyleInput | UnorderedListStyleInput | RemoveListStyleInput;
1310
+
1281
1311
  /**
1282
1312
  * A MediaContainerNode is a multi-node construct that displays media (such as images or video) with optional cropping and
1283
1313
  * clipping to a shape mask. The underlying media asset is always rectangular, but the final appearance of this node is
@@ -1307,6 +1337,7 @@ export declare abstract class MediaRectangleNode extends Node implements Readonl
1307
1337
  /**
1308
1338
  * Get {@link AddOnData} reference for managing private metadata attached to the media resource displayed by this node.
1309
1339
  * The same media resource may be reused in multiple places in the document, and all share the same AddOnData state.
1340
+ * Note: This support is not present for PSD/AI assets. An error will be thrown in that case.
1310
1341
  */
1311
1342
  get mediaAddOnData(): AddOnData;
1312
1343
  /**
@@ -1322,11 +1353,6 @@ export declare abstract class MediaRectangleNode extends Node implements Readonl
1322
1353
  */
1323
1354
  get height(): number;
1324
1355
  /**
1325
- * <InlineAlert slots="text" variant="warning"/>
1326
- *
1327
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1328
- *
1329
- * @experimental
1330
1356
  * Always throws as it's not possible to clone just the media rectangle alone.
1331
1357
  * Clone the entire parent MediaContainerNode instead.
1332
1358
  *
@@ -1469,11 +1495,6 @@ declare class Node extends VisualNode implements INodeBounds {
1469
1495
  */
1470
1496
  resizeToCover(width: number, height: number): void;
1471
1497
  /**
1472
- * <InlineAlert slots="text" variant="warning"/>
1473
- *
1474
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1475
- *
1476
- * @experimental
1477
1498
  * Creates a copy of this node and its entire subtree of descendants.
1478
1499
  *
1479
1500
  * The node must be attached to a page as the copy will be added as a sibling.
@@ -1484,11 +1505,6 @@ declare class Node extends VisualNode implements INodeBounds {
1484
1505
  export { Node as Node };
1485
1506
 
1486
1507
  /**
1487
- * <InlineAlert slots="text" variant="warning"/>
1488
- *
1489
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1490
- *
1491
- * @experimental
1492
1508
  * Numbering types used to display ordered lists: 1, A, a, I, i 01, 001.
1493
1509
  */
1494
1510
  export declare enum OrderedListNumbering {
@@ -1502,28 +1518,18 @@ export declare enum OrderedListNumbering {
1502
1518
  }
1503
1519
 
1504
1520
  /**
1505
- * <InlineAlert slots="text" variant="warning"/>
1506
- *
1507
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1508
- *
1509
- * @experimental
1510
1521
  * OrderedListStyle represents the style of an ordered list.
1511
1522
  */
1512
1523
  export declare type OrderedListStyle = Required<OrderedListStyleInput>;
1513
1524
 
1514
1525
  /**
1515
- * <InlineAlert slots="text" variant="warning"/>
1516
- *
1517
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1518
- *
1519
- * @experimental
1520
1526
  * Interface for specifying an ordered list style, such as a numbered list.
1521
1527
  */
1522
1528
  export declare interface OrderedListStyleInput extends BaseParagraphListStyle {
1523
1529
  type: ParagraphListType.ordered;
1524
1530
  /**
1525
1531
  * The numbering style to use. If undefined, it defaults to a different type depending on the paragraph's indent level.
1526
- * The defaults for increasing indent are 1, a, i, I, and then they repeat.
1532
+ * The defaults for increasing indent are: 1, a, i, I, and then they repeat.
1527
1533
  * These markers and the prefix/postfix strings (if any) are displayed using the same font as the start of the
1528
1534
  * paragraph's text content.
1529
1535
  */
@@ -1555,14 +1561,15 @@ export declare class PageList extends RestrictedItemList<PageNode> {
1555
1561
 
1556
1562
  /**
1557
1563
  * A PageNode represents a page in the document, a child of the root node of the document's "scenegraph" artwork tree
1558
- * (see {@link ExpressRootNode}). A page contains one or more artboards, representing "scenes" in a linear timeline
1559
- * sequence. Those artboards, in turn, contain all the visual content of the document.
1564
+ * (see {@link ExpressRootNode}). A page contains one or more artboards, which in turn contain all the page's visual
1565
+ * content. If multiple artboards are present, each represents a keyframe "scene" in the page's animation timeline.
1560
1566
  *
1561
1567
  * To create new pages, see {@link PageList.addPage}.
1562
1568
  */
1563
1569
  export declare class PageNode extends BaseNode implements IRectangularNode {
1564
1570
  /**
1565
- * The artboards or "scenes" of a page, ordered by timeline sequence.
1571
+ * The artboards or "scenes," which hold the page's visual contents. If multiple artboards are present, this list
1572
+ * represents an ordered keyframe sequence in the page's animation timeline.
1566
1573
  * To create new artboards, see {@link ArtboardList.addArtboard}.
1567
1574
  */
1568
1575
  get artboards(): ArtboardList;
@@ -1613,24 +1620,15 @@ export declare class PageNode extends BaseNode implements IRectangularNode {
1613
1620
  }
1614
1621
 
1615
1622
  /**
1616
- * <InlineAlert slots="text" variant="warning"/>
1617
- *
1618
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1619
- *
1620
- * @experimental
1621
1623
  * Indicates list type: see {@link UnorderedListStyleInput} and {@link OrderedListStyleInput}.
1622
1624
  */
1623
1625
  export declare enum ParagraphListType {
1624
- unordered = 0,
1625
- ordered = 1
1626
+ none = 0,
1627
+ unordered = 1,
1628
+ ordered = 2
1626
1629
  }
1627
1630
 
1628
1631
  /**
1629
- * <InlineAlert slots="text" variant="warning"/>
1630
- *
1631
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1632
- *
1633
- * @experimental
1634
1632
  * Text styles that must be applied to an entire paragraph atomically. (Contrast with CharacterStyles which can be applied to
1635
1633
  * any range of characters, even a short span like one single word).
1636
1634
  */
@@ -1639,39 +1637,23 @@ export declare interface ParagraphStyles extends BaseParagraphStyles {
1639
1637
  }
1640
1638
 
1641
1639
  /**
1642
- * <InlineAlert slots="text" variant="warning"/>
1643
- *
1644
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1645
- *
1646
- * @experimental
1647
- * The variant of {@link ParagraphStyles} with all optional style fields is used to apply ParagraphStyles(). When using that API,
1640
+ * A variant of {@link ParagraphStyles} with all style fields optional, used for applyParagraphStyles(). When using that API,
1648
1641
  * any fields not specified are left unchanged, preserving the text's existing styles.
1649
1642
  */
1650
1643
  export declare interface ParagraphStylesInput extends Partial<BaseParagraphStyles> {
1651
- list?: OrderedListStyleInput | UnorderedListStyleInput;
1644
+ list?: ListStyleInput;
1652
1645
  }
1653
1646
 
1654
1647
  /**
1655
- * <InlineAlert slots="text" variant="warning"/>
1656
- *
1657
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1658
- *
1659
- * @experimental
1660
- * A set of {@link ParagraphStyles} and the text range they apply to. It is seen in the paragraphStyleRanges getter.
1648
+ * A set of {@link ParagraphStyles} along with the text range they apply to. Returned by the paragraphStyleRanges getter.
1661
1649
  */
1662
1650
  export declare interface ParagraphStylesRange extends ParagraphStyles, StyleRange {}
1663
1651
 
1664
1652
  /**
1665
- * <InlineAlert slots="text" variant="warning"/>
1666
- *
1667
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1668
- *
1669
- * @experimental
1670
- * A variant of {@link ParagraphStylesRange} with all style fields optional and the text range they apply to. Used for the
1653
+ * A variant of {@link ParagraphStylesRange} with all style fields optional, along with the text range they apply to. Used for the
1671
1654
  * paragraphStyleRanges setter. When invoking the setter, any fields not specified are reset to their defaults.
1672
1655
  *
1673
- * Paragraphs are separated by newline characters (`\n`). The ranges specified here should align with
1674
- * those boundaries.
1656
+ * Paragraphs are separated by newline characters (`\n`). Ranges specified here should align with those boundaries.
1675
1657
  */
1676
1658
  export declare interface ParagraphStylesRangeInput extends ParagraphStylesInput, StyleRange {}
1677
1659
 
@@ -1680,6 +1662,9 @@ export declare interface ParagraphStylesRangeInput extends ParagraphStylesInput,
1680
1662
  * yet, only read.
1681
1663
  *
1682
1664
  * To create new paths, see {@link Editor.createPath}.
1665
+ *
1666
+ * Note: the visual top-left corner of a path may not be its local (0,0) origin point, so it's easiest to position
1667
+ * a path using {@link Node.setPositionInParent} rather than setting its {@link Node.translation} directly.
1683
1668
  */
1684
1669
  export declare class PathNode extends FillableNode {
1685
1670
  /**
@@ -1705,11 +1690,10 @@ export declare interface Point {
1705
1690
  }
1706
1691
 
1707
1692
  /**
1708
- * ReadOnlyItemList represents an ordered list of API objects, representing items that are all children of the
1709
- * same parent node. (The reverse is not necessarily true, however: this list might not include all
1710
- * children that exist in the parent node. See {@link Node.allChildren} for details).
1693
+ * ReadOnlyItemList represents an ordered list of API objects that are all children of the same parent node.
1711
1694
  *
1712
- * Items in a bare ReadOnlyItemList cannot be added, removed, or reordered. Subclasses like ItemList may add these capabilities, however.
1695
+ * Items in a bare ReadOnlyItemList cannot be added, removed, or reordered. The {@link ItemList} subclass adds more
1696
+ * capabilities, and is most frequently encountered as {@link ArtboardNode.children} or {@link GroupNode.children}.
1713
1697
  */
1714
1698
  export declare class ReadOnlyItemList<T extends ListItem> {
1715
1699
  /**
@@ -1846,9 +1830,15 @@ export declare class RectangleNode extends FillableNode implements IRectangularN
1846
1830
  }
1847
1831
 
1848
1832
  /**
1849
- * Base for ItemLists that have restricted behavior on how items are added to the list,
1850
- * but allow items to be removed and reordered. Subclasses like ItemList may add more
1851
- * capabilities, however.
1833
+ * Interface for removing a list style.
1834
+ */
1835
+ declare interface RemoveListStyleInput extends BaseParagraphListStyle {
1836
+ type: ParagraphListType.none;
1837
+ }
1838
+
1839
+ /**
1840
+ * Base for ItemLists that restrict how items are added to the list, but freely allow items to be removed and
1841
+ * reordered. The {@link ItemList} subclass adds more capabilities, however.
1852
1842
  */
1853
1843
  declare class RestrictedItemList<T extends ListItem> extends ReadOnlyItemList<T> {
1854
1844
  /**
@@ -1972,26 +1962,39 @@ export declare type SolidColorStrokeWithOptionalType = Omit<SolidColorStroke, "t
1972
1962
  Partial<Pick<SolidColorStroke, "type">>;
1973
1963
 
1974
1964
  /**
1975
- * A StandaloneTextNode represents a text display frame in the scenegraph. It displays an entire piece of text.
1965
+ * StandaloneTextContentModel represents a complete piece of text content contained within a single {@link StandaloneTextNode}.
1966
+ */
1967
+ export declare class StandaloneTextContentModel extends TextNodeContentModel {
1968
+ get allTextNodes(): Readonly<Iterable<StandaloneTextNode>>;
1969
+ }
1970
+
1971
+ /**
1972
+ * A StandaloneTextNode represents text that is displayed *entirely* within one single frame in the scenegraph (in
1973
+ * contrast to {@link ThreadedTextNode}, where text may flow across several separate display "frames").
1976
1974
  * The StandaloneTextNode does not directly hold the text content and styles – instead it refers to a {@link TextNodeContentModel}.
1977
1975
  *
1978
- * To create new a single-frame piece of text, see {@link Editor.createText}.
1976
+ * To create a new StandaloneTextNode, see {@link Editor.createText}.
1979
1977
  */
1980
1978
  export declare class StandaloneTextNode extends TextNode {
1979
+ /**
1980
+ * Always returns true for this StandaloneTextNode, indicating that it is not part of a multi-frame text flow.
1981
+ */
1982
+ isStandaloneText(): this is StandaloneTextNode;
1983
+ /**
1984
+ * The model containing the complete text string and its styles, all which will be visible within the bounds of
1985
+ * this specific StandaloneTextNode.
1986
+ *
1987
+ */
1988
+ get fullContent(): StandaloneTextContentModel;
1981
1989
  get nextTextNode(): undefined;
1982
1990
  get layout(): Readonly<AutoWidthTextLayout | AutoHeightTextLayout | UnsupportedTextLayout>;
1983
1991
  /**
1984
- * <InlineAlert slots="text" variant="warning"/>
1985
- *
1986
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
1987
- *
1988
- * @experimental
1989
- * Sets the layout mode of the TextNode "frame."
1992
+ * Sets the layout mode of this TextNode "frame" which the text content is displayed within.
1993
+ * {@link AreaTextLayout} is not supported by standalone text.
1990
1994
  *
1991
- * {@link AreaTextLayout} is not supported by single-frame text.
1992
- *
1993
- * @throws if changing text layout to/from {@link TextLayout.magicFit} or {@link TextLayout.circular} layout when the text contains font(s) unavailable to the current user.
1994
- * @throws if {@link StandaloneTextNode} is not a part of a multi-frame text content flow and the layout is {@link AreaTextLayout}.
1995
+ * @throws if changing text layout to/from {@link TextLayout.magicFit} or {@link TextLayout.circular}
1996
+ * layout when the text contains fonts that are unavailable to the current user, because these layouts change
1997
+ * capitalization and thus alter which glyphs are displayed.
1995
1998
  */
1996
1999
  set layout(layout: AutoWidthTextLayout | AutoHeightTextLayout);
1997
2000
  }
@@ -2104,6 +2107,8 @@ export declare abstract class TextContentModel {
2104
2107
  get id(): string;
2105
2108
  /**
2106
2109
  * The complete text string, which may span multiple {@link ThreadedTextNode} "frames" in the scenegraph.
2110
+ * @throws The setter throws if the existing text contains fonts unavailable to the current user.
2111
+ * See {@link hasUnavailableFonts}.
2107
2112
  */
2108
2113
  get text(): string;
2109
2114
  set text(textContent: string);
@@ -2174,10 +2179,13 @@ export declare abstract class TextContentModel {
2174
2179
  */
2175
2180
  deleteText(range: TextRange): void;
2176
2181
  /**
2177
- * The character styles are applied to different ranges of this text content. When setting character styles, any style
2178
- * properties that are not provided are reset to their defaults (contrast to {@link applyCharacterStyles} which
2179
- * preserves the text's existing styles for any fields not specified). When *getting* styles, all fields are always
2180
- * provided.
2182
+ * The character styles that are applied to different ranges of this text content. Each range starts immediately after
2183
+ * the previous one: they are always contiguous, and never overlap.
2184
+ *
2185
+ * When *setting* character styles, any style properties that are not provided are reset to their defaults (contrast to
2186
+ * {@link applyCharacterStyles} which preserves the text's existing styles for any fields not specified). If the ranges
2187
+ * do not cover the full length of the text, the last range is extended to cover all the remaining text.
2188
+ * When *getting* styles, all fields are always provided.
2181
2189
  *
2182
2190
  * Note: existing fonts used in the document, returned by this getter, are not guaranteed to be ones the current user
2183
2191
  * has rights to edit with. The *setter* only accepts the AvailableFont type which has been verified to be usable.
@@ -2185,20 +2193,10 @@ export declare abstract class TextContentModel {
2185
2193
  get characterStyleRanges(): readonly CharacterStylesRange[];
2186
2194
  set characterStyleRanges(styles: readonly CharacterStylesRangeInput[]);
2187
2195
  /**
2188
- * <InlineAlert slots="text" variant="warning"/>
2189
- *
2190
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
2191
- *
2192
- * @experimental
2193
2196
  * The styles applied to different paragraphs of this text content.
2194
2197
  */
2195
2198
  get paragraphStyleRanges(): readonly ParagraphStylesRange[];
2196
2199
  /**
2197
- * <InlineAlert slots="text" variant="warning"/>
2198
- *
2199
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
2200
- *
2201
- * @experimental
2202
2200
  * Apply styles to different paragraphs of this text content. Any style properties that are not provided are reset to their defaults.
2203
2201
  * When **getting** styles, all properties are always provided.
2204
2202
  *
@@ -2206,7 +2204,7 @@ export declare abstract class TextContentModel {
2206
2204
  * those boundaries. If multiple ranges provided overlap a single paragraph, the first one to overlap is applied to the
2207
2205
  * entire paragraph.
2208
2206
  *
2209
- * @throws if the text content contains fonts unavailable to the current user and an ordered-list style is being applied.
2207
+ * @throws if applying an ordered-list style when the text contains fonts that are unavailable to the current user.
2210
2208
  */
2211
2209
  set paragraphStyleRanges(styles: readonly ParagraphStylesRangeInput[]);
2212
2210
  /**
@@ -2214,28 +2212,27 @@ export declare abstract class TextContentModel {
2214
2212
  * unchanged. Does not modify any styles in the text outside this range. Contrast to the {@link characterStyleRanges}
2215
2213
  * setter, which specifies new style range(s) for the entire text at once, and resets any unspecified properties back to
2216
2214
  * default styles.
2217
-
2215
+ *
2216
+ * Explicitly specifying `link: ""` will remove any hyperlinks present in the existing text. If the `link` style
2217
+ * property is not specified at all, existing links are preserved.
2218
+ *
2218
2219
  * @param styles - The styles to apply.
2219
- * @param range -The start and length of the character sequence to which the styles should be applied.
2220
- * The styles will be applied to the entire text content flow if not specified.
2221
- * If the specified range doesn't align well with the paragraph boundaries, the range will be expanded to cover the
2222
- * entire paragraphs, it overlaps.
2220
+ * @param range - The start and length of the character sequence to which the styles should be applied.
2221
+ * If no range is specified, styles will be applied to the entire text content flow.
2223
2222
  */
2224
2223
  applyCharacterStyles(styles: CharacterStylesInput, range?: TextRange): void;
2225
2224
  /**
2226
- * <InlineAlert slots="text" variant="warning"/>
2227
- *
2228
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
2229
- *
2230
- * @experimental
2231
2225
  * Apply one or more styles to the paragraphs in the given range, leaving any style properties that were not specified
2232
2226
  * unchanged. Does not modify any styles in the text outside this range. Contrast to the {@link paragraphStyleRanges}
2233
2227
  * setter, which specifies new style range(s) for the entire text at once, and resets any unspecified properties back to
2234
2228
  * default styles.
2235
-
2229
+ *
2236
2230
  * @param styles - The styles to apply.
2237
- * @param range - The start and length of character sequence to which the styles should be applied.
2238
- * If not specified the styles will be applied to the entire piece of text content flow.
2231
+ * @param range - The start and length of character sequence to which the styles should be applied. Styles apply to any
2232
+ * paragraphs that even partially overlap this range.
2233
+ * If range is not specified, the styles will be applied to the entire text content flow.
2234
+ *
2235
+ * @throws if applying an ordered-list style when the text contains fonts that are unavailable to the current user.
2239
2236
  */
2240
2237
  applyParagraphStyles(styles: ParagraphStylesInput, range?: TextRange): void;
2241
2238
  /**
@@ -2291,9 +2288,12 @@ declare enum TextLayout {
2291
2288
 
2292
2289
  /**
2293
2290
  * TextNode is an abstract base class representing text displayed in the scenegraph, regardless of whether it's a fully
2294
- * self-contained {@link StandaloneTextNode} or one {@link ThreadedTextNode} "frame" of multiple in a larger flow. The
2291
+ * self-contained {@link StandaloneTextNode} or one of multiple {@link ThreadedTextNode} "frames" in a larger flow. The
2295
2292
  * APIs on TextNode and its {@link TextNodeContentModel} allow you to generically work with text without needing to know
2296
- * which of those subtypes you are dealing with.
2293
+ * which subtype you are dealing with.
2294
+ *
2295
+ * Note: the visual top-left corner of text is not located at its local (0,0) origin point, so it's easiest to position
2296
+ * text using {@link Node.setPositionInParent} rather than setting its {@link Node.translation} directly.
2297
2297
  */
2298
2298
  export declare abstract class TextNode extends Node {
2299
2299
  /**
@@ -2303,6 +2303,9 @@ export declare abstract class TextNode extends Node {
2303
2303
  * Note: The bounding box of the orphaned TextNode may be different from the bounding box of the node placed on a
2304
2304
  * page. It is recommended to use this property only when the node is placed on a page.
2305
2305
  *
2306
+ * Note: the visual top-left corner of this box is usually not (0,0). Always use `boundsLocal` or {@link topLeftLocal}
2307
+ * instead of assuming (0,0).
2308
+ *
2306
2309
  */
2307
2310
  get boundsLocal(): Readonly<Rect>;
2308
2311
  /**
@@ -2321,6 +2324,8 @@ export declare abstract class TextNode extends Node {
2321
2324
  * Note: The top-left of the orphaned TextNode may be different from the top-left of the node placed on a
2322
2325
  * page. It is recommended to use this property only when the node is placed on a page.
2323
2326
  *
2327
+ * Note: this value is usually not (0,0) due to the way text layout is defined.
2328
+ *
2324
2329
  */
2325
2330
  get topLeftLocal(): Readonly<Point>;
2326
2331
  /**
@@ -2350,7 +2355,7 @@ export declare abstract class TextNode extends Node {
2350
2355
  * encountered before.
2351
2356
  *
2352
2357
  */
2353
- get fullContent(): TextNodeContentModel;
2358
+ abstract get fullContent(): TextNodeContentModel;
2354
2359
  /**
2355
2360
  * Helper method to determine if the text is standalone.
2356
2361
  */
@@ -2390,11 +2395,6 @@ export declare abstract class TextNode extends Node {
2390
2395
  */
2391
2396
  get visualEffects(): readonly VisualEffectType[];
2392
2397
  /**
2393
- * <InlineAlert slots="text" variant="warning"/>
2394
- *
2395
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
2396
- *
2397
- * @experimental
2398
2398
  * @returns The layout mode of the TextNode "frame."
2399
2399
  */
2400
2400
  get layout(): Readonly<AutoWidthTextLayout | AutoHeightTextLayout | AreaTextLayout | UnsupportedTextLayout>;
@@ -2405,15 +2405,17 @@ export declare abstract class TextNode extends Node {
2405
2405
  * split across multiple {@link ThreadedTextNode} frames for display.
2406
2406
  * Use this model to get or modify the text string and the style ranges applied to it.
2407
2407
  */
2408
- export declare class TextNodeContentModel extends TextContentModel {
2408
+ export declare abstract class TextNodeContentModel extends TextContentModel {
2409
2409
  /**
2410
- * Get ordered list of all {@link TextNode}s that display this text content in the scenegraph. The text content
2411
- * starts in the first {@link ThreadedTextNode} "frame", and then flows into the second node once it has filled the first one. The ending of the
2412
- * text content may not be visible at all, if the last {@link ThreadedTextNode} "frame" is not large enough to accommodate it.
2410
+ * Get ordered list of all {@link TextNode}s that display this text content in the scenegraph. This might be a single
2411
+ * {@link StandaloneTextNode} *or* a list of one or more {@link ThreadedTextNode}s. In the case of threaded text, the
2412
+ * text content starts in the first {@link ThreadedTextNode} "frame", and then flows into the second node once it has
2413
+ * filled the first one. The ending of the text content may not be visible at all, if the last "frame" is not large
2414
+ * enough to accommodate it.
2413
2415
  *
2414
- * If there are multiple {@link ThreadedTextNode}s, all of them must be configured to use {@link AreaTextLayout}.
2416
+ * All linked ThreadedTextNodes that share a single TextContentModel must remain together within the same artboard.
2415
2417
  */
2416
- get allTextNodes(): Readonly<Iterable<TextNode>>;
2418
+ abstract get allTextNodes(): Readonly<Iterable<TextNode>>;
2417
2419
  }
2418
2420
 
2419
2421
  /**
@@ -2468,26 +2470,48 @@ export declare enum TextStyleSource {
2468
2470
  }
2469
2471
 
2470
2472
  /**
2471
- * A ThreadedTextNode represents a text display frame in the scenegraph. It is a subset of longer text that flows across
2472
- * multiple TextNode "frames". Because of this, the TextNode does not directly hold the text content and styles –
2473
+ * ThreadedTextContentModel represents a complete piece of text content that is split across multiple
2474
+ * {@link ThreadedTextNode} frames for display. This subclass provides a mutable {@link allFrames} list
2475
+ * that supports adding, removing, and reordering text frames.
2476
+ *
2477
+ * The append and insert operations will automatically parent the new frame to the same parent as the
2478
+ * reference frame and place it in the correct z-order.
2479
+ */
2480
+ export declare class ThreadedTextContentModel extends TextNodeContentModel {
2481
+ get allTextNodes(): Readonly<Iterable<ThreadedTextNode>>;
2482
+ }
2483
+
2484
+ /**
2485
+ * A ThreadedTextNode represents a text display frame in the scenegraph which is a subset of longer text that flows across
2486
+ * multiple such "frames". Because of this, the TextNode does not directly hold the text content and styles –
2473
2487
  * instead it refers to a {@link TextNodeContentModel}, which may be shared across multiple ThreadedTextNode frames.
2474
2488
  *
2475
- * APIs are not yet available to create multi-frame text flows.
2489
+ * All linked ThreadedTextNodes that share a single TextContentModel must remain together within the same artboard.
2490
+ *
2491
+ * APIs are not yet available to create multi-frame text flows. To create *non*-threaded text, use {@link Editor.createText}.
2476
2492
  */
2477
2493
  export declare class ThreadedTextNode extends TextNode {
2478
- get nextTextNode(): ThreadedTextNode | undefined;
2479
- get layout(): Readonly<AreaTextLayout>;
2480
2494
  /**
2481
- * <InlineAlert slots="text" variant="warning"/>
2482
- *
2483
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
2495
+ * Always returns true for this ThreadedTextNode, indicating that it is part of a multi-frame text flow.
2496
+ */
2497
+ isThreadedText(): this is ThreadedTextNode;
2498
+ /**
2499
+ * The model containing the complete text string and its styles, only part of which may be visible within the bounds of
2500
+ * this specific ThreadedTextNode "frame." The full text content flow may be split across multiple frames, and/or it may be clipped if a
2501
+ * fixed-size frame using {@link AreaTextLayout} does not fit all the (remaining) text.
2484
2502
  *
2485
- * @experimental
2486
- * Sets the layout mode of the TextNode "frame."
2503
+ * Note: When traversing the scenegraph in search of text content, bear in mind that multiple ThreadedTextNodes may refer to the
2504
+ * same single {@link ThreadedTextContentModel}; this can give the impression that the same text is duplicated multiple times when it is
2505
+ * not. Use {@link ThreadedTextContentModel}.id to determine whether a given piece of text content is unique or if it's already been
2506
+ * encountered before.
2487
2507
  *
2508
+ */
2509
+ get fullContent(): ThreadedTextContentModel;
2510
+ get nextTextNode(): ThreadedTextNode | undefined;
2511
+ get layout(): Readonly<AreaTextLayout>;
2512
+ /**
2513
+ * Sets the layout mode of this TextNode "frame" which the text content is displayed within.
2488
2514
  * Only {@link AreaTextLayout}, with fully fixed bounds, is currently supported by threaded text.
2489
- *
2490
- * @throws if {@link ThreadedTextNode} is part of a multi-frame text content flow and the layout is not {@link AreaTextLayout}.
2491
2515
  */
2492
2516
  set layout(layout: AreaTextLayout);
2493
2517
  }
@@ -2512,21 +2536,11 @@ export declare class UnknownMediaRectangleNode extends MediaRectangleNode {}
2512
2536
  export declare class UnknownNode extends Node {}
2513
2537
 
2514
2538
  /**
2515
- * <InlineAlert slots="text" variant="warning"/>
2516
- *
2517
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
2518
- *
2519
- * @experimental
2520
2539
  * UnorderedListStyle represents the style of an unordered list.
2521
2540
  */
2522
2541
  export declare type UnorderedListStyle = Required<UnorderedListStyleInput>;
2523
2542
 
2524
2543
  /**
2525
- * <InlineAlert slots="text" variant="warning"/>
2526
- *
2527
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
2528
- *
2529
- * @experimental
2530
2544
  * Interface for specifying an unordered list style, such as a bullet list.
2531
2545
  */
2532
2546
  export declare interface UnorderedListStyleInput extends BaseParagraphListStyle {
@@ -2543,37 +2557,13 @@ export declare interface UnorderedListStyleInput extends BaseParagraphListStyle
2543
2557
  }
2544
2558
 
2545
2559
  /**
2546
- * <InlineAlert slots="text" variant="warning"/>
2547
- *
2548
- * **IMPORTANT:** This is currently ***experimental only*** and should not be used in any add-ons you will be distributing until it has been declared stable. To use it, you will first need to set the `experimentalApis` flag to `true` in the [`requirements`](../../../manifest/index.md#requirements) section of the `manifest.json`.
2549
- *
2550
- * @experimental
2560
+ * Represents a text layout the API does not yet support setting or reading the details of.
2551
2561
  */
2552
2562
  export declare interface UnsupportedTextLayout {
2553
2563
  type: TextLayout.magicFit | TextLayout.circular;
2554
2564
  }
2555
2565
 
2556
- /**
2557
- * Represents the area of the canvas that is currently visible on-screen.
2558
- */
2559
- export declare class Viewport {
2560
- /**
2561
- * Adjusts the viewport to make the node's bounds visible on-screen, assuming all bounds are within the artboard bounds.
2562
- * Makes the node's {@link ArtboardNode} or {@link PageNode} visible if they were not already visible
2563
- * (which may result in {@link Context.selection} being cleared). It is strongly recommended
2564
- * to further draw user's attention to the node, set it as the {@link Context.selection} following this call.
2565
- *
2566
- * After this call, the value of {@link Context.insertionParent} will always be the node containing {@link ArtboardNode}.
2567
- *
2568
- * Note that the node might still not appear visible if:
2569
- * - Its animation settings make it invisible at the beginning of the {@link ArtboardNode} "scene".
2570
- * - It is obscured underneath other artwork in the z-order.
2571
- * - It is hidden by a {@link GroupNode}'s mask or similar cropping.
2572
- */
2573
- bringIntoView(node: VisualNode): void;
2574
- }
2575
-
2576
- export declare const viewport: ExpressViewport;
2566
+ export declare const viewport: ExpressViewportWrapper;
2577
2567
 
2578
2568
  /**
2579
2569
  * Visual effects that can be applied to a text node.
package/ui/ui-sdk.d.ts CHANGED
@@ -887,7 +887,7 @@ export declare type DisableDragToDocument = () => void;
887
887
  */
888
888
  declare interface Document_2 {
889
889
  /**
890
- * Add image/PSD/AI assets to the current page
890
+ * Add image/PSD/AI/SVG assets to the current page
891
891
  */
892
892
  addImage(blob: Blob, attributes?: MediaAttributes, importAddOnData?: ImportAddOnData): Promise<void>;
893
893
  /**
@@ -1139,6 +1139,10 @@ export declare enum EntrypointType {
1139
1139
  * Mobile more entrypoint type.
1140
1140
  */
1141
1141
  MOBILE_MORE = "mobile.more",
1142
+ /**
1143
+ * Mobile share entrypoint type.
1144
+ */
1145
+ MOBILE_SHARE = "mobile.share",
1142
1146
  /**
1143
1147
  * Schedule entrypoint type.
1144
1148
  */
@@ -1158,7 +1162,15 @@ export declare enum EntrypointType {
1158
1162
  /**
1159
1163
  * Import hub entrypoint type.
1160
1164
  */
1161
- IMPORT_HUB = "import-hub"
1165
+ IMPORT_HUB = "import-hub",
1166
+ /**
1167
+ * Quick action entrypoint type.
1168
+ */
1169
+ QUICK_ACTION = "quick-action",
1170
+ /**
1171
+ * Content hub home (L1) entrypoint type.
1172
+ */
1173
+ CONTENT_HUB_HOME = "content-hub-home"
1162
1174
  }
1163
1175
 
1164
1176
  export declare interface Field {
@@ -1527,6 +1539,10 @@ export declare interface PageMetadata {
1527
1539
  * Whether the page contains animated content
1528
1540
  */
1529
1541
  hasAnimatedContent: boolean;
1542
+ /**
1543
+ * The page's background color in ARGB format (32-bit integer)
1544
+ */
1545
+ backgroundARGB?: number;
1530
1546
  /**
1531
1547
  * Whether the page is blank
1532
1548
  */