@tldraw/editor 4.3.0-next.f4772c19540d → 4.4.0-canary.29afdff6bb04

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 (206) hide show
  1. package/README.md +1 -1
  2. package/dist-cjs/index.d.ts +503 -155
  3. package/dist-cjs/index.js +8 -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 +4 -5
  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 +346 -291
  13. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  14. package/dist-cjs/lib/editor/bindings/BindingUtil.js.map +2 -2
  15. package/dist-cjs/lib/editor/derivations/bindingsIndex.js.map +2 -2
  16. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js +16 -23
  17. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js.map +3 -3
  18. package/dist-cjs/lib/editor/derivations/parentsToChildren.js +12 -3
  19. package/dist-cjs/lib/editor/derivations/parentsToChildren.js.map +2 -2
  20. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +1 -1
  21. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
  22. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js +5 -6
  23. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +2 -2
  24. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js +591 -0
  25. package/dist-cjs/lib/editor/managers/InputsManager/InputsManager.js.map +7 -0
  26. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js +1 -1
  27. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js.map +2 -2
  28. package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js +144 -0
  29. package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js.map +7 -0
  30. package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js +181 -0
  31. package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js.map +7 -0
  32. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js +1 -22
  33. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js.map +2 -2
  34. package/dist-cjs/lib/editor/shapes/BaseBoxShapeUtil.js.map +1 -1
  35. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +31 -23
  36. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  37. package/dist-cjs/lib/editor/shapes/group/DashedOutlineBox.js +1 -1
  38. package/dist-cjs/lib/editor/shapes/group/DashedOutlineBox.js.map +2 -2
  39. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +2 -2
  40. package/dist-cjs/lib/editor/tools/BaseBoxShapeTool/BaseBoxShapeTool.js.map +2 -2
  41. package/dist-cjs/lib/editor/tools/BaseBoxShapeTool/children/Pointing.js +3 -3
  42. package/dist-cjs/lib/editor/tools/BaseBoxShapeTool/children/Pointing.js.map +2 -2
  43. package/dist-cjs/lib/editor/types/emit-types.js.map +1 -1
  44. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  45. package/dist-cjs/lib/exports/parseCss.js +1 -1
  46. package/dist-cjs/lib/exports/parseCss.js.map +2 -2
  47. package/dist-cjs/lib/globals/environment.js +45 -9
  48. package/dist-cjs/lib/globals/environment.js.map +2 -2
  49. package/dist-cjs/lib/globals/menus.js +1 -1
  50. package/dist-cjs/lib/globals/menus.js.map +2 -2
  51. package/dist-cjs/lib/hooks/useCoarsePointer.js +14 -29
  52. package/dist-cjs/lib/hooks/useCoarsePointer.js.map +2 -2
  53. package/dist-cjs/lib/hooks/useEvent.js +1 -1
  54. package/dist-cjs/lib/hooks/useEvent.js.map +2 -2
  55. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js.map +2 -2
  56. package/dist-cjs/lib/hooks/useGestureEvents.js +1 -1
  57. package/dist-cjs/lib/hooks/useGestureEvents.js.map +2 -2
  58. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js.map +2 -2
  59. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  60. package/dist-cjs/lib/hooks/useScreenBounds.js.map +2 -2
  61. package/dist-cjs/lib/hooks/useStateAttribute.js +4 -1
  62. package/dist-cjs/lib/hooks/useStateAttribute.js.map +2 -2
  63. package/dist-cjs/lib/hooks/useTransform.js.map +1 -1
  64. package/dist-cjs/lib/hooks/useZoomCss.js +4 -8
  65. package/dist-cjs/lib/hooks/useZoomCss.js.map +2 -2
  66. package/dist-cjs/lib/options.js +6 -1
  67. package/dist-cjs/lib/options.js.map +2 -2
  68. package/dist-cjs/lib/primitives/Box.js +3 -0
  69. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  70. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +1 -0
  71. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
  72. package/dist-cjs/lib/utils/reparenting.js.map +2 -2
  73. package/dist-cjs/lib/utils/rotation.js +1 -1
  74. package/dist-cjs/lib/utils/rotation.js.map +2 -2
  75. package/dist-cjs/version.js +3 -3
  76. package/dist-cjs/version.js.map +1 -1
  77. package/dist-esm/index.d.mts +503 -155
  78. package/dist-esm/index.mjs +9 -2
  79. package/dist-esm/index.mjs.map +2 -2
  80. package/dist-esm/lib/components/ErrorBoundary.mjs.map +1 -1
  81. package/dist-esm/lib/components/GeometryDebuggingView.mjs +1 -17
  82. package/dist-esm/lib/components/GeometryDebuggingView.mjs.map +2 -2
  83. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +4 -5
  84. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  85. package/dist-esm/lib/constants.mjs +1 -3
  86. package/dist-esm/lib/constants.mjs.map +2 -2
  87. package/dist-esm/lib/editor/Editor.mjs +347 -294
  88. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  89. package/dist-esm/lib/editor/bindings/BindingUtil.mjs.map +2 -2
  90. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs.map +2 -2
  91. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs +16 -23
  92. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs.map +3 -3
  93. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs +13 -4
  94. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs.map +2 -2
  95. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +1 -1
  96. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
  97. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs +5 -6
  98. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +2 -2
  99. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs +573 -0
  100. package/dist-esm/lib/editor/managers/InputsManager/InputsManager.mjs.map +7 -0
  101. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs +1 -1
  102. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs.map +2 -2
  103. package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs +114 -0
  104. package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs.map +7 -0
  105. package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs +161 -0
  106. package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs.map +7 -0
  107. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs +1 -22
  108. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +2 -2
  109. package/dist-esm/lib/editor/shapes/BaseBoxShapeUtil.mjs.map +1 -1
  110. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +31 -23
  111. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  112. package/dist-esm/lib/editor/shapes/group/DashedOutlineBox.mjs +1 -1
  113. package/dist-esm/lib/editor/shapes/group/DashedOutlineBox.mjs.map +2 -2
  114. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +2 -2
  115. package/dist-esm/lib/editor/tools/BaseBoxShapeTool/BaseBoxShapeTool.mjs.map +2 -2
  116. package/dist-esm/lib/editor/tools/BaseBoxShapeTool/children/Pointing.mjs +3 -3
  117. package/dist-esm/lib/editor/tools/BaseBoxShapeTool/children/Pointing.mjs.map +2 -2
  118. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  119. package/dist-esm/lib/exports/parseCss.mjs +1 -1
  120. package/dist-esm/lib/exports/parseCss.mjs.map +2 -2
  121. package/dist-esm/lib/globals/environment.mjs +45 -9
  122. package/dist-esm/lib/globals/environment.mjs.map +2 -2
  123. package/dist-esm/lib/globals/menus.mjs +1 -1
  124. package/dist-esm/lib/globals/menus.mjs.map +2 -2
  125. package/dist-esm/lib/hooks/useCoarsePointer.mjs +15 -30
  126. package/dist-esm/lib/hooks/useCoarsePointer.mjs.map +2 -2
  127. package/dist-esm/lib/hooks/useEvent.mjs +1 -1
  128. package/dist-esm/lib/hooks/useEvent.mjs.map +2 -2
  129. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  130. package/dist-esm/lib/hooks/useGestureEvents.mjs +1 -1
  131. package/dist-esm/lib/hooks/useGestureEvents.mjs.map +2 -2
  132. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +2 -2
  133. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  134. package/dist-esm/lib/hooks/useScreenBounds.mjs.map +2 -2
  135. package/dist-esm/lib/hooks/useStateAttribute.mjs +4 -1
  136. package/dist-esm/lib/hooks/useStateAttribute.mjs.map +2 -2
  137. package/dist-esm/lib/hooks/useTransform.mjs.map +1 -1
  138. package/dist-esm/lib/hooks/useZoomCss.mjs +4 -8
  139. package/dist-esm/lib/hooks/useZoomCss.mjs.map +2 -2
  140. package/dist-esm/lib/options.mjs +6 -1
  141. package/dist-esm/lib/options.mjs.map +2 -2
  142. package/dist-esm/lib/primitives/Box.mjs +3 -0
  143. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  144. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +1 -0
  145. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
  146. package/dist-esm/lib/utils/reparenting.mjs.map +2 -2
  147. package/dist-esm/lib/utils/rotation.mjs +1 -1
  148. package/dist-esm/lib/utils/rotation.mjs.map +2 -2
  149. package/dist-esm/version.mjs +3 -3
  150. package/dist-esm/version.mjs.map +1 -1
  151. package/editor.css +14 -12
  152. package/package.json +21 -17
  153. package/src/index.ts +5 -1
  154. package/src/lib/components/ErrorBoundary.tsx +1 -1
  155. package/src/lib/components/GeometryDebuggingView.tsx +1 -19
  156. package/src/lib/components/default-components/DefaultCanvas.tsx +5 -8
  157. package/src/lib/config/TLUserPreferences.test.ts +40 -0
  158. package/src/lib/constants.ts +0 -2
  159. package/src/lib/editor/Editor.test.ts +150 -10
  160. package/src/lib/editor/Editor.ts +533 -384
  161. package/src/lib/editor/bindings/BindingUtil.ts +15 -9
  162. package/src/lib/editor/derivations/bindingsIndex.ts +2 -2
  163. package/src/lib/editor/derivations/notVisibleShapes.ts +21 -33
  164. package/src/lib/editor/derivations/parentsToChildren.ts +18 -7
  165. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +17 -31
  166. package/src/lib/editor/managers/ClickManager/ClickManager.ts +1 -1
  167. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +129 -79
  168. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.ts +10 -6
  169. package/src/lib/editor/managers/FontManager/FontManager.test.ts +14 -4
  170. package/src/lib/editor/managers/InputsManager/InputsManager.ts +566 -0
  171. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +0 -4
  172. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +12 -0
  173. package/src/lib/editor/managers/SnapManager/SnapManager.ts +4 -4
  174. package/src/lib/editor/managers/SpatialIndexManager/RBushIndex.ts +144 -0
  175. package/src/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.ts +215 -0
  176. package/src/lib/editor/managers/TickManager/TickManager.test.ts +40 -107
  177. package/src/lib/editor/managers/TickManager/TickManager.ts +2 -32
  178. package/src/lib/editor/shapes/BaseBoxShapeUtil.tsx +2 -2
  179. package/src/lib/editor/shapes/ShapeUtil.ts +72 -32
  180. package/src/lib/editor/shapes/group/DashedOutlineBox.tsx +1 -1
  181. package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +1 -3
  182. package/src/lib/editor/tools/BaseBoxShapeTool/BaseBoxShapeTool.ts +2 -1
  183. package/src/lib/editor/tools/BaseBoxShapeTool/children/Pointing.ts +6 -6
  184. package/src/lib/editor/types/emit-types.ts +3 -1
  185. package/src/lib/exports/getSvgJsx.test.ts +10 -19
  186. package/src/lib/exports/getSvgJsx.tsx +2 -5
  187. package/src/lib/exports/parseCss.test.ts +1 -0
  188. package/src/lib/exports/parseCss.ts +1 -1
  189. package/src/lib/globals/environment.ts +65 -10
  190. package/src/lib/globals/menus.ts +1 -1
  191. package/src/lib/hooks/useCoarsePointer.ts +16 -59
  192. package/src/lib/hooks/useEvent.tsx +1 -1
  193. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +1 -1
  194. package/src/lib/hooks/useGestureEvents.ts +2 -2
  195. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +1 -1
  196. package/src/lib/hooks/usePassThroughWheelEvents.ts +1 -1
  197. package/src/lib/hooks/useScreenBounds.ts +1 -1
  198. package/src/lib/hooks/useStateAttribute.ts +4 -1
  199. package/src/lib/hooks/useTransform.ts +1 -1
  200. package/src/lib/hooks/useZoomCss.ts +3 -8
  201. package/src/lib/options.ts +32 -0
  202. package/src/lib/primitives/Box.ts +9 -0
  203. package/src/lib/primitives/geometry/Geometry2d.ts +1 -0
  204. package/src/lib/utils/reparenting.ts +5 -5
  205. package/src/lib/utils/rotation.ts +1 -1
  206. 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';
