@embedpdf/core-annotation 3.0.0-next.12 → 3.0.0-next.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { AnnotationDTO, AnnotationFlags, AnnotationFlags as AnnotationFlags$1, AnnotationRef, BlendMode, BlendMode as BlendMode$1, CaretIntent, InkIntent, LineEnding, LineEndings, NO_ANNOTATION_FLAGS, PdfLinkTarget, PdfPoint, PdfRect, StrikeoutIntent } from "@embedpdf/engine-core/runtime";
2
1
  import { PageRotation, Point, Rect as Rect$1, Size, TextQuad, TextQuad as TextQuad$1 } from "@embedpdf/core-geometry";
2
+ import { AnnotationDTO, AnnotationFlags, AnnotationFlags as AnnotationFlags$1, AnnotationRef, BlendMode, BlendMode as BlendMode$1, CaretIntent, InkIntent, LineDimensionCaption, LineEnding, LineEndings, LineLeader, NO_ANNOTATION_FLAGS, PdfLinkTarget, PdfMeasurement, PdfPoint, PdfRect, RichTextDocumentInput, RichTextParagraph, RichTextRunStyle, ShapeDimensionCaption, StrikeoutIntent } from "@embedpdf/engine-core/runtime";
3
3
  import { PageObjectNumber } from "@embedpdf/core";
4
4
  //#region src/flags.d.ts
5
5
  /** The `/F` every freshly DRAWN annotation starts with: `print` set (Acrobat
@@ -46,6 +46,92 @@ declare const annotDeletable: (a: FlagBearer) => boolean;
46
46
  /** `/Contents` text edits — the contents counterpart of `locked`. */
47
47
  declare const annotContentsEditable: (a: FlagBearer) => boolean;
48
48
  //#endregion
