@tldraw/editor 4.3.0-canary.bf87ebaf143a → 4.3.0-canary.c08047039e53

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 (156) hide show
  1. package/README.md +1 -1
  2. package/dist-cjs/index.d.ts +392 -118
  3. package/dist-cjs/index.js +7 -1
  4. package/dist-cjs/index.js.map +2 -2
  5. package/dist-cjs/lib/components/ErrorBoundary.js.map +1 -1
  6. package/dist-cjs/lib/components/GeometryDebuggingView.js +1 -17
  7. package/dist-cjs/lib/components/GeometryDebuggingView.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +1 -2
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/constants.js +1 -3
  11. package/dist-cjs/lib/constants.js.map +2 -2
  12. package/dist-cjs/lib/editor/Editor.js +301 -278
  13. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  14. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js +16 -23
  15. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js.map +3 -3
  16. package/dist-cjs/lib/editor/derivations/parentsToChildren.js +12 -3
  17. package/dist-cjs/lib/editor/derivations/parentsToChildren.js.map +2 -2
  18. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +1 -1
  19. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
  20. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js +5 -6
  21. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +2 -2
  22. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js +591 -0
  23. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js.map +7 -0
  24. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js +1 -1
  25. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js.map +2 -2
  26. package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js +144 -0
  27. package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js.map +7 -0
  28. package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js +181 -0
  29. package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js.map +7 -0
  30. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js +1 -22
  31. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js.map +2 -2
  32. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +31 -23
  33. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/editor/tools/BaseBoxShapeTool/children/Pointing.js +3 -3
  35. package/dist-cjs/lib/editor/tools/BaseBoxShapeTool/children/Pointing.js.map +2 -2
  36. package/dist-cjs/lib/exports/parseCss.js +1 -1
  37. package/dist-cjs/lib/exports/parseCss.js.map +2 -2
  38. package/dist-cjs/lib/hooks/useEvent.js +1 -1
  39. package/dist-cjs/lib/hooks/useEvent.js.map +2 -2
  40. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js.map +2 -2
  41. package/dist-cjs/lib/hooks/useGestureEvents.js +1 -1
  42. package/dist-cjs/lib/hooks/useGestureEvents.js.map +2 -2
  43. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js.map +2 -2
  44. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  45. package/dist-cjs/lib/hooks/useScreenBounds.js.map +2 -2
  46. package/dist-cjs/lib/hooks/useStateAttribute.js +4 -1
  47. package/dist-cjs/lib/hooks/useStateAttribute.js.map +2 -2
  48. package/dist-cjs/lib/hooks/useTransform.js.map +1 -1
  49. package/dist-cjs/lib/options.js +4 -1
  50. package/dist-cjs/lib/options.js.map +2 -2
  51. package/dist-cjs/lib/primitives/Box.js +3 -0
  52. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  53. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +1 -0
  54. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
  55. package/dist-cjs/lib/utils/rotation.js +1 -1
  56. package/dist-cjs/lib/utils/rotation.js.map +2 -2
  57. package/dist-cjs/version.js +3 -3
  58. package/dist-cjs/version.js.map +1 -1
  59. package/dist-esm/index.d.mts +392 -118
  60. package/dist-esm/index.mjs +7 -1
  61. package/dist-esm/index.mjs.map +2 -2
  62. package/dist-esm/lib/components/ErrorBoundary.mjs.map +1 -1
  63. package/dist-esm/lib/components/GeometryDebuggingView.mjs +1 -17
  64. package/dist-esm/lib/components/GeometryDebuggingView.mjs.map +2 -2
  65. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +1 -2
  66. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  67. package/dist-esm/lib/constants.mjs +1 -3
  68. package/dist-esm/lib/constants.mjs.map +2 -2
  69. package/dist-esm/lib/editor/Editor.mjs +302 -281
  70. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  71. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs +16 -23
  72. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs.map +3 -3
  73. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs +13 -4
  74. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs.map +2 -2
  75. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +1 -1
  76. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
  77. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs +5 -6
  78. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +2 -2
  79. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs +573 -0
  80. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs.map +7 -0
  81. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs +1 -1
  82. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs.map +2 -2
  83. package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs +114 -0
  84. package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs.map +7 -0
  85. package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs +161 -0
  86. package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs.map +7 -0
  87. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs +1 -22
  88. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +2 -2
  89. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +31 -23
  90. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  91. package/dist-esm/lib/editor/tools/BaseBoxShapeTool/children/Pointing.mjs +3 -3
  92. package/dist-esm/lib/editor/tools/BaseBoxShapeTool/children/Pointing.mjs.map +2 -2
  93. package/dist-esm/lib/exports/parseCss.mjs +1 -1
  94. package/dist-esm/lib/exports/parseCss.mjs.map +2 -2
  95. package/dist-esm/lib/hooks/useEvent.mjs +1 -1
  96. package/dist-esm/lib/hooks/useEvent.mjs.map +2 -2
  97. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  98. package/dist-esm/lib/hooks/useGestureEvents.mjs +1 -1
  99. package/dist-esm/lib/hooks/useGestureEvents.mjs.map +2 -2
  100. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +2 -2
  101. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  102. package/dist-esm/lib/hooks/useScreenBounds.mjs.map +2 -2
  103. package/dist-esm/lib/hooks/useStateAttribute.mjs +4 -1
  104. package/dist-esm/lib/hooks/useStateAttribute.mjs.map +2 -2
  105. package/dist-esm/lib/hooks/useTransform.mjs.map +1 -1
  106. package/dist-esm/lib/options.mjs +4 -1
  107. package/dist-esm/lib/options.mjs.map +2 -2
  108. package/dist-esm/lib/primitives/Box.mjs +3 -0
  109. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  110. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +1 -0
  111. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
  112. package/dist-esm/lib/utils/rotation.mjs +1 -1
  113. package/dist-esm/lib/utils/rotation.mjs.map +2 -2
  114. package/dist-esm/version.mjs +3 -3
  115. package/dist-esm/version.mjs.map +1 -1
  116. package/editor.css +6 -8
  117. package/package.json +21 -17
  118. package/src/index.ts +4 -0
  119. package/src/lib/components/ErrorBoundary.tsx +1 -1
  120. package/src/lib/components/GeometryDebuggingView.tsx +1 -19
  121. package/src/lib/components/default-components/DefaultCanvas.tsx +1 -5
  122. package/src/lib/config/TLUserPreferences.test.ts +40 -0
  123. package/src/lib/constants.ts +0 -2
  124. package/src/lib/editor/Editor.test.ts +140 -0
  125. package/src/lib/editor/Editor.ts +374 -321
  126. package/src/lib/editor/derivations/notVisibleShapes.ts +21 -33
  127. package/src/lib/editor/derivations/parentsToChildren.ts +18 -7
  128. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +17 -31
  129. package/src/lib/editor/managers/ClickManager/ClickManager.ts +1 -1
  130. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +129 -79
  131. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.ts +10 -6
  132. package/src/lib/editor/managers/InputsManager/InputsManager.ts +566 -0
  133. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +0 -4
  134. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +12 -0
  135. package/src/lib/editor/managers/SnapManager/SnapManager.ts +1 -1
  136. package/src/lib/editor/managers/SpatialIndexManager/RBushIndex.ts +144 -0
  137. package/src/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.ts +215 -0
  138. package/src/lib/editor/managers/TickManager/TickManager.test.ts +40 -107
  139. package/src/lib/editor/managers/TickManager/TickManager.ts +2 -32
  140. package/src/lib/editor/shapes/ShapeUtil.ts +67 -24
  141. package/src/lib/editor/tools/BaseBoxShapeTool/children/Pointing.ts +3 -3
  142. package/src/lib/exports/parseCss.test.ts +1 -0
  143. package/src/lib/exports/parseCss.ts +1 -1
  144. package/src/lib/hooks/useEvent.tsx +1 -1
  145. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +1 -1
  146. package/src/lib/hooks/useGestureEvents.ts +2 -2
  147. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +1 -1
  148. package/src/lib/hooks/usePassThroughWheelEvents.ts +1 -1
  149. package/src/lib/hooks/useScreenBounds.ts +1 -1
  150. package/src/lib/hooks/useStateAttribute.ts +4 -1
  151. package/src/lib/hooks/useTransform.ts +1 -1
  152. package/src/lib/options.ts +19 -0
  153. package/src/lib/primitives/Box.ts +9 -0
  154. package/src/lib/primitives/geometry/Geometry2d.ts +1 -0
  155. package/src/lib/utils/rotation.ts +1 -1
  156. package/src/version.ts +3 -3