@@ -7,11 +8,13 @@ import { Editor as Editor_2 } from '@tiptap/core';
7
8
  import { EditorProviderProps as EditorProviderProps_2 } from '@tiptap/react';
8
9
  import EventEmitter from 'eventemitter3';
9
10
  import { ExoticComponent } from 'react';
11
+ import { ExtractShapeByProps } from '@tldraw/tlschema';
10
12
  import { ForwardRefExoticComponent } from 'react';
13
+ import { FragmentProps } from 'react';
11
14
  import { HistoryEntry } from '@tldraw/store';
12
15
  import { IndexKey } from '@tldraw/utils';
13
16
  import { JsonObject } from '@tldraw/utils';
14
- import { JSX as JSX_2 } from 'react/jsx-runtime';
17
+ import { JSX } from 'react/jsx-runtime';
15
18
  import { LegacyMigrations } from '@tldraw/store';
16
19
  import { MigrationSequence } from '@tldraw/store';
17
20
  import { NamedExoticComponent } from 'react';
@@ -48,6 +51,7 @@ import { TLBindingId } from '@tldraw/tlschema';
48
51
  import { TLBindingUpdate } from '@tldraw/tlschema';
49
52
  import { TLBookmarkAsset } from '@tldraw/tlschema';
50
53
  import { TLCamera } from '@tldraw/tlschema';
54
+ import { TLCreateShapePartial } from '@tldraw/tlschema';
51
55
  import { TLCursor } from '@tldraw/tlschema';
52
56
  import { TLCursorType } from '@tldraw/tlschema';
53
57
  import { TLDefaultDashStyle } from '@tldraw/tlschema';
@@ -147,7 +151,7 @@ export declare abstract class BaseBoxShapeTool extends StateNode {
147
151
  static id: string;
148
152
  static initial: string;
149
153
  static children(): TLStateNodeConstructor[];
150
- abstract shapeType: string;
154
+ abstract shapeType: TLBaseBoxShape['type'];
151
155
  onCreate?(_shape: null | TLShape): null | void;
152
156
  }
153
157
 
@@ -165,7 +169,7 @@ export declare abstract class BaseBoxShapeUtil<Shape extends TLBaseBoxShape> ext
165
169
  *
166
170
  * @public
167
171
  */