49
+ //#region src/measurement-shape.d.ts
50
+ interface ShapeMeasurementAppearance {
51
+ intent: 'PolyLineDimension' | 'PolygonDimension';
52
+ measure: PdfMeasurement | null;
53
+ caption: ShapeDimensionCaption;
54
+ crop: PdfRect;
55
+ text: string;
56
+ }
57
+ interface ShapeMeasurementLayout {
58
+ caption: DistanceCaptionLayout | null;
59
+ visualBounds: Rect;
60
+ selectionPoints: Vec[];
61
+ }
62
+ /** The public caption center stays in PDF space; the editor draws in content space. */
63
+ declare function shapeCaptionPoint(appearance: ShapeMeasurementAppearance): Vec | undefined;
64
+ declare function withShapeCaptionPoint(appearance: ShapeMeasurementAppearance, center: Vec): ShapeMeasurementAppearance;
65
+ declare function transformMeasurementCaption(appearance: MeasurementAppearance | undefined, transform: (point: Vec) => Vec): MeasurementAppearance | undefined;
66
+ declare function shapeMeasurementReadout(geom: Geom, appearance: ShapeMeasurementAppearance): import("@embedpdf/engine-core/runtime").MeasurementReadout | import("@embedpdf/engine-core/runtime").MeasurementUnavailable;
67
+ declare function shapeMeasurementLabel(geom: Geom, appearance: ShapeMeasurementAppearance): string;
68
+ /** Match the native shape-caption anchor, including an interior fallback for concave areas. */
69
+ declare function automaticShapeCaptionCenter(points: readonly Vec[], closed: boolean): Vec;
70
+ declare function shapeMeasurementLayout(geom: Geom, appearance: ShapeMeasurementAppearance, style: Style): ShapeMeasurementLayout | null;
71
+ declare function measurementLayout(geom: Geom, appearance: MeasurementAppearance, style: Style): ShapeMeasurementLayout | null;
72
+ declare function measurementSelectionQuad(geom: Geom, appearance: MeasurementAppearance, style: Style): Quad;
73
+ declare function moveMeasurementCaption(geom: Geom, appearance: MeasurementAppearance, delta: Vec, style: Style): MeasurementAppearance;
74
+ //#endregion
75
+ //#region src/measurement.d.ts
76
+ type MeasurementAppearance = DistanceAppearance | ShapeMeasurementAppearance;
77
+ /**
78
+ * A distance annotation's render projection. Offsets stay in directed PDF line
79
+ * axes. The crop keeps numeric rounding in the original PDF coordinate frame.
80
+ */
81
+ interface DistanceAppearance {
82
+ intent: 'LineDimension';
83
+ measure: PdfMeasurement | null;
84
+ caption: LineDimensionCaption;
85
+ leader?: LineLeader;
86
+ crop: PdfRect;
87
+ text: string;
88
+ }
89
+ interface DistanceSegment {
90
+ from: Vec;
91
+ to: Vec;
92
+ }
93
+ interface DistanceCaptionLayout {
94
+ text: string;
95
+ center: Vec;
96
+ along: Vec;
97
+ normal: Vec;
98
+ width: number;
99
+ height: number;
100
+ bounds: Quad;
101
+ }
102
+ /** One layout drives the preview, selection, handles, and hit testing. */
103
+ interface DistanceLayout {
104
+ along: Vec;
105
+ normal: Vec;
106
+ length: number;
107
+ measuredStart: Vec;
108
+ measuredEnd: Vec;
109
+ dimensionStart: Vec;
110
+ dimensionEnd: Vec;
111
+ dimensionSegments: DistanceSegment[];
112
+ leaderSegments: DistanceSegment[];
113
+ captionConnector: DistanceSegment[];
114
+ caption: DistanceCaptionLayout | null;
115
+ arrowPlacement: 'inside' | 'outside';
116
+ endings: RenderNode[];
117
+ selectionPoints: Vec[];
118
+ visualBounds: Rect;
119
+ }
120
+ declare function distanceLabel(geom: Geom, appearance: DistanceAppearance): string;
121
+ declare function distanceLayout(geom: Geom, appearance: DistanceAppearance, strokeWidth: number): DistanceLayout | null;
122
+ declare function expandDistanceBounds(bounds: Rect, padding: number): Rect;
123
+ declare function distanceSelectionQuad(geom: Geom, appearance: DistanceAppearance, strokeWidth: number): Quad;
124
+ declare function distanceHandles(layout: DistanceLayout): Handle[];
125
+ declare function distanceCaptionHit(layout: {
126
+ caption: DistanceCaptionLayout | null;
127
+ }, point: Vec, margin?: number): boolean;
128
+ declare function distanceHit(layout: DistanceLayout, point: Vec, strokeWidth: number, margin: number): boolean;
129
+ declare function distanceCaptionAt(geom: Geom, appearance: DistanceAppearance, width: number): Vec | null;
130
+ declare function distanceLeaderLength(geom: Geom, point: Vec): number;
131
+ declare function moveDistanceCaption(geom: Geom, appearance: DistanceAppearance, delta: Vec): DistanceAppearance;
132
+ declare function distanceScene(geom: Geom, appearance: DistanceAppearance, style: Style): SceneNode[];
133
+ declare function measurementCaptionScene(caption: DistanceCaptionLayout | null, style: Style): SceneNode[];
134
+ //#endregion
49
135
  //#region src/types.d.ts
50
136
  /**
51
137
  * Content-space point/rect (y-down, PDF points, crop-relative) — the viewer space.
@@ -196,6 +282,15 @@ interface TextStyle {
196
282
  fontSize: number;
197
283
  fontColor: string;
198
284
  textAlign: TextAlign;
285
+ /**
286
+ * The rich body's formatting (free text only): bold = body weight ≥ 600,
287
+ * italic = the body face's italic, underline = the body's decoration.
288
+ * Absent = off. Runs override these as deltas (a bold word in a regular
289
+ * box), which the plugin routes to the editor's text selection instead.
290
+ */
291
+ bold?: boolean;
292
+ italic?: boolean;
293
+ underline?: boolean;
199
294
  }
200
295
  /**
201
296
  * The ONE flat vocabulary for editable appearance properties — what property
@@ -236,6 +331,10 @@ type PropKey = keyof AnnotationProps;
236
331
  */
