@tldraw/editor 3.16.0-internal.51e99e128bd4 → 3.16.0-internal.71f83a8a571b

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.
Files changed (166) hide show
  1. package/dist-cjs/index.d.ts +133 -126
  2. package/dist-cjs/index.js +6 -6
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +7 -7
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/Shape.js +7 -10
  7. package/dist-cjs/lib/components/Shape.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +14 -23
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/editor/Editor.js +40 -113
  11. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  12. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js +4 -0
  13. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js.map +2 -2
  14. package/dist-cjs/lib/editor/derivations/parentsToChildren.js.map +2 -2
  15. package/dist-cjs/lib/editor/shapes/BaseBoxShapeUtil.js.map +1 -1
  16. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +23 -0
  17. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/editor/tools/BaseBoxShapeTool/BaseBoxShapeTool.js.map +2 -2
  19. package/dist-cjs/lib/editor/types/misc-types.js.map +1 -1
  20. package/dist-cjs/lib/exports/getSvgJsx.js +34 -14
  21. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  22. package/dist-cjs/lib/hooks/useCanvasEvents.js +22 -17
  23. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  24. package/dist-cjs/lib/hooks/useDocumentEvents.js +5 -5
  25. package/dist-cjs/lib/hooks/useDocumentEvents.js.map +2 -2
  26. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js +1 -2
  27. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js.map +2 -2
  28. package/dist-cjs/lib/hooks/useGestureEvents.js +1 -1
  29. package/dist-cjs/lib/hooks/useGestureEvents.js.map +2 -2
  30. package/dist-cjs/lib/hooks/useHandleEvents.js +3 -3
  31. package/dist-cjs/lib/hooks/useHandleEvents.js.map +2 -2
  32. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js +4 -1
  33. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js.map +2 -2
  34. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js +4 -1
  35. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  36. package/dist-cjs/lib/hooks/useSelectionEvents.js +4 -4
  37. package/dist-cjs/lib/hooks/useSelectionEvents.js.map +2 -2
  38. package/dist-cjs/lib/license/LicenseManager.js +140 -53
  39. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  40. package/dist-cjs/lib/license/LicenseProvider.js +39 -1
  41. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  42. package/dist-cjs/lib/license/Watermark.js +69 -7
  43. package/dist-cjs/lib/license/Watermark.js.map +3 -3
  44. package/dist-cjs/lib/license/useLicenseManagerState.js.map +2 -2
  45. package/dist-cjs/lib/primitives/Box.js +3 -0
  46. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  47. package/dist-cjs/lib/primitives/Vec.js +0 -4
  48. package/dist-cjs/lib/primitives/Vec.js.map +2 -2
  49. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +50 -20
  50. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
  51. package/dist-cjs/lib/primitives/geometry/Group2d.js +8 -1
  52. package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
  53. package/dist-cjs/lib/utils/dom.js +12 -1
  54. package/dist-cjs/lib/utils/dom.js.map +2 -2
  55. package/dist-cjs/lib/utils/getPointerInfo.js +2 -2
  56. package/dist-cjs/lib/utils/getPointerInfo.js.map +2 -2
  57. package/dist-cjs/lib/utils/reparenting.js +2 -35
  58. package/dist-cjs/lib/utils/reparenting.js.map +3 -3
  59. package/dist-cjs/version.js +3 -3
  60. package/dist-cjs/version.js.map +1 -1
  61. package/dist-esm/index.d.mts +133 -126
  62. package/dist-esm/index.mjs +9 -7
  63. package/dist-esm/index.mjs.map +2 -2
  64. package/dist-esm/lib/TldrawEditor.mjs +8 -8
  65. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  66. package/dist-esm/lib/components/Shape.mjs +7 -10
  67. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  68. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +15 -24
  69. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  70. package/dist-esm/lib/editor/Editor.mjs +40 -113
  71. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  72. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs +4 -0
  73. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs.map +2 -2
  74. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs.map +2 -2
  75. package/dist-esm/lib/editor/shapes/BaseBoxShapeUtil.mjs.map +1 -1
  76. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +23 -0
  77. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  78. package/dist-esm/lib/editor/tools/BaseBoxShapeTool/BaseBoxShapeTool.mjs.map +2 -2
  79. package/dist-esm/lib/exports/getSvgJsx.mjs +34 -14
  80. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  81. package/dist-esm/lib/hooks/useCanvasEvents.mjs +24 -18
  82. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  83. package/dist-esm/lib/hooks/useDocumentEvents.mjs +11 -6
  84. package/dist-esm/lib/hooks/useDocumentEvents.mjs.map +2 -2
  85. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs +2 -3
  86. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  87. package/dist-esm/lib/hooks/useGestureEvents.mjs +2 -2
  88. package/dist-esm/lib/hooks/useGestureEvents.mjs.map +2 -2
  89. package/dist-esm/lib/hooks/useHandleEvents.mjs +9 -4
  90. package/dist-esm/lib/hooks/useHandleEvents.mjs.map +2 -2
  91. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs +4 -1
  92. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +2 -2
  93. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs +4 -1
  94. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  95. package/dist-esm/lib/hooks/useSelectionEvents.mjs +6 -5
  96. package/dist-esm/lib/hooks/useSelectionEvents.mjs.map +2 -2
  97. package/dist-esm/lib/license/LicenseManager.mjs +141 -54
  98. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  99. package/dist-esm/lib/license/LicenseProvider.mjs +39 -2
  100. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  101. package/dist-esm/lib/license/Watermark.mjs +70 -8
  102. package/dist-esm/lib/license/Watermark.mjs.map +3 -3
  103. package/dist-esm/lib/license/useLicenseManagerState.mjs.map +2 -2
  104. package/dist-esm/lib/primitives/Box.mjs +4 -1
  105. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  106. package/dist-esm/lib/primitives/Vec.mjs +0 -4
  107. package/dist-esm/lib/primitives/Vec.mjs.map +2 -2
  108. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +53 -21
  109. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
  110. package/dist-esm/lib/primitives/geometry/Group2d.mjs +8 -1
  111. package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
  112. package/dist-esm/lib/utils/dom.mjs +12 -1
  113. package/dist-esm/lib/utils/dom.mjs.map +2 -2
  114. package/dist-esm/lib/utils/getPointerInfo.mjs +2 -2
  115. package/dist-esm/lib/utils/getPointerInfo.mjs.map +2 -2
  116. package/dist-esm/lib/utils/reparenting.mjs +3 -40
  117. package/dist-esm/lib/utils/reparenting.mjs.map +2 -2
  118. package/dist-esm/version.mjs +3 -3
  119. package/dist-esm/version.mjs.map +1 -1
  120. package/editor.css +16 -3
  121. package/package.json +7 -7
  122. package/src/index.ts +4 -9
  123. package/src/lib/TldrawEditor.tsx +9 -16
  124. package/src/lib/components/Shape.tsx +6 -12
  125. package/src/lib/components/default-components/DefaultCanvas.tsx +12 -23
  126. package/src/lib/editor/Editor.test.ts +96 -0
  127. package/src/lib/editor/Editor.ts +75 -175
  128. package/src/lib/editor/derivations/notVisibleShapes.ts +6 -0
  129. package/src/lib/editor/derivations/parentsToChildren.ts +1 -1
  130. package/src/lib/editor/managers/FontManager/FontManager.test.ts +14 -4
  131. package/src/lib/editor/shapes/BaseBoxShapeUtil.tsx +2 -2
  132. package/src/lib/editor/shapes/ShapeUtil.ts +51 -8
  133. package/src/lib/editor/tools/BaseBoxShapeTool/BaseBoxShapeTool.ts +2 -1
  134. package/src/lib/editor/types/misc-types.ts +0 -6
  135. package/src/lib/exports/getSvgJsx.test.ts +874 -0
  136. package/src/lib/exports/getSvgJsx.tsx +76 -19
  137. package/src/lib/hooks/useCanvasEvents.ts +23 -17
  138. package/src/lib/hooks/useDocumentEvents.ts +11 -6
  139. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +2 -2
  140. package/src/lib/hooks/useGestureEvents.ts +2 -2
  141. package/src/lib/hooks/useHandleEvents.ts +9 -4
  142. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +4 -1
  143. package/src/lib/hooks/usePassThroughWheelEvents.ts +6 -1
  144. package/src/lib/hooks/useSelectionEvents.ts +6 -5
  145. package/src/lib/license/LicenseManager.test.ts +721 -382
  146. package/src/lib/license/LicenseManager.ts +201 -58
  147. package/src/lib/license/LicenseProvider.tsx +74 -2
  148. package/src/lib/license/Watermark.tsx +75 -8
  149. package/src/lib/license/useLicenseManagerState.ts +2 -2
  150. package/src/lib/primitives/Box.test.ts +126 -0
  151. package/src/lib/primitives/Box.ts +10 -1
  152. package/src/lib/primitives/Vec.ts +0 -5
  153. package/src/lib/primitives/geometry/Geometry2d.test.ts +420 -0
  154. package/src/lib/primitives/geometry/Geometry2d.ts +78 -21
  155. package/src/lib/primitives/geometry/Group2d.ts +10 -1
  156. package/src/lib/test/InFrontOfTheCanvas.test.tsx +187 -0
  157. package/src/lib/utils/dom.test.ts +94 -0
  158. package/src/lib/utils/dom.ts +38 -1
  159. package/src/lib/utils/getPointerInfo.ts +2 -1
  160. package/src/lib/utils/reparenting.ts +3 -69
  161. package/src/version.ts +3 -3
  162. package/dist-cjs/lib/utils/nearestMultiple.js +0 -34
  163. package/dist-cjs/lib/utils/nearestMultiple.js.map +0 -7
  164. package/dist-esm/lib/utils/nearestMultiple.mjs +0 -14
  165. package/dist-esm/lib/utils/nearestMultiple.mjs.map +0 -7
  166. package/src/lib/utils/nearestMultiple.ts +0 -13