@@ -1,4 +1,5 @@
1
1
  import { Atom } from '@tldraw/state';
2
+ import { AtomSet } from '@tldraw/store';
2
3
  import { BoxModel } from '@tldraw/tlschema';
3
4
  import { ComponentType } from 'react';
4
5
  import { Computed } from '@tldraw/state';
@@ -9,10 +10,11 @@ import EventEmitter from 'eventemitter3';
9
10
  import { ExoticComponent } from 'react';
10
11
  import { ExtractShapeByProps } from '@tldraw/tlschema';
11
12
  import { ForwardRefExoticComponent } from 'react';
13
+ import { FragmentProps } from 'react';
12
14
  import { HistoryEntry } from '@tldraw/store';
13
15
  import { IndexKey } from '@tldraw/utils';
14
16
  import { JsonObject } from '@tldraw/utils';
15
- import { JSX as JSX_2 } from 'react/jsx-runtime';
17
+ import { JSX } from 'react/jsx-runtime';
16
18
  import { LegacyMigrations } from '@tldraw/store';
17
19
  import { MigrationSequence } from '@tldraw/store';
18
20
  import { NamedExoticComponent } from 'react';
@@ -488,6 +490,7 @@ export declare class Box {
488
490
  get cornersAndCenter(): Vec[];
489
491
  get sides(): Array<[Vec, Vec]>;
490
492
  get size(): Vec;
493
+ isValid(): boolean;
491
494
  toFixed(): this;
492
495
  setTo(B: Box): this;
493
496
  set(x?: number, y?: number, w?: number, h?: number): this;
@@ -655,7 +658,7 @@ export declare function clockwiseAngleDist(a0: number, a1: number): number;
655
658
  * @public
656
659
  * @react
657
660
  */
658
- export declare function ContainerProvider({ container, children }: ContainerProviderProps): JSX_2.Element;
661
+ export declare function ContainerProvider({ container, children }: ContainerProviderProps): JSX.Element;
659
662
 
660
663
  /** @public */
661
664
  export declare interface ContainerProviderProps {
@@ -796,16 +799,16 @@ export declare interface DebugFlagDefaults<T> {
796
799
  /* Excluded from this release type: DEFAULT_CAMERA_OPTIONS */
797
800
 
798
801
  /** @public @react */
799
- export declare function DefaultBackground(): JSX_2.Element;
802
+ export declare function DefaultBackground(): JSX.Element;
800
803
 
801
804
  /** @public @react */
802
- export declare const DefaultBrush: ({ brush, color, opacity, className }: TLBrushProps) => JSX_2.Element;
805
+ export declare const DefaultBrush: ({ brush, color, opacity, className }: TLBrushProps) => JSX.Element;
803
806
 
804
807
  /** @public @react */
805
- export declare function DefaultCanvas({ className }: TLCanvasComponentProps): JSX_2.Element;
808
+ export declare function DefaultCanvas({ className }: TLCanvasComponentProps): JSX.Element;
806
809
 
807
810
  /** @public @react */
808
- export declare function DefaultCollaboratorHint({ className, zoom, point, color, viewport, opacity, }: TLCollaboratorHintProps): JSX_2.Element;
811
+ export declare function DefaultCollaboratorHint({ className, zoom, point, color, viewport, opacity, }: TLCollaboratorHintProps): JSX.Element;
809
812
 
810
813
  /** @public @react */
811
814
  export declare const DefaultCursor: NamedExoticComponent<TLCursorProps>;
@@ -814,22 +817,22 @@ export declare const DefaultCursor: NamedExoticComponent<TLCursorProps>;
814
817
  export declare const DefaultErrorFallback: TLErrorFallbackComponent;
815
818
 
816
819
  /** @public @react */
817
- export declare function DefaultGrid({ x, y, z, size }: TLGridProps): JSX_2.Element;
820
+ export declare function DefaultGrid({ x, y, z, size }: TLGridProps): JSX.Element;
818
821
 
819
822
  /** @public @react */
820
- export declare function DefaultHandle({ handle, isCoarse, className, zoom }: TLHandleProps): JSX_2.Element;
823
+ export declare function DefaultHandle({ handle, isCoarse, className, zoom }: TLHandleProps): JSX.Element;
821
824
 
822
825
  /** @public @react */
823
- export declare const DefaultHandles: ({ children }: TLHandlesProps) => JSX_2.Element;
826
+ export declare const DefaultHandles: ({ children }: TLHandlesProps) => JSX.Element;
824
827
 
825
828
  /** @public @react */
826
- export declare function DefaultScribble({ scribble, zoom, color, opacity, className }: TLScribbleProps): JSX_2.Element | null;
829
+ export declare function DefaultScribble({ scribble, zoom, color, opacity, className }: TLScribbleProps): JSX.Element | null;
827
830
 
828
831
  /** @public @react */
829
- export declare function DefaultSelectionBackground({ bounds, rotation }: TLSelectionBackgroundProps): JSX_2.Element;
832
+ export declare function DefaultSelectionBackground({ bounds, rotation }: TLSelectionBackgroundProps): JSX.Element;
830
833
 
831
834
  /** @public @react */
832
- export declare function DefaultSelectionForeground({ bounds, rotation }: TLSelectionForegroundProps): JSX_2.Element;
835
+ export declare function DefaultSelectionForeground({ bounds, rotation }: TLSelectionForegroundProps): JSX.Element;
833
836
 
834
837
  /** @public @react */
835
838
  export declare const DefaultShapeIndicator: NamedExoticComponent<TLShapeIndicatorProps>;
@@ -841,10 +844,10 @@ export declare const DefaultShapeIndicators: NamedExoticComponent<TLShapeIndicat
841
844
  export declare const DefaultShapeWrapper: ForwardRefExoticComponent<TLShapeWrapperProps & RefAttributes<HTMLDivElement>>;
842
845
 
843
846
  /** @public @react */
844
- export declare function DefaultSnapIndicator({ className, line, zoom }: TLSnapIndicatorProps): JSX_2.Element;
847
+ export declare function DefaultSnapIndicator({ className, line, zoom }: TLSnapIndicatorProps): JSX.Element;
845
848
 
846
849
  /** @public @react */
847
- export declare function DefaultSpinner(props: React.SVGProps<SVGSVGElement>): JSX_2.Element;
850
+ export declare function DefaultSpinner(props: React.SVGProps<SVGSVGElement>): JSX.Element;
848
851
 
849
852
  /** @public @react */
850
853
  export declare const DefaultSvgDefs: () => null;
@@ -873,9 +876,7 @@ export declare const defaultTldrawOptions: {
873
876
  readonly edgeScrollEaseDuration: 200;
874
877
  readonly edgeScrollSpeed: 25;
875
878
  readonly enableToolbarKeyboardShortcuts: true;
876
- readonly exportProvider: ExoticComponent< {
877
- children?: ReactNode | undefined;
878
- }>;
879
+ readonly exportProvider: ExoticComponent<FragmentProps>;
879
880
  readonly flattenImageBoundsExpand: 64;
880
881
  readonly flattenImageBoundsPadding: 16;
881
882
  readonly followChaseViewportSnap: 2;
@@ -907,11 +908,14 @@ export declare const defaultTldrawOptions: {
907
908
  readonly maxShapesPerPage: 4000;
908
909
  readonly multiClickDurationMs: 200;
909
910
  readonly nonce: undefined;
911
+ readonly snapThreshold: 8;
912
+ readonly spacebarPanning: true;
910
913
  readonly temporaryAssetPreviewLifetimeMs: 180000;
911
914
  readonly textShadowLod: 0.35;
912
915
  readonly tooltipDelayMs: 700;
913
916
  readonly uiCoarseDragDistanceSquared: 625;
914
917
  readonly uiDragDistanceSquared: 16;
918
+ readonly zoomToFitPadding: 128;
915
919
  };
916
920
 
917
921
  /** @public */
@@ -985,6 +989,7 @@ export declare class EdgeScrollManager {
985
989
  constructor(editor: Editor);
986
990
  private _isEdgeScrolling;
987
991
  private _edgeScrollDuration;
992
+ getIsEdgeScrolling(): boolean;
988
993
  /**
989
994
  * Update the camera position when the mouse is close to the edge of the screen.
990
995
  * Run this on every tick when in a state where edge scrolling is enabled.
@@ -1043,7 +1048,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1043
1048
  */
1044
1049
  removeTool(Tool: TLStateNodeConstructor, parent?: StateNode): void;
1045
1050
  /**
1046
- * A set of functions to call when the app is disposed.
1051
+ * A set of functions to call when the editor is disposed.
1047
1052
  *
1048
1053
  * @public
1049
1054
  */
@@ -1056,11 +1061,18 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1056
1061
  isDisposed: boolean;
1057
1062
  /* Excluded from this release type: _tickManager */
1058
1063
  /**
1059
- * A manager for the app's snapping feature.
1064
+ * A manager for the editor's input state.
1065
+ *
1066
+ * @public
1067
+ */
1068
+ readonly inputs: InputsManager;
1069
+ /**
1070
+ * A manager for the editor's snapping feature.
1060
1071
  *
1061
1072
  * @public
1062
1073
  */
1063
1074
  readonly snaps: SnapManager;
1075
+ private readonly _spatialIndex;
1064
1076
  /**
1065
1077
  * A manager for the any asynchronous events and making sure they're
1066
1078
  * cleaned up upon disposal.
@@ -1197,7 +1209,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1197
1209
  } | S): BindingUtil<S>;
1198
1210
  getBindingUtil<T extends BindingUtil>(type: T extends BindingUtil<infer R> ? R['type'] : string): T;
1199
1211
  /**
1200
- * A manager for the app's history.
1212
+ * A manager for the editor's history.
1201
1213
  *
1202
1214
  * @readonly
1203
1215
  */
@@ -1214,10 +1226,11 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1214
1226
  */
1215
1227
  undo(): this;
1216
1228
  /**
1217
- * Whether the app can undo.
1229
+ * Whether the editor can undo.
1218
1230
  *
1219
1231
  * @public
1220
1232
  */
1233
+ canUndo(): boolean;
1221
1234
  getCanUndo(): boolean;
1222
1235
  /**
1223
1236
  * Redo to the next mark.
@@ -1230,13 +1243,14 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1230
1243
  * @public
1231
1244
  */
1232
1245
  redo(): this;
1233
- clearHistory(): this;
1234
1246
  /**
1235
- * Whether the app can redo.
1247
+ * Whether the editor can redo.
1236
1248
  *
1237
1249
  * @public
1238
1250
  */
1251
+ canRedo(): boolean;
1239
1252
  getCanRedo(): boolean;
1253
+ clearHistory(): this;
1240
1254
  /**
1241
1255
  * Create a new "mark", or stopping point, in the undo redo history. Creating a mark will clear
1242
1256
  * any redos. You typically want to do this just before a user interaction begins or is handled.
@@ -1595,7 +1609,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1595
1609
  */
1596
1610
  selectNone(): this;
1597
1611
  /**
1598
- * The id of the app's only selected shape.
1612
+ * The id of the editor's only selected shape.
1599
1613
  *
1600
1614
  * @returns Null if there is no shape or more than one selected shape, otherwise the selected shape's id.
1601
1615
  *
@@ -1604,7 +1618,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1604
1618
  */
1605
1619
  getOnlySelectedShapeId(): null | TLShapeId;
1606
1620
  /**
1607
- * The app's only selected shape.
1621
+ * The editor's only selected shape.
1608
1622
  *
1609
1623
  * @returns Null if there is no shape or more than one selected shape, otherwise the selected shape.
1610
1624
  *
@@ -1696,6 +1710,16 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1696
1710
  * @public
1697
1711
  */
1698
1712
  getEditingShape(): TLShape | undefined;
1713
+ /**
1714
+ * Whether the shape can be edited.
1715
+ *
1716
+ * @param shape - The shape (or shape id) to check if it can be edited.
1717
+ * @param info - The info about the edit start.
1718
+ *
1719
+ * @public
1720
+ * @returns true if the shape can be edited, false otherwise.
1721
+ */
1722
+ canEditShape<T extends TLShape | TLShapeId>(shape: null | T, info?: TLEditStartInfo): shape is T;
1699
1723
  /**
1700
1724
  * Set the current editing shape.
1701
1725
  *
@@ -1815,6 +1839,15 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1815
1839
  * @public
1816
1840
  */
1817
1841
  getCroppingShapeId(): null | TLShapeId;
1842
+ /**
1843
+ * Whether the shape can be cropped.
1844
+ *
1845
+ * @param shape - The shape (or shape id) to check if it can be cropped.
1846
+ *
1847
+ * @public
1848
+ * @returns true if the shape can be cropped, false otherwise.
1849
+ */
1850
+ canCropShape<T extends TLShape | TLShapeId>(shape: null | T): shape is T;
1818
1851
  /**
1819
1852
  * Set the current cropping shape.
1820
1853
  *
@@ -1997,7 +2030,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1997
2030
  * ```ts
1998
2031
  * editor.zoomIn()
1999
2032
  * editor.zoomIn(editor.getViewportScreenCenter(), { animation: { duration: 200 } })
2000
- * editor.zoomIn(editor.inputs.currentScreenPoint, { animation: { duration: 200 } })
2033
+ * editor.zoomIn(editor.inputs.getCurrentScreenPoint(), { animation: { duration: 200 } })
2001
2034
  * ```
2002
2035
  *
2003
2036
  * @param point - The screen point to zoom in on. Defaults to the screen center
@@ -2013,7 +2046,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2013
2046
  * ```ts
2014
2047
  * editor.zoomOut()
2015
2048
  * editor.zoomOut(editor.getViewportScreenCenter(), { animation: { duration: 120 } })
2016
- * editor.zoomOut(editor.inputs.currentScreenPoint, { animation: { duration: 120 } })
2049
+ * editor.zoomOut(editor.inputs.getCurrentScreenPoint(), { animation: { duration: 120 } })
2017
2050
  * ```
2018
2051
  *
2019
2052
  * @param point - The point to zoom out on. Defaults to the viewport screen center.
@@ -2676,6 +2709,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2676
2709
  */
2677
2710
  getNotVisibleShapes(): Set<TLShapeId>;
2678
2711
  private _notVisibleShapes;
2712
+ private _culledShapesCache;
2679
2713
  /**
2680
2714
  * Get culled shapes (those that should not render), taking into account which shapes are selected or editing.
2681
2715
  *
@@ -2725,6 +2759,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2725
2759
  hitInside?: boolean;
2726
2760
  margin?: number;
2727
2761
  }): TLShape[];
2762
+ /* Excluded from this release type: getShapeIdsInsideBounds */
2728
2763
  /**
2729
2764
  * Test whether a point (in the current page space) will will a shape. This method takes into account masks,
2730
2765
  * such as when a shape is the child of a frame and is partially clipped by the frame.
@@ -3748,59 +3783,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3748
3783
  url: string;
3749
3784
  width: number;
3750
3785
  }>;
3751
- /**
3752
- * The app's current input state.
3753
- *
3754
- * @public
3755
- */
3756
- inputs: {
3757
- /** A set containing the currently pressed buttons. */
3758
- buttons: Set<number>;
3759
- /** A set containing the currently pressed keys. */
3760
- keys: Set<string>;
3761
- /** The most recent pointer down's position in screen space. */
3762
- originScreenPoint: Vec;
3763
- /** The most recent pointer down's position in the current page space. */
3764
- originPagePoint: Vec;
3765
- /** The most recent pointer position in screen space. */
3766
- currentScreenPoint: Vec;
3767
- /** The most recent pointer position in the current page space. */
3768
- currentPagePoint: Vec;
3769
- /** The previous pointer position in screen space. */
3770
- previousScreenPoint: Vec;
3771
- /** The previous pointer position in the current page space. */
3772
- previousPagePoint: Vec;
3773
- /** Velocity of mouse pointer, in pixels per millisecond */
3774
- pointerVelocity: Vec;
3775
- /** Whether the alt or option key is currently pressed. */
3776
- altKey: boolean;
3777
- /** Whether the control or command key is currently pressed. */
3778
- ctrlKey: boolean;
3779
- /** Whether the input is from a pe. */
3780
- isPen: boolean;
3781
- /** Whether the meta key is currently pressed. */
3782
- metaKey: boolean;
3783
- /** Whether the shift key is currently pressed. */
3784
- shiftKey: boolean;
3785
- /** Whether the user is dragging. */
3786
- isDragging: boolean;
3787
- /** Whether the user is editing. */
3788
- isEditing: boolean;
3789
- /** Whether the user is panning. */
3790
- isPanning: boolean;
3791
- /** Whether the user is pinching. */
3792
- isPinching: boolean;
3793
- /** Whether the user is pointing. */
3794
- isPointing: boolean;
3795
- /** Whether the user is spacebar panning. */
3796
- isSpacebarPanning: boolean;
3797
- };
3798
- /**
3799
- * Update the input points from a pointer, pinch, or wheel event.
3800
- *
3801
- * @param info - The event info.
3802
- */
3803
- private _updateInputsFromEvent;
3804
3786
  /**
3805
3787
  * Dispatch a cancel event.
3806
3788
  *
@@ -4046,7 +4028,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
4046
4028
  /* Excluded from this release type: _metaKeyTimeout */
4047
4029
  /* Excluded from this release type: _setMetaKeyTimeout */
4048
4030
  /* Excluded from this release type: _restoreToolId */
4049
- /* Excluded from this release type: _pinchStart */
4050
4031
  /* Excluded from this release type: _didPinch */
4051
4032
  /* Excluded from this release type: _selectedShapeIdsAtPointerDown */
4052
4033
  /* Excluded from this release type: _longPressTimeout */
@@ -4121,7 +4102,7 @@ export declare class EditorAtom<T> {
4121
4102
  export declare const EditorContext: React_3.Context<Editor | null>;
4122
4103
 
4123
4104
  /** @public @react */
4124
- export declare function EditorProvider({ editor, children }: EditorProviderProps): JSX_2.Element;
4105
+ export declare function EditorProvider({ editor, children }: EditorProviderProps): JSX.Element;
4125
4106
 
4126
4107
  /** @public */
4127
4108
  export declare interface EditorProviderProps {
@@ -4152,7 +4133,7 @@ export declare class Ellipse2d extends Geometry2d {
4152
4133
  }
4153
4134
 
4154
4135
  /** @public */
4155
- export declare class ErrorBoundary extends React_2.Component<React_2.PropsWithRef<React_2.PropsWithChildren<TLErrorBoundaryProps>>, {
4136
+ export declare class ErrorBoundary extends React_2.Component<React_2.PropsWithChildren<TLErrorBoundaryProps>, {
4156
4137
  error: Error | null;
4157
4138
  }> {
4158
4139
  static getDerivedStateFromError(error: Error): {
@@ -4162,11 +4143,11 @@ export declare class ErrorBoundary extends React_2.Component<React_2.PropsWithRe
4162
4143
  error: null;
4163
4144
  };
4164
4145
  componentDidCatch(error: unknown): void;
4165
- render(): boolean | JSX_2.Element | Iterable<React_2.ReactNode> | null | number | string | undefined;
4146
+ render(): bigint | boolean | JSX.Element | Iterable<React_2.ReactNode> | null | number | Promise<bigint | boolean | Iterable<React_2.ReactNode> | null | number | React_2.ReactElement<unknown, React_2.JSXElementConstructor<any> | string> | React_2.ReactPortal | string | undefined> | string | undefined;
4166
4147
  }
4167
4148
 
4168
4149
  /** @public @react */
4169
- export declare function ErrorScreen({ children }: LoadingScreenProps): JSX_2.Element;
4150
+ export declare function ErrorScreen({ children }: LoadingScreenProps): JSX.Element;
4170
4151
 
4171
4152
  /** @public */
4172
4153
  export declare const EVENT_NAME_MAP: Record<Exclude<TLEventName, TLPinchEventName>, keyof TLEventHandlers>;
@@ -4466,8 +4447,8 @@ export declare class GroupShapeUtil extends ShapeUtil<TLGroupShape> {
4466
4447
  canResizeChildren(): boolean;
4467
4448
  getDefaultProps(): TLGroupShape['props'];
4468
4449
  getGeometry(shape: TLGroupShape): Geometry2d;
4469
- component(shape: TLGroupShape): JSX_2.Element | null;
4470
- indicator(shape: TLGroupShape): JSX_2.Element;
4450
+ component(shape: TLGroupShape): JSX.Element | null;
4451
+ indicator(shape: TLGroupShape): JSX.Element;
4471
4452
  onChildrenChange(group: TLGroupShape): void;
4472
4453
  }
4473
4454
 
@@ -4571,7 +4552,7 @@ export declare class HistoryManager<R extends UnknownRecord> {
4571
4552
  }
4572
4553
 
4573
4554
  /** @public @react */
4574
- export declare function HTMLContainer({ children, className, ...rest }: HTMLContainerProps): JSX_2.Element;
4555
+ export declare function HTMLContainer({ children, className, ...rest }: HTMLContainerProps): JSX.Element;
4575
4556
 
4576
4557
  /** @public */
4577
4558
  export declare type HTMLContainerProps = React_2.HTMLAttributes<HTMLDivElement>;
@@ -4579,6 +4560,248 @@ export declare type HTMLContainerProps = React_2.HTMLAttributes<HTMLDivElement>;
4579
4560
  /** @public */
4580
4561
  export declare const inlineBase64AssetStore: TLAssetStore;
4581
4562
 
4563
+ /** @public */
4564
+ export declare class InputsManager {
4565
+ private readonly editor;
4566
+ constructor(editor: Editor);
4567
+ private _originPagePoint;
4568
+ /**
4569
+ * The most recent pointer down's position in the current page space.
4570
+ */
4571
+ getOriginPagePoint(): Vec;
4572
+ /**
4573
+ * @deprecated Use `getOriginPagePoint()` instead.
4574
+ */
4575
+ get originPagePoint(): Vec;
4576
+ private _originScreenPoint;
4577
+ /**
4578
+ * The most recent pointer down's position in screen space.
4579
+ */
4580
+ getOriginScreenPoint(): Vec;
4581
+ /**
4582
+ * @deprecated Use `getOriginScreenPoint()` instead.
4583
+ */
4584
+ get originScreenPoint(): Vec;
4585
+ private _previousPagePoint;
4586
+ /**
4587
+ * The previous pointer position in the current page space.
4588
+ */
4589
+ getPreviousPagePoint(): Vec;
4590
+ /**
4591
+ * @deprecated Use `getPreviousPagePoint()` instead.
4592
+ */
4593
+ get previousPagePoint(): Vec;
4594
+ private _previousScreenPoint;
4595
+ /**
4596
+ * The previous pointer position in screen space.
4597
+ */
4598
+ getPreviousScreenPoint(): Vec;
4599
+ /**
4600
+ * @deprecated Use `getPreviousScreenPoint()` instead.
4601
+ */
4602
+ get previousScreenPoint(): Vec;
4603
+ private _currentPagePoint;
4604
+ /**
4605
+ * The most recent pointer position in the current page space.
4606
+ */
4607
+ getCurrentPagePoint(): Vec;
4608
+ /**
4609
+ * @deprecated Use `getCurrentPagePoint()` instead.
4610
+ */
4611
+ get currentPagePoint(): Vec;
4612
+ private _currentScreenPoint;
4613
+ /**
4614
+ * The most recent pointer position in screen space.
4615
+ */
4616
+ getCurrentScreenPoint(): Vec;
4617
+ /**
4618
+ * @deprecated Use `getCurrentScreenPoint()` instead.
4619
+ */
4620
+ get currentScreenPoint(): Vec;
4621
+ private _pointerVelocity;
4622
+ /**
4623
+ * Velocity of mouse pointer, in pixels per millisecond.
4624
+ */
4625
+ getPointerVelocity(): Vec;
4626
+ /**
4627
+ * @deprecated Use `getPointerVelocity()` instead.
4628
+ */
4629
+ get pointerVelocity(): Vec;
4630
+ /* Excluded from this release type: setPointerVelocity */
4631
+ /**
4632
+ * A set containing the currently pressed keys.
4633
+ */
4634
+ readonly keys: AtomSet<string>;
4635
+ /**
4636
+ * A set containing the currently pressed buttons.
4637
+ */
4638
+ readonly buttons: AtomSet<number>;
4639
+ private _isPen;
4640
+ /**
4641
+ * Whether the input is from a pen.
4642
+ */
4643
+ getIsPen(): boolean;
4644
+ /**
4645
+ * @deprecated Use `getIsPen()` instead.
4646
+ */
4647
+ get isPen(): boolean;
4648
+ set isPen(isPen: boolean);
4649
+ /**
4650
+ * @param isPen - Whether the input is from a pen.
4651
+ */
4652
+ setIsPen(isPen: boolean): void;
4653
+ private _shiftKey;
4654
+ /**
4655
+ * Whether the shift key is currently pressed.
4656
+ */
4657
+ getShiftKey(): boolean;
4658
+ /**
4659
+ * @deprecated Use `getShiftKey()` instead.
4660
+ */
4661
+ get shiftKey(): boolean;
4662
+ set shiftKey(shiftKey: boolean);
4663
+ /* Excluded from this release type: setShiftKey */
4664
+ private _metaKey;
4665
+ /**
4666
+ * Whether the meta key is currently pressed.
4667
+ */
4668
+ getMetaKey(): boolean;
4669
+ /**
4670
+ * @deprecated Use `getMetaKey()` instead.
4671
+ */
4672
+ get metaKey(): boolean;
4673
+ set metaKey(metaKey: boolean);
4674
+ /* Excluded from this release type: setMetaKey */
4675
+ private _ctrlKey;
4676
+ /**
4677
+ * Whether the ctrl or command key is currently pressed.
4678
+ */
4679
+ getCtrlKey(): boolean;
4680
+ /**
4681
+ * @deprecated Use `getCtrlKey()` instead.
4682
+ */
4683
+ get ctrlKey(): boolean;
4684
+ set ctrlKey(ctrlKey: boolean);
4685
+ /* Excluded from this release type: setCtrlKey */
4686
+ private _altKey;
4687
+ /**
4688
+ * Whether the alt or option key is currently pressed.
4689
+ */
4690
+ getAltKey(): boolean;
4691
+ /**
4692
+ * @deprecated Use `getAltKey()` instead.
4693
+ */
4694
+ get altKey(): boolean;
4695
+ set altKey(altKey: boolean);
4696
+ /* Excluded from this release type: setAltKey */
4697
+ /**
4698
+ * Is the accelerator key (cmd on mac, ctrl elsewhere) currently pressed.
4699
+ */
4700
+ getAccelKey(): boolean;
4701
+ /**
4702
+ * @deprecated Use `getAccelKey()` instead.
4703
+ */
4704
+ get accelKey(): boolean;
4705
+ private _isDragging;
4706
+ /**
4707
+ * Whether the user is dragging.
4708
+ */
4709
+ getIsDragging(): boolean;
4710
+ /**
4711
+ * Soon to be deprecated, use `getIsDragging()` instead.
4712
+ */
4713
+ get isDragging(): boolean;
4714
+ set isDragging(isDragging: boolean);
4715
+ /**
4716
+ * @param isDragging - Whether the user is dragging.
4717
+ */
4718
+ setIsDragging(isDragging: boolean): void;
4719
+ private _isPointing;
4720
+ /**
4721
+ * Whether the user is pointing.
4722
+ */
4723
+ getIsPointing(): boolean;
4724
+ /**
4725
+ * @deprecated Use `getIsPointing()` instead.
4726
+ */
4727
+ get isPointing(): boolean;
4728
+ set isPointing(isPointing: boolean);
4729
+ /* Excluded from this release type: setIsPointing */
4730
+ private _isPinching;
4731
+ /**
4732
+ * Whether the user is pinching.
4733
+ */
4734
+ getIsPinching(): boolean;
4735
+ /**
4736
+ * @deprecated Use `getIsPinching()` instead.
4737
+ */
4738
+ get isPinching(): boolean;
4739
+ set isPinching(isPinching: boolean);
4740
+ /* Excluded from this release type: setIsPinching */
4741
+ private _isEditing;
4742
+ /**
4743
+ * Whether the user is editing.
4744
+ */
4745
+ getIsEditing(): boolean;
4746
+ /**
4747
+ * @deprecated Use `getIsEditing()` instead.
4748
+ */
4749
+ get isEditing(): boolean;
4750
+ set isEditing(isEditing: boolean);
4751
+ /**
4752
+ * @param isEditing - Whether the user is editing.
4753
+ */
4754
+ setIsEditing(isEditing: boolean): void;
4755
+ private _isPanning;
4756
+ /**
4757
+ * Whether the user is panning.
4758
+ */
4759
+ getIsPanning(): boolean;
4760
+ /**
4761
+ * @deprecated Use `getIsPanning()` instead.
4762
+ */
4763
+ get isPanning(): boolean;
4764
+ set isPanning(isPanning: boolean);
4765
+ /* Excluded from this release type: setIsPanning */
4766
+ private _isSpacebarPanning;
4767
+ /**
4768
+ * Whether the user is spacebar panning.
4769
+ */
4770
+ getIsSpacebarPanning(): boolean;
4771
+ /**
4772
+ * @deprecated Use `getIsSpacebarPanning()` instead.
4773
+ */
4774
+ get isSpacebarPanning(): boolean;
4775
+ set isSpacebarPanning(isSpacebarPanning: boolean);
4776
+ /* Excluded from this release type: setIsSpacebarPanning */
4777
+ private _getHasCollaborators;
4778
+ /* Excluded from this release type: _velocityPrevPoint */
4779
+ /* Excluded from this release type: updatePointerVelocity */
4780
+ /* Excluded from this release type: updateFromEvent */
4781
+ toJson(): {
4782
+ altKey: boolean;
4783
+ buttons: number[];
4784
+ ctrlKey: boolean;
4785
+ currentPagePoint: VecModel;
4786
+ currentScreenPoint: VecModel;
4787
+ isDragging: boolean;
4788
+ isEditing: boolean;
4789
+ isPanning: boolean;
4790
+ isPen: boolean;
4791
+ isPinching: boolean;
4792
+ isPointing: boolean;
4793
+ isSpacebarPanning: boolean;
4794
+ keys: string[];
4795
+ metaKey: boolean;
4796
+ originPagePoint: VecModel;
4797
+ originScreenPoint: VecModel;
4798
+ pointerVelocity: VecModel;
4799
+ previousPagePoint: VecModel;
4800
+ previousScreenPoint: VecModel;
4801
+ shiftKey: boolean;
4802
+ };
4803
+ }
4804
+
4582
4805
  /**
4583
4806
  * Find the intersections between a circle and a circle.
4584
4807
  *
@@ -4708,7 +4931,7 @@ export declare function kickoutOccludedShapes(editor: Editor, shapeIds: TLShapeI
4708
4931
  export declare function linesIntersect(A: VecLike, B: VecLike, C: VecLike, D: VecLike): boolean;
4709
4932
 
4710
4933
  /** @public @react */
4711
- export declare function LoadingScreen({ children }: LoadingScreenProps): JSX_2.Element;
4934
+ export declare function LoadingScreen({ children }: LoadingScreenProps): JSX.Element;
4712
4935
 
4713
4936
  /** @public */
4714
4937
  export declare interface LoadingScreenProps {
@@ -4826,7 +5049,7 @@ export declare function maybeSnapToGrid(point: Vec, editor: Editor): Vec;
4826
5049
  *
4827
5050
  * @public @react
4828
5051
  */
4829
- export declare function MenuClickCapture(): false | JSX_2.Element;
5052
+ export declare function MenuClickCapture(): false | JSX.Element;
4830
5053
 
4831
5054
  /* Excluded from this release type: normalizeWheel */
4832
5055
 
@@ -5259,20 +5482,20 @@ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5259
5482
  * @param shape - The shape.
5260
5483
  * @public
5261
5484
  */
5262
- canSnap(_shape: Shape): boolean;
5485
+ canSnap(shape: Shape): boolean;
5263
5486
  /**
5264
5487
  * Whether the shape can be tabbed to.
5265
5488
  *
5266
5489
  * @param shape - The shape.
5267
5490
  * @public
5268
5491
  */
5269
- canTabTo(_shape: Shape): boolean;
5492
+ canTabTo(shape: Shape): boolean;
5270
5493
  /**
5271
5494
  * Whether the shape can be scrolled while editing.
5272
5495
  *
5273
5496
  * @public
5274
5497
  */
5275
- canScroll(_shape: Shape): boolean;
5498
+ canScroll(shape: Shape): boolean;
5276
5499
  /**
5277
5500
  * Whether the shape can be bound to. See {@link TLShapeUtilCanBindOpts} for details.
5278
5501
  *
@@ -5284,31 +5507,37 @@ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5284
5507
  *
5285
5508
  * @public
5286
5509
  */
5287
- canEdit(_shape: Shape): boolean;
5510
+ canEdit(shape: Shape, info: TLEditStartInfo): boolean;
5288
5511
  /**
5289
5512
  * Whether the shape can be resized.
5290
5513
  *
5291
5514
  * @public
5292
5515
  */
5293
- canResize(_shape: Shape): boolean;
5516
+ canResize(shape: Shape): boolean;
5294
5517
  /**
5295
5518
  * When the shape is resized, whether the shape's children should also be resized.
5296
5519
  *
5297
5520
  * @public
5298
5521
  */
5299
- canResizeChildren(_shape: Shape): boolean;
5522
+ canResizeChildren(shape: Shape): boolean;
5300
5523
  /**
5301
5524
  * Whether the shape can be edited in read-only mode.
5302
5525
  *
5303
5526
  * @public
5304
5527
  */
5305
- canEditInReadonly(_shape: Shape): boolean;
5528
+ canEditInReadonly(shape: Shape): boolean;
5529
+ /**
5530
+ * Whether the shape can be edited while locked or while an ancestor is locked.
5531
+ *
5532
+ * @public
5533
+ */
5534
+ canEditWhileLocked(shape: Shape): boolean;
5306
5535
  /**
5307
5536
  * Whether the shape can be cropped.
5308
5537
  *
5309
5538
  * @public
5310
5539
  */
5311
- canCrop(_shape: Shape): boolean;
5540
+ canCrop(shape: Shape): boolean;
5312
5541
  /**
5313
5542
  * Whether the shape can participate in layout functions such as alignment or distribution.
5314
5543
  *
@@ -5318,7 +5547,7 @@ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5318
5547
  *
5319
5548
  * @public
5320
5549
  */
5321
- canBeLaidOut(_shape: Shape, _info: TLShapeUtilCanBeLaidOutOpts): boolean;
5550
+ canBeLaidOut(shape: Shape, info: TLShapeUtilCanBeLaidOutOpts): boolean;
5322
5551
  /**
5323
5552
  * Whether this shape can be culled. By default, shapes are culled for
5324
5553
  * performance reasons when they are outside of the viewport. Culled shapes are still rendered
@@ -5326,11 +5555,31 @@ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5326
5555
  *
5327
5556
  * @param shape - The shape.
5328
5557
  */
5329
- canCull(_shape: Shape): boolean;
5558
+ canCull(shape: Shape): boolean;
5330
5559
  /* Excluded from this release type: providesBackgroundForChildren */
5331
5560
  /**
5332
5561
  * Get the clip path to apply to this shape's children.
5333
5562
  *
5563
+ * The returned points should define the **inner** clip boundary - the area where
5564
+ * children will be visible. If your shape has a stroke, you should inset the clip
5565
+ * path by half the stroke width so children are clipped to the inner edge of the
5566
+ * stroke rather than its center line.
5567
+ *
5568
+ * @example
5569
+ * ```ts
5570
+ * override getClipPath(shape: MyShape): Vec[] | undefined {
5571
+ * const strokeWidth = 2
5572
+ * const inset = strokeWidth / 2
5573
+ * // Return points inset by half the stroke width
5574
+ * return [
5575
+ * new Vec(inset, inset),
5576
+ * new Vec(shape.props.w - inset, inset),
5577
+ * new Vec(shape.props.w - inset, shape.props.h - inset),
5578
+ * new Vec(inset, shape.props.h - inset),
5579
+ * ]
5580
+ * }
5581
+ * ```
5582
+ *
5334
5583
  * @param shape - The shape to get the clip path for
5335
5584
  * @returns Array of points defining the clipping polygon in local coordinates, or undefined if no clipping
5336
5585
  * @public
@@ -5355,37 +5604,37 @@ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5355
5604
  * @returns boolean indicating if this shape should hide in the minimap
5356
5605
  * @public
5357
5606
  */
5358
- hideInMinimap?(_shape: Shape): boolean;
5607
+ hideInMinimap?(shape: Shape): boolean;
5359
5608
  /**
5360
5609
  * Whether the shape should hide its resize handles when selected.
5361
5610
  *
5362
5611
  * @public
5363
5612
  */
5364
- hideResizeHandles(_shape: Shape): boolean;
5613
+ hideResizeHandles(shape: Shape): boolean;
5365
5614
  /**
5366
5615
  * Whether the shape should hide its rotation handles when selected.
5367
5616
  *
5368
5617
  * @public
5369
5618
  */
5370
- hideRotateHandle(_shape: Shape): boolean;
5619
+ hideRotateHandle(shape: Shape): boolean;
5371
5620
  /**
5372
5621
  * Whether the shape should hide its selection bounds background when selected.
5373
5622
  *
5374
5623
  * @public
5375
5624
  */
5376
- hideSelectionBoundsBg(_shape: Shape): boolean;
5625
+ hideSelectionBoundsBg(shape: Shape): boolean;
5377
5626
  /**
5378
5627
  * Whether the shape should hide its selection bounds foreground when selected.
5379
5628
  *
5380
5629
  * @public
5381
5630
  */
5382
- hideSelectionBoundsFg(_shape: Shape): boolean;
5631
+ hideSelectionBoundsFg(shape: Shape): boolean;
5383
5632
  /**
5384
5633
  * Whether the shape's aspect ratio is locked.
5385
5634
  *
5386
5635
  * @public
5387
5636
  */
5388
- isAspectRatioLocked(_shape: Shape): boolean;
5637
+ isAspectRatioLocked(shape: Shape): boolean;
5389
5638
  /**
5390
5639
  * By default, the bounds of an image export are the bounds of all the shapes it contains, plus
5391
5640
  * some padding. If an export includes a shape where `isExportBoundsContainer` is true, then the
@@ -5393,10 +5642,10 @@ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5393
5642
  * useful in cases like annotating on top of an image, where you usually want to avoid extra
5394
5643
  * padding around the image if you don't need it.
5395
5644
  *
5396
- * @param _shape - The shape to check
5645
+ * @param shape - The shape to check
5397
5646
  * @returns True if this shape should be treated as an export bounds container
5398
5647
  */
5399
- isExportBoundsContainer(_shape: Shape): boolean;
5648
+ isExportBoundsContainer(shape: Shape): boolean;
5400
5649
  /* Excluded from this release type: backgroundComponent */
5401
5650
  /**
5402
5651
  * Get the interpolated props for an animating shape. This is an optional method.
@@ -5433,7 +5682,7 @@ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5433
5682
  * @param type - The shape type.
5434
5683
  * @public
5435
5684
  */
5436
- canReceiveNewChildrenOfType(_shape: Shape, _type: TLShape['type']): boolean;
5685
+ canReceiveNewChildrenOfType(shape: Shape, _type: TLShape['type']): boolean;
5437
5686
  /**
5438
5687
  * Get the shape as an SVG object.
5439
5688
  *
@@ -5466,14 +5715,14 @@ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5466
5715
  * Get the geometry to use when snapping to this this shape in translate/resize operations. See
5467
5716
  * {@link BoundsSnapGeometry} for details.
5468
5717
  */
5469
- getBoundsSnapGeometry(_shape: Shape): BoundsSnapGeometry;
5718
+ getBoundsSnapGeometry(shape: Shape): BoundsSnapGeometry;
5470
5719
  /**
5471
5720
  * Get the geometry to use when snapping handles to this shape. See {@link HandleSnapGeometry}
5472
5721
  * for details.
5473
5722
  */
5474
- getHandleSnapGeometry(_shape: Shape): HandleSnapGeometry;
5475
- getText(_shape: Shape): string | undefined;
5476
- getAriaDescriptor(_shape: Shape): string | undefined;
5723
+ getHandleSnapGeometry(shape: Shape): HandleSnapGeometry;
5724
+ getText(shape: Shape): string | undefined;
5725
+ getAriaDescriptor(shape: Shape): string | undefined;
5477
5726
  /**
5478
5727
  * A callback called just before a shape is created. This method provides a last chance to modify
5479
5728
  * the created shape.
@@ -5831,6 +6080,8 @@ export declare class SnapManager {
5831
6080
  getCurrentCommonAncestor(): TLShapeId | undefined;
5832
6081
  }
5833
6082
 
6083
+ /* Excluded from this release type: SpatialIndexManager */
6084
+
5834
6085
  /** @public */
5835
6086
  export declare class Stadium2d extends Geometry2d {
5836
6087
  config: Omit<Geometry2dOptions, 'isClosed'> & {
@@ -5968,7 +6219,7 @@ export declare const stopEventPropagation: (e: any) => any;
5968
6219
  export declare function suffixSafeId(id: SafeId, suffix: string): SafeId;
5969
6220
 
5970
6221
  /** @public @react */
5971
- export declare function SVGContainer({ children, className, ...rest }: SVGContainerProps): JSX_2.Element;
6222
+ export declare function SVGContainer({ children, className, ...rest }: SVGContainerProps): JSX.Element;
5972
6223
 
5973
6224
  /** @public */
5974
6225
  export declare type SVGContainerProps = React_2.ComponentProps<'svg'>;
@@ -6066,6 +6317,8 @@ export declare class TextManager {
6066
6317
  }[];
6067
6318
  }
6068
6319
 
6320
+ /* Excluded from this release type: TickManager */
6321
+
6069
6322
  /**
6070
6323
  * This is the TipTap editor! Docs are {@link https://tiptap.dev/docs}.
6071
6324
  *
@@ -6628,6 +6881,22 @@ export declare interface TldrawOptions {
6628
6881
  * Defaults to 300 shapes.
6629
6882
  */
6630
6883
  readonly debouncedZoomThreshold: number;
6884
+ /**
6885
+ * Whether to allow spacebar panning. When true, the spacebar will pan the camera when held down.
6886
+ * When false, the spacebar will not pan the camera.
6887
+ */
6888
+ readonly spacebarPanning: boolean;
6889
+ /**
6890
+ * The default padding (in pixels) used when zooming to fit content in the viewport.
6891
+ * This affects methods like `zoomToFit()`, `zoomToSelection()`, and `zoomToBounds()`.
6892
+ * The actual padding used is the minimum of this value and 28% of the viewport width.
6893
+ * Defaults to 128 pixels.
6894
+ */
6895
+ readonly zoomToFitPadding: number;
6896
+ /**
6897
+ * The distance (in screen pixels) at which shapes snap to guides and other shapes.
6898
+ */
6899
+ readonly snapThreshold: number;
6631
6900
  }
6632
6901
 
6633
6902
  /** @public */
@@ -6673,7 +6942,7 @@ export declare interface TLEditorComponents {
6673
6942
  /** @public */
6674
6943
  export declare interface TLEditorOptions {
6675
6944
  /**
6676
- * The Store instance to use for keeping the app's data. This may be prepopulated, e.g. by loading
6945
+ * The Store instance to use for keeping the editor's data. This may be prepopulated, e.g. by loading
6677
6946
  * from a server or database.
6678
6947
  */
6679
6948
  store: TLStore;
@@ -6752,6 +7021,11 @@ export declare interface TLEditorSnapshot {
6752
7021
  session: TLSessionStateSnapshot;
6753
7022
  }
6754
7023
 
7024
+ /** @public */
7025
+ export declare interface TLEditStartInfo {
7026
+ type: 'click-header' | 'click' | 'double-click-corner' | 'double-click-edge' | 'double-click' | 'press_enter' | 'unknown';
7027
+ }
7028
+
6755
7029
  /** @public */
6756
7030
  export declare interface TLEmbedExternalContent<EmbedDefinition> extends TLBaseExternalContent {
6757
7031
  type: 'embed';
@@ -7967,10 +8241,10 @@ export declare function useMaybeEditor(): Editor | null;
7967
8241
  /* Excluded from this release type: useOnMount */
7968
8242
 
7969
8243
  /** @public */
7970
- export declare function usePassThroughMouseOverEvents(ref: RefObject<HTMLElement>): void;
8244
+ export declare function usePassThroughMouseOverEvents(ref: RefObject<HTMLElement | null>): void;
7971
8245
 
7972
8246
  /** @public */
7973
- export declare function usePassThroughWheelEvents(ref: RefObject<HTMLElement>): void;
8247
+ export declare function usePassThroughWheelEvents(ref: RefObject<HTMLElement | null>): void;
7974
8248
 
7975
8249
  /**
7976
8250
  * @returns The list of peer UserIDs
@@ -8078,7 +8352,7 @@ export declare function useTLSchemaFromUtils(opts: TLStoreSchemaOptions): StoreS
8078
8352
  export declare function useTLStore(opts: TLStoreOptions): TLStore;
8079
8353
 
8080
8354
  /** @public */
8081
- export declare function useTransform(ref: React.RefObject<HTMLElement | SVGElement>, x?: number, y?: number, scale?: number, rotate?: number, additionalOffset?: VecLike): void;
8355
+ export declare function useTransform(ref: React.RefObject<HTMLElement | null | SVGElement>, x?: number, y?: number, scale?: number, rotate?: number, additionalOffset?: VecLike): void;
8082
8356
 
8083
8357
  /**
8084
8358
  * React's useId hook returns a unique id for the component. However, it uses a colon in the id,