237
332
  type PatchScope = {
238
333
  kind: 'geometry';
334
+ } | {
335
+ kind: 'caption';
336
+ } | {
337
+ kind: 'leader';
239
338
  } | {
240
339
  kind: 'props';
241
340
  keys: PropKey[];
@@ -259,6 +358,7 @@ interface Annot {
259
358
  text: string;
260
359
  repeat: boolean;
261
360
  };
361
+ measure?: MeasurementAppearance;
262
362
  /** `/Name` icon — present only for icon kinds (text note, file attachment).
263
363
  * Like `style`, a projection of `data`, editable via `setProps`. */
264
364
  icon?: string;
@@ -395,8 +495,20 @@ type Draft = {
395
495
  /** The tool's `/F` seed, captured at DOWN like `upright` — merged over
396
496
  * {@link DRAWN_FLAGS} at commit (a note tool sets noZoom/noRotate). */
397
497
  flags?: Partial<AnnotationFlags$1>;
498
+ } | {
499
+ g: 'create-distance';
500
+ step: 'endpoints' | 'offset';
501
+ subtype: 'line';
502
+ preset: string;
503
+ pon: PageObjectNumber;
504
+ from: Vec;
505
+ to: Vec;
506
+ measure: DistanceAppearance;
507
+ flags?: Partial<AnnotationFlags$1>;
398
508
  } | {
399
509
  g: 'create-line';
510
+ measure?: MeasurementAppearance;
511
+ capture?: string;
400
512
  subtype: Subtype;
401
513
  preset?: string;
402
514
  pon: PageObjectNumber;
@@ -408,6 +520,7 @@ type Draft = {
408
520
  flags?: Partial<AnnotationFlags$1>;
409
521
  } | {
410
522
  g: 'create-poly';
523
+ measure?: ShapeMeasurementAppearance;
411
524
  subtype: Subtype;
412
525
  preset?: string;
413
526
  pon: PageObjectNumber;
@@ -474,6 +587,16 @@ type Draft = {
474
587
  base: Rect;
475
588
  cur: Rect;
476
589
  view?: ViewEnv;
590
+ } | {
591
+ g: 'caption';
592
+ id: Id;
593
+ start: Vec;
594
+ delta: Vec;
595
+ } | {
596
+ g: 'leader';
597
+ id: Id;
598
+ start: Vec;
599
+ delta: number;
477
600
  } | {
478
601
  g: 'marquee';
479
602
  pon: PageObjectNumber;
@@ -622,6 +745,8 @@ type Msg = {
622
745
  in: PointerInput;
623
746
  } | {
624
747
  t: 'createPointer';
748
+ measure?: MeasurementAppearance;
749
+ capture?: string;
625
750
  phase: 'down' | 'move' | 'up';
626
751
  subtype: Subtype;
627
752
  /** The authoring tool's `defaults` key (see {@link Draft}). Defaults to `subtype`. */
@@ -750,10 +875,19 @@ type Msg = {
750
875
  t: 'setText';
751
876
  id: Id;
752
877
  text: string;
878
+ } | {
879
+ t: 'setRichText';
880
+ id: Id;
881
+ doc: RichTextDocumentInput;
753
882
  } | {
754
883
  t: 'endTextEdit';
755
884
  };
756
885
  type Effect = {
886
+ fx: 'captured';
887
+ tool: string;
888
+ pon: number;
889
+ geom: Geom;
890
+ } | {
757
891
  fx: 'create';
758
892
  id: Id;
759
893
  } | {
@@ -837,6 +971,7 @@ interface RenderItem {
837
971
  text: string;
838
972
  repeat: boolean;
839
973
  };
974
+ measure?: MeasurementAppearance;
840
975
  /**
841
976
  * Applied rotation (deg, CW), or 0/undefined. For BOX kinds (`rect`/`text`)
842
977
  * `box` is the UNROTATED visual box and the renderer applies this rotation
@@ -927,6 +1062,7 @@ type SceneNode = {
927
1062
  text: string;
928
1063
  fontSize: number;
929
1064
  fontFamily?: string;
1065
+ rotation?: number;
930
1066
  paint: Paint;
931
1067
  };
932
1068
  /** Pure geometry settings for recognising and axis-snapping a freehand stroke. */
@@ -1220,6 +1356,70 @@ declare function hitTest(m: Model, pon: number, p: Vec, geom: ChromeGeom, stroke
1220
1356
  /** The cursor to show on hover: a resize cursor over a handle, move/pointer over a body. */
1221
1357
  declare function cursorAt(m: Model, pon: number, p: Vec, geom: ChromeGeom, strokeMargin: number, pageBox?: Rect, inert?: ReadonlySet<Id>, view?: ViewEnv): Cursor | null;
1222
1358
  //#endregion
1359
+ //#region src/richtext.d.ts
1360
+ type RichTextStyleDelta = Partial<RichTextRunStyle>;
1361
+ /** A range of the plain projection, `start <= end`, end exclusive. */
1362
+ interface RichTextRange {
1363
+ start: number;
1364
+ end: number;
1365
+ }
1366
+ /** Length of the plain projection. */
1367
+ declare function richTextLength(doc: {
1368
+ paragraphs: readonly RichTextParagraph[];
1369
+ }): number;
1370
+ /** Two deltas override the same properties with the same values. */
1371
+ declare function sameStyleDelta(a: RichTextStyleDelta | undefined, b: RichTextStyleDelta | undefined): boolean;
1372
+ /**
1373
+ * Merge adjacent runs whose deltas agree, drop empty runs, strip empty
1374
+ * deltas. A paragraph with no text keeps a single empty run so the editor
1375
+ * has somewhere to put the caret.
1376
+ */
1377
+ declare function normalizeRuns<T extends {
1378
+ paragraphs: RichTextParagraph[];
1379
+ }>(doc: T): T;
1380
+ /** Where a flat offset falls: paragraph index and offset within it (the
1381
+ * separator between paragraphs belongs to the end of the earlier one). */
1382
+ declare function locateOffset(doc: {
1383
+ paragraphs: readonly RichTextParagraph[];
1384
+ }, offset: number): {
1385
+ paragraph: number;
1386
+ offset: number;
1387
+ };
1388
+ /** The paragraph with a run boundary guaranteed at a local offset. */
1389
+ declare function splitRunsAt(paragraph: RichTextParagraph, offset: number): RichTextParagraph;
1390
+ /**
1391
+ * Apply a style delta to every character of a range: the runs it touches are
1392
+ * split at its boundaries, the covered pieces take the delta on top of what
1393
+ * they already override (`clear` names properties to stop overriding, so
1394
+ * they follow the body again), and the result is normalised. An empty range
1395
+ * is a no-op.
1396
+ */
1397
+ declare function applyStyleToRange<T extends {
1398
+ paragraphs: RichTextParagraph[];
1399
+ }>(doc: T, range: RichTextRange, delta: RichTextStyleDelta, clear?: readonly (keyof RichTextRunStyle)[]): T;
1400
+ /**
1401
+ * The delta in force at a caret: the run the offset falls in, or, at a run
1402
+ * boundary, the run before it (what typing there would inherit). Undefined
1403
+ * for an empty document.
1404
+ */
1405
+ declare function styleAt(doc: {
1406
+ paragraphs: readonly RichTextParagraph[];
1407
+ }, offset: number): RichTextStyleDelta | undefined;
1408
+ /** Every run overlapping the range satisfies `predicate` (an empty range
1409
+ * tests the caret's style). */
1410
+ declare function rangeHasStyle(doc: {
1411
+ paragraphs: readonly RichTextParagraph[];
1412
+ }, range: RichTextRange, predicate: (delta: RichTextStyleDelta) => boolean): boolean;
1413
+ /** Plain paragraphs from text: one per line break, one unstyled run each. */
1414
+ declare function paragraphsFromPlainText(text: string): RichTextParagraph[];
1415
+ /** The plain projection: paragraphs joined by `\r`, runs concatenated. */
1416
+ declare function plainTextOf(doc: {
1417
+ paragraphs: readonly RichTextParagraph[];
1418
+ }): string;
1419
+ /** True when nothing in the document overrides the body: no run delta, no
1420
+ * paragraph property. Such a document commits as plain `contents`. */
1421
+ declare function isPlainRichText(doc: RichTextDocumentInput): boolean;
1422
+ //#endregion
1223
1423
  //#region src/group.d.ts
1224
1424
  /**
1225
1425
  * The transform capabilities of a multi-target (group) selection: a group can
@@ -1334,6 +1534,18 @@ type PropSpec = {
1334
1534
  } | {
1335
1535
  key: 'textAlign';
1336
1536
  label: string;
1537
+ } |
1538
+ /** Rich-text formatting toggles (free text): the body's formatting, or —
1539
+ * while the text editor has a range — that range's runs. */
1540
+ {
1541
+ key: 'bold';
1542
+ label: string;
1543
+ } | {
1544
+ key: 'italic';
1545
+ label: string;
1546
+ } | {
1547
+ key: 'underline';
1548
+ label: string;
1337
1549
  } | {
1338
1550
  key: 'blendMode';
1339
1551
  label: string;
@@ -1534,9 +1746,9 @@ declare function uprightAnchoredRect(anchor: Vec, width: number, height: number,
1534
1746
  */
1535
1747
  declare function fitStampBox(center: Vec, desired: Size, page: Size, rotCW: number): Rect;
1536
1748
  /** Reset a geom to its as-authored orientation (`rot → 0`). Box: drop `rot`.
1537
- * Vertex: spin the points by `-rot` about their centroid so they return to the
1538
- * orientation they were drawn at, in place. */
1539
- declare function geomResetRotation(g: Geom): Geom;
1749
+ * Vertex: spin the points by `-rot` about the supplied selection center.
1750
+ * Geometry-only callers retain the centroid default. */
1751
+ declare function geomResetRotation(g: Geom, pivot?: Vec): Geom;
1540
1752
  /**
1541
1753
  * The oriented selection box (OBB) of a rotatable geom: four corners (in order
1542
1754
  * nw, ne, se, sw of the LOCAL box, transformed) + the angle. For a box this is
@@ -1708,6 +1920,17 @@ declare function geomHit(g: Geom, p: Vec, margin: number, filled: boolean, strok
1708
1920
  declare function geomHandles(g: Geom): Handle[];
1709
1921
  declare function geomTranslate(g: Geom, d: Vec): Geom;
1710
1922
  declare function geomDragHandle(g: Geom, handle: string, to: Vec): Geom;
1923
+ /**
1924
+ * The text PLATE inset of a free-text box: twice the border width. The plate
1925
+ * — where text lays out, clips and scrolls — is the box deflated by this on
1926
+ * every side: the ink band and an equal breathing band, so the text never
1927
+ * touches the stroke. Acrobat's rule, measured 1–12 pt on plain boxes and
1928
+ * 1–7 pt on callouts (plan `2026-09-15-free-text-plate-inset.md`); the
1929
+ * engine's `FreeTextPlate` is the same formula, so the live editor sits
1930
+ * exactly where the baked text lands. Acrobat's thinnest border is 1 pt; a
1931
+ * width of 0 is ours alone and gives no inset (the plate is the box).
1932
+ */
1933
+ declare function textPlateInset(strokeWidth: number): number;
1711
1934
  declare function geomScene(g: Geom, strokeWidth?: number, border?: Border): RenderNode[];
1712
1935
  declare const pdfToContentPoint: (p: PdfPoint, crop: PdfRect) => Vec;
1713
1936
  declare const contentToPdfPoint: (p: Vec, crop: PdfRect) => PdfPoint;
@@ -1732,6 +1955,14 @@ declare function cloudyBorderExtent(intensity: number, strokeWidth: number, elli
1732
1955
  */
1733
1956
  declare function cloudyPath(box: Rect, ellipse: boolean, intensity: number, strokeWidth: number): string;
1734
1957
  //#endregion
1958
+ //#region src/selection.d.ts
1959
+ interface SelectionFrame {
1960
+ corners: Quad;
1961
+ center: Vec;
1962
+ angle: number;
1963
+ }
1964
+ declare function annotationSelectionFrame(annotation: Annot, view?: ViewEnv): SelectionFrame;
1965
+ //#endregion
1735
1966
  //#region src/scene.d.ts
1736
1967
  /** The full painted scene for one annotation. */
1737
1968
  declare function scene(item: RenderItem): SceneNode[];
@@ -1744,5 +1975,5 @@ declare function scene(item: RenderItem): SceneNode[];
1744
1975
  */
1745
1976
  declare function straightenInkStroke(points: readonly Vec[], options: InkStraightenOptions): Vec[];
1746
1977
  //#endregion
1747
- export { type AnchorMode, type Annot, type AnnotationFlags, type AnnotationKind, type AnnotationProps, type AnnotationPropsPatch, type BlendMode, type Border, type Callout, type ChromeGeom, type ChromeNode, type ClickCreate, type ClickPlacement, type CreationDraftAnchor, type Cursor, DEFAULT_CHROME_GEOM, DRAWN_FLAGS, type Draft, type Effect, FLAG_KEYS, type FlagBearer, type Geom, type GroupCaps, type Guide, type Handle, type Id, type InkStraightenOptions, KINDS, type KindCaps, type LineEnding, type LineEndings, MIN_DRAG, MITER_LIMIT, type Model, type Msg, NO_ANNOTATION_FLAGS, type Paint, type PatchScope, type PointerInput, type PropKey, type PropSpec, type Quad, RECT_HANDLES, ROTATE_KNOB_OFFSET, type Rect, type RectHandle, type RenderItem, type RenderNode, type SceneNode, type SnapResult, type SnapSettings, type Style, type Subtype, type Target, type TextAlign, type TextBox, type TextEndAnchor, type TextQuad, type TextStyle, type Vec, type ViewEnv, anchorModeOf, anchorOf, anchoredBox, anchoredGeom, anchoredStrokeWidth, annotContentsEditable, annotDeletable, annotInteractive, annotTransformable, applyProps, calloutConnection, calloutLinePoints, canMove, capsFor, caretGeomFromAnchor, caretRectFromAnchor, caretRectFromTextEnd, centroidOf, chrome, clampRectToBox, clickCreateGeom, cloudyBorderExtent, cloudyPath, computeMoveSnap, contentToPdfPoint, contentToPdfRect, creationDraftAnchor, cursorAt, defaultsFor, expandGroups, fitStampBox, flagsEqual, geomBounds, geomDragHandle, geomHandles, geomHit, geomPdfBounds, geomResetRotation, geomRotateAbout, geomRotation, geomScaleAbout, geomScene, geomTranslate, geomVisualBounds, groupCaps, groupKeyOf, groupMembers, groupResizeAnchor, groupResizeBox, groupResizeFactors, hitTest, initialModel, initialStyle, initialTextStyle, interactive, isAttachedLink, isConversationOnly, isRotatableGeom, isSelectable, isSubstrateOnly, linkChildrenOf, linkOf, mergeFlags, normalizeDeg, obbFromGeom, pageItems, pdfToContentPoint, pdfToContentRect, placeRotateKnob, pointInQuad, propsFor, quadIntersectsRect, readProp, rectFromPoints, resolveClickPlacement, rotateDraftDelta, rotateKnob, rotatedAabb, rotatedHandleCursor, scene, selectedItems, selectionAnchor, selectionBounds, selectionBoundsOnPage, selectionCenter, selectionKnob, selectionQuad, shapeRectFor, sharedProps, straightenInkStroke, styleFromProps, textBoxes, textStyleFromProps, transposedAboutCenter, unanchoredGeom, unionRect, update, uprightAnchoredRect, uprightRotation, viewable };
1978
+ export { type AnchorMode, type Annot, type AnnotationFlags, type AnnotationKind, type AnnotationProps, type AnnotationPropsPatch, type BlendMode, type Border, type Callout, type ChromeGeom, type ChromeNode, type ClickCreate, type ClickPlacement, type CreationDraftAnchor, type Cursor, DEFAULT_CHROME_GEOM, DRAWN_FLAGS, DistanceAppearance, DistanceCaptionLayout, DistanceLayout, DistanceSegment, type Draft, type Effect, FLAG_KEYS, type FlagBearer, type Geom, type GroupCaps, type Guide, type Handle, type Id, type InkStraightenOptions, KINDS, type KindCaps, type LineEnding, type LineEndings, MIN_DRAG, MITER_LIMIT, MeasurementAppearance, type Model, type Msg, NO_ANNOTATION_FLAGS, type Paint, type PatchScope, type PointerInput, type PropKey, type PropSpec, type Quad, RECT_HANDLES, ROTATE_KNOB_OFFSET, type Rect, type RectHandle, type RenderItem, type RenderNode, type RichTextRange, type RichTextStyleDelta, type SceneNode, type SelectionFrame, ShapeMeasurementAppearance, ShapeMeasurementLayout, type SnapResult, type SnapSettings, type Style, type Subtype, type Target, type TextAlign, type TextBox, type TextEndAnchor, type TextQuad, type TextStyle, type Vec, type ViewEnv, anchorModeOf, anchorOf, anchoredBox, anchoredGeom, anchoredStrokeWidth, annotContentsEditable, annotDeletable, annotInteractive, annotTransformable, annotationSelectionFrame, applyProps, applyStyleToRange, automaticShapeCaptionCenter, calloutConnection, calloutLinePoints, canMove, capsFor, caretGeomFromAnchor, caretRectFromAnchor, caretRectFromTextEnd, centroidOf, chrome, clampRectToBox, clickCreateGeom, cloudyBorderExtent, cloudyPath, computeMoveSnap, contentToPdfPoint, contentToPdfRect, creationDraftAnchor, cursorAt, defaultsFor, distanceCaptionAt, distanceCaptionHit, distanceHandles, distanceHit, distanceLabel, distanceLayout, distanceLeaderLength, distanceScene, distanceSelectionQuad, expandDistanceBounds, expandGroups, fitStampBox, flagsEqual, geomBounds, geomDragHandle, geomHandles, geomHit, geomPdfBounds, geomResetRotation, geomRotateAbout, geomRotation, geomScaleAbout, geomScene, geomTranslate, geomVisualBounds, groupCaps, groupKeyOf, groupMembers, groupResizeAnchor, groupResizeBox, groupResizeFactors, hitTest, initialModel, initialStyle, initialTextStyle, interactive, isAttachedLink, isConversationOnly, isPlainRichText, isRotatableGeom, isSelectable, isSubstrateOnly, linkChildrenOf, linkOf, locateOffset, measurementCaptionScene, measurementLayout, measurementSelectionQuad, mergeFlags, moveDistanceCaption, moveMeasurementCaption, normalizeDeg, normalizeRuns, obbFromGeom, pageItems, paragraphsFromPlainText, pdfToContentPoint, pdfToContentRect, placeRotateKnob, plainTextOf, pointInQuad, propsFor, quadIntersectsRect, rangeHasStyle, readProp, rectFromPoints, resolveClickPlacement, richTextLength, rotateDraftDelta, rotateKnob, rotatedAabb, rotatedHandleCursor, sameStyleDelta, scene, selectedItems, selectionAnchor, selectionBounds, selectionBoundsOnPage, selectionCenter, selectionKnob, selectionQuad, shapeCaptionPoint, shapeMeasurementLabel, shapeMeasurementLayout, shapeMeasurementReadout, shapeRectFor, sharedProps, splitRunsAt, straightenInkStroke, styleAt, styleFromProps, textBoxes, textPlateInset, textStyleFromProps, transformMeasurementCaption, transposedAboutCenter, unanchoredGeom, unionRect, update, uprightAnchoredRect, uprightRotation, viewable, withShapeCaptionPoint };
1748
1979
  //# sourceMappingURL=index.d.ts.map