@adobe/ccweb-add-on-sdk-types 1.22.0 → 1.24.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 +1 -1
- package/sandbox/express-document-sdk.d.ts +391 -309
- package/ui/ui-sdk.d.ts +28 -9
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* SOFTWARE.
|
|
23
23
|
********************************************************************************/
|
|
24
24
|
|
|
25
|
-
import
|
|
25
|
+
import { mat2d } from "gl-matrix";
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* AddOnData class provides APIs to read, write, remove private metadata to a Node.
|
|
@@ -85,6 +85,7 @@ declare namespace ApiConstants {
|
|
|
85
85
|
TextScriptStyle,
|
|
86
86
|
EditorEvent,
|
|
87
87
|
VisualEffectType,
|
|
88
|
+
TextStyleSource,
|
|
88
89
|
ParagraphListType,
|
|
89
90
|
OrderedListNumbering
|
|
90
91
|
};
|
|
@@ -99,11 +100,8 @@ declare interface ApiModuleExport {
|
|
|
99
100
|
}
|
|
100
101
|
|
|
101
102
|
/**
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* **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`.
|
|
105
|
-
*
|
|
106
|
-
* @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.
|
|
107
105
|
*/
|
|
108
106
|
export declare interface AreaTextLayout {
|
|
109
107
|
type: TextLayout.area;
|
|
@@ -139,8 +137,8 @@ declare enum ArrowHeadType {
|
|
|
139
137
|
}
|
|
140
138
|
|
|
141
139
|
/**
|
|
142
|
-
* ArtboardList represents an ordered list of ArtboardNodes
|
|
143
|
-
*
|
|
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.
|
|
144
142
|
*
|
|
145
143
|
* ArtboardList also provides APIs for adding/removing artboards from the page. ArtboardList is never empty: it is illegal to
|
|
146
144
|
* remove the last remaining artboard from the list.
|
|
@@ -157,13 +155,10 @@ export declare class ArtboardList extends RestrictedItemList<ArtboardNode> {
|
|
|
157
155
|
}
|
|
158
156
|
|
|
159
157
|
/**
|
|
160
|
-
* An ArtboardNode represents
|
|
161
|
-
*
|
|
162
|
-
* "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.
|
|
163
160
|
*
|
|
164
161
|
* To create a new artboard, see {@link ArtboardList.addArtboard}.
|
|
165
|
-
*
|
|
166
|
-
* Please note that creating and deleting an artboard in a single frame will crash the editor.
|
|
167
162
|
*/
|
|
168
163
|
export declare class ArtboardNode extends VisualNode implements Readonly<IRectangularNode>, ContainerNode {
|
|
169
164
|
/**
|
|
@@ -172,11 +167,13 @@ export declare class ArtboardNode extends VisualNode implements Readonly<IRectan
|
|
|
172
167
|
* hold children in various discrete "slots"; this `allChildren` list includes *all* such children and reflects their
|
|
173
168
|
* overall display z-order.
|
|
174
169
|
*
|
|
175
|
-
* The children of an Artboard are
|
|
170
|
+
* The children of an Artboard are all subclasses of Node (not just the more minimal BaseNode or VisualNode).
|
|
176
171
|
*/
|
|
177
172
|
get allChildren(): Readonly<Iterable<Node>>;
|
|
178
173
|
/**
|
|
179
|
-
* The
|
|
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.
|
|
180
177
|
*/
|
|
181
178
|
get children(): ItemList<Node>;
|
|
182
179
|
/**
|
|
@@ -204,11 +201,8 @@ export declare class ArtboardNode extends VisualNode implements Readonly<IRectan
|
|
|
204
201
|
}
|
|
205
202
|
|
|
206
203
|
/**
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
* **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`.
|
|
210
|
-
*
|
|
211
|
-
* @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.
|
|
212
206
|
*/
|
|
213
207
|
export declare interface AutoHeightTextLayout {
|
|
214
208
|
type: TextLayout.autoHeight;
|
|
@@ -219,11 +213,8 @@ export declare interface AutoHeightTextLayout {
|
|
|
219
213
|
}
|
|
220
214
|
|
|
221
215
|
/**
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
* **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`.
|
|
225
|
-
*
|
|
226
|
-
* @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.
|
|
227
218
|
*/
|
|
228
219
|
export declare interface AutoWidthTextLayout {
|
|
229
220
|
type: TextLayout.autoWidth;
|
|
@@ -265,10 +256,12 @@ declare interface BaseCharacterStyles {
|
|
|
265
256
|
*/
|
|
266
257
|
underline: boolean;
|
|
267
258
|
/**
|
|
268
|
-
* URL
|
|
269
|
-
*
|
|
259
|
+
* A URL hyperlink. Character ranges with a link are underlined *by default*, unless these styles explicitly specify
|
|
260
|
+
* `underline: false`.
|
|
261
|
+
*
|
|
262
|
+
* To remove a link from existing text, explicitly specify `link: ""` in {@link TextContentModel.applyCharacterStyles}.
|
|
270
263
|
*/
|
|
271
|
-
link
|
|
264
|
+
link?: string;
|
|
272
265
|
/**
|
|
273
266
|
* Sets a superscript or subscript style.
|
|
274
267
|
*/
|
|
@@ -350,11 +343,6 @@ export declare class BaseNode {
|
|
|
350
343
|
}
|
|
351
344
|
|
|
352
345
|
/**
|
|
353
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
354
|
-
*
|
|
355
|
-
* **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`.
|
|
356
|
-
*
|
|
357
|
-
* @experimental
|
|
358
346
|
* BaseParagraphListStyle interface represents common properties shared between ordered and unordered list types.
|
|
359
347
|
*/
|
|
360
348
|
declare interface BaseParagraphListStyle {
|
|
@@ -363,11 +351,6 @@ declare interface BaseParagraphListStyle {
|
|
|
363
351
|
}
|
|
364
352
|
|
|
365
353
|
/**
|
|
366
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
367
|
-
*
|
|
368
|
-
* **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`.
|
|
369
|
-
*
|
|
370
|
-
* @experimental
|
|
371
354
|
* Base paragraph styles that can be applied to an entire paragraph atomically.
|
|
372
355
|
* Excludes list style settings, which differ between the getter-oriented {@link ParagraphStyles} interface and the
|
|
373
356
|
* setter-oriented {@link ParagraphStylesRangeInput}.
|
|
@@ -394,15 +377,15 @@ declare interface BaseParagraphStyles {
|
|
|
394
377
|
* Represents a bitmap image resource. Use {@link Editor.loadBitmapImage} to create a BitmapImage, and then {@link Editor.createImageContainer}
|
|
395
378
|
* to display it in the document by creating a MediaContainerNode structure.
|
|
396
379
|
*/
|
|
397
|
-
export declare
|
|
380
|
+
export declare class BitmapImage {
|
|
398
381
|
/**
|
|
399
382
|
* Original width of the bitmap in pixels.
|
|
400
383
|
*/
|
|
401
|
-
|
|
384
|
+
get width(): number;
|
|
402
385
|
/**
|
|
403
386
|
* Original height of the bitmap in pixels.
|
|
404
387
|
*/
|
|
405
|
-
|
|
388
|
+
get height(): number;
|
|
406
389
|
}
|
|
407
390
|
|
|
408
391
|
/**
|
|
@@ -447,7 +430,8 @@ declare enum BlendMode {
|
|
|
447
430
|
hue = 14,
|
|
448
431
|
saturation = 15,
|
|
449
432
|
color = 16,
|
|
450
|
-
luminosity = 17
|
|
433
|
+
luminosity = 17,
|
|
434
|
+
accumulate = 18
|
|
451
435
|
}
|
|
452
436
|
|
|
453
437
|
/**
|
|
@@ -604,7 +588,8 @@ export declare class Context {
|
|
|
604
588
|
*/
|
|
605
589
|
off(eventName: EditorEvent, handlerId: EventHandlerId): void;
|
|
606
590
|
/**
|
|
607
|
-
* @returns the current selection. Nodes that are locked or otherwise non-editable are never included in the
|
|
591
|
+
* @returns the current selection. Nodes that are locked or otherwise non-editable are never included in the regular
|
|
592
|
+
* selection (see {@link selectionIncludingNonEditable} to get any locked nodes the user may have clicked).
|
|
608
593
|
*/
|
|
609
594
|
get selection(): readonly Node[];
|
|
610
595
|
/**
|
|
@@ -636,6 +621,7 @@ export declare class Context {
|
|
|
636
621
|
get insertionParent(): ContainerNode;
|
|
637
622
|
/**
|
|
638
623
|
* @returns The currently viewed page.
|
|
624
|
+
* To change the current page, call {@link Viewport.bringIntoView} with an artboard or other content on that page.
|
|
639
625
|
*/
|
|
640
626
|
get currentPage(): PageNode;
|
|
641
627
|
}
|
|
@@ -787,6 +773,9 @@ export declare class Editor {
|
|
|
787
773
|
* Note that the path data will be normalized, and therefore the `path` getter may return a different SVG string from the path creation input.
|
|
788
774
|
* 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...".
|
|
789
775
|
* Throws if the input is empty or is not legal SVG path syntax.
|
|
776
|
+
*
|
|
777
|
+
* Note: the visual top-left corner of a path may not be its local (0,0) origin point, so it's easiest to position
|
|
778
|
+
* a newly created path using {@link Node.setPositionInParent} rather than setting {@link Node.translation} directly.
|
|
790
779
|
*/
|
|
791
780
|
createPath(path: string): PathNode;
|
|
792
781
|
}
|
|
@@ -847,8 +836,7 @@ declare class ExpressFonts extends Fonts {}
|
|
|
847
836
|
|
|
848
837
|
/**
|
|
849
838
|
* An ExpressRootNode represents the root node of the document's "scenegraph" artwork tree. The root contains a collection
|
|
850
|
-
* of {@link pages}. Each page contains one or more artboards,
|
|
851
|
-
* the document lies within those artboards.
|
|
839
|
+
* of {@link pages}. Each page contains one or more artboards, which in turn hold all the visual content of the document.
|
|
852
840
|
*
|
|
853
841
|
* The parent of ExpressRootNode is undefined, since it is the root of the document tree.
|
|
854
842
|
*/
|
|
@@ -938,50 +926,48 @@ export declare class Fonts {
|
|
|
938
926
|
export declare const fonts: ExpressFonts;
|
|
939
927
|
|
|
940
928
|
/**
|
|
941
|
-
* A GridCellNode represents the
|
|
942
|
-
*
|
|
943
|
-
*
|
|
929
|
+
* A GridCellNode represents the media aspect of a grid cell. Unlike MediaContainerNodes, grid cells cannot be
|
|
930
|
+
* translated or rotated directly and can't modify a mask shape. This implementation translates and rotates the
|
|
931
|
+
* media rectangle child when those actions are applied.
|
|
944
932
|
*/
|
|
945
|
-
export declare class GridCellNode extends
|
|
933
|
+
export declare class GridCellNode extends Node implements IMediaContainerNode {
|
|
946
934
|
/**
|
|
947
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
948
|
-
*
|
|
949
|
-
* **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`.
|
|
950
|
-
*
|
|
951
|
-
* @experimental
|
|
952
935
|
* Always throws as it's not possible to clone a single grid slot.
|
|
953
936
|
* Use the parent grid container instead.
|
|
954
937
|
*
|
|
955
938
|
*/
|
|
956
|
-
|
|
939
|
+
cloneInPlace(): never;
|
|
940
|
+
get allChildren(): Readonly<Iterable<Node>>;
|
|
941
|
+
get mediaRectangle(): ImageRectangleNode | UnknownMediaRectangleNode;
|
|
942
|
+
replaceMedia(media: BitmapImage): void;
|
|
943
|
+
get maskShape(): ReadOnlyMask;
|
|
957
944
|
}
|
|
958
945
|
|
|
959
946
|
/**
|
|
960
|
-
* A GridLayoutNode represents a grid layout in the scenegraph.
|
|
961
|
-
*
|
|
947
|
+
* A GridLayoutNode represents a grid layout in the scenegraph. Currently, grids contain only images but in the future
|
|
948
|
+
* they may support other types of content as well.
|
|
962
949
|
*
|
|
963
950
|
* APIs to create a new grid layout are not yet available.
|
|
964
951
|
*/
|
|
965
952
|
export declare class GridLayoutNode extends Node implements IRectangularNode {
|
|
966
953
|
/**
|
|
967
|
-
* The
|
|
968
|
-
*
|
|
969
|
-
* The children cannot be added or removed.
|
|
954
|
+
* The GridLayout's child nodes. Nodes are returned in order sorted by the y and then x position of their top left
|
|
955
|
+
* corner, i.e. left to right and top to bottom. These children cannot be added or removed.
|
|
970
956
|
*/
|
|
971
957
|
get allChildren(): Readonly<Iterable<GridCellNode>>;
|
|
972
958
|
/**
|
|
973
|
-
* The background fill of the GridLayout.
|
|
959
|
+
* The background fill of the GridLayout. GridLayouts must always have a fill.
|
|
974
960
|
*/
|
|
975
961
|
set fill(fill: Fill);
|
|
976
962
|
get fill(): Readonly<Fill>;
|
|
977
963
|
/**
|
|
978
|
-
* The width of the node.
|
|
964
|
+
* The width of the entire GridLayout node.
|
|
979
965
|
* Must be at least {@link MIN_DIMENSION}.
|
|
980
966
|
*/
|
|
981
967
|
get width(): number;
|
|
982
968
|
set width(value: number);
|
|
983
969
|
/**
|
|
984
|
-
* The height of the node.
|
|
970
|
+
* The height of the entire GridLayout node.
|
|
985
971
|
* Must be at least {@link MIN_DIMENSION}.
|
|
986
972
|
*/
|
|
987
973
|
get height(): number;
|
|
@@ -996,8 +982,8 @@ export declare class GridLayoutNode extends Node implements IRectangularNode {
|
|
|
996
982
|
*/
|
|
997
983
|
export declare class GroupNode extends Node implements ContainerNode {
|
|
998
984
|
/**
|
|
999
|
-
* The Group's regular children. Does not include the maskShape if one is present.
|
|
1000
|
-
* Use the methods on this ItemList object to get, add, and remove children.
|
|
985
|
+
* The Group's regular children. Does not include the {@link maskShape} if one is present.
|
|
986
|
+
* Use the methods on this ItemList object to get, add, and remove regular children.
|
|
1001
987
|
*/
|
|
1002
988
|
get children(): ItemList<Node>;
|
|
1003
989
|
/**
|
|
@@ -1040,6 +1026,72 @@ declare interface IFillableNode {
|
|
|
1040
1026
|
*/
|
|
1041
1027
|
export declare class ImageRectangleNode extends MediaRectangleNode {}
|
|
1042
1028
|
|
|
1029
|
+
/**
|
|
1030
|
+
* Interface for nodes that contain media.
|
|
1031
|
+
*/
|
|
1032
|
+
export declare interface IMediaContainerNode {
|
|
1033
|
+
/**
|
|
1034
|
+
* The rectangular node representing the entire, uncropped bounds of the media (e.g. image, GIFs, or video). The media's position and
|
|
1035
|
+
* rotation can be changed, but it cannot be resized yet via this API. Media types other than images will yield an UnknownMediaRectangleNode
|
|
1036
|
+
* object for now.
|
|
1037
|
+
* @privateRemarks
|
|
1038
|
+
* Future: for resizing, see HZ-17885 & HZ-12247; for other media types, see HZ-15896.
|
|
1039
|
+
*/
|
|
1040
|
+
get mediaRectangle(): ImageRectangleNode | UnknownMediaRectangleNode;
|
|
1041
|
+
/**
|
|
1042
|
+
* Replace existing media inline. The new media is sized to completely fill the bounds of the existing maskShape; if the
|
|
1043
|
+
* media's aspect ratio differs from the maskShape's, the media will be cropped by the maskShape on either the left/right
|
|
1044
|
+
* or top/bottom edges. Currently only supports images as the new media, but previous media can be of any type.
|
|
1045
|
+
*
|
|
1046
|
+
* @param media - New content to display. Currently must be a {@link BitmapImage}.
|
|
1047
|
+
*/
|
|
1048
|
+
replaceMedia(media: BitmapImage): void;
|
|
1049
|
+
/**
|
|
1050
|
+
* A read-only view of the mask shape used for cropping/clipping the media.
|
|
1051
|
+
*/
|
|
1052
|
+
get maskShape(): INodeBounds;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* An interface for the bounds of a {@link Node}.
|
|
1057
|
+
*/
|
|
1058
|
+
export declare interface INodeBounds extends IVisualNodeBounds {
|
|
1059
|
+
/**
|
|
1060
|
+
* An axis-aligned box in the parent’s coordinate space encompassing the node’s layout bounds (its
|
|
1061
|
+
* {@link boundsLocal}, as transformed by its position and rotation relative to the parent). If the node has
|
|
1062
|
+
* rotation, the top-left of its boundsLocal box (aligned to its own axes) is not necessarily located at the
|
|
1063
|
+
* top-left of the boundsInParent box (since it's aligned to the parent's axes). This value is well-defined
|
|
1064
|
+
* even for an orphan node with no parent.
|
|
1065
|
+
*/
|
|
1066
|
+
get boundsInParent(): Readonly<Rect>;
|
|
1067
|
+
/**
|
|
1068
|
+
* The translation of the node along its parent's axes. This is identical to the translation component of
|
|
1069
|
+
* `transformMatrix`. It is often simpler to set a node's position using `setPositionInParent` than by
|
|
1070
|
+
* setting translation directly.
|
|
1071
|
+
*/
|
|
1072
|
+
get translation(): Readonly<Point>;
|
|
1073
|
+
/**
|
|
1074
|
+
* The node's local rotation angle in degrees, relative to its parent's axes. Use `setRotationInParent` to
|
|
1075
|
+
* change rotation by rotating around a defined centerpoint.
|
|
1076
|
+
*/
|
|
1077
|
+
get rotation(): number;
|
|
1078
|
+
/**
|
|
1079
|
+
* The node's total rotation angle in degrees, relative to the overall global view of the document – including any
|
|
1080
|
+
* cumulative rotation from the node's parent containers.
|
|
1081
|
+
*/
|
|
1082
|
+
get rotationInScreen(): number;
|
|
1083
|
+
/**
|
|
1084
|
+
* The node's transform matrix relative to its parent.
|
|
1085
|
+
*/
|
|
1086
|
+
get transformMatrix(): mat2d;
|
|
1087
|
+
/**
|
|
1088
|
+
* Convert the node's {@link boundsLocal} to an axis-aligned bounding box in the coordinate space of the target
|
|
1089
|
+
* node. Both nodes must share the same {@link visualRoot}, but can lie anywhere within that subtree
|
|
1090
|
+
* relative to one another (the target node need not be an ancestor of this node, nor vice versa).
|
|
1091
|
+
*/
|
|
1092
|
+
boundsInNode(targetNode: VisualNode): Readonly<Rect>;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1043
1095
|
/**
|
|
1044
1096
|
* Interface for nodes with width and height properties.
|
|
1045
1097
|
*/
|
|
@@ -1057,20 +1109,18 @@ declare interface IStrokableNode {
|
|
|
1057
1109
|
}
|
|
1058
1110
|
|
|
1059
1111
|
/**
|
|
1060
|
-
* ItemList represents an ordered list of API objects
|
|
1061
|
-
*
|
|
1062
|
-
* children that exist in the parent node. See {@link Node.allChildren} for details).
|
|
1112
|
+
* ItemList represents an ordered list of API objects that are all children of the same parent node. It is most
|
|
1113
|
+
* frequently encountered as {@link ArtboardNode.children} or {@link GroupNode.children}.
|
|
1063
1114
|
*
|
|
1064
1115
|
* ItemList also provides APIs for manipulating the list by adding items to the parent or removing items from the parent.
|
|
1065
1116
|
*
|
|
1066
|
-
*
|
|
1117
|
+
* Note that some parent nodes may have additional children that are *not* present in the main `children` ItemList
|
|
1118
|
+
* (e.g. {@link GroupNode.maskShape}). Use the read-only {@link Node.allChildren} for a combined view of all children.
|
|
1067
1119
|
*/
|
|
1068
1120
|
export declare class ItemList<T extends ListItem> extends RestrictedItemList<T> {
|
|
1069
1121
|
/**
|
|
1070
1122
|
* Add one or more items to the end of the list. The last argument will become the last item in this list. Items are
|
|
1071
1123
|
* removed from their previous parent, if any – or if an item is already in *this* list, its index is simply changed.
|
|
1072
|
-
*
|
|
1073
|
-
* @throws - if item has a different parent and item is a {@link ThreadedTextNode}, or if item's children subtree contains a {@link ThreadedTextNode}.
|
|
1074
1124
|
*/
|
|
1075
1125
|
append(...items: T[]): void;
|
|
1076
1126
|
/**
|
|
@@ -1081,28 +1131,53 @@ export declare class ItemList<T extends ListItem> extends RestrictedItemList<T>
|
|
|
1081
1131
|
* Replace `oldItem` with `newItem` in this list. Throws if `oldItem` is not a member of this list.
|
|
1082
1132
|
* `newItem` is removed from its previous parent, if any – or if it's already in *this* list, its index is simply
|
|
1083
1133
|
* changed. No-op if both arguments are the same item.
|
|
1084
|
-
*
|
|
1085
|
-
* @throws - if newItem has a different parent and newItem is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}.
|
|
1086
1134
|
*/
|
|
1087
1135
|
replace(oldItem: T, newItem: T): void;
|
|
1088
1136
|
/**
|
|
1089
1137
|
* Insert `newItem` so it is immediately before `before` in this list: places `newItem` at the index that `before` used
|
|
1090
1138
|
* to occupy, shifting `before` and all later items to higher indices. `newItem` is removed from its previous parent,
|
|
1091
1139
|
* if any – or if it's already in *this* list, its index is simply changed. No-op if both arguments are the same item.
|
|
1092
|
-
*
|
|
1093
|
-
* @throws - if newItem has a different parent and it is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}.
|
|
1094
1140
|
*/
|
|
1095
1141
|
insertBefore(newItem: T, before: T): void;
|
|
1096
1142
|
/**
|
|
1097
1143
|
* Insert `newItem` so it is immediately after `after` in this list: places `newItem` at the index one higher than `after`,
|
|
1098
1144
|
* shifting all later items to higher indices (the index of `after` remains unchanged). `newItem` is removed from its previous parent,
|
|
1099
1145
|
* if any – or if it's already in *this* list, its index is simply changed. No-op if both arguments are the same item.
|
|
1100
|
-
*
|
|
1101
|
-
* @throws - if newItem has a different parent and it is a {@link ThreadedTextNode}, or if newItem's children subtree contains a {@link ThreadedTextNode}.
|
|
1102
1146
|
*/
|
|
1103
1147
|
insertAfter(newItem: T, after: T): void;
|
|
1104
1148
|
}
|
|
1105
1149
|
|
|
1150
|
+
/**
|
|
1151
|
+
* An interface for the bounds of a {@link VisualNode}.
|
|
1152
|
+
*/
|
|
1153
|
+
export declare interface IVisualNodeBounds {
|
|
1154
|
+
/**
|
|
1155
|
+
* The bounding box of the node, expressed in the node's local coordinate space (which may be shifted or rotated
|
|
1156
|
+
* relative to its parent). Generally matches the selection outline seen in the UI, encompassing the vector path
|
|
1157
|
+
* "spine" of the shape as well as its stroke, but excluding effects such as shadows.
|
|
1158
|
+
*
|
|
1159
|
+
* The top-left corner of the bounding box corresponds to the visual top-left corner of the node, but this value is
|
|
1160
|
+
* *not* necessarily (0,0) – this is especially true for Text and Path nodes.
|
|
1161
|
+
*/
|
|
1162
|
+
get boundsLocal(): Readonly<Rect>;
|
|
1163
|
+
/**
|
|
1164
|
+
* Position of the node's centerpoint in its own local coordinate space, i.e. the center of the boundsLocal box.
|
|
1165
|
+
*/
|
|
1166
|
+
get centerPointLocal(): Readonly<Point>;
|
|
1167
|
+
/**
|
|
1168
|
+
* Position of the node's top-left corner in its own local coordinate space, equal to (boundsLocal.x,
|
|
1169
|
+
* boundsLocal.y). If the node is rotated, this is not the same as the top-left corner of
|
|
1170
|
+
* boundsInParent.
|
|
1171
|
+
*/
|
|
1172
|
+
get topLeftLocal(): Readonly<Point>;
|
|
1173
|
+
/**
|
|
1174
|
+
* Convert a point given in the node’s local coordinate space to a point in the coordinate space of the target node.
|
|
1175
|
+
* Both nodes must share the same {@link visualRoot}, but can lie anywhere within that subtree relative to one
|
|
1176
|
+
* another (the target node need not be an ancestor of this node, nor vice versa).
|
|
1177
|
+
*/
|
|
1178
|
+
localPointInNode(localPoint: Point, targetNode: VisualNode): Readonly<Point>;
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1106
1181
|
/**
|
|
1107
1182
|
* A LineNode represents a simple vector line in the scenegraph – a single straight-line segment.
|
|
1108
1183
|
*
|
|
@@ -1168,11 +1243,12 @@ export declare class LineNode extends StrokableNode {
|
|
|
1168
1243
|
}
|
|
1169
1244
|
|
|
1170
1245
|
/**
|
|
1171
|
-
* Base interface for any item that can be
|
|
1172
|
-
* types of items, including Nodes, Fills, and Strokes.
|
|
1246
|
+
* Base interface for any item that can be stored in an {@link ItemList} (typically a {@link Node} type).
|
|
1173
1247
|
*/
|
|
1174
1248
|
export declare interface ListItem {}
|
|
1175
1249
|
|
|
1250
|
+
declare type ListStyleInput = OrderedListStyleInput | UnorderedListStyleInput | RemoveListStyleInput;
|
|
1251
|
+
|
|
1176
1252
|
/**
|
|
1177
1253
|
* A MediaContainerNode is a multi-node construct that displays media (such as images or video) with optional cropping and
|
|
1178
1254
|
* clipping to a shape mask. The underlying media asset is always rectangular, but the final appearance of this node is
|
|
@@ -1181,12 +1257,7 @@ export declare interface ListItem {}
|
|
|
1181
1257
|
* To create new media container for a bitmap image, see {@link Editor.createImageContainer}. APIs for creating a
|
|
1182
1258
|
* container with other content, such as videos, are not yet available.
|
|
1183
1259
|
*/
|
|
1184
|
-
export declare class MediaContainerNode extends Node {
|
|
1185
|
-
/**
|
|
1186
|
-
* The rectangular node representing the entire, uncropped bounds of the media (e.g. image, GIFs, or video). The media's position and
|
|
1187
|
-
* rotation can be changed, but it cannot be resized yet via this API. Media types other than images will yield an UnknownMediaRectangleNode
|
|
1188
|
-
* object for now.
|
|
1189
|
-
*/
|
|
1260
|
+
export declare class MediaContainerNode extends Node implements IMediaContainerNode {
|
|
1190
1261
|
get mediaRectangle(): ImageRectangleNode | UnknownMediaRectangleNode;
|
|
1191
1262
|
/**
|
|
1192
1263
|
* The mask used for cropping/clipping the media. The bounds of this shape are entire visible bounds of the container.
|
|
@@ -1194,13 +1265,6 @@ export declare class MediaContainerNode extends Node {
|
|
|
1194
1265
|
* different shape via this API.
|
|
1195
1266
|
*/
|
|
1196
1267
|
get maskShape(): FillableNode;
|
|
1197
|
-
/**
|
|
1198
|
-
* Replace existing media inline. The new media is sized to completely fill the bounds of the existing maskShape; if the
|
|
1199
|
-
* media's aspect ratio differs from the maskShape's, the media will be cropped by the maskShape on either the left/right
|
|
1200
|
-
* or top/bottom edges. Currently only supports images as the new media, but previous media can be of any type.
|
|
1201
|
-
*
|
|
1202
|
-
* @param media - New content to display. Currently must be a {@link BitmapImage}.
|
|
1203
|
-
*/
|
|
1204
1268
|
replaceMedia(media: BitmapImage): void;
|
|
1205
1269
|
}
|
|
1206
1270
|
|
|
@@ -1214,6 +1278,7 @@ export declare abstract class MediaRectangleNode extends Node implements Readonl
|
|
|
1214
1278
|
/**
|
|
1215
1279
|
* Get {@link AddOnData} reference for managing private metadata attached to the media resource displayed by this node.
|
|
1216
1280
|
* The same media resource may be reused in multiple places in the document, and all share the same AddOnData state.
|
|
1281
|
+
* Note: This support is not present for PSD/AI assets. An error will be thrown in that case.
|
|
1217
1282
|
*/
|
|
1218
1283
|
get mediaAddOnData(): AddOnData;
|
|
1219
1284
|
/**
|
|
@@ -1229,16 +1294,11 @@ export declare abstract class MediaRectangleNode extends Node implements Readonl
|
|
|
1229
1294
|
*/
|
|
1230
1295
|
get height(): number;
|
|
1231
1296
|
/**
|
|
1232
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
1233
|
-
*
|
|
1234
|
-
* **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`.
|
|
1235
|
-
*
|
|
1236
|
-
* @experimental
|
|
1237
1297
|
* Always throws as it's not possible to clone just the media rectangle alone.
|
|
1238
1298
|
* Clone the entire parent MediaContainerNode instead.
|
|
1239
1299
|
*
|
|
1240
1300
|
*/
|
|
1241
|
-
|
|
1301
|
+
cloneInPlace(): never;
|
|
1242
1302
|
}
|
|
1243
1303
|
|
|
1244
1304
|
/**
|
|
@@ -1247,9 +1307,9 @@ export declare abstract class MediaRectangleNode extends Node implements Readonl
|
|
|
1247
1307
|
* minimal VisualNode or BaseNode. As a general rule, if you can click or drag an object with the select/move
|
|
1248
1308
|
* tool in the UI, then it extends from Node.
|
|
1249
1309
|
*
|
|
1250
|
-
* A Node’s parent is always a
|
|
1310
|
+
* A Node’s parent is always a {@link VisualNode}, but it might not be another Node (e.g. if the parent is an ArtboardNode).
|
|
1251
1311
|
*/
|
|
1252
|
-
declare class Node extends VisualNode {
|
|
1312
|
+
declare class Node extends VisualNode implements INodeBounds {
|
|
1253
1313
|
/**
|
|
1254
1314
|
* Returns a read-only list of all children of the node. General-purpose content containers such as ArtboardNode or
|
|
1255
1315
|
* GroupNode also provide a mutable {@link ContainerNode.children} list. Other nodes with a more specific structure can
|
|
@@ -1259,25 +1319,8 @@ declare class Node extends VisualNode {
|
|
|
1259
1319
|
* The children of a Node are always other Node classes (never the more minimal BaseNode).
|
|
1260
1320
|
*/
|
|
1261
1321
|
get allChildren(): Readonly<Iterable<Node>>;
|
|
1262
|
-
/**
|
|
1263
|
-
* An axis-aligned box in the parent’s coordinate space encompassing the node’s layout bounds (its
|
|
1264
|
-
* {@link boundsLocal}, as transformed by its position and rotation relative to the parent). If the node has
|
|
1265
|
-
* rotation, the top-left of its boundsLocal box (aligned to its own axes) is not necessarily located at the
|
|
1266
|
-
* top-left of the boundsInParent box (since it's aligned to the parent's axes). This value is well-defined
|
|
1267
|
-
* even for an orphan node with no parent.
|
|
1268
|
-
*/
|
|
1269
1322
|
get boundsInParent(): Readonly<Rect>;
|
|
1270
|
-
/**
|
|
1271
|
-
* Convert the node's {@link boundsLocal} to an axis-aligned bounding box in the coordinate space of the target
|
|
1272
|
-
* node. Both nodes must share the same {@link visualRoot}, but can lie anywhere within that subtree
|
|
1273
|
-
* relative to one another (the target node need not be an ancestor of this node, nor vice versa).
|
|
1274
|
-
*/
|
|
1275
1323
|
boundsInNode(targetNode: VisualNode): Readonly<Rect>;
|
|
1276
|
-
/**
|
|
1277
|
-
* The translation of the node along its parent's axes. This is identical to the translation component of
|
|
1278
|
-
* `transformMatrix`. It is often simpler to set a node's position using `setPositionInParent` than by
|
|
1279
|
-
* setting translation directly.
|
|
1280
|
-
*/
|
|
1281
1324
|
get translation(): Readonly<Point>;
|
|
1282
1325
|
set translation(value: Point);
|
|
1283
1326
|
/**
|
|
@@ -1295,10 +1338,6 @@ declare class Node extends VisualNode {
|
|
|
1295
1338
|
* ```
|
|
1296
1339
|
*/
|
|
1297
1340
|
setPositionInParent(parentPoint: Point, localRegistrationPoint: Point): void;
|
|
1298
|
-
/**
|
|
1299
|
-
* The node's local rotation angle in degrees, relative to its parent's axes. Use `setRotationInParent` to
|
|
1300
|
-
* change rotation by rotating around a defined centerpoint.
|
|
1301
|
-
*/
|
|
1302
1341
|
get rotation(): number;
|
|
1303
1342
|
/**
|
|
1304
1343
|
* Set the node’s rotation angle relative to its parent to exactly the given value, keeping the given point in the
|
|
@@ -1310,29 +1349,23 @@ declare class Node extends VisualNode {
|
|
|
1310
1349
|
* @example
|
|
1311
1350
|
* Rotate the rectangle 45 degrees clockwise around its centerpoint:
|
|
1312
1351
|
* ```
|
|
1313
|
-
* rectangle.setRotationInParent(45,
|
|
1352
|
+
* rectangle.setRotationInParent(45, rectangle.centerPointLocal);
|
|
1314
1353
|
* ```
|
|
1315
1354
|
*/
|
|
1316
1355
|
setRotationInParent(angleInDegrees: number, localRotationPoint: Point): void;
|
|
1317
|
-
/**
|
|
1318
|
-
* The node's total rotation angle in degrees, relative to the overall global view of the document – including any
|
|
1319
|
-
* cumulative rotation from the node's parent containers.
|
|
1320
|
-
*/
|
|
1321
1356
|
get rotationInScreen(): number;
|
|
1322
1357
|
/**
|
|
1323
1358
|
* The node's opacity, from 0.0 to 1.0
|
|
1324
1359
|
*/
|
|
1325
1360
|
get opacity(): number;
|
|
1326
1361
|
set opacity(opacity: number);
|
|
1327
|
-
/**
|
|
1328
|
-
* The node's transform matrix relative to its parent.
|
|
1329
|
-
*/
|
|
1330
1362
|
get transformMatrix(): mat2d;
|
|
1331
1363
|
/**
|
|
1332
1364
|
* The node's lock/unlock state. Locked nodes are excluded from the selection (see {@link Context.selection}), and
|
|
1333
|
-
* cannot be edited by the user in the UI unless they are unlocked first.
|
|
1334
|
-
*
|
|
1335
|
-
* before
|
|
1365
|
+
* cannot be edited by the user in the UI unless they are unlocked first. It is still possible to mutate locked nodes
|
|
1366
|
+
* at the model level using these APIs. However, please consider if modifying a locked node would align with user
|
|
1367
|
+
* expectations before doing so.
|
|
1368
|
+
*
|
|
1336
1369
|
*/
|
|
1337
1370
|
get locked(): boolean;
|
|
1338
1371
|
set locked(locked: boolean);
|
|
@@ -1348,7 +1381,15 @@ declare class Node extends VisualNode {
|
|
|
1348
1381
|
* **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`.
|
|
1349
1382
|
*
|
|
1350
1383
|
* @experimental
|
|
1351
|
-
* Changes the width to the given value
|
|
1384
|
+
* Changes the width to the given value by visually *scaling* the entire content larger or smaller on both axes to
|
|
1385
|
+
* preserve its existing aspect ratio, keeping its top-left corner ({@link topLeftLocal}) at a fixed location.
|
|
1386
|
+
*
|
|
1387
|
+
* Scaling changes the size of visual styling elements such as stroke width, corner detailing, and font size.
|
|
1388
|
+
* Contrast this to *resizing* operations (such as {@link resizeToFitWithin}), which adjust the bounding box of an
|
|
1389
|
+
* element while trying to preserve the existing size of visual detailing such as strokes, corners, and fonts.
|
|
1390
|
+
*
|
|
1391
|
+
* Rescaling becomes baked into the updated values of fields such as stroke weight, rectangle width, etc. (it is not
|
|
1392
|
+
* a separate, persistent scale factor multiplier).
|
|
1352
1393
|
*/
|
|
1353
1394
|
rescaleProportionalToWidth(width: number): void;
|
|
1354
1395
|
/**
|
|
@@ -1357,7 +1398,8 @@ declare class Node extends VisualNode {
|
|
|
1357
1398
|
* **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`.
|
|
1358
1399
|
*
|
|
1359
1400
|
* @experimental
|
|
1360
|
-
* Changes the height to the given value
|
|
1401
|
+
* Changes the height to the given value by visually *scaling* the entire content larger or smaller on both axes to
|
|
1402
|
+
* preserve its existing aspect ratio. See {@link rescaleProportionalToWidth} documentation for additional explanation.
|
|
1361
1403
|
*/
|
|
1362
1404
|
rescaleProportionalToHeight(height: number): void;
|
|
1363
1405
|
/**
|
|
@@ -1366,9 +1408,17 @@ declare class Node extends VisualNode {
|
|
|
1366
1408
|
* **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`.
|
|
1367
1409
|
*
|
|
1368
1410
|
* @experimental
|
|
1369
|
-
* Resizes the node to fit within a box
|
|
1411
|
+
* Resizes the node to fit entirely *within* a box of the given dimensions, keeping its top-left corner ({@link topLeftLocal})
|
|
1412
|
+
* at a fixed location. Nodes with a fixed aspect ratio may leave unused space on one axis as a result, but nodes
|
|
1413
|
+
* with flexible aspect ratio will be resized to the exact box size specified.
|
|
1370
1414
|
*
|
|
1371
|
-
*
|
|
1415
|
+
* Resizing attempts to preserve the existing size of visual styling elements such as stroke width, corner detailing,
|
|
1416
|
+
* and font size as much as possible. Contrast with *rescaling* (such as {@link rescaleProportionalToWidth}), which
|
|
1417
|
+
* always changes the size of visual detailing in exact proportion to the change in overall bounding box size. This
|
|
1418
|
+
* API may still produce *some* degree of rescaling if necessary for certain shapes with fixed corner/edge detailing
|
|
1419
|
+
* to fit the box better.
|
|
1420
|
+
*
|
|
1421
|
+
* @see resizeToCover
|
|
1372
1422
|
*/
|
|
1373
1423
|
resizeToFitWithin(width: number, height: number): void;
|
|
1374
1424
|
/**
|
|
@@ -1377,29 +1427,25 @@ declare class Node extends VisualNode {
|
|
|
1377
1427
|
* **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`.
|
|
1378
1428
|
*
|
|
1379
1429
|
* @experimental
|
|
1380
|
-
* Resizes the node to cover a box
|
|
1430
|
+
* Resizes the node to completely *cover* a box of the given dimensions, keeping its top-left corner ({@link topLeftLocal})
|
|
1431
|
+
* at a fixed location. Nodes with a fixed aspect ratio may extend outside the box on one axis as a result, but
|
|
1432
|
+
* nodes with flexible aspect ratio will be resized to the exact box size specified. See {@link resizeToFitWithin}
|
|
1433
|
+
* documentation for additional explanation.
|
|
1381
1434
|
*
|
|
1382
|
-
*
|
|
1435
|
+
* @see resizeToFitWithin
|
|
1383
1436
|
*/
|
|
1384
1437
|
resizeToCover(width: number, height: number): void;
|
|
1385
1438
|
/**
|
|
1386
|
-
*
|
|
1439
|
+
* Creates a copy of this node and its entire subtree of descendants.
|
|
1387
1440
|
*
|
|
1388
|
-
*
|
|
1441
|
+
* The node must be attached to a page as the copy will be added as a sibling.
|
|
1389
1442
|
*
|
|
1390
|
-
* @experimental
|
|
1391
|
-
* Creates an orphaned copy of this node, including all persistent attributes and descendants.
|
|
1392
1443
|
*/
|
|
1393
|
-
|
|
1444
|
+
cloneInPlace(): typeof this;
|
|
1394
1445
|
}
|
|
1395
1446
|
export { Node as Node };
|
|
1396
1447
|
|
|
1397
1448
|
/**
|
|
1398
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
1399
|
-
*
|
|
1400
|
-
* **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`.
|
|
1401
|
-
*
|
|
1402
|
-
* @experimental
|
|
1403
1449
|
* Numbering types used to display ordered lists: 1, A, a, I, i 01, 001.
|
|
1404
1450
|
*/
|
|
1405
1451
|
export declare enum OrderedListNumbering {
|
|
@@ -1413,28 +1459,18 @@ export declare enum OrderedListNumbering {
|
|
|
1413
1459
|
}
|
|
1414
1460
|
|
|
1415
1461
|
/**
|
|
1416
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
1417
|
-
*
|
|
1418
|
-
* **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`.
|
|
1419
|
-
*
|
|
1420
|
-
* @experimental
|
|
1421
1462
|
* OrderedListStyle represents the style of an ordered list.
|
|
1422
1463
|
*/
|
|
1423
1464
|
export declare type OrderedListStyle = Required<OrderedListStyleInput>;
|
|
1424
1465
|
|
|
1425
1466
|
/**
|
|
1426
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
1427
|
-
*
|
|
1428
|
-
* **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`.
|
|
1429
|
-
*
|
|
1430
|
-
* @experimental
|
|
1431
1467
|
* Interface for specifying an ordered list style, such as a numbered list.
|
|
1432
1468
|
*/
|
|
1433
1469
|
export declare interface OrderedListStyleInput extends BaseParagraphListStyle {
|
|
1434
1470
|
type: ParagraphListType.ordered;
|
|
1435
1471
|
/**
|
|
1436
1472
|
* The numbering style to use. If undefined, it defaults to a different type depending on the paragraph's indent level.
|
|
1437
|
-
* The defaults for increasing indent are 1, a, i, I, and then they repeat.
|
|
1473
|
+
* The defaults for increasing indent are: 1, a, i, I, and then they repeat.
|
|
1438
1474
|
* These markers and the prefix/postfix strings (if any) are displayed using the same font as the start of the
|
|
1439
1475
|
* paragraph's text content.
|
|
1440
1476
|
*/
|
|
@@ -1466,14 +1502,15 @@ export declare class PageList extends RestrictedItemList<PageNode> {
|
|
|
1466
1502
|
|
|
1467
1503
|
/**
|
|
1468
1504
|
* A PageNode represents a page in the document, a child of the root node of the document's "scenegraph" artwork tree
|
|
1469
|
-
* (see {@link ExpressRootNode}). A page contains one or more artboards,
|
|
1470
|
-
*
|
|
1505
|
+
* (see {@link ExpressRootNode}). A page contains one or more artboards, which in turn contain all the page's visual
|
|
1506
|
+
* content. If multiple artboards are present, each represents a keyframe "scene" in the page's animation timeline.
|
|
1471
1507
|
*
|
|
1472
1508
|
* To create new pages, see {@link PageList.addPage}.
|
|
1473
1509
|
*/
|
|
1474
1510
|
export declare class PageNode extends BaseNode implements IRectangularNode {
|
|
1475
1511
|
/**
|
|
1476
|
-
* The artboards or "scenes"
|
|
1512
|
+
* The artboards or "scenes," which hold the page's visual contents. If multiple artboards are present, this list
|
|
1513
|
+
* represents an ordered keyframe sequence in the page's animation timeline.
|
|
1477
1514
|
* To create new artboards, see {@link ArtboardList.addArtboard}.
|
|
1478
1515
|
*/
|
|
1479
1516
|
get artboards(): ArtboardList;
|
|
@@ -1524,24 +1561,15 @@ export declare class PageNode extends BaseNode implements IRectangularNode {
|
|
|
1524
1561
|
}
|
|
1525
1562
|
|
|
1526
1563
|
/**
|
|
1527
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
1528
|
-
*
|
|
1529
|
-
* **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`.
|
|
1530
|
-
*
|
|
1531
|
-
* @experimental
|
|
1532
1564
|
* Indicates list type: see {@link UnorderedListStyleInput} and {@link OrderedListStyleInput}.
|
|
1533
1565
|
*/
|
|
1534
1566
|
export declare enum ParagraphListType {
|
|
1535
|
-
|
|
1536
|
-
|
|
1567
|
+
none = 0,
|
|
1568
|
+
unordered = 1,
|
|
1569
|
+
ordered = 2
|
|
1537
1570
|
}
|
|
1538
1571
|
|
|
1539
1572
|
/**
|
|
1540
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
1541
|
-
*
|
|
1542
|
-
* **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`.
|
|
1543
|
-
*
|
|
1544
|
-
* @experimental
|
|
1545
1573
|
* Text styles that must be applied to an entire paragraph atomically. (Contrast with CharacterStyles which can be applied to
|
|
1546
1574
|
* any range of characters, even a short span like one single word).
|
|
1547
1575
|
*/
|
|
@@ -1550,39 +1578,23 @@ export declare interface ParagraphStyles extends BaseParagraphStyles {
|
|
|
1550
1578
|
}
|
|
1551
1579
|
|
|
1552
1580
|
/**
|
|
1553
|
-
*
|
|
1554
|
-
*
|
|
1555
|
-
* **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`.
|
|
1556
|
-
*
|
|
1557
|
-
* @experimental
|
|
1558
|
-
* The variant of {@link ParagraphStyles} with all optional style fields is used to apply ParagraphStyles(). When using that API,
|
|
1581
|
+
* A variant of {@link ParagraphStyles} with all style fields optional, used for applyParagraphStyles(). When using that API,
|
|
1559
1582
|
* any fields not specified are left unchanged, preserving the text's existing styles.
|
|
1560
1583
|
*/
|
|
1561
1584
|
export declare interface ParagraphStylesInput extends Partial<BaseParagraphStyles> {
|
|
1562
|
-
list?:
|
|
1585
|
+
list?: ListStyleInput;
|
|
1563
1586
|
}
|
|
1564
1587
|
|
|
1565
1588
|
/**
|
|
1566
|
-
*
|
|
1567
|
-
*
|
|
1568
|
-
* **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`.
|
|
1569
|
-
*
|
|
1570
|
-
* @experimental
|
|
1571
|
-
* A set of {@link ParagraphStyles} and the text range they apply to. It is seen in the paragraphStyleRanges getter.
|
|
1589
|
+
* A set of {@link ParagraphStyles} along with the text range they apply to. Returned by the paragraphStyleRanges getter.
|
|
1572
1590
|
*/
|
|
1573
1591
|
export declare interface ParagraphStylesRange extends ParagraphStyles, StyleRange {}
|
|
1574
1592
|
|
|
1575
1593
|
/**
|
|
1576
|
-
*
|
|
1577
|
-
*
|
|
1578
|
-
* **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`.
|
|
1579
|
-
*
|
|
1580
|
-
* @experimental
|
|
1581
|
-
* A variant of {@link ParagraphStylesRange} with all style fields optional and the text range they apply to. Used for the
|
|
1594
|
+
* A variant of {@link ParagraphStylesRange} with all style fields optional, along with the text range they apply to. Used for the
|
|
1582
1595
|
* paragraphStyleRanges setter. When invoking the setter, any fields not specified are reset to their defaults.
|
|
1583
1596
|
*
|
|
1584
|
-
* Paragraphs are separated by newline characters (`\n`).
|
|
1585
|
-
* those boundaries.
|
|
1597
|
+
* Paragraphs are separated by newline characters (`\n`). Ranges specified here should align with those boundaries.
|
|
1586
1598
|
*/
|
|
1587
1599
|
export declare interface ParagraphStylesRangeInput extends ParagraphStylesInput, StyleRange {}
|
|
1588
1600
|
|
|
@@ -1591,6 +1603,9 @@ export declare interface ParagraphStylesRangeInput extends ParagraphStylesInput,
|
|
|
1591
1603
|
* yet, only read.
|
|
1592
1604
|
*
|
|
1593
1605
|
* To create new paths, see {@link Editor.createPath}.
|
|
1606
|
+
*
|
|
1607
|
+
* Note: the visual top-left corner of a path may not be its local (0,0) origin point, so it's easiest to position
|
|
1608
|
+
* a path using {@link Node.setPositionInParent} rather than setting its {@link Node.translation} directly.
|
|
1594
1609
|
*/
|
|
1595
1610
|
export declare class PathNode extends FillableNode {
|
|
1596
1611
|
/**
|
|
@@ -1616,11 +1631,10 @@ export declare interface Point {
|
|
|
1616
1631
|
}
|
|
1617
1632
|
|
|
1618
1633
|
/**
|
|
1619
|
-
* ReadOnlyItemList represents an ordered list of API objects
|
|
1620
|
-
* same parent node. (The reverse is not necessarily true, however: this list might not include all
|
|
1621
|
-
* children that exist in the parent node. See {@link Node.allChildren} for details).
|
|
1634
|
+
* ReadOnlyItemList represents an ordered list of API objects that are all children of the same parent node.
|
|
1622
1635
|
*
|
|
1623
|
-
* Items in a bare ReadOnlyItemList cannot be added, removed, or reordered.
|
|
1636
|
+
* Items in a bare ReadOnlyItemList cannot be added, removed, or reordered. The {@link ItemList} subclass adds more
|
|
1637
|
+
* capabilities, and is most frequently encountered as {@link ArtboardNode.children} or {@link GroupNode.children}.
|
|
1624
1638
|
*/
|
|
1625
1639
|
export declare class ReadOnlyItemList<T extends ListItem> {
|
|
1626
1640
|
/**
|
|
@@ -1655,6 +1669,26 @@ export declare class ReadOnlyItemList<T extends ListItem> {
|
|
|
1655
1669
|
toArray(): readonly T[];
|
|
1656
1670
|
}
|
|
1657
1671
|
|
|
1672
|
+
/**
|
|
1673
|
+
* A read-only view of a mask shape.
|
|
1674
|
+
*/
|
|
1675
|
+
export declare class ReadOnlyMask implements INodeBounds {
|
|
1676
|
+
/**
|
|
1677
|
+
* The type of {@link ReadOnlyMask}.
|
|
1678
|
+
*/
|
|
1679
|
+
get type(): "ReadOnlyMask";
|
|
1680
|
+
get boundsLocal(): Readonly<Rect>;
|
|
1681
|
+
get centerPointLocal(): Readonly<Point>;
|
|
1682
|
+
get topLeftLocal(): Readonly<Point>;
|
|
1683
|
+
localPointInNode(localPoint: Point, targetNode: VisualNode): Readonly<Point>;
|
|
1684
|
+
get boundsInParent(): Readonly<Rect>;
|
|
1685
|
+
boundsInNode(targetNode: VisualNode): Readonly<Rect>;
|
|
1686
|
+
get translation(): Readonly<Point>;
|
|
1687
|
+
get rotation(): number;
|
|
1688
|
+
get rotationInScreen(): number;
|
|
1689
|
+
get transformMatrix(): mat2d;
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1658
1692
|
export declare interface Rect {
|
|
1659
1693
|
x: number;
|
|
1660
1694
|
y: number;
|
|
@@ -1737,9 +1771,15 @@ export declare class RectangleNode extends FillableNode implements IRectangularN
|
|
|
1737
1771
|
}
|
|
1738
1772
|
|
|
1739
1773
|
/**
|
|
1740
|
-
*
|
|
1741
|
-
|
|
1742
|
-
|
|
1774
|
+
* Interface for removing a list style.
|
|
1775
|
+
*/
|
|
1776
|
+
declare interface RemoveListStyleInput extends BaseParagraphListStyle {
|
|
1777
|
+
type: ParagraphListType.none;
|
|
1778
|
+
}
|
|
1779
|
+
|
|
1780
|
+
/**
|
|
1781
|
+
* Base for ItemLists that restrict how items are added to the list, but freely allow items to be removed and
|
|
1782
|
+
* reordered. The {@link ItemList} subclass adds more capabilities, however.
|
|
1743
1783
|
*/
|
|
1744
1784
|
declare class RestrictedItemList<T extends ListItem> extends ReadOnlyItemList<T> {
|
|
1745
1785
|
/**
|
|
@@ -1863,26 +1903,22 @@ export declare type SolidColorStrokeWithOptionalType = Omit<SolidColorStroke, "t
|
|
|
1863
1903
|
Partial<Pick<SolidColorStroke, "type">>;
|
|
1864
1904
|
|
|
1865
1905
|
/**
|
|
1866
|
-
* A StandaloneTextNode represents
|
|
1906
|
+
* A StandaloneTextNode represents text that is displayed *entirely* within one single frame in the scenegraph (in
|
|
1907
|
+
* contrast to {@link ThreadedTextNode}, where text may flow across several separate display "frames").
|
|
1867
1908
|
* The StandaloneTextNode does not directly hold the text content and styles – instead it refers to a {@link TextNodeContentModel}.
|
|
1868
1909
|
*
|
|
1869
|
-
* To create
|
|
1910
|
+
* To create a new StandaloneTextNode, see {@link Editor.createText}.
|
|
1870
1911
|
*/
|
|
1871
1912
|
export declare class StandaloneTextNode extends TextNode {
|
|
1872
1913
|
get nextTextNode(): undefined;
|
|
1873
1914
|
get layout(): Readonly<AutoWidthTextLayout | AutoHeightTextLayout | UnsupportedTextLayout>;
|
|
1874
1915
|
/**
|
|
1875
|
-
*
|
|
1876
|
-
*
|
|
1877
|
-
* **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`.
|
|
1916
|
+
* Sets the layout mode of this TextNode "frame" which the text content is displayed within.
|
|
1917
|
+
* {@link AreaTextLayout} is not supported by standalone text.
|
|
1878
1918
|
*
|
|
1879
|
-
* @
|
|
1880
|
-
*
|
|
1881
|
-
*
|
|
1882
|
-
* {@link AreaTextLayout} is not supported by single-frame text.
|
|
1883
|
-
*
|
|
1884
|
-
* @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.
|
|
1885
|
-
* @throws if {@link StandaloneTextNode} is not a part of a multi-frame text content flow and the layout is {@link AreaTextLayout}.
|
|
1919
|
+
* @throws if changing text layout to/from {@link TextLayout.magicFit} or {@link TextLayout.circular}
|
|
1920
|
+
* layout when the text contains fonts that are unavailable to the current user, because these layouts change
|
|
1921
|
+
* capitalization and thus alter which glyphs are displayed.
|
|
1886
1922
|
*/
|
|
1887
1923
|
set layout(layout: AutoWidthTextLayout | AutoHeightTextLayout);
|
|
1888
1924
|
}
|
|
@@ -1995,35 +2031,96 @@ export declare abstract class TextContentModel {
|
|
|
1995
2031
|
get id(): string;
|
|
1996
2032
|
/**
|
|
1997
2033
|
* The complete text string, which may span multiple {@link ThreadedTextNode} "frames" in the scenegraph.
|
|
2034
|
+
* @throws The setter throws if the existing text contains fonts unavailable to the current user.
|
|
2035
|
+
* See {@link hasUnavailableFonts}.
|
|
1998
2036
|
*/
|
|
1999
2037
|
get text(): string;
|
|
2000
2038
|
set text(textContent: string);
|
|
2001
2039
|
/**
|
|
2002
|
-
*
|
|
2003
|
-
* properties that are not provided are reset to their defaults (contrast to {@link applyCharacterStyles} which
|
|
2004
|
-
* preserves the text's existing styles for any fields not specified). When *getting* styles, all fields are always
|
|
2005
|
-
* provided.
|
|
2040
|
+
* <InlineAlert slots="text" variant="warning"/>
|
|
2006
2041
|
*
|
|
2007
|
-
*
|
|
2008
|
-
*
|
|
2042
|
+
* **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`.
|
|
2043
|
+
*
|
|
2044
|
+
* @experimental
|
|
2045
|
+
* Appends a new text string to the end of the text content.
|
|
2046
|
+
*
|
|
2047
|
+
* @param newText - The text to append.
|
|
2048
|
+
* @throws if the existing text contains fonts unavailable to the current user. See {@link hasUnavailableFonts}.
|
|
2009
2049
|
*/
|
|
2010
|
-
|
|
2011
|
-
set characterStyleRanges(styles: readonly CharacterStylesRangeInput[]);
|
|
2050
|
+
appendText(newText: string): void;
|
|
2012
2051
|
/**
|
|
2013
2052
|
* <InlineAlert slots="text" variant="warning"/>
|
|
2014
2053
|
*
|
|
2015
2054
|
* **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`.
|
|
2016
2055
|
*
|
|
2017
2056
|
* @experimental
|
|
2018
|
-
*
|
|
2057
|
+
* Inserts a new text string into the text content at the specified index.
|
|
2058
|
+
*
|
|
2059
|
+
* @param newText - The text to insert.
|
|
2060
|
+
* @param index - The index at which to insert the new text.
|
|
2061
|
+
* @param style - Style to use for the new text: either directly provides a style to use, or indicates which
|
|
2062
|
+
* existing text to match the style of. Default: `beforeInsertionPoint`.
|
|
2063
|
+
* @throws if the existing text contains fonts unavailable to the current user. See {@link hasUnavailableFonts}.
|
|
2019
2064
|
*/
|
|
2020
|
-
|
|
2065
|
+
insertText(
|
|
2066
|
+
newText: string,
|
|
2067
|
+
index: number,
|
|
2068
|
+
style?: CharacterStylesInput | TextStyleSource.beforeInsertionPoint | TextStyleSource.afterInsertionPoint
|
|
2069
|
+
): void;
|
|
2021
2070
|
/**
|
|
2022
2071
|
* <InlineAlert slots="text" variant="warning"/>
|
|
2023
2072
|
*
|
|
2024
2073
|
* **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`.
|
|
2025
2074
|
*
|
|
2026
2075
|
* @experimental
|
|
2076
|
+
* Replaces a range of text with a new text string.
|
|
2077
|
+
*
|
|
2078
|
+
* @param newText - The text to replace the range with.
|
|
2079
|
+
* @param replaceRange - The range of text to replace.
|
|
2080
|
+
* @param style - Style to use for the new text: either directly provides a style to use, or indicates which
|
|
2081
|
+
* existing text to match the style of. Default: `firstReplacedCharacter`.
|
|
2082
|
+
* @throws if the existing text contains fonts unavailable to the current user. See {@link hasUnavailableFonts}.
|
|
2083
|
+
*/
|
|
2084
|
+
replaceText(
|
|
2085
|
+
newText: string,
|
|
2086
|
+
replaceRange: TextRange,
|
|
2087
|
+
style?:
|
|
2088
|
+
| CharacterStylesInput
|
|
2089
|
+
| TextStyleSource.beforeInsertionPoint
|
|
2090
|
+
| TextStyleSource.afterInsertionPoint
|
|
2091
|
+
| TextStyleSource.firstReplacedCharacter
|
|
2092
|
+
): void;
|
|
2093
|
+
/**
|
|
2094
|
+
* <InlineAlert slots="text" variant="warning"/>
|
|
2095
|
+
*
|
|
2096
|
+
* **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`.
|
|
2097
|
+
*
|
|
2098
|
+
* @experimental
|
|
2099
|
+
* Deletes a range of text from the content.
|
|
2100
|
+
*
|
|
2101
|
+
* @param range - The range of text to delete.
|
|
2102
|
+
* @throws if the existing text contains fonts unavailable to the current user. See {@link hasUnavailableFonts}.
|
|
2103
|
+
*/
|
|
2104
|
+
deleteText(range: TextRange): void;
|
|
2105
|
+
/**
|
|
2106
|
+
* The character styles that are applied to different ranges of this text content. Each range starts immediately after
|
|
2107
|
+
* the previous one: they are always contiguous, and never overlap.
|
|
2108
|
+
*
|
|
2109
|
+
* When *setting* character styles, any style properties that are not provided are reset to their defaults (contrast to
|
|
2110
|
+
* {@link applyCharacterStyles} which preserves the text's existing styles for any fields not specified). If the ranges
|
|
2111
|
+
* do not cover the full length of the text, the last range is extended to cover all the remaining text.
|
|
2112
|
+
* When *getting* styles, all fields are always provided.
|
|
2113
|
+
*
|
|
2114
|
+
* Note: existing fonts used in the document, returned by this getter, are not guaranteed to be ones the current user
|
|
2115
|
+
* has rights to edit with. The *setter* only accepts the AvailableFont type which has been verified to be usable.
|
|
2116
|
+
*/
|
|
2117
|
+
get characterStyleRanges(): readonly CharacterStylesRange[];
|
|
2118
|
+
set characterStyleRanges(styles: readonly CharacterStylesRangeInput[]);
|
|
2119
|
+
/**
|
|
2120
|
+
* The styles applied to different paragraphs of this text content.
|
|
2121
|
+
*/
|
|
2122
|
+
get paragraphStyleRanges(): readonly ParagraphStylesRange[];
|
|
2123
|
+
/**
|
|
2027
2124
|
* Apply styles to different paragraphs of this text content. Any style properties that are not provided are reset to their defaults.
|
|
2028
2125
|
* When **getting** styles, all properties are always provided.
|
|
2029
2126
|
*
|
|
@@ -2031,7 +2128,7 @@ export declare abstract class TextContentModel {
|
|
|
2031
2128
|
* those boundaries. If multiple ranges provided overlap a single paragraph, the first one to overlap is applied to the
|
|
2032
2129
|
* entire paragraph.
|
|
2033
2130
|
*
|
|
2034
|
-
* @throws if the text
|
|
2131
|
+
* @throws if applying an ordered-list style when the text contains fonts that are unavailable to the current user.
|
|
2035
2132
|
*/
|
|
2036
2133
|
set paragraphStyleRanges(styles: readonly ParagraphStylesRangeInput[]);
|
|
2037
2134
|
/**
|
|
@@ -2039,28 +2136,27 @@ export declare abstract class TextContentModel {
|
|
|
2039
2136
|
* unchanged. Does not modify any styles in the text outside this range. Contrast to the {@link characterStyleRanges}
|
|
2040
2137
|
* setter, which specifies new style range(s) for the entire text at once, and resets any unspecified properties back to
|
|
2041
2138
|
* default styles.
|
|
2042
|
-
|
|
2139
|
+
*
|
|
2140
|
+
* Explicitly specifying `link: ""` will remove any hyperlinks present in the existing text. If the `link` style
|
|
2141
|
+
* property is not specified at all, existing links are preserved.
|
|
2142
|
+
*
|
|
2043
2143
|
* @param styles - The styles to apply.
|
|
2044
|
-
* @param range -The start and length of the character sequence to which the styles should be applied.
|
|
2045
|
-
*
|
|
2046
|
-
* If the specified range doesn't align well with the paragraph boundaries, the range will be expanded to cover the
|
|
2047
|
-
* entire paragraphs, it overlaps.
|
|
2144
|
+
* @param range - The start and length of the character sequence to which the styles should be applied.
|
|
2145
|
+
* If no range is specified, styles will be applied to the entire text content flow.
|
|
2048
2146
|
*/
|
|
2049
2147
|
applyCharacterStyles(styles: CharacterStylesInput, range?: TextRange): void;
|
|
2050
2148
|
/**
|
|
2051
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
2052
|
-
*
|
|
2053
|
-
* **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`.
|
|
2054
|
-
*
|
|
2055
|
-
* @experimental
|
|
2056
2149
|
* Apply one or more styles to the paragraphs in the given range, leaving any style properties that were not specified
|
|
2057
2150
|
* unchanged. Does not modify any styles in the text outside this range. Contrast to the {@link paragraphStyleRanges}
|
|
2058
2151
|
* setter, which specifies new style range(s) for the entire text at once, and resets any unspecified properties back to
|
|
2059
2152
|
* default styles.
|
|
2060
|
-
|
|
2153
|
+
*
|
|
2061
2154
|
* @param styles - The styles to apply.
|
|
2062
|
-
* @param range - The start and length of character sequence to which the styles should be applied.
|
|
2063
|
-
*
|
|
2155
|
+
* @param range - The start and length of character sequence to which the styles should be applied. Styles apply to any
|
|
2156
|
+
* paragraphs that even partially overlap this range.
|
|
2157
|
+
* If range is not specified, the styles will be applied to the entire text content flow.
|
|
2158
|
+
*
|
|
2159
|
+
* @throws if applying an ordered-list style when the text contains fonts that are unavailable to the current user.
|
|
2064
2160
|
*/
|
|
2065
2161
|
applyParagraphStyles(styles: ParagraphStylesInput, range?: TextRange): void;
|
|
2066
2162
|
/**
|
|
@@ -2116,9 +2212,12 @@ declare enum TextLayout {
|
|
|
2116
2212
|
|
|
2117
2213
|
/**
|
|
2118
2214
|
* TextNode is an abstract base class representing text displayed in the scenegraph, regardless of whether it's a fully
|
|
2119
|
-
* self-contained {@link StandaloneTextNode} or one {@link ThreadedTextNode} "
|
|
2215
|
+
* self-contained {@link StandaloneTextNode} or one of multiple {@link ThreadedTextNode} "frames" in a larger flow. The
|
|
2120
2216
|
* APIs on TextNode and its {@link TextNodeContentModel} allow you to generically work with text without needing to know
|
|
2121
|
-
* which
|
|
2217
|
+
* which subtype you are dealing with.
|
|
2218
|
+
*
|
|
2219
|
+
* Note: the visual top-left corner of text is not located at its local (0,0) origin point, so it's easiest to position
|
|
2220
|
+
* text using {@link Node.setPositionInParent} rather than setting its {@link Node.translation} directly.
|
|
2122
2221
|
*/
|
|
2123
2222
|
export declare abstract class TextNode extends Node {
|
|
2124
2223
|
/**
|
|
@@ -2128,6 +2227,9 @@ export declare abstract class TextNode extends Node {
|
|
|
2128
2227
|
* Note: The bounding box of the orphaned TextNode may be different from the bounding box of the node placed on a
|
|
2129
2228
|
* page. It is recommended to use this property only when the node is placed on a page.
|
|
2130
2229
|
*
|
|
2230
|
+
* Note: the visual top-left corner of this box is usually not (0,0). Always use `boundsLocal` or {@link topLeftLocal}
|
|
2231
|
+
* instead of assuming (0,0).
|
|
2232
|
+
*
|
|
2131
2233
|
*/
|
|
2132
2234
|
get boundsLocal(): Readonly<Rect>;
|
|
2133
2235
|
/**
|
|
@@ -2146,6 +2248,8 @@ export declare abstract class TextNode extends Node {
|
|
|
2146
2248
|
* Note: The top-left of the orphaned TextNode may be different from the top-left of the node placed on a
|
|
2147
2249
|
* page. It is recommended to use this property only when the node is placed on a page.
|
|
2148
2250
|
*
|
|
2251
|
+
* Note: this value is usually not (0,0) due to the way text layout is defined.
|
|
2252
|
+
*
|
|
2149
2253
|
*/
|
|
2150
2254
|
get topLeftLocal(): Readonly<Point>;
|
|
2151
2255
|
/**
|
|
@@ -2215,11 +2319,6 @@ export declare abstract class TextNode extends Node {
|
|
|
2215
2319
|
*/
|
|
2216
2320
|
get visualEffects(): readonly VisualEffectType[];
|
|
2217
2321
|
/**
|
|
2218
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
2219
|
-
*
|
|
2220
|
-
* **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`.
|
|
2221
|
-
*
|
|
2222
|
-
* @experimental
|
|
2223
2322
|
* @returns The layout mode of the TextNode "frame."
|
|
2224
2323
|
*/
|
|
2225
2324
|
get layout(): Readonly<AutoWidthTextLayout | AutoHeightTextLayout | AreaTextLayout | UnsupportedTextLayout>;
|
|
@@ -2232,19 +2331,21 @@ export declare abstract class TextNode extends Node {
|
|
|
2232
2331
|
*/
|
|
2233
2332
|
export declare class TextNodeContentModel extends TextContentModel {
|
|
2234
2333
|
/**
|
|
2235
|
-
* Get ordered list of all {@link TextNode}s that display this text content in the scenegraph.
|
|
2236
|
-
*
|
|
2237
|
-
* text content
|
|
2334
|
+
* Get ordered list of all {@link TextNode}s that display this text content in the scenegraph. This might be a single
|
|
2335
|
+
* {@link StandaloneTextNode} *or* a list of one or more {@link ThreadedTextNode}s. In the case of threaded text, the
|
|
2336
|
+
* text content starts in the first {@link ThreadedTextNode} "frame", and then flows into the second node once it has
|
|
2337
|
+
* filled the first one. The ending of the text content may not be visible at all, if the last "frame" is not large
|
|
2338
|
+
* enough to accommodate it.
|
|
2238
2339
|
*
|
|
2239
|
-
*
|
|
2340
|
+
* All linked ThreadedTextNodes that share a single TextContentModel must remain together within the same artboard.
|
|
2240
2341
|
*/
|
|
2241
2342
|
get allTextNodes(): Readonly<Iterable<TextNode>>;
|
|
2242
2343
|
}
|
|
2243
2344
|
|
|
2244
2345
|
/**
|
|
2245
|
-
* A range of text in a {@link TextContentModel}.
|
|
2346
|
+
* A range of text in a {@link TextContentModel}, specified in characters.
|
|
2246
2347
|
*/
|
|
2247
|
-
declare interface TextRange {
|
|
2348
|
+
export declare interface TextRange {
|
|
2248
2349
|
start: number;
|
|
2249
2350
|
length: number;
|
|
2250
2351
|
}
|
|
@@ -2262,35 +2363,51 @@ export declare enum TextScriptStyle {
|
|
|
2262
2363
|
}
|
|
2263
2364
|
|
|
2264
2365
|
/**
|
|
2265
|
-
*
|
|
2266
|
-
*
|
|
2267
|
-
*
|
|
2366
|
+
* <InlineAlert slots="text" variant="warning"/>
|
|
2367
|
+
*
|
|
2368
|
+
* **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`.
|
|
2268
2369
|
*
|
|
2269
|
-
*
|
|
2370
|
+
* @experimental
|
|
2371
|
+
* Indicates which existing text to match the style of when inserting new text or replacing text.
|
|
2270
2372
|
*/
|
|
2271
|
-
export declare
|
|
2373
|
+
export declare enum TextStyleSource {
|
|
2272
2374
|
/**
|
|
2273
|
-
*
|
|
2274
|
-
*
|
|
2275
|
-
*
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2375
|
+
* Use style of the character just before the insertion point, *unless* that character is not on the same line (same
|
|
2376
|
+
* paragraph) in which case falls back to afterInsertionPoint behavior. This generally matches the style a user would
|
|
2377
|
+
* get in the UI if they place their cursor at this insertion point.
|
|
2378
|
+
*/
|
|
2379
|
+
beforeInsertionPoint = 0,
|
|
2380
|
+
/**
|
|
2381
|
+
* Use style of the character just after the insertion point (which is always on the same line/paragraph, since lines end
|
|
2382
|
+
* with a `\n` character; an insertion point past this is inserting on the next line). If there is no character after the
|
|
2383
|
+
* insertion point, the insertion point is at the end of the text (appending) and the style of the previous character is
|
|
2384
|
+
* used instead. This option is useful when *pre*pending to an existing block of text.
|
|
2385
|
+
*/
|
|
2386
|
+
afterInsertionPoint = 1,
|
|
2387
|
+
/**
|
|
2388
|
+
* When replacing existing text, use the style of the first character in the replaced text. This may feel more
|
|
2389
|
+
* predictable to users than the styles on either side of the replaced text. E.g. if replacing a single word one-to-one
|
|
2390
|
+
* with a new word, and the replaced word has a style unique to the text on either side of it, one may expect the new
|
|
2391
|
+
* text to match that original word's style.
|
|
2279
2392
|
*/
|
|
2280
|
-
|
|
2393
|
+
firstReplacedCharacter = 2
|
|
2394
|
+
}
|
|
2395
|
+
|
|
2396
|
+
/**
|
|
2397
|
+
* A ThreadedTextNode represents a text display frame in the scenegraph which is a subset of longer text that flows across
|
|
2398
|
+
* multiple such "frames". Because of this, the TextNode does not directly hold the text content and styles –
|
|
2399
|
+
* instead it refers to a {@link TextNodeContentModel}, which may be shared across multiple ThreadedTextNode frames.
|
|
2400
|
+
*
|
|
2401
|
+
* All linked ThreadedTextNodes that share a single TextContentModel must remain together within the same artboard.
|
|
2402
|
+
*
|
|
2403
|
+
* APIs are not yet available to create multi-frame text flows. To create *non*-threaded text, use {@link Editor.createText}.
|
|
2404
|
+
*/
|
|
2405
|
+
export declare class ThreadedTextNode extends TextNode {
|
|
2281
2406
|
get nextTextNode(): ThreadedTextNode | undefined;
|
|
2282
2407
|
get layout(): Readonly<AreaTextLayout>;
|
|
2283
2408
|
/**
|
|
2284
|
-
*
|
|
2285
|
-
*
|
|
2286
|
-
* **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`.
|
|
2287
|
-
*
|
|
2288
|
-
* @experimental
|
|
2289
|
-
* Sets the layout mode of the TextNode "frame."
|
|
2290
|
-
*
|
|
2409
|
+
* Sets the layout mode of this TextNode "frame" which the text content is displayed within.
|
|
2291
2410
|
* Only {@link AreaTextLayout}, with fully fixed bounds, is currently supported by threaded text.
|
|
2292
|
-
*
|
|
2293
|
-
* @throws if {@link ThreadedTextNode} is part of a multi-frame text content flow and the layout is not {@link AreaTextLayout}.
|
|
2294
2411
|
*/
|
|
2295
2412
|
set layout(layout: AreaTextLayout);
|
|
2296
2413
|
}
|
|
@@ -2315,21 +2432,11 @@ export declare class UnknownMediaRectangleNode extends MediaRectangleNode {}
|
|
|
2315
2432
|
export declare class UnknownNode extends Node {}
|
|
2316
2433
|
|
|
2317
2434
|
/**
|
|
2318
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
2319
|
-
*
|
|
2320
|
-
* **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`.
|
|
2321
|
-
*
|
|
2322
|
-
* @experimental
|
|
2323
2435
|
* UnorderedListStyle represents the style of an unordered list.
|
|
2324
2436
|
*/
|
|
2325
2437
|
export declare type UnorderedListStyle = Required<UnorderedListStyleInput>;
|
|
2326
2438
|
|
|
2327
2439
|
/**
|
|
2328
|
-
* <InlineAlert slots="text" variant="warning"/>
|
|
2329
|
-
*
|
|
2330
|
-
* **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`.
|
|
2331
|
-
*
|
|
2332
|
-
* @experimental
|
|
2333
2440
|
* Interface for specifying an unordered list style, such as a bullet list.
|
|
2334
2441
|
*/
|
|
2335
2442
|
export declare interface UnorderedListStyleInput extends BaseParagraphListStyle {
|
|
@@ -2346,11 +2453,7 @@ export declare interface UnorderedListStyleInput extends BaseParagraphListStyle
|
|
|
2346
2453
|
}
|
|
2347
2454
|
|
|
2348
2455
|
/**
|
|
2349
|
-
*
|
|
2350
|
-
*
|
|
2351
|
-
* **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`.
|
|
2352
|
-
*
|
|
2353
|
-
* @experimental
|
|
2456
|
+
* Represents a text layout the API does not yet support setting or reading the details of.
|
|
2354
2457
|
*/
|
|
2355
2458
|
export declare interface UnsupportedTextLayout {
|
|
2356
2459
|
type: TextLayout.magicFit | TextLayout.circular;
|
|
@@ -2396,7 +2499,7 @@ declare enum VisualEffectType {
|
|
|
2396
2499
|
*
|
|
2397
2500
|
* Some VisualNodes might have a non-visual parent such as a PageNode.
|
|
2398
2501
|
*/
|
|
2399
|
-
export declare class VisualNode extends BaseNode {
|
|
2502
|
+
export declare class VisualNode extends BaseNode implements IVisualNodeBounds {
|
|
2400
2503
|
/**
|
|
2401
2504
|
* The highest ancestor that still has visual presence in the document. Typically an Artboard, but for orphaned
|
|
2402
2505
|
* content, it will be the root of the deleted content (which might be this node itself).
|
|
@@ -2406,30 +2509,9 @@ export declare class VisualNode extends BaseNode {
|
|
|
2406
2509
|
* meaningful comparison or conversion between the bounds or coordinate spaces of such nodes.
|
|
2407
2510
|
*/
|
|
2408
2511
|
get visualRoot(): VisualNode;
|
|
2409
|
-
/**
|
|
2410
|
-
* The bounding box of the node, expressed in the node's local coordinate space (which may be shifted or rotated
|
|
2411
|
-
* relative to its parent). Generally matches the selection outline seen in the UI, encompassing the vector path
|
|
2412
|
-
* "spine" of the shape as well as its stroke, but excluding effects such as shadows.
|
|
2413
|
-
*
|
|
2414
|
-
* The top-left corner of the bounding box corresponds to the visual top-left corner of the node, but this value is
|
|
2415
|
-
* *not* necessarily (0,0) – this is especially true for Text and Path nodes.
|
|
2416
|
-
*/
|
|
2417
2512
|
get boundsLocal(): Readonly<Rect>;
|
|
2418
|
-
/**
|
|
2419
|
-
* Position of the node's centerpoint in its own local coordinate space, i.e. the center of the boundsLocal box.
|
|
2420
|
-
*/
|
|
2421
2513
|
get centerPointLocal(): Readonly<Point>;
|
|
2422
|
-
/**
|
|
2423
|
-
* Position of the node's top-left corner in its own local coordinate space, equal to (boundsLocal.x,
|
|
2424
|
-
* boundsLocal.y). If the node is rotated, this is not the same as the top-left corner of
|
|
2425
|
-
* boundsInParent.
|
|
2426
|
-
*/
|
|
2427
2514
|
get topLeftLocal(): Readonly<Point>;
|
|
2428
|
-
/**
|
|
2429
|
-
* Convert a point given in the node’s local coordinate space to a point in the coordinate space of the target node.
|
|
2430
|
-
* Both nodes must share the same {@link visualRoot}, but can lie anywhere within that subtree relative to one
|
|
2431
|
-
* another (the target node need not be an ancestor of this node, nor vice versa).
|
|
2432
|
-
*/
|
|
2433
2515
|
localPointInNode(localPoint: Point, targetNode: VisualNode): Readonly<Point>;
|
|
2434
2516
|
}
|
|
2435
2517
|
|