168
- export declare interface BindingOnChangeOptions<Binding extends TLUnknownBinding> {
172
+ export declare interface BindingOnChangeOptions<Binding extends TLBinding = TLBinding> {
169
173
  /** The binding record before the change is made. */
170
174
  bindingBefore: Binding;
171
175
  /** The binding record after the change is made. */
@@ -178,7 +182,7 @@ export declare interface BindingOnChangeOptions<Binding extends TLUnknownBinding
178
182
  *
179
183
  * @public
180
184
  */
181
- export declare interface BindingOnCreateOptions<Binding extends TLUnknownBinding> {
185
+ export declare interface BindingOnCreateOptions<Binding extends TLBinding = TLBinding> {
182
186
  /** The binding being created. */
183
187
  binding: Binding;
184
188
  }
@@ -189,7 +193,7 @@ export declare interface BindingOnCreateOptions<Binding extends TLUnknownBinding
189
193
  *
190
194
  * @public
191
195
  */
192
- export declare interface BindingOnDeleteOptions<Binding extends TLUnknownBinding> {
196
+ export declare interface BindingOnDeleteOptions<Binding extends TLBinding = TLBinding> {
193
197
  /** The binding being deleted. */
194
198
  binding: Binding;
195
199
  }
@@ -200,7 +204,7 @@ export declare interface BindingOnDeleteOptions<Binding extends TLUnknownBinding
200
204
  *
201
205
  * @public
202
206
  */
203
- export declare interface BindingOnShapeChangeOptions<Binding extends TLUnknownBinding> {
207
+ export declare interface BindingOnShapeChangeOptions<Binding extends TLBinding = TLBinding> {
204
208
  /** The binding record linking these two shapes. */
205
209
  binding: Binding;
206
210
  /** The shape record before the change is made. */
@@ -224,7 +228,7 @@ export declare interface BindingOnShapeChangeOptions<Binding extends TLUnknownBi
224
228
  *
225
229
  * @public
226
230
  */
227
- export declare interface BindingOnShapeDeleteOptions<Binding extends TLUnknownBinding> {
231
+ export declare interface BindingOnShapeDeleteOptions<Binding extends TLBinding = TLBinding> {
228
232
  /** The binding record that refers to the shape in question. */
229
233
  binding: Binding;
230
234
  /** The shape that is about to be deleted. */
@@ -256,7 +260,7 @@ export declare interface BindingOnShapeDeleteOptions<Binding extends TLUnknownBi
256
260
  *
257
261
  * @public
258
262
  */
259
- export declare interface BindingOnShapeIsolateOptions<Binding extends TLUnknownBinding> {
263
+ export declare interface BindingOnShapeIsolateOptions<Binding extends TLBinding = TLBinding> {
260
264
  /** The binding record that refers to the shape in question. */
261
265
  binding: Binding;
262
266
  /**
@@ -267,7 +271,7 @@ export declare interface BindingOnShapeIsolateOptions<Binding extends TLUnknownB
267
271
  }
268
272
 
269
273
  /** @public */
270
- export declare abstract class BindingUtil<Binding extends TLUnknownBinding = TLUnknownBinding> {
274
+ export declare abstract class BindingUtil<Binding extends TLBinding = TLBinding> {
271
275
  editor: Editor;
272
276
  constructor(editor: Editor);
273
277
  static props?: RecordProps<TLUnknownBinding>;
@@ -486,6 +490,7 @@ export declare class Box {
486
490
  get cornersAndCenter(): Vec[];
487
491
  get sides(): Array<[Vec, Vec]>;
488
492
  get size(): Vec;
493
+ isValid(): boolean;
489
494
  toFixed(): this;
490
495
  setTo(B: Box): this;
491
496
  set(x?: number, y?: number, w?: number, h?: number): this;
@@ -653,7 +658,7 @@ export declare function clockwiseAngleDist(a0: number, a1: number): number;
653
658
  * @public
654
659
  * @react
655
660
  */
656
- export declare function ContainerProvider({ container, children }: ContainerProviderProps): JSX_2.Element;
661
+ export declare function ContainerProvider({ container, children }: ContainerProviderProps): JSX.Element;
657
662
 
658
663
  /** @public */
659
664
  export declare interface ContainerProviderProps {
@@ -794,16 +799,16 @@ export declare interface DebugFlagDefaults<T> {
794
799
  /* Excluded from this release type: DEFAULT_CAMERA_OPTIONS */
795
800
 
796
801
  /** @public @react */
797
- export declare function DefaultBackground(): JSX_2.Element;
802
+ export declare function DefaultBackground(): JSX.Element;
798
803
 
799
804
  /** @public @react */
800
- export declare const DefaultBrush: ({ brush, color, opacity, className }: TLBrushProps) => JSX_2.Element;
805
+ export declare const DefaultBrush: ({ brush, color, opacity, className }: TLBrushProps) => JSX.Element;
801
806
 
802
807
  /** @public @react */
803
- export declare function DefaultCanvas({ className }: TLCanvasComponentProps): JSX_2.Element;
808
+ export declare function DefaultCanvas({ className }: TLCanvasComponentProps): JSX.Element;
804
809
 
805
810
  /** @public @react */
806
- 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;
807
812
 
808
813
  /** @public @react */
809
814
  export declare const DefaultCursor: NamedExoticComponent<TLCursorProps>;
@@ -812,22 +817,22 @@ export declare const DefaultCursor: NamedExoticComponent<TLCursorProps>;
812
817
  export declare const DefaultErrorFallback: TLErrorFallbackComponent;
813
818
 
814
819
  /** @public @react */
815
- export declare function DefaultGrid({ x, y, z, size }: TLGridProps): JSX_2.Element;
820
+ export declare function DefaultGrid({ x, y, z, size }: TLGridProps): JSX.Element;
816
821
 
817
822
  /** @public @react */
818
- export declare function DefaultHandle({ handle, isCoarse, className, zoom }: TLHandleProps): JSX_2.Element;
823
+ export declare function DefaultHandle({ handle, isCoarse, className, zoom }: TLHandleProps): JSX.Element;
819
824
 
820
825
  /** @public @react */
821
- export declare const DefaultHandles: ({ children }: TLHandlesProps) => JSX_2.Element;
826
+ export declare const DefaultHandles: ({ children }: TLHandlesProps) => JSX.Element;
822
827
 
823
828
  /** @public @react */
824
- 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;
825
830
 
826
831
  /** @public @react */
827
- export declare function DefaultSelectionBackground({ bounds, rotation }: TLSelectionBackgroundProps): JSX_2.Element;
832
+ export declare function DefaultSelectionBackground({ bounds, rotation }: TLSelectionBackgroundProps): JSX.Element;
828
833
 
829
834
  /** @public @react */
830
- export declare function DefaultSelectionForeground({ bounds, rotation }: TLSelectionForegroundProps): JSX_2.Element;
835
+ export declare function DefaultSelectionForeground({ bounds, rotation }: TLSelectionForegroundProps): JSX.Element;
831
836
 
832
837
  /** @public @react */
833
838
  export declare const DefaultShapeIndicator: NamedExoticComponent<TLShapeIndicatorProps>;
@@ -839,10 +844,10 @@ export declare const DefaultShapeIndicators: NamedExoticComponent<TLShapeIndicat
839
844
  export declare const DefaultShapeWrapper: ForwardRefExoticComponent<TLShapeWrapperProps & RefAttributes<HTMLDivElement>>;
840
845
 
841
846
  /** @public @react */
842
- export declare function DefaultSnapIndicator({ className, line, zoom }: TLSnapIndicatorProps): JSX_2.Element;
847
+ export declare function DefaultSnapIndicator({ className, line, zoom }: TLSnapIndicatorProps): JSX.Element;
843
848
 
844
849
  /** @public @react */
845
- export declare function DefaultSpinner(props: React.SVGProps<SVGSVGElement>): JSX_2.Element;
850
+ export declare function DefaultSpinner(props: React.SVGProps<SVGSVGElement>): JSX.Element;
846
851
 
847
852
  /** @public @react */
848
853
  export declare const DefaultSvgDefs: () => null;
@@ -861,6 +866,8 @@ export declare const defaultTldrawOptions: {
861
866
  readonly collaboratorIdleTimeoutMs: 3000;
862
867
  readonly collaboratorInactiveTimeoutMs: 60000;
863
868
  readonly createTextOnCanvasDoubleClick: true;
869
+ readonly debouncedZoom: true;
870
+ readonly debouncedZoomThreshold: 500;
864
871
  readonly defaultSvgPadding: 32;
865
872
  readonly doubleClickDurationMs: 450;
866
873
  readonly dragDistanceSquared: 16;
@@ -869,9 +876,7 @@ export declare const defaultTldrawOptions: {
869
876
  readonly edgeScrollEaseDuration: 200;
870
877
  readonly edgeScrollSpeed: 25;
871
878
  readonly enableToolbarKeyboardShortcuts: true;
872
- readonly exportProvider: ExoticComponent< {
873
- children?: ReactNode | undefined;
874
- }>;
879
+ readonly exportProvider: ExoticComponent<FragmentProps>;
875
880
  readonly flattenImageBoundsExpand: 64;
876
881
  readonly flattenImageBoundsPadding: 16;
877
882
  readonly followChaseViewportSnap: 2;
@@ -903,11 +908,14 @@ export declare const defaultTldrawOptions: {
903
908
  readonly maxShapesPerPage: 4000;
904
909
  readonly multiClickDurationMs: 200;
905
910
  readonly nonce: undefined;
911
+ readonly snapThreshold: 8;
912
+ readonly spacebarPanning: true;
906
913
  readonly temporaryAssetPreviewLifetimeMs: 180000;
907
914
  readonly textShadowLod: 0.35;
908
915
  readonly tooltipDelayMs: 700;
909
916
  readonly uiCoarseDragDistanceSquared: 625;
910
917
  readonly uiDragDistanceSquared: 16;
918
+ readonly zoomToFitPadding: 128;
911
919
  };
912
920
 
913
921
  /** @public */
@@ -981,6 +989,7 @@ export declare class EdgeScrollManager {
981
989
  constructor(editor: Editor);
982
990
  private _isEdgeScrolling;
983
991
  private _edgeScrollDuration;
992
+ getIsEdgeScrolling(): boolean;
984
993
  /**
985
994
  * Update the camera position when the mouse is close to the edge of the screen.
986
995
  * Run this on every tick when in a state where edge scrolling is enabled.
@@ -1039,7 +1048,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1039
1048
  */
1040
1049
  removeTool(Tool: TLStateNodeConstructor, parent?: StateNode): void;
1041
1050
  /**
1042
- * A set of functions to call when the app is disposed.
1051
+ * A set of functions to call when the editor is disposed.
1043
1052
  *
1044
1053
  * @public
1045
1054
  */
@@ -1052,11 +1061,18 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1052
1061
  isDisposed: boolean;
1053
1062
  /* Excluded from this release type: _tickManager */
1054
1063
  /**
1055
- * 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.
1056
1071
  *
1057
1072
  * @public
1058
1073
  */
1059
1074
  readonly snaps: SnapManager;
1075
+ private readonly _spatialIndex;
1060
1076
  /**
1061
1077
  * A manager for the any asynchronous events and making sure they're
1062
1078
  * cleaned up upon disposal.
@@ -1129,7 +1145,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1129
1145
  * @public
1130
1146
  */
1131
1147
  shapeUtils: {
1132
- readonly [K in string]?: ShapeUtil<TLUnknownShape>;
1148
+ readonly [K in string]?: ShapeUtil<TLShape>;
1133
1149
  };
1134
1150
  styleProps: {
1135
1151
  [key: string]: Map<StyleProp<any>, string>;
@@ -1149,16 +1165,18 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1149
1165
  *
1150
1166
  * @public
1151
1167
  */
1152
- getShapeUtil<S extends TLUnknownShape>(shape: S | TLShapePartial<S>): ShapeUtil<S>;
1153
- getShapeUtil<S extends TLUnknownShape>(type: S['type']): ShapeUtil<S>;
1168
+ getShapeUtil<K extends TLShape['type']>(type: K): ShapeUtil<Extract<TLShape, {
1169
+ type: K;
1170
+ }>>;
1171
+ getShapeUtil<S extends TLShape>(shape: S | S['type'] | TLShapePartial<S>): ShapeUtil<S>;
1154
1172
  getShapeUtil<T extends ShapeUtil>(type: T extends ShapeUtil<infer R> ? R['type'] : string): T;
1155
1173
  /**
1156
1174
  * Returns true if the editor has a shape util for the given shape / shape type.
1157
1175
  *
1158
1176
  * @param shape - A shape, shape partial, or shape type.
1159
1177
  */
1160
- hasShapeUtil<S extends TLUnknownShape>(shape: S | TLShapePartial<S>): boolean;
1161
- hasShapeUtil<S extends TLUnknownShape>(type: S['type']): boolean;
1178
+ hasShapeUtil(shape: TLShape | TLShapePartial<TLShape>): boolean;
1179
+ hasShapeUtil(type: TLShape['type']): boolean;
1162
1180
  hasShapeUtil<T extends ShapeUtil>(type: T extends ShapeUtil<infer R> ? R['type'] : string): boolean;
1163
1181
  /**
1164
1182
  * A map of shape utility classes (TLShapeUtils) by shape type.
@@ -1166,7 +1184,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1166
1184
  * @public
1167
1185
  */
1168
1186
  bindingUtils: {
1169
- readonly [K in string]?: BindingUtil<TLUnknownBinding>;
1187
+ readonly [K in string]?: BindingUtil<TLBinding>;
1170
1188
  };
1171
1189
  /**
1172
1190
  * Get a binding util from a binding itself.
@@ -1183,13 +1201,15 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1183
1201
  *
1184
1202
  * @public
1185
1203
  */
1186
- getBindingUtil<S extends TLUnknownBinding>(binding: {
1204
+ getBindingUtil<K extends TLBinding['type']>(type: K): BindingUtil<Extract<TLBinding, {
1205
+ type: K;
1206
+ }>>;
1207
+ getBindingUtil<S extends TLBinding>(binding: {
1187
1208
  type: S['type'];
1188
1209
  } | S): BindingUtil<S>;
1189
- getBindingUtil<S extends TLUnknownBinding>(type: S['type']): BindingUtil<S>;
1190
1210
  getBindingUtil<T extends BindingUtil>(type: T extends BindingUtil<infer R> ? R['type'] : string): T;
1191
1211
  /**
1192
- * A manager for the app's history.
1212
+ * A manager for the editor's history.
1193
1213
  *
1194
1214
  * @readonly
1195
1215
  */
@@ -1206,10 +1226,11 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1206
1226
  */
1207
1227
  undo(): this;
1208
1228
  /**
1209
- * Whether the app can undo.
1229
+ * Whether the editor can undo.
1210
1230
  *
1211
1231
  * @public
1212
1232
  */
1233
+ canUndo(): boolean;
1213
1234
  getCanUndo(): boolean;
1214
1235
  /**
1215
1236
  * Redo to the next mark.
@@ -1222,13 +1243,14 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1222
1243
  * @public
1223
1244
  */
1224
1245
  redo(): this;
1225
- clearHistory(): this;
1226
1246
  /**
1227
- * Whether the app can redo.
1247
+ * Whether the editor can redo.
1228
1248
  *
1229
1249
  * @public
1230
1250
  */
1251
+ canRedo(): boolean;
1231
1252
  getCanRedo(): boolean;
1253
+ clearHistory(): this;
1232
1254
  /**
1233
1255
  * Create a new "mark", or stopping point, in the undo redo history. Creating a mark will clear
1234
1256
  * any redos. You typically want to do this just before a user interaction begins or is handled.
@@ -1587,7 +1609,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1587
1609
  */
1588
1610
  selectNone(): this;
1589
1611
  /**
1590
- * The id of the app's only selected shape.
1612
+ * The id of the editor's only selected shape.
1591
1613
  *
1592
1614
  * @returns Null if there is no shape or more than one selected shape, otherwise the selected shape's id.
1593
1615
  *
@@ -1596,7 +1618,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1596
1618
  */
1597
1619
  getOnlySelectedShapeId(): null | TLShapeId;
1598
1620
  /**
1599
- * The app's only selected shape.
1621
+ * The editor's only selected shape.
1600
1622
  *
1601
1623
  * @returns Null if there is no shape or more than one selected shape, otherwise the selected shape.
1602
1624
  *
@@ -1688,6 +1710,16 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1688
1710
  * @public
1689
1711
  */
1690
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;
1691
1723
  /**
1692
1724
  * Set the current editing shape.
1693
1725
  *
@@ -1807,6 +1839,15 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1807
1839
  * @public
1808
1840
  */
1809
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;
1810
1851
  /**
1811
1852
  * Set the current cropping shape.
1812
1853
  *
@@ -1849,6 +1890,32 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1849
1890
  * @public
1850
1891
  */
1851
1892
  getZoomLevel(): number;
1893
+ private _debouncedZoomLevel;
1894
+ /**
1895
+ * Get the debounced zoom level. When the camera is moving, this returns the zoom level
1896
+ * from when the camera started moving rather than the current zoom level. This can be
1897
+ * used to avoid expensive re-renders during camera movements.
1898
+ *
1899
+ * This behavior is controlled by the `useDebouncedZoom` option. When `useDebouncedZoom`
1900
+ * is `false`, this method always returns the current zoom level.
1901
+ *
1902
+ * @public
1903
+ */
1904
+ getDebouncedZoomLevel(): number;
1905
+ private _getAboveDebouncedZoomThreshold;
1906
+ /**
1907
+ * Get the efficient zoom level. This returns the current zoom level if there are less than 300 shapes on the page,
1908
+ * otherwise it returns the debounced zoom level. This can be used to avoid expensive re-renders during camera movements.
1909
+ *
1910
+ * @public
1911
+ * @example
1912
+ * ```ts
1913
+ * editor.getEfficientZoomLevel()
1914
+ * ```
1915
+ *
1916
+ * @public
1917
+ */
1918
+ getEfficientZoomLevel(): number;
1852
1919
  /**
1853
1920
  * Get the camera's initial or reset zoom level.
1854
1921
  *
@@ -1963,7 +2030,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1963
2030
  * ```ts
1964
2031
  * editor.zoomIn()
1965
2032
  * editor.zoomIn(editor.getViewportScreenCenter(), { animation: { duration: 200 } })
1966
- * editor.zoomIn(editor.inputs.currentScreenPoint, { animation: { duration: 200 } })
2033
+ * editor.zoomIn(editor.inputs.getCurrentScreenPoint(), { animation: { duration: 200 } })
1967
2034
  * ```
1968
2035
  *
1969
2036
  * @param point - The screen point to zoom in on. Defaults to the screen center
@@ -1979,7 +2046,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1979
2046
  * ```ts
1980
2047
  * editor.zoomOut()
1981
2048
  * editor.zoomOut(editor.getViewportScreenCenter(), { animation: { duration: 120 } })
1982
- * editor.zoomOut(editor.inputs.currentScreenPoint, { animation: { duration: 120 } })
2049
+ * editor.zoomOut(editor.inputs.getCurrentScreenPoint(), { animation: { duration: 120 } })
1983
2050
  * ```
1984
2051
  *
1985
2052
  * @param point - The point to zoom out on. Defaults to the viewport screen center.
@@ -2192,8 +2259,8 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2192
2259
  /* Excluded from this release type: getUnorderedRenderingShapes */
2193
2260
  private _cameraState;
2194
2261
  private _cameraStateTimeoutRemaining;
2195
- _decayCameraStateTimeout(elapsed: number): void;
2196
- _tickCameraState(): void;
2262
+ private _decayCameraStateTimeout;
2263
+ private _tickCameraState;
2197
2264
  /**
2198
2265
  * Whether the camera is moving or idle.
2199
2266
  *
@@ -2642,6 +2709,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2642
2709
  */
2643
2710
  getNotVisibleShapes(): Set<TLShapeId>;
2644
2711
  private _notVisibleShapes;
2712
+ private _culledShapesCache;
2645
2713
  /**
2646
2714
  * Get culled shapes (those that should not render), taking into account which shapes are selected or editing.
2647
2715
  *
@@ -2691,6 +2759,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2691
2759
  hitInside?: boolean;
2692
2760
  margin?: number;
2693
2761
  }): TLShape[];
2762
+ /* Excluded from this release type: getShapeIdsInsideBounds */
2694
2763
  /**
2695
2764
  * Test whether a point (in the current page space) will will a shape. This method takes into account masks,
2696
2765
  * such as when a shape is the child of a frame and is partially clipped by the frame.
@@ -2765,7 +2834,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2765
2834
  *
2766
2835
  * @example
2767
2836
  * ```ts
2768
- * const isArrowShape = isShapeOfType<TLArrowShape>(someShape, 'arrow')
2837
+ * const isArrowShape = isShapeOfType(someShape, 'arrow')
2769
2838
  * ```
2770
2839
  *
2771
2840
  * @param util - the TLShapeUtil constructor to test against
@@ -2773,8 +2842,13 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2773
2842
  *
2774
2843
  * @public
2775
2844
  */
2776
- isShapeOfType<T extends TLUnknownShape>(shape: TLUnknownShape, type: T['type']): shape is T;
2777
- isShapeOfType<T extends TLUnknownShape>(shapeId: TLUnknownShape['id'], type: T['type']): shapeId is T['id'];
2845
+ isShapeOfType<K extends TLShape['type']>(shape: TLShape, type: K): shape is Extract<TLShape, {
2846
+ type: K;
2847
+ }>;
2848
+ isShapeOfType<T extends TLShape>(shape: TLShape, type: T['type']): shape is Extract<TLShape, {
2849
+ type: T['type'];
2850
+ }>;
2851
+ isShapeOfType<T extends TLShape = TLShape>(shapeId: TLShapeId, type: T['type']): boolean;
2778
2852
  /**
2779
2853
  * Get a shape by its id.
2780
2854
  *
@@ -2925,17 +2999,26 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2925
2999
  * Get all bindings of a certain type _from_ a particular shape. These are the bindings whose
2926
3000
  * `fromId` matched the shape's ID.
2927
3001
  */
2928
- getBindingsFromShape<Binding extends TLUnknownBinding = TLBinding>(shape: TLShape | TLShapeId, type: Binding['type']): Binding[];
3002
+ getBindingsFromShape<K extends TLBinding['type']>(shape: TLShape | TLShapeId, type: K): Extract<TLBinding, {
3003
+ type: K;
3004
+ }>[];
3005
+ getBindingsFromShape<Binding extends TLBinding = TLBinding>(shape: TLShape | TLShapeId, type: Binding['type']): Binding[];
2929
3006
  /**
2930
3007
  * Get all bindings of a certain type _to_ a particular shape. These are the bindings whose
2931
3008
  * `toId` matches the shape's ID.
2932
3009
  */
2933
- getBindingsToShape<Binding extends TLUnknownBinding = TLBinding>(shape: TLShape | TLShapeId, type: Binding['type']): Binding[];
3010
+ getBindingsToShape<K extends TLBinding['type']>(shape: TLShape | TLShapeId, type: K): Extract<TLBinding, {
3011
+ type: K;
3012
+ }>[];
3013
+ getBindingsToShape<Binding extends TLBinding = TLBinding>(shape: TLShape | TLShapeId, type: Binding['type']): Binding[];
2934
3014
  /**
2935
3015
  * Get all bindings involving a particular shape. This includes bindings where the shape is the
2936
3016
  * `fromId` or `toId`. If a type is provided, only bindings of that type are returned.
2937
3017
  */
2938
- getBindingsInvolvingShape<Binding extends TLUnknownBinding = TLBinding>(shape: TLShape | TLShapeId, type?: Binding['type']): Binding[];
3018
+ getBindingsInvolvingShape<K extends TLBinding['type']>(shape: TLShape | TLShapeId, type: K): Extract<TLBinding, {
3019
+ type: K;
3020
+ }>[];
3021
+ getBindingsInvolvingShape<Binding extends TLBinding = TLBinding>(shape: TLShape | TLShapeId, type?: Binding['type']): Binding[];
2939
3022
  /**
2940
3023
  * Create bindings from a list of partial bindings. You can omit the ID and most props of a
2941
3024
  * binding, but the `type`, `toId`, and `fromId` must all be provided.
@@ -3250,7 +3333,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3250
3333
  *
3251
3334
  * @public
3252
3335
  */
3253
- canCreateShape<T extends TLUnknownShape>(shape: OptionalKeys<TLShapePartial<T>, 'id'> | T['id']): boolean;
3336
+ canCreateShape(shape: OptionalKeys<TLShapePartial<TLShape>, 'id'> | TLShape['id']): boolean;
3254
3337
  /**
3255
3338
  * Get whether the provided shapes can be created.
3256
3339
  *
@@ -3258,7 +3341,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3258
3341
  *
3259
3342
  * @public
3260
3343
  */
3261
- canCreateShapes<T extends TLUnknownShape>(shapes: (OptionalKeys<TLShapePartial<T>, 'id'> | T['id'])[]): boolean;
3344
+ canCreateShapes(shapes: (OptionalKeys<TLShapePartial<TLShape>, 'id'> | TLShape['id'])[]): boolean;
3262
3345
  /**
3263
3346
  * Create a single shape.
3264
3347
  *
@@ -3272,7 +3355,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3272
3355
  *
3273
3356
  * @public
3274
3357
  */
3275
- createShape<T extends TLUnknownShape>(shape: OptionalKeys<TLShapePartial<T>, 'id'>): this;
3358
+ createShape<TShape extends TLShape>(shape: TLCreateShapePartial<TShape>): this;
3276
3359
  /**
3277
3360
  * Create shapes.
3278
3361
  *
@@ -3286,7 +3369,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3286
3369
  *
3287
3370
  * @public
3288
3371
  */
3289
- createShapes<T extends TLUnknownShape>(shapes: OptionalKeys<TLShapePartial<T>, 'id'>[]): this;
3372
+ createShapes<TShape extends TLShape = TLShape>(shapes: TLCreateShapePartial<TShape>[]): this;
3290
3373
  private animatingShapes;
3291
3374
  /**
3292
3375
  * Animate a shape.
@@ -3372,7 +3455,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3372
3455
  *
3373
3456
  * @public
3374
3457
  */
3375
- updateShape<T extends TLUnknownShape>(partial: null | TLShapePartial<T> | undefined): this;
3458
+ updateShape<T extends TLShape = TLShape>(partial: null | TLShapePartial<T> | undefined): this;
3376
3459
  /**
3377
3460
  * Update shapes using partials of each shape.
3378
3461
  *
@@ -3385,7 +3468,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3385
3468
  *
3386
3469
  * @public
3387
3470
  */
3388
- updateShapes<T extends TLUnknownShape>(partials: (null | TLShapePartial<T> | undefined)[]): this;
3471
+ updateShapes<T extends TLShape>(partials: (null | TLShapePartial<T> | undefined)[]): this;
3389
3472
  /* Excluded from this release type: _updateShapes */
3390
3473
  /* Excluded from this release type: _getUnlockedShapeIds */
3391
3474
  /**
@@ -3700,59 +3783,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3700
3783
  url: string;
3701
3784
  width: number;
3702
3785
  }>;
3703
- /**
3704
- * The app's current input state.
3705
- *
3706
- * @public
3707
- */
3708
- inputs: {
3709
- /** A set containing the currently pressed buttons. */
3710
- buttons: Set<number>;
3711
- /** A set containing the currently pressed keys. */
3712
- keys: Set<string>;
3713
- /** The most recent pointer down's position in screen space. */
3714
- originScreenPoint: Vec;
3715
- /** The most recent pointer down's position in the current page space. */
3716
- originPagePoint: Vec;
3717
- /** The most recent pointer position in screen space. */
3718
- currentScreenPoint: Vec;
3719
- /** The most recent pointer position in the current page space. */
3720
- currentPagePoint: Vec;
3721
- /** The previous pointer position in screen space. */
3722
- previousScreenPoint: Vec;
3723
- /** The previous pointer position in the current page space. */
3724
- previousPagePoint: Vec;
3725
- /** Velocity of mouse pointer, in pixels per millisecond */
3726
- pointerVelocity: Vec;
3727
- /** Whether the alt or option key is currently pressed. */
3728
- altKey: boolean;
3729
- /** Whether the control or command key is currently pressed. */
3730
- ctrlKey: boolean;
3731
- /** Whether the input is from a pe. */
3732
- isPen: boolean;
3733
- /** Whether the meta key is currently pressed. */
3734
- metaKey: boolean;
3735
- /** Whether the shift key is currently pressed. */
3736
- shiftKey: boolean;
3737
- /** Whether the user is dragging. */
3738
- isDragging: boolean;
3739
- /** Whether the user is editing. */
3740
- isEditing: boolean;
3741
- /** Whether the user is panning. */
3742
- isPanning: boolean;
3743
- /** Whether the user is pinching. */
3744
- isPinching: boolean;
3745
- /** Whether the user is pointing. */
3746
- isPointing: boolean;
3747
- /** Whether the user is spacebar panning. */
3748
- isSpacebarPanning: boolean;
3749
- };
3750
- /**
3751
- * Update the input points from a pointer, pinch, or wheel event.
3752
- *
3753
- * @param info - The event info.
3754
- */
3755
- private _updateInputsFromEvent;
3756
3786
  /**
3757
3787
  * Dispatch a cancel event.
3758
3788
  *
@@ -3998,7 +4028,6 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3998
4028
  /* Excluded from this release type: _metaKeyTimeout */
3999
4029
  /* Excluded from this release type: _setMetaKeyTimeout */
4000
4030
  /* Excluded from this release type: _restoreToolId */
4001
- /* Excluded from this release type: _pinchStart */
4002
4031
  /* Excluded from this release type: _didPinch */
4003
4032
  /* Excluded from this release type: _selectedShapeIdsAtPointerDown */
4004
4033
  /* Excluded from this release type: _longPressTimeout */
@@ -4073,7 +4102,7 @@ export declare class EditorAtom<T> {
4073
4102
  export declare const EditorContext: React_3.Context<Editor | null>;
4074
4103
 
4075
4104
  /** @public @react */
4076
- export declare function EditorProvider({ editor, children }: EditorProviderProps): JSX_2.Element;
4105
+ export declare function EditorProvider({ editor, children }: EditorProviderProps): JSX.Element;
4077
4106
 
4078
4107
  /** @public */
4079
4108
  export declare interface EditorProviderProps {
@@ -4104,7 +4133,7 @@ export declare class Ellipse2d extends Geometry2d {
4104
4133
  }
4105
4134
 
4106
4135
  /** @public */
4107
- 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>, {
4108
4137
  error: Error | null;
4109
4138
  }> {
4110
4139
  static getDerivedStateFromError(error: Error): {
@@ -4114,11 +4143,11 @@ export declare class ErrorBoundary extends React_2.Component<React_2.PropsWithRe
4114
4143
  error: null;
4115
4144
  };
4116
4145
  componentDidCatch(error: unknown): void;
4117
- 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;
4118
4147
  }
4119
4148
 
4120
4149
  /** @public @react */
4121
- export declare function ErrorScreen({ children }: LoadingScreenProps): JSX_2.Element;
4150
+ export declare function ErrorScreen({ children }: LoadingScreenProps): JSX.Element;
4122
4151
 
4123
4152
  /** @public */
4124
4153
  export declare const EVENT_NAME_MAP: Record<Exclude<TLEventName, TLPinchEventName>, keyof TLEventHandlers>;
@@ -4418,8 +4447,8 @@ export declare class GroupShapeUtil extends ShapeUtil<TLGroupShape> {
4418
4447
  canResizeChildren(): boolean;
4419
4448
  getDefaultProps(): TLGroupShape['props'];
4420
4449
  getGeometry(shape: TLGroupShape): Geometry2d;
4421
- component(shape: TLGroupShape): JSX_2.Element | null;
4422
- indicator(shape: TLGroupShape): JSX_2.Element;
4450
+ component(shape: TLGroupShape): JSX.Element | null;
4451
+ indicator(shape: TLGroupShape): JSX.Element;
4423
4452
  onChildrenChange(group: TLGroupShape): void;
4424
4453
  }
4425
4454
 
@@ -4523,7 +4552,7 @@ export declare class HistoryManager<R extends UnknownRecord> {
4523
4552
  }
4524
4553
 
4525
4554
  /** @public @react */
4526
- export declare function HTMLContainer({ children, className, ...rest }: HTMLContainerProps): JSX_2.Element;
4555
+ export declare function HTMLContainer({ children, className, ...rest }: HTMLContainerProps): JSX.Element;
4527
4556
 
4528
4557
  /** @public */
4529
4558
  export declare type HTMLContainerProps = React_2.HTMLAttributes<HTMLDivElement>;
@@ -4531,6 +4560,248 @@ export declare type HTMLContainerProps = React_2.HTMLAttributes<HTMLDivElement>;
4531
4560
  /** @public */
4532
4561
  export declare const inlineBase64AssetStore: TLAssetStore;
4533
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
+
4534
4805
  /**
4535
4806
  * Find the intersections between a circle and a circle.
4536
4807
  *
@@ -4660,7 +4931,7 @@ export declare function kickoutOccludedShapes(editor: Editor, shapeIds: TLShapeI
4660
4931
  export declare function linesIntersect(A: VecLike, B: VecLike, C: VecLike, D: VecLike): boolean;
4661
4932
 
4662
4933
  /** @public @react */
4663
- export declare function LoadingScreen({ children }: LoadingScreenProps): JSX_2.Element;
4934
+ export declare function LoadingScreen({ children }: LoadingScreenProps): JSX.Element;
4664
4935
 
4665
4936
  /** @public */
4666
4937
  export declare interface LoadingScreenProps {
@@ -4778,7 +5049,7 @@ export declare function maybeSnapToGrid(point: Vec, editor: Editor): Vec;
4778
5049
  *
4779
5050
  * @public @react
4780
5051
  */
4781
- export declare function MenuClickCapture(): false | JSX_2.Element;
5052
+ export declare function MenuClickCapture(): false | JSX.Element;
4782
5053
 
4783
5054
  /* Excluded from this release type: normalizeWheel */
4784
5055
 
@@ -5116,7 +5387,7 @@ export declare function setRuntimeOverrides(input: Partial<typeof runtime>): voi
5116
5387
  export declare function setUserPreferences(user: TLUserPreferences): void;
5117
5388
 
5118
5389
  /** @public */
5119
- export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknownShape> {
5390
+ export declare abstract class ShapeUtil<Shape extends TLShape = TLShape> {
5120
5391
  editor: Editor;
5121
5392
  /** Configure this shape utils {@link ShapeUtil.options | `options`}. */
5122
5393
  static configure<T extends TLShapeUtilConstructor<any, any>>(this: T, options: T extends new (...args: any[]) => {
@@ -5211,20 +5482,20 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5211
5482
  * @param shape - The shape.
5212
5483
  * @public
5213
5484
  */
5214
- canSnap(_shape: Shape): boolean;
5485
+ canSnap(shape: Shape): boolean;
5215
5486
  /**
5216
5487
  * Whether the shape can be tabbed to.
5217
5488
  *
5218
5489
  * @param shape - The shape.
5219
5490
  * @public
5220
5491
  */
5221
- canTabTo(_shape: Shape): boolean;
5492
+ canTabTo(shape: Shape): boolean;
5222
5493
  /**
5223
5494
  * Whether the shape can be scrolled while editing.
5224
5495
  *
5225
5496
  * @public
5226
5497
  */
5227
- canScroll(_shape: Shape): boolean;
5498
+ canScroll(shape: Shape): boolean;
5228
5499
  /**
5229
5500
  * Whether the shape can be bound to. See {@link TLShapeUtilCanBindOpts} for details.
5230
5501
  *
@@ -5236,31 +5507,37 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5236
5507
  *
5237
5508
  * @public
5238
5509
  */
5239
- canEdit(_shape: Shape): boolean;
5510
+ canEdit(shape: Shape, info: TLEditStartInfo): boolean;
5240
5511
  /**
5241
5512
  * Whether the shape can be resized.
5242
5513
  *
5243
5514
  * @public
5244
5515
  */
5245
- canResize(_shape: Shape): boolean;
5516
+ canResize(shape: Shape): boolean;
5246
5517
  /**
5247
5518
  * When the shape is resized, whether the shape's children should also be resized.
5248
5519
  *
5249
5520
  * @public
5250
5521
  */
5251
- canResizeChildren(_shape: Shape): boolean;
5522
+ canResizeChildren(shape: Shape): boolean;
5252
5523
  /**
5253
5524
  * Whether the shape can be edited in read-only mode.
5254
5525
  *
5255
5526
  * @public
5256
5527
  */
5257
- 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;
5258
5535
  /**
5259
5536
  * Whether the shape can be cropped.
5260
5537
  *
5261
5538
  * @public
5262
5539
  */
5263
- canCrop(_shape: Shape): boolean;
5540
+ canCrop(shape: Shape): boolean;
5264
5541
  /**
5265
5542
  * Whether the shape can participate in layout functions such as alignment or distribution.
5266
5543
  *
@@ -5270,7 +5547,7 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5270
5547
  *
5271
5548
  * @public
5272
5549
  */
5273
- canBeLaidOut(_shape: Shape, _info: TLShapeUtilCanBeLaidOutOpts): boolean;
5550
+ canBeLaidOut(shape: Shape, info: TLShapeUtilCanBeLaidOutOpts): boolean;
5274
5551
  /**
5275
5552
  * Whether this shape can be culled. By default, shapes are culled for
5276
5553
  * performance reasons when they are outside of the viewport. Culled shapes are still rendered
@@ -5278,11 +5555,31 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5278
5555
  *
5279
5556
  * @param shape - The shape.
5280
5557
  */
5281
- canCull(_shape: Shape): boolean;
5558
+ canCull(shape: Shape): boolean;
5282
5559
  /* Excluded from this release type: providesBackgroundForChildren */
5283
5560
  /**
5284
5561
  * Get the clip path to apply to this shape's children.
5285
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
+ *
5286
5583
  * @param shape - The shape to get the clip path for
5287
5584
  * @returns Array of points defining the clipping polygon in local coordinates, or undefined if no clipping
5288
5585
  * @public
@@ -5307,37 +5604,37 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5307
5604
  * @returns boolean indicating if this shape should hide in the minimap
5308
5605
  * @public
5309
5606
  */
5310
- hideInMinimap?(_shape: Shape): boolean;
5607
+ hideInMinimap?(shape: Shape): boolean;
5311
5608
  /**
5312
5609
  * Whether the shape should hide its resize handles when selected.
5313
5610
  *
5314
5611
  * @public
5315
5612
  */
5316
- hideResizeHandles(_shape: Shape): boolean;
5613
+ hideResizeHandles(shape: Shape): boolean;
5317
5614
  /**
5318
5615
  * Whether the shape should hide its rotation handles when selected.
5319
5616
  *
5320
5617
  * @public
5321
5618
  */
5322
- hideRotateHandle(_shape: Shape): boolean;
5619
+ hideRotateHandle(shape: Shape): boolean;
5323
5620
  /**
5324
5621
  * Whether the shape should hide its selection bounds background when selected.
5325
5622
  *
5326
5623
  * @public
5327
5624
  */
5328
- hideSelectionBoundsBg(_shape: Shape): boolean;
5625
+ hideSelectionBoundsBg(shape: Shape): boolean;
5329
5626
  /**
5330
5627
  * Whether the shape should hide its selection bounds foreground when selected.
5331
5628
  *
5332
5629
  * @public
5333
5630
  */
5334
- hideSelectionBoundsFg(_shape: Shape): boolean;
5631
+ hideSelectionBoundsFg(shape: Shape): boolean;
5335
5632
  /**
5336
5633
  * Whether the shape's aspect ratio is locked.
5337
5634
  *
5338
5635
  * @public
5339
5636
  */
5340
- isAspectRatioLocked(_shape: Shape): boolean;
5637
+ isAspectRatioLocked(shape: Shape): boolean;
5341
5638
  /**
5342
5639
  * By default, the bounds of an image export are the bounds of all the shapes it contains, plus
5343
5640
  * some padding. If an export includes a shape where `isExportBoundsContainer` is true, then the
@@ -5345,10 +5642,10 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5345
5642
  * useful in cases like annotating on top of an image, where you usually want to avoid extra
5346
5643
  * padding around the image if you don't need it.
5347
5644
  *
5348
- * @param _shape - The shape to check
5645
+ * @param shape - The shape to check
5349
5646
  * @returns True if this shape should be treated as an export bounds container
5350
5647
  */
5351
- isExportBoundsContainer(_shape: Shape): boolean;
5648
+ isExportBoundsContainer(shape: Shape): boolean;
5352
5649
  /* Excluded from this release type: backgroundComponent */
5353
5650
  /**
5354
5651
  * Get the interpolated props for an animating shape. This is an optional method.
@@ -5385,7 +5682,7 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5385
5682
  * @param type - The shape type.
5386
5683
  * @public
5387
5684
  */
5388
- canReceiveNewChildrenOfType(_shape: Shape, _type: TLShape['type']): boolean;
5685
+ canReceiveNewChildrenOfType(shape: Shape, _type: TLShape['type']): boolean;
5389
5686
  /**
5390
5687
  * Get the shape as an SVG object.
5391
5688
  *
@@ -5418,14 +5715,14 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5418
5715
  * Get the geometry to use when snapping to this this shape in translate/resize operations. See
5419
5716
  * {@link BoundsSnapGeometry} for details.
5420
5717
  */
5421
- getBoundsSnapGeometry(_shape: Shape): BoundsSnapGeometry;
5718
+ getBoundsSnapGeometry(shape: Shape): BoundsSnapGeometry;
5422
5719
  /**
5423
5720
  * Get the geometry to use when snapping handles to this shape. See {@link HandleSnapGeometry}
5424
5721
  * for details.
5425
5722
  */
5426
- getHandleSnapGeometry(_shape: Shape): HandleSnapGeometry;
5427
- getText(_shape: Shape): string | undefined;
5428
- getAriaDescriptor(_shape: Shape): string | undefined;
5723
+ getHandleSnapGeometry(shape: Shape): HandleSnapGeometry;
5724
+ getText(shape: Shape): string | undefined;
5725
+ getAriaDescriptor(shape: Shape): string | undefined;
5429
5726
  /**
5430
5727
  * A callback called just before a shape is created. This method provides a last chance to modify
5431
5728
  * the created shape.
@@ -5783,6 +6080,8 @@ export declare class SnapManager {
5783
6080
  getCurrentCommonAncestor(): TLShapeId | undefined;
5784
6081
  }
5785
6082
 
6083
+ /* Excluded from this release type: SpatialIndexManager */
6084
+
5786
6085
  /** @public */
5787
6086
  export declare class Stadium2d extends Geometry2d {
5788
6087
  config: Omit<Geometry2dOptions, 'isClosed'> & {
@@ -5920,7 +6219,7 @@ export declare const stopEventPropagation: (e: any) => any;
5920
6219
  export declare function suffixSafeId(id: SafeId, suffix: string): SafeId;
5921
6220
 
5922
6221
  /** @public @react */
5923
- export declare function SVGContainer({ children, className, ...rest }: SVGContainerProps): JSX_2.Element;
6222
+ export declare function SVGContainer({ children, className, ...rest }: SVGContainerProps): JSX.Element;
5924
6223
 
5925
6224
  /** @public */
5926
6225
  export declare type SVGContainerProps = React_2.ComponentProps<'svg'>;
@@ -6018,6 +6317,8 @@ export declare class TextManager {
6018
6317
  }[];
6019
6318
  }
6020
6319
 
6320
+ /* Excluded from this release type: TickManager */
6321
+
6021
6322
  /**
6022
6323
  * This is the TipTap editor! Docs are {@link https://tiptap.dev/docs}.
6023
6324
  *
@@ -6041,7 +6342,7 @@ export declare type TLAnyBindingUtilConstructor = TLBindingUtilConstructor<any>;
6041
6342
  export declare type TLAnyShapeUtilConstructor = TLShapeUtilConstructor<any>;
6042
6343
 
6043
6344
  /** @public */
6044
- export declare type TLBaseBoxShape = TLBaseShape<string, {
6345
+ export declare type TLBaseBoxShape = ExtractShapeByProps<{
6045
6346
  h: number;
6046
6347
  w: number;
6047
6348
  }>;
@@ -6063,7 +6364,7 @@ export declare interface TLBaseExternalContent {
6063
6364
  }
6064
6365
 
6065
6366
  /** @public */
6066
- export declare interface TLBindingUtilConstructor<T extends TLUnknownBinding, U extends BindingUtil<T> = BindingUtil<T>> {
6367
+ export declare interface TLBindingUtilConstructor<T extends TLBinding, U extends BindingUtil<T> = BindingUtil<T>> {
6067
6368
  new (editor: Editor): U;
6068
6369
  type: T['type'];
6069
6370
  /** Validations for this binding's props. */
@@ -6569,6 +6870,33 @@ export declare interface TldrawOptions {
6569
6870
  * Branding name of the app, currently only used for adding aria-label for the application.
6570
6871
  */
6571
6872
  readonly branding?: string;
6873
+ /**
6874
+ * Whether to use debounced zoom level for certain rendering optimizations. When true,
6875
+ * `editor.getDebouncedZoomLevel()` returns a cached zoom value while the camera is moving,
6876
+ * reducing re-renders. When false, it always returns the current zoom level.
6877
+ */
6878
+ readonly debouncedZoom: boolean;
6879
+ /**
6880
+ * The number of shapes that must be on the page for the debounced zoom level to be used.
6881
+ * Defaults to 300 shapes.
6882
+ */
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;
6572
6900
  }
6573
6901
 
6574
6902
  /** @public */
@@ -6614,7 +6942,7 @@ export declare interface TLEditorComponents {
6614
6942
  /** @public */
6615
6943
  export declare interface TLEditorOptions {
6616
6944
  /**
6617
- * 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
6618
6946
  * from a server or database.
6619
6947
  */
6620
6948
  store: TLStore;
@@ -6693,6 +7021,11 @@ export declare interface TLEditorSnapshot {
6693
7021
  session: TLSessionStateSnapshot;
6694
7022
  }
6695
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
+
6696
7029
  /** @public */
6697
7030
  export declare interface TLEmbedExternalContent<EmbedDefinition> extends TLBaseExternalContent {
6698
7031
  type: 'embed';
@@ -6705,6 +7038,8 @@ export declare type TLEnterEventHandler = (info: any, from: string) => void;
6705
7038
 
6706
7039
  /**
6707
7040
  * An object that contains information about the current device and environment.
7041
+ * This object is not reactive and will not update automatically when the environment changes,
7042
+ * so only include values that are fixed, such as the user's browser and operating system.
6708
7043
  *
6709
7044
  * @public
6710
7045
  */
@@ -6719,6 +7054,17 @@ export declare const tlenv: {
6719
7054
  isWebview: boolean;
6720
7055
  };
6721
7056
 
7057
+ /**
7058
+ * An atom that contains information about the current device and environment.
7059
+ * This object is reactive and will update automatically when the environment changes.
7060
+ * Use it for values that may change over time, such as the pointer type.
7061
+ *
7062
+ * @public
7063
+ */
7064
+ export declare const tlenvReactive: Atom< {
7065
+ isCoarsePointer: boolean;
7066
+ }, unknown>;
7067
+
6722
7068
  /** @public */
6723
7069
  export declare interface TLErrorBoundaryProps {
6724
7070
  children: React_2.ReactNode;
@@ -6782,6 +7128,7 @@ export declare interface TLEventMap {
6782
7128
  event: [TLEventInfo];
6783
7129
  tick: [number];
6784
7130
  frame: [number];
7131
+ resize: [BoxModel];
6785
7132
  'select-all-text': [{
6786
7133
  shapeId: TLShapeId;
6787
7134
  }];
@@ -6796,6 +7143,7 @@ export declare interface TLEventMap {
6796
7143
  'edited-shapes': [TLRecord[]];
6797
7144
  'deleted-shapes': [TLShapeId[]];
6798
7145
  edit: [];
7146
+ dispose: [];
6799
7147
  }
6800
7148
 
6801
7149
  /** @public */
@@ -7497,11 +7845,11 @@ export declare interface TLShapeUtilCanBeLaidOutOpts {
7497
7845
  *
7498
7846
  * @public
7499
7847
  */
7500
- export declare interface TLShapeUtilCanBindOpts<Shape extends TLUnknownShape = TLUnknownShape> {
7848
+ export declare interface TLShapeUtilCanBindOpts<Shape extends TLShape = TLShape> {
7501
7849
  /** The type of shape referenced by the `fromId` of the binding. */
7502
- fromShapeType: string;
7850
+ fromShapeType: TLShape['type'];
7503
7851
  /** The type of shape referenced by the `toId` of the binding. */
7504
- toShapeType: string;
7852
+ toShapeType: TLShape['type'];
7505
7853
  /** The type of binding. */
7506
7854
  bindingType: string;
7507
7855
  }
@@ -7513,7 +7861,7 @@ export declare interface TLShapeUtilCanvasSvgDef {
7513
7861
  }
7514
7862
 
7515
7863
  /** @public */
7516
- export declare interface TLShapeUtilConstructor<T extends TLUnknownShape, U extends ShapeUtil<T> = ShapeUtil<T>> {
7864
+ export declare interface TLShapeUtilConstructor<T extends TLShape, U extends ShapeUtil<T> = ShapeUtil<T>> {
7517
7865
  new (editor: Editor): U;
7518
7866
  type: T['type'];
7519
7867
  props?: RecordProps<T>;
@@ -7893,10 +8241,10 @@ export declare function useMaybeEditor(): Editor | null;
7893
8241
  /* Excluded from this release type: useOnMount */
7894
8242
 
7895
8243
  /** @public */
7896
- export declare function usePassThroughMouseOverEvents(ref: RefObject<HTMLElement>): void;
8244
+ export declare function usePassThroughMouseOverEvents(ref: RefObject<HTMLElement | null>): void;
7897
8245
 
7898
8246
  /** @public */
7899
- export declare function usePassThroughWheelEvents(ref: RefObject<HTMLElement>): void;
8247
+ export declare function usePassThroughWheelEvents(ref: RefObject<HTMLElement | null>): void;
7900
8248
 
7901
8249
  /**
7902
8250
  * @returns The list of peer UserIDs
@@ -8004,7 +8352,7 @@ export declare function useTLSchemaFromUtils(opts: TLStoreSchemaOptions): StoreS
8004
8352
  export declare function useTLStore(opts: TLStoreOptions): TLStore;
8005
8353
 
8006
8354
  /** @public */
8007
- 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;
8008
8356
 
8009
8357
  /**
8010
8358
  * React's useId hook returns a unique id for the component. However, it uses a colon in the id,