@@ -147,7 +147,7 @@ export declare abstract class BaseBoxShapeTool extends StateNode {
147
147
  static id: string;
148
148
  static initial: string;
149
149
  static children(): TLStateNodeConstructor[];
150
- abstract shapeType: string;
150
+ abstract shapeType: TLBaseBoxShape['type'];
151
151
  onCreate?(_shape: null | TLShape): null | void;
152
152
  }
153
153
 
@@ -510,6 +510,7 @@ export declare class Box {
510
510
  static ExpandBy(A: Box, n: number): Box;
511
511
  static Collides(A: Box, B: Box): boolean;
512
512
  static Contains(A: Box, B: Box): boolean;
513
+ static ContainsApproximately(A: Box, B: Box, precision?: number): boolean;
513
514
  static Includes(A: Box, B: Box): boolean;
514
515
  static ContainsPoint(A: Box, B: VecLike, margin?: number): boolean;
515
516
  static Common(boxes: Box[]): Box;
@@ -760,11 +761,6 @@ export declare class CubicSpline2d extends Geometry2d {
760
761
  /** @public */
761
762
  export declare function dataUrlToFile(url: string, filename: string, mimeType: string): Promise<File>;
762
763
 
763
- /**
764
- * @deprecated Licensing is now enabled in the tldraw SDK.
765
- * @public */
766
- export declare function debugEnableLicensing(): void;
767
-
768
764
  /* Excluded from this release type: DebugFlag */
769
765
 
770
766
  /* Excluded from this release type: DebugFlagDef */
@@ -983,7 +979,7 @@ export declare class EdgeScrollManager {
983
979
  /** @public */
984
980
  export declare class Editor extends EventEmitter<TLEventMap> {
985
981
  readonly id: string;
986
- constructor({ store, user, shapeUtils, bindingUtils, tools, getContainer, cameraOptions, textOptions, initialState, autoFocus, inferDarkMode, options, isShapeHidden, getShapeVisibility, fontAssetUrls, }: TLEditorOptions);
982
+ constructor({ store, user, shapeUtils, bindingUtils, tools, getContainer, cameraOptions, textOptions, initialState, autoFocus, inferDarkMode, options, getShapeVisibility, fontAssetUrls, }: TLEditorOptions);
987
983
  private readonly _getShapeVisibility?;
988
984
  private getIsShapeHiddenCache;
989
985
  isShapeHidden(shapeOrId: TLShape | TLShapeId): boolean;
@@ -1050,22 +1046,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1050
1046
  * @public
1051
1047
  */
1052
1048
  readonly fonts: FontManager;
1053
- /**
1054
- * A manager for the editor's environment.
1055
- *
1056
- * @deprecated This is deprecated and will be removed in a future version. Use the `tlenv` global export instead.
1057
- * @public
1058
- */
1059
- readonly environment: {
1060
- hasCanvasSupport: boolean;
1061
- isAndroid: boolean;
1062
- isChromeForIos: boolean;
1063
- isDarwin: boolean;
1064
- isFirefox: boolean;
1065
- isIos: boolean;
1066
- isSafari: boolean;
1067
- isWebview: boolean;
1068
- };
1069
1049
  /**
1070
1050
  * A manager for the editor's scribbles.
1071
1051
  *
@@ -1108,7 +1088,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1108
1088
  * @public
1109
1089
  */
1110
1090
  shapeUtils: {
1111
- readonly [K in string]?: ShapeUtil<TLUnknownShape>;
1091
+ readonly [K in string]?: ShapeUtil<TLShape>;
1112
1092
  };
1113
1093
  styleProps: {
1114
1094
  [key: string]: Map<StyleProp<any>, string>;
@@ -1128,16 +1108,16 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1128
1108
  *
1129
1109
  * @public
1130
1110
  */
1131
- getShapeUtil<S extends TLUnknownShape>(shape: S | TLShapePartial<S>): ShapeUtil<S>;
1132
- getShapeUtil<S extends TLUnknownShape>(type: S['type']): ShapeUtil<S>;
1111
+ getShapeUtil<S extends TLShape>(shape: S | TLShapePartial<S>): ShapeUtil<S>;
1112
+ getShapeUtil<S extends TLShape>(type: S['type']): ShapeUtil<S>;
1133
1113
  getShapeUtil<T extends ShapeUtil>(type: T extends ShapeUtil<infer R> ? R['type'] : string): T;
1134
1114
  /**
1135
1115
  * Returns true if the editor has a shape util for the given shape / shape type.
1136
1116
  *
1137
1117
  * @param shape - A shape, shape partial, or shape type.
1138
1118
  */
1139
- hasShapeUtil<S extends TLUnknownShape>(shape: S | TLShapePartial<S>): boolean;
1140
- hasShapeUtil<S extends TLUnknownShape>(type: S['type']): boolean;
1119
+ hasShapeUtil(shape: TLShape | TLShapePartial<TLShape>): boolean;
1120
+ hasShapeUtil(type: TLShape['type']): boolean;
1141
1121
  hasShapeUtil<T extends ShapeUtil>(type: T extends ShapeUtil<infer R> ? R['type'] : string): boolean;
1142
1122
  /**
1143
1123
  * A map of shape utility classes (TLShapeUtils) by shape type.
@@ -1208,22 +1188,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1208
1188
  * @public
1209
1189
  */
1210
1190
  getCanRedo(): boolean;
1211
- /**
1212
- * Create a new "mark", or stopping point, in the undo redo history. Creating a mark will clear
1213
- * any redos.
1214
- *
1215
- * @example
1216
- * ```ts
1217
- * editor.mark()
1218
- * editor.mark('flip shapes')
1219
- * ```
1220
- *
1221
- * @param markId - The mark's id, usually the reason for adding the mark.
1222
- *
1223
- * @public
1224
- * @deprecated use {@link Editor.markHistoryStoppingPoint} instead
1225
- */
1226
- mark(markId?: string): this;
1227
1191
  /**
1228
1192
  * Create a new "mark", or stopping point, in the undo redo history. Creating a mark will clear
1229
1193
  * any redos. You typically want to do this just before a user interaction begins or is handled.
@@ -1313,10 +1277,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1313
1277
  * @public
1314
1278
  */
1315
1279
  run(fn: () => void, opts?: TLEditorRunOptions): this;
1316
- /**
1317
- * @deprecated Use `Editor.run` instead.
1318
- */
1319
- batch(fn: () => void, opts?: TLEditorRunOptions): this;
1320
1280
  /* Excluded from this release type: annotateError */
1321
1281
  /* Excluded from this release type: createErrorAnnotations */
1322
1282
  /* Excluded from this release type: _crashingError */
@@ -1438,36 +1398,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1438
1398
  hasOpenMenus: () => boolean;
1439
1399
  isMenuOpen: (id: string) => boolean;
1440
1400
  };
1441
- /**
1442
- * @deprecated Use `editor.menus.getOpenMenus` instead.
1443
- *
1444
- * @public
1445
- */
1446
- getOpenMenus(): string[];
1447
- /**
1448
- * @deprecated Use `editor.menus.addOpenMenu` instead.
1449
- *
1450
- * @public
1451
- */
1452
- addOpenMenu(id: string): this;
1453
- /**
1454
- * @deprecated Use `editor.menus.deleteOpenMenu` instead.
1455
- *
1456
- * @public
1457
- */
1458
- deleteOpenMenu(id: string): this;
1459
- /**
1460
- * @deprecated Use `editor.menus.clearOpenMenus` instead.
1461
- *
1462
- * @public
1463
- */
1464
- clearOpenMenus(): this;
1465
- /**
1466
- * @deprecated Use `editor.menus.hasAnyOpenMenus` instead.
1467
- *
1468
- * @public
1469
- */
1470
- getIsMenuOpen(): boolean;
1471
1401
  /**
1472
1402
  * Set the cursor.
1473
1403
  *
@@ -2797,8 +2727,8 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2797
2727
  *
2798
2728
  * @public
2799
2729
  */
2800
- isShapeOfType<T extends TLUnknownShape>(shape: TLUnknownShape, type: T['type']): shape is T;
2801
- isShapeOfType<T extends TLUnknownShape>(shapeId: TLUnknownShape['id'], type: T['type']): shapeId is T['id'];
2730
+ isShapeOfType<T extends TLShape>(shape: TLShape, type: T['type']): shape is T;
2731
+ isShapeOfType<T extends TLShape = TLShape>(shapeId: TLShapeId, type: T['type']): boolean;
2802
2732
  /**
2803
2733
  * Get a shape by its id.
2804
2734
  *
@@ -2916,8 +2846,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2916
2846
  * @public
2917
2847
  */
2918
2848
  getShapeAndDescendantIds(ids: TLShapeId[]): Set<TLShapeId>;
2919
- /** @deprecated Use {@link Editor.getDraggingOverShape} instead */
2920
- getDroppingOverShape(point: Vec, droppingShapes: TLShape[]): TLShape | undefined;
2921
2849
  /**
2922
2850
  * Get the shape that some shapes should be dropped on at a given point.
2923
2851
  *
@@ -3276,7 +3204,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3276
3204
  *
3277
3205
  * @public
3278
3206
  */
3279
- canCreateShape<T extends TLUnknownShape>(shape: OptionalKeys<TLShapePartial<T>, 'id'> | T['id']): boolean;
3207
+ canCreateShape(shape: OptionalKeys<TLShapePartial<TLShape>, 'id'> | TLShape['id']): boolean;
3280
3208
  /**
3281
3209
  * Get whether the provided shapes can be created.
3282
3210
  *
@@ -3284,7 +3212,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3284
3212
  *
3285
3213
  * @public
3286
3214
  */
3287
- canCreateShapes<T extends TLUnknownShape>(shapes: (OptionalKeys<TLShapePartial<T>, 'id'> | T['id'])[]): boolean;
3215
+ canCreateShapes(shapes: (OptionalKeys<TLShapePartial<TLShape>, 'id'> | TLShape['id'])[]): boolean;
3288
3216
  /**
3289
3217
  * Create a single shape.
3290
3218
  *
@@ -3298,7 +3226,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3298
3226
  *
3299
3227
  * @public
3300
3228
  */
3301
- createShape<T extends TLUnknownShape>(shape: OptionalKeys<TLShapePartial<T>, 'id'>): this;
3229
+ createShape<TShape extends TLShape>(shape: OptionalKeys<TLShapePartial<TShape>, 'id'>): this;
3302
3230
  /**
3303
3231
  * Create shapes.
3304
3232
  *
@@ -3312,7 +3240,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3312
3240
  *
3313
3241
  * @public
3314
3242
  */
3315
- createShapes<T extends TLUnknownShape>(shapes: OptionalKeys<TLShapePartial<T>, 'id'>[]): this;
3243
+ createShapes<TShape extends TLShape = TLShape>(shapes: OptionalKeys<TLShapePartial<TShape>, 'id'>[]): this;
3316
3244
  private animatingShapes;
3317
3245
  /**
3318
3246
  * Animate a shape.
@@ -3398,7 +3326,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3398
3326
  *
3399
3327
  * @public
3400
3328
  */
3401
- updateShape<T extends TLUnknownShape>(partial: null | TLShapePartial<T> | undefined): this;
3329
+ updateShape<T extends TLShape = TLShape>(partial: null | TLShapePartial<T> | undefined): this;
3402
3330
  /**
3403
3331
  * Update shapes using partials of each shape.
3404
3332
  *
@@ -3411,7 +3339,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3411
3339
  *
3412
3340
  * @public
3413
3341
  */
3414
- updateShapes<T extends TLUnknownShape>(partials: (null | TLShapePartial<T> | undefined)[]): this;
3342
+ updateShapes<T extends TLShape>(partials: (null | TLShapePartial<T> | undefined)[]): this;
3415
3343
  /* Excluded from this release type: _updateShapes */
3416
3344
  /* Excluded from this release type: _getUnlockedShapeIds */
3417
3345
  /**
@@ -3629,14 +3557,20 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3629
3557
  * Handle external content, such as files, urls, embeds, or plain text which has been put into the app, for example by pasting external text or dropping external images onto canvas.
3630
3558
  *
3631
3559
  * @param info - Info about the external content.
3560
+ * @param opts - Options for handling external content, including force flag to bypass readonly checks.
3632
3561
  */
3633
- putExternalContent<E>(info: TLExternalContent<E>): Promise<void>;
3562
+ putExternalContent<E>(info: TLExternalContent<E>, opts?: {
3563
+ force?: boolean;
3564
+ }): Promise<void>;
3634
3565
  /**
3635
3566
  * Handle replacing external content.
3636
3567
  *
3637
3568
  * @param info - Info about the external content.
3569
+ * @param opts - Options for handling external content, including force flag to bypass readonly checks.
3638
3570
  */
3639
- replaceExternalContent<E>(info: TLExternalContent<E>): Promise<void>;
3571
+ replaceExternalContent<E>(info: TLExternalContent<E>, opts?: {
3572
+ force?: boolean;
3573
+ }): Promise<void>;
3640
3574
  /**
3641
3575
  * Get content that can be exported for the given shape ids.
3642
3576
  *
@@ -3692,8 +3626,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3692
3626
  svg: string;
3693
3627
  width: number;
3694
3628
  } | undefined>;
3695
- /** @deprecated Use {@link Editor.getSvgString} or {@link Editor.getSvgElement} instead. */
3696
- getSvg(shapes: TLShape[] | TLShapeId[], opts?: TLSvgExportOptions): Promise<SVGSVGElement | undefined>;
3697
3629
  /**
3698
3630
  * Get an exported image of the given shapes.
3699
3631
  *
@@ -3708,6 +3640,20 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3708
3640
  height: number;
3709
3641
  width: number;
3710
3642
  }>;
3643
+ /**
3644
+ * Get an exported image of the given shapes as a data URL.
3645
+ *
3646
+ * @param shapes - The shapes (or shape ids) to export.
3647
+ * @param opts - Options for the export.
3648
+ *
3649
+ * @returns A data URL of the image.
3650
+ * @public
3651
+ */
3652
+ toImageDataUrl(shapes: TLShape[] | TLShapeId[], opts?: TLImageExportOptions): Promise<{
3653
+ height: number;
3654
+ url: string;
3655
+ width: number;
3656
+ }>;
3711
3657
  /**
3712
3658
  * The app's current input state.
3713
3659
  *
@@ -4149,6 +4095,7 @@ export declare abstract class Geometry2d {
4149
4095
  isLabel: boolean;
4150
4096
  isEmptyLabel: boolean;
4151
4097
  isInternal: boolean;
4098
+ excludeFromShapeBounds: boolean;
4152
4099
  debugColor?: string;
4153
4100
  ignore?: boolean;
4154
4101
  constructor(opts: Geometry2dOptions);
@@ -4172,12 +4119,14 @@ export declare abstract class Geometry2d {
4172
4119
  * along the edge it is as a fraction of the total length.
4173
4120
  */
4174
4121
  uninterpolateAlongEdge(point: VecLike, _filters?: Geometry2dFilters): number;
4175
- /** @deprecated Iterate the vertices instead. */
4176
- nearestPointOnLineSegment(A: VecLike, B: VecLike): Vec;
4177
4122
  isPointInBounds(point: VecLike, margin?: number): boolean;
4123
+ overlapsPolygon(_polygon: VecLike[]): boolean;
4178
4124
  transform(transform: MatModel, opts?: TransformedGeometry2dOptions): Geometry2d;
4179
4125
  private _vertices;
4180
4126
  get vertices(): Vec[];
4127
+ getBoundsVertices(): Vec[];
4128
+ private _boundsVertices;
4129
+ get boundsVertices(): Vec[];
4181
4130
  getBounds(): Box;
4182
4131
  private _bounds;
4183
4132
  get bounds(): Box;
@@ -4374,6 +4323,7 @@ export declare class Group2d extends Geometry2d {
4374
4323
  hitTestLineSegment(A: VecLike, B: VecLike, zoom: number, filters?: Geometry2dFilters): boolean;
4375
4324
  intersectLineSegment(A: VecLike, B: VecLike, filters?: Geometry2dFilters): VecLike[];
4376
4325
  intersectCircle(center: VecLike, radius: number, filters?: Geometry2dFilters): VecLike[];
4326
+ getBoundsVertices(): Vec[];
4377
4327
  intersectPolygon(polygon: VecLike[], filters?: Geometry2dFilters): VecLike[];
4378
4328
  intersectPolyline(polyline: VecLike[], filters?: Geometry2dFilters): VecLike[];
4379
4329
  interpolateAlongEdge(t: number, filters?: Geometry2dFilters): Vec;
@@ -4383,6 +4333,7 @@ export declare class Group2d extends Geometry2d {
4383
4333
  toSimpleSvgPath(): string;
4384
4334
  getLength(filters?: Geometry2dFilters): number;
4385
4335
  getSvgPathData(): string;
4336
+ overlapsPolygon(polygon: VecLike[]): boolean;
4386
4337
  }
4387
4338
 
4388
4339
  /** @public */
@@ -4623,12 +4574,16 @@ export declare function kickoutOccludedShapes(editor: Editor, shapeIds: TLShapeI
4623
4574
  filter?(parent: TLShape): boolean;
4624
4575
  }): void;
4625
4576
 
4577
+ /* Excluded from this release type: LICENSE_TIMEOUT */
4578
+
4626
4579
  /* Excluded from this release type: LicenseFromKeyResult */
4627
4580
 
4628
4581
  /* Excluded from this release type: LicenseInfo */
4629
4582
 
4630
4583
  /* Excluded from this release type: LicenseManager */
4631
4584
 
4585
+ /* Excluded from this release type: LicenseState */
4586
+
4632
4587
  /** @public */
4633
4588
  export declare function linesIntersect(A: VecLike, B: VecLike, C: VecLike, D: VecLike): boolean;
4634
4589
 
@@ -4661,6 +4616,23 @@ export declare function loadSnapshot(store: TLStore, _snapshot: Partial<TLEditor
4661
4616
  /** @public */
4662
4617
  export declare function loopToHtmlElement(elm: Element): HTMLElement;
4663
4618
 
4619
+ /**
4620
+ * In tldraw, events are sometimes handled by multiple components. For example, the shapes might
4621
+ * have events, but the canvas handles events too. The way that the canvas handles events can
4622
+ * interfere with the with the shapes event handlers - for example, it calls `.preventDefault()` on
4623
+ * `pointerDown`, which also prevents `click` events from firing on the shapes.
4624
+ *
4625
+ * You can use `.stopPropagation()` to prevent the event from propagating to the rest of the DOM,
4626
+ * but that can impact non-tldraw event handlers set up elsewhere. By using `markEventAsHandled`,
4627
+ * you'll stop other parts of tldraw from handling the event without impacting other, non-tldraw
4628
+ * event handlers. See also {@link wasEventAlreadyHandled}.
4629
+ *
4630
+ * @public
4631
+ */
4632
+ export declare function markEventAsHandled(e: {
4633
+ nativeEvent: Event;
4634
+ } | Event): void;
4635
+
4664
4636
  /** @public */
4665
4637
  export declare class Mat {
4666
4638
  constructor(a: number, b: number, c: number, d: number, e: number, f: number);
@@ -5079,7 +5051,7 @@ export declare function setRuntimeOverrides(input: Partial<typeof runtime>): voi
5079
5051
  export declare function setUserPreferences(user: TLUserPreferences): void;
5080
5052
 
5081
5053
  /** @public */
5082
- export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknownShape> {
5054
+ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5083
5055
  editor: Editor;
5084
5056
  /** Configure this shape utils {@link ShapeUtil.options | `options`}. */
5085
5057
  static configure<T extends TLShapeUtilConstructor<any, any>>(this: T, options: T extends new (...args: any[]) => {
@@ -5234,7 +5206,34 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5234
5206
  * @public
5235
5207
  */
5236
5208
  canBeLaidOut(_shape: Shape, _info: TLShapeUtilCanBeLaidOutOpts): boolean;
5209
+ /**
5210
+ * Whether this shape can be culled. By default, shapes are culled for
5211
+ * performance reasons when they are outside of the viewport. Culled shapes are still rendered
5212
+ * to the DOM, but have their `display` property set to `none`.
5213
+ *
5214
+ * @param shape - The shape.
5215
+ */
5216
+ canCull(_shape: Shape): boolean;
5237
5217
  /* Excluded from this release type: providesBackgroundForChildren */
5218
+ /**
5219
+ * Get the clip path to apply to this shape's children.
5220
+ *
5221
+ * @param shape - The shape to get the clip path for
5222
+ * @returns Array of points defining the clipping polygon in local coordinates, or undefined if no clipping
5223
+ * @public
5224
+ */
5225
+ getClipPath?(shape: Shape): undefined | Vec[];
5226
+ /**
5227
+ * Whether a specific child shape should be clipped by this shape.
5228
+ * Only called if getClipPath returns a valid polygon.
5229
+ *
5230
+ * If not defined, the default behavior is to clip all children.
5231
+ *
5232
+ * @param child - The child shape to check
5233
+ * @returns boolean indicating if this child should be clipped
5234
+ * @public
5235
+ */
5236
+ shouldClipChild?(child: TLShape): boolean;
5238
5237
  /**
5239
5238
  * Whether the shape should hide its resize handles when selected.
5240
5239
  *
@@ -5265,6 +5264,17 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5265
5264
  * @public
5266
5265
  */
5267
5266
  isAspectRatioLocked(_shape: Shape): boolean;
5267
+ /**
5268
+ * By default, the bounds of an image export are the bounds of all the shapes it contains, plus
5269
+ * some padding. If an export includes a shape where `isExportBoundsContainer` is true, then the
5270
+ * padding is skipped _if the bounds of that shape contains all the other shapes_. This is
5271
+ * useful in cases like annotating on top of an image, where you usually want to avoid extra
5272
+ * padding around the image if you don't need it.
5273
+ *
5274
+ * @param _shape - The shape to check
5275
+ * @returns True if this shape should be treated as an export bounds container
5276
+ */
5277
+ isExportBoundsContainer(_shape: Shape): boolean;
5268
5278
  /* Excluded from this release type: backgroundComponent */
5269
5279
  /**
5270
5280
  * Get the interpolated props for an animating shape. This is an optional method.
@@ -5820,7 +5830,14 @@ export declare abstract class StateNode implements Partial<TLEventHandlers> {
5820
5830
  onExit?(info: any, to: string): void;
5821
5831
  }
5822
5832
 
5823
- /** @public */
5833
+ /**
5834
+ * Calls `event.stopPropagation()`.
5835
+ *
5836
+ * @deprecated Use {@link markEventAsHandled} instead, or manually call `event.stopPropagation()` if
5837
+ * that's what you really want.
5838
+ *
5839
+ * @public
5840
+ */
5824
5841
  export declare const stopEventPropagation: (e: any) => any;
5825
5842
 
5826
5843
  /* Excluded from this release type: StoreName */
@@ -5952,9 +5969,11 @@ export declare type TLAnyBindingUtilConstructor = TLBindingUtilConstructor<any>;
5952
5969
  export declare type TLAnyShapeUtilConstructor = TLShapeUtilConstructor<any>;
5953
5970
 
5954
5971
  /** @public */
5955
- export declare type TLBaseBoxShape = TLBaseShape<string, {
5956
- h: number;
5957
- w: number;
5972
+ export declare type TLBaseBoxShape = Extract<TLShape, {
5973
+ props: {
5974
+ h: number;
5975
+ w: number;
5976
+ };
5958
5977
  }>;
5959
5978
 
5960
5979
  /** @public */
@@ -6311,12 +6330,6 @@ export declare interface TldrawEditorBaseProps {
6311
6330
  * Options for syncing the editor's camera state with the URL.
6312
6331
  */
6313
6332
  deepLinks?: TLDeepLinkOptions | true;
6314
- /**
6315
- * Predicate for whether or not a shape should be hidden.
6316
- *
6317
- * @deprecated Use {@link TldrawEditorBaseProps#getShapeVisibility} instead.
6318
- */
6319
- isShapeHidden?(shape: TLShape, editor: Editor): boolean;
6320
6333
  /**
6321
6334
  * Provides a way to hide shapes.
6322
6335
  *
@@ -6578,15 +6591,6 @@ export declare interface TLEditorOptions {
6578
6591
  fontAssetUrls?: {
6579
6592
  [key: string]: string | undefined;
6580
6593
  };
6581
- /**
6582
- * A predicate that should return true if the given shape should be hidden.
6583
- *
6584
- * @deprecated Use {@link Editor#getShapeVisibility} instead.
6585
- *
6586
- * @param shape - The shape to check.
6587
- * @param editor - The editor instance.
6588
- */
6589
- isShapeHidden?(shape: TLShape, editor: Editor): boolean;
6590
6594
  /**
6591
6595
  * Provides a way to hide shapes.
6592
6596
  *
@@ -7423,11 +7427,11 @@ export declare interface TLShapeUtilCanBeLaidOutOpts {
7423
7427
  *
7424
7428
  * @public
7425
7429
  */
7426
- export declare interface TLShapeUtilCanBindOpts<Shape extends TLUnknownShape = TLUnknownShape> {
7430
+ export declare interface TLShapeUtilCanBindOpts<Shape extends TLShape = TLShape> {
7427
7431
  /** The type of shape referenced by the `fromId` of the binding. */
7428
- fromShapeType: string;
7432
+ fromShapeType: TLShape['type'];
7429
7433
  /** The type of shape referenced by the `toId` of the binding. */
7430
- toShapeType: string;
7434
+ toShapeType: TLShape['type'];
7431
7435
  /** The type of binding. */
7432
7436
  bindingType: string;
7433
7437
  }
@@ -7439,7 +7443,7 @@ export declare interface TLShapeUtilCanvasSvgDef {
7439
7443
  }
7440
7444
 
7441
7445
  /** @public */
7442
- export declare interface TLShapeUtilConstructor<T extends TLUnknownShape, U extends ShapeUtil<T> = ShapeUtil<T>> {
7446
+ export declare interface TLShapeUtilConstructor<T extends TLShape, U extends ShapeUtil<T> = ShapeUtil<T>> {
7443
7447
  new (editor: Editor): U;
7444
7448
  type: T['type'];
7445
7449
  props?: RecordProps<T>;
@@ -7577,12 +7581,6 @@ export declare interface TLSvgExportOptions {
7577
7581
  preserveAspectRatio?: React.SVGAttributes<SVGSVGElement>['preserveAspectRatio'];
7578
7582
  }
7579
7583
 
7580
- /**
7581
- * @public
7582
- * @deprecated use {@link TLImageExportOptions} instead
7583
- */
7584
- export declare type TLSvgOptions = TLImageExportOptions;
7585
-
7586
7584
  /** @public */
7587
7585
  export declare interface TLSvgTextExternalContent extends TLBaseExternalContent {
7588
7586
  type: 'svg-text';
@@ -7736,6 +7734,7 @@ export declare class TransformedGeometry2d extends Geometry2d {
7736
7734
  private readonly decomposed;
7737
7735
  constructor(geometry: Geometry2d, matrix: MatModel, opts?: TransformedGeometry2dOptions);
7738
7736
  getVertices(filters: Geometry2dFilters): Vec[];
7737
+ getBoundsVertices(): Vec[];
7739
7738
  nearestPoint(point: VecLike, filters?: Geometry2dFilters): Vec;
7740
7739
  hitTestPoint(point: VecLike, margin?: number, hitInside?: boolean, filters?: Geometry2dFilters): boolean;
7741
7740
  distanceToPoint(point: VecLike, hitInside?: boolean, filters?: Geometry2dFilters): number;
@@ -7756,6 +7755,7 @@ export declare interface TransformedGeometry2dOptions {
7756
7755
  isInternal?: boolean;
7757
7756
  debugColor?: string;
7758
7757
  ignore?: boolean;
7758
+ excludeFromShapeBounds?: boolean;
7759
7759
  }
7760
7760
 
7761
7761
  /** @public */
@@ -7990,8 +7990,6 @@ export declare class Vec {
7990
7990
  lrp(B: VecLike, t: number): Vec;
7991
7991
  equals(B: VecLike): boolean;
7992
7992
  equalsXY(x: number, y: number): boolean;
7993
- /** @deprecated use `uni` instead */
7994
- norm(): this;
7995
7993
  toFixed(): this;
7996
7994
  toString(): string;
7997
7995
  toJson(): VecModel;
@@ -8113,6 +8111,15 @@ export declare class Vec {
8113
8111
  /** @public */
8114
8112
  export declare type VecLike = Vec | VecModel;
8115
8113
 
8114
+ /**
8115
+ * Checks if an event has already been handled. See {@link markEventAsHandled}.
8116
+ *
8117
+ * @public
8118
+ */
8119
+ export declare function wasEventAlreadyHandled(e: {
8120
+ nativeEvent: Event;
8121
+ } | Event): boolean;
8122
+
8116
8123
 
8117
8124
  export * from "@tldraw/state";
8118
8125
  export * from "@tldraw/state-react";
@@ -175,6 +175,7 @@ import { useViewportHeight } from "./lib/hooks/useViewportHeight.mjs";
175
175
  import {
176
176
  LicenseManager
177
177
  } from "./lib/license/LicenseManager.mjs";
178
+ import { LICENSE_TIMEOUT } from "./lib/license/LicenseProvider.mjs";
178
179
  import { defaultTldrawOptions } from "./lib/options.mjs";
179
180
  import {
180
181
  Box,
@@ -268,10 +269,12 @@ import {
268
269
  import {
269
270
  activeElementShouldCaptureKeys,
270
271
  loopToHtmlElement,
272
+ markEventAsHandled,
271
273
  preventDefault,
272
274
  releasePointerCapture,
273
275
  setPointerCapture,
274
- stopEventPropagation
276
+ stopEventPropagation,
277
+ wasEventAlreadyHandled
275
278
  } from "./lib/utils/dom.mjs";
276
279
  import { EditorAtom } from "./lib/utils/EditorAtom.mjs";
277
280
  import { getIncrementedName } from "./lib/utils/getIncrementedName.mjs";
@@ -298,12 +301,9 @@ import { hardReset } from "./lib/utils/sync/hardReset.mjs";
298
301
  import { LocalIndexedDb, Table } from "./lib/utils/sync/LocalIndexedDb.mjs";
299
302
  import { uniq } from "./lib/utils/uniq.mjs";
300
303
  import { openWindow } from "./lib/utils/window-open.mjs";
301
- function debugEnableLicensing() {
302
- return;
303
- }
304
304
  registerTldrawLibraryVersion(
305
305
  "@tldraw/editor",
306
- "3.16.0-internal.51e99e128bd4",
306
+ "3.16.0-internal.71f83a8a571b",
307
307
  "esm"
308
308
  );
309
309
  export {
@@ -358,6 +358,7 @@ export {
358
358
  HTMLContainer,
359
359
  HandleSnaps,
360
360
  HistoryManager,
361
+ LICENSE_TIMEOUT,
361
362
  LicenseManager,
362
363
  LoadingScreen,
363
364
  LocalIndexedDb,
@@ -409,7 +410,6 @@ export {
409
410
  createTLStore,
410
411
  createTLUser,
411
412
  dataUrlToFile,
412
- debugEnableLicensing,
413
413
  debugFlags,
414
414
  defaultTldrawOptions,
415
415
  defaultUserPreferences,
@@ -454,6 +454,7 @@ export {
454
454
  loadSessionStateSnapshotIntoStore,
455
455
  loadSnapshot,
456
456
  loopToHtmlElement,
457
+ markEventAsHandled,
457
458
  maybeSnapToGrid,
458
459
  normalizeWheel,
459
460
  openWindow,
@@ -517,6 +518,7 @@ export {
517
518
  useTransform,
518
519
  useUniqueSafeId,
519
520
  useViewportHeight,
520
- userTypeValidator
521
+ userTypeValidator,
522
+ wasEventAlreadyHandled
521
523
  };
522
524
  //# sourceMappingURL=index.mjs.map