@tldraw/editor 3.15.0-canary.5b91d27bf6f0 → 3.15.0-canary.5c62460ab7f9

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 (148) hide show
  1. package/dist-cjs/index.d.ts +143 -44
  2. package/dist-cjs/index.js +18 -16
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/components/SVGContainer.js +1 -1
  5. package/dist-cjs/lib/components/SVGContainer.js.map +2 -2
  6. package/dist-cjs/lib/components/default-components/DefaultBrush.js +1 -1
  7. package/dist-cjs/lib/components/default-components/DefaultBrush.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +1 -1
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  11. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +2 -2
  12. package/dist-cjs/lib/components/default-components/DefaultCursor.js +1 -1
  13. package/dist-cjs/lib/components/default-components/DefaultCursor.js.map +2 -2
  14. package/dist-cjs/lib/components/default-components/DefaultGrid.js +1 -1
  15. package/dist-cjs/lib/components/default-components/DefaultGrid.js.map +2 -2
  16. package/dist-cjs/lib/components/default-components/DefaultHandles.js +1 -1
  17. package/dist-cjs/lib/components/default-components/DefaultHandles.js.map +2 -2
  18. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +1 -1
  19. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  20. package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js +1 -1
  21. package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js.map +2 -2
  22. package/dist-cjs/lib/components/default-components/DefaultSpinner.js +27 -15
  23. package/dist-cjs/lib/components/default-components/DefaultSpinner.js.map +3 -3
  24. package/dist-cjs/lib/config/TLUserPreferences.js +7 -1
  25. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  26. package/dist-cjs/lib/editor/Editor.js +87 -42
  27. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  28. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +96 -101
  29. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
  30. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +7 -2
  31. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  32. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  33. package/dist-cjs/lib/editor/tools/StateNode.js +20 -1
  34. package/dist-cjs/lib/editor/tools/StateNode.js.map +2 -2
  35. package/dist-cjs/lib/editor/types/misc-types.js.map +1 -1
  36. package/dist-cjs/lib/hooks/useEditorComponents.js.map +1 -1
  37. package/dist-cjs/lib/license/Watermark.js +2 -2
  38. package/dist-cjs/lib/license/Watermark.js.map +2 -2
  39. package/dist-cjs/lib/primitives/geometry/Arc2d.js +1 -1
  40. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  41. package/dist-cjs/lib/primitives/geometry/Circle2d.js +1 -1
  42. package/dist-cjs/lib/primitives/geometry/Circle2d.js.map +2 -2
  43. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +3 -1
  44. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  45. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js +1 -1
  46. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js.map +2 -2
  47. package/dist-cjs/lib/primitives/geometry/geometry-constants.js +2 -2
  48. package/dist-cjs/lib/primitives/geometry/geometry-constants.js.map +2 -2
  49. package/dist-cjs/lib/primitives/intersect.js +4 -4
  50. package/dist-cjs/lib/primitives/intersect.js.map +2 -2
  51. package/dist-cjs/lib/primitives/utils.js +4 -0
  52. package/dist-cjs/lib/primitives/utils.js.map +2 -2
  53. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +0 -1
  54. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
  55. package/dist-cjs/version.js +3 -3
  56. package/dist-cjs/version.js.map +1 -1
  57. package/dist-esm/index.d.mts +143 -44
  58. package/dist-esm/index.mjs +43 -41
  59. package/dist-esm/index.mjs.map +2 -2
  60. package/dist-esm/lib/components/SVGContainer.mjs +1 -1
  61. package/dist-esm/lib/components/SVGContainer.mjs.map +2 -2
  62. package/dist-esm/lib/components/default-components/DefaultBrush.mjs +1 -1
  63. package/dist-esm/lib/components/default-components/DefaultBrush.mjs.map +2 -2
  64. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +1 -1
  65. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  66. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  67. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +2 -2
  68. package/dist-esm/lib/components/default-components/DefaultCursor.mjs +1 -1
  69. package/dist-esm/lib/components/default-components/DefaultCursor.mjs.map +2 -2
  70. package/dist-esm/lib/components/default-components/DefaultGrid.mjs +1 -1
  71. package/dist-esm/lib/components/default-components/DefaultGrid.mjs.map +2 -2
  72. package/dist-esm/lib/components/default-components/DefaultHandles.mjs +1 -1
  73. package/dist-esm/lib/components/default-components/DefaultHandles.mjs.map +2 -2
  74. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +1 -1
  75. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  76. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs +1 -1
  77. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs.map +2 -2
  78. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs +17 -15
  79. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs.map +2 -2
  80. package/dist-esm/lib/config/TLUserPreferences.mjs +7 -1
  81. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  82. package/dist-esm/lib/editor/Editor.mjs +87 -42
  83. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  84. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +96 -101
  85. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
  86. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +7 -2
  87. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  88. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  89. package/dist-esm/lib/editor/tools/StateNode.mjs +20 -1
  90. package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
  91. package/dist-esm/lib/hooks/useEditorComponents.mjs.map +1 -1
  92. package/dist-esm/lib/license/Watermark.mjs +2 -2
  93. package/dist-esm/lib/license/Watermark.mjs.map +2 -2
  94. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +2 -2
  95. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  96. package/dist-esm/lib/primitives/geometry/Circle2d.mjs +2 -2
  97. package/dist-esm/lib/primitives/geometry/Circle2d.mjs.map +2 -2
  98. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +3 -1
  99. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  100. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs +2 -2
  101. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs.map +2 -2
  102. package/dist-esm/lib/primitives/geometry/geometry-constants.mjs +2 -2
  103. package/dist-esm/lib/primitives/geometry/geometry-constants.mjs.map +2 -2
  104. package/dist-esm/lib/primitives/intersect.mjs +5 -5
  105. package/dist-esm/lib/primitives/intersect.mjs.map +2 -2
  106. package/dist-esm/lib/primitives/utils.mjs +4 -0
  107. package/dist-esm/lib/primitives/utils.mjs.map +2 -2
  108. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +0 -1
  109. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
  110. package/dist-esm/version.mjs +3 -3
  111. package/dist-esm/version.mjs.map +1 -1
  112. package/editor.css +17 -4
  113. package/package.json +9 -8
  114. package/src/index.ts +64 -62
  115. package/src/lib/components/SVGContainer.tsx +1 -1
  116. package/src/lib/components/default-components/DefaultBrush.tsx +1 -1
  117. package/src/lib/components/default-components/DefaultCanvas.tsx +1 -1
  118. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  119. package/src/lib/components/default-components/DefaultCursor.tsx +1 -1
  120. package/src/lib/components/default-components/DefaultGrid.tsx +1 -1
  121. package/src/lib/components/default-components/DefaultHandles.tsx +5 -1
  122. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +1 -1
  123. package/src/lib/components/default-components/DefaultSnapIndictor.tsx +1 -1
  124. package/src/lib/components/default-components/DefaultSpinner.tsx +12 -12
  125. package/src/lib/config/TLUserPreferences.ts +7 -0
  126. package/src/lib/editor/Editor.test.ts +407 -0
  127. package/src/lib/editor/Editor.ts +105 -43
  128. package/src/lib/editor/managers/TextManager/TextManager.ts +108 -128
  129. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +21 -0
  130. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +8 -0
  131. package/src/lib/editor/shapes/ShapeUtil.ts +57 -0
  132. package/src/lib/editor/tools/StateNode.test.ts +285 -0
  133. package/src/lib/editor/tools/StateNode.ts +27 -1
  134. package/src/lib/editor/types/misc-types.ts +19 -0
  135. package/src/lib/hooks/useEditorComponents.tsx +1 -1
  136. package/src/lib/license/LicenseManager.test.ts +1 -1
  137. package/src/lib/license/Watermark.tsx +2 -2
  138. package/src/lib/primitives/geometry/Arc2d.ts +2 -2
  139. package/src/lib/primitives/geometry/Circle2d.ts +2 -2
  140. package/src/lib/primitives/geometry/CubicBezier2d.ts +4 -1
  141. package/src/lib/primitives/geometry/Ellipse2d.ts +2 -2
  142. package/src/lib/primitives/geometry/geometry-constants.ts +2 -1
  143. package/src/lib/primitives/intersect.test.ts +946 -0
  144. package/src/lib/primitives/intersect.ts +12 -5
  145. package/src/lib/primitives/utils.ts +11 -0
  146. package/src/lib/utils/sync/TLLocalSyncClient.ts +0 -1
  147. package/src/version.ts +3 -3
  148. package/src/lib/test/currentToolIdMask.test.ts +0 -49
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
-
3
1
  import { Atom } from '@tldraw/state';
4
2
  import { BoxModel } from '@tldraw/tlschema';
5
3
  import { ComponentType } from 'react';
@@ -19,8 +17,8 @@ import { NamedExoticComponent } from 'react';
19
17
  import { Node as Node_2 } from '@tiptap/pm/model';
20
18
  import { PerformanceTracker } from '@tldraw/utils';
21
19
  import { PointerEventHandler } from 'react';
22
- import { default as React_2 } from 'react';
23
- import * as React_3 from 'react';
20
+ import * as React_2 from 'react';
21
+ import { default as React_3 } from 'react';
24
22
  import { ReactElement } from 'react';
25
23
  import { ReactNode } from 'react';
26
24
  import { RecordProps } from '@tldraw/tlschema';
@@ -59,6 +57,7 @@ import { TLImageAsset } from '@tldraw/tlschema';
59
57
  import { TLInstance } from '@tldraw/tlschema';
60
58
  import { TLInstancePageState } from '@tldraw/tlschema';
61
59
  import { TLInstancePresence } from '@tldraw/tlschema';
60
+ import { TLOpacityType } from '@tldraw/tlschema';
62
61
  import { TLPage } from '@tldraw/tlschema';
63
62
  import { TLPageId } from '@tldraw/tlschema';
64
63
  import { TLParentId } from '@tldraw/tlschema';
@@ -716,8 +715,8 @@ export declare function createTLStore({ initialData, defaultName, id, assets, on
716
715
 
717
716
  /** @public */
718
717
  export declare function createTLUser(opts?: {
719
- setUserPreferences?: ((userPreferences: TLUserPreferences) => void) | undefined;
720
- userPreferences?: Signal<TLUserPreferences, unknown> | undefined;
718
+ setUserPreferences?: (userPreferences: TLUserPreferences) => void;
719
+ userPreferences?: Signal<TLUserPreferences>;
721
720
  }): TLUser;
722
721
 
723
722
  /** @public */
@@ -726,10 +725,12 @@ export declare class CubicBezier2d extends Polyline2d {
726
725
  private _b;
727
726
  private _c;
728
727
  private _d;
728
+ private _resolution;
729
729
  constructor(config: Omit<Geometry2dOptions, 'isClosed' | 'isFilled'> & {
730
730
  cp1: Vec;
731
731
  cp2: Vec;
732
732
  end: Vec;
733
+ resolution?: number;
733
734
  start: Vec;
734
735
  });
735
736
  getVertices(): Vec[];
@@ -820,7 +821,7 @@ export declare const DefaultShapeIndicators: NamedExoticComponent<TLShapeIndicat
820
821
  export declare function DefaultSnapIndicator({ className, line, zoom }: TLSnapIndicatorProps): JSX_2.Element;
821
822
 
822
823
  /** @public @react */
823
- export declare function DefaultSpinner(): JSX_2.Element;
824
+ export declare function DefaultSpinner(props: React.SVGProps<SVGSVGElement>): JSX_2.Element;
824
825
 
825
826
  /** @public @react */
826
827
  export declare const DefaultSvgDefs: () => null;
@@ -848,7 +849,7 @@ export declare const defaultTldrawOptions: {
848
849
  readonly edgeScrollSpeed: 25;
849
850
  readonly enableToolbarKeyboardShortcuts: true;
850
851
  readonly exportProvider: ExoticComponent< {
851
- children?: ReactNode;
852
+ children?: ReactNode | undefined;
852
853
  }>;
853
854
  readonly flattenImageBoundsExpand: 64;
854
855
  readonly flattenImageBoundsPadding: 16;
@@ -888,6 +889,7 @@ export declare const defaultTldrawOptions: {
888
889
  /** @public */
889
890
  export declare const defaultUserPreferences: Readonly<{
890
891
  animationSpeed: 0 | 1;
892
+ areKeyboardShortcutsEnabled: true;
891
893
  color: "#02B1CC" | "#11B3A3" | "#39B178" | "#55B467" | "#7B66DC" | "#9D5BD2" | "#BD54C6" | "#E34BA9" | "#EC5E41" | "#F04F88" | "#F2555A" | "#FF802B";
892
894
  colorScheme: "light";
893
895
  edgeScrollSpeed: 1;
@@ -1018,8 +1020,8 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1018
1020
  readonly timers: {
1019
1021
  dispose: () => void;
1020
1022
  requestAnimationFrame: (callback: FrameRequestCallback) => number;
1021
- setInterval: (handler: TimerHandler, timeout?: number | undefined, ...args: any[]) => number;
1022
- setTimeout: (handler: TimerHandler, timeout?: number | undefined, ...args: any[]) => number;
1023
+ setInterval: (handler: TimerHandler, timeout?: number, ...args: any[]) => number;
1024
+ setTimeout: (handler: TimerHandler, timeout?: number, ...args: any[]) => number;
1023
1025
  };
1024
1026
  /**
1025
1027
  * A manager for the user and their preferences.
@@ -1553,7 +1555,9 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1553
1555
  */
1554
1556
  deselect(...shapes: TLShape[] | TLShapeId[]): this;
1555
1557
  /**
1556
- * Select all direct children of the current page.
1558
+ * Select all shapes. If the user has selected shapes that share a parent,
1559
+ * select all shapes within that parent. If the user has not selected any shapes,
1560
+ * or if the shapes shapes are only on select all shapes on the current page.
1557
1561
  *
1558
1562
  * @example
1559
1563
  * ```ts
@@ -1587,7 +1591,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
1587
1591
  *
1588
1592
  * @public
1589
1593
  */
1590
- getNearestAdjacentShape(currentShapeId: TLShapeId, direction: 'down' | 'left' | 'right' | 'up'): TLShapeId;
1594
+ getNearestAdjacentShape(shapes: TLShape[], currentShapeId: TLShapeId, direction: 'down' | 'left' | 'right' | 'up'): TLShapeId;
1591
1595
  selectParentShape(): void;
1592
1596
  selectFirstChildShape(): void;
1593
1597
  private _selectShapesAndZoom;
@@ -2068,10 +2072,10 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2068
2072
  */
2069
2073
  slideCamera(opts?: {
2070
2074
  direction: VecLike;
2071
- force?: boolean | undefined;
2072
- friction?: number | undefined;
2075
+ force?: boolean;
2076
+ friction?: number;
2073
2077
  speed: number;
2074
- speedThreshold?: number | undefined;
2078
+ speedThreshold?: number;
2075
2079
  }): this;
2076
2080
  /**
2077
2081
  * Animate the camera to a user's cursor position. This also briefly show the user's cursor if it's not currently visible.
@@ -2683,12 +2687,12 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2683
2687
  */
2684
2688
  getShapeAtPoint(point: VecLike, opts?: {
2685
2689
  filter?(shape: TLShape): boolean;
2686
- hitFrameInside?: boolean | undefined;
2687
- hitInside?: boolean | undefined;
2688
- hitLabels?: boolean | undefined;
2689
- hitLocked?: boolean | undefined;
2690
- margin?: number | undefined;
2691
- renderingOnly?: boolean | undefined;
2690
+ hitFrameInside?: boolean;
2691
+ hitInside?: boolean;
2692
+ hitLabels?: boolean;
2693
+ hitLocked?: boolean;
2694
+ margin?: number;
2695
+ renderingOnly?: boolean;
2692
2696
  }): TLShape | undefined;
2693
2697
  /**
2694
2698
  * Get the shapes, if any, at a given page point.
@@ -2707,8 +2711,8 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2707
2711
  * @public
2708
2712
  */
2709
2713
  getShapesAtPoint(point: VecLike, opts?: {
2710
- hitInside?: boolean | undefined;
2711
- margin?: number | undefined;
2714
+ hitInside?: boolean;
2715
+ margin?: number;
2712
2716
  }): TLShape[];
2713
2717
  /**
2714
2718
  * Test whether a point (in the current page space) will will a shape. This method takes into account masks,
@@ -2726,8 +2730,8 @@ export declare class Editor extends EventEmitter<TLEventMap> {
2726
2730
  * @public
2727
2731
  */
2728
2732
  isPointInShape(shape: TLShape | TLShapeId, point: VecLike, opts?: {
2729
- hitInside?: boolean | undefined;
2730
- margin?: number | undefined;
2733
+ hitInside?: boolean;
2734
+ margin?: number;
2731
2735
  }): boolean;
2732
2736
  /**
2733
2737
  * Convert a point in the current page space to a point in the local space of a shape. For example, if a
@@ -3789,6 +3793,21 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3789
3793
  * @public
3790
3794
  */
3791
3795
  complete(): this;
3796
+ /**
3797
+ * Dispatch a pointer move event in the current position of the pointer. This is useful when
3798
+ * external circumstances have changed (e.g. the camera moved or a shape was moved) and you want
3799
+ * the current interaction to respond to that change.
3800
+ *
3801
+ * @example
3802
+ * ```ts
3803
+ * editor.updatePointer()
3804
+ * ```
3805
+ *
3806
+ * @param options - The options for updating the pointer.
3807
+ * @returns The editor instance.
3808
+ * @public
3809
+ */
3810
+ updatePointer(options?: TLUpdatePointerOptions): this;
3792
3811
  /**
3793
3812
  * Puts the editor into focused mode.
3794
3813
  *
@@ -4013,7 +4032,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
4013
4032
  }
4014
4033
 
4015
4034
  /** @public */
4016
- export declare const EditorContext: React_2.Context<Editor | null>;
4035
+ export declare const EditorContext: React_3.Context<Editor | null>;
4017
4036
 
4018
4037
  /** @public @react */
4019
4038
  export declare function EditorProvider({ editor, children }: EditorProviderProps): JSX_2.Element;
@@ -4021,7 +4040,7 @@ export declare function EditorProvider({ editor, children }: EditorProviderProps
4021
4040
  /** @public */
4022
4041
  export declare interface EditorProviderProps {
4023
4042
  editor: Editor;
4024
- children: React_2.ReactNode;
4043
+ children: React_3.ReactNode;
4025
4044
  }
4026
4045
 
4027
4046
  /** @public */
@@ -4047,7 +4066,7 @@ export declare class Ellipse2d extends Geometry2d {
4047
4066
  }
4048
4067
 
4049
4068
  /** @public */
4050
- export declare class ErrorBoundary extends React_3.Component<React_3.PropsWithRef<React_3.PropsWithChildren<TLErrorBoundaryProps>>, {
4069
+ export declare class ErrorBoundary extends React_2.Component<React_2.PropsWithRef<React_2.PropsWithChildren<TLErrorBoundaryProps>>, {
4051
4070
  error: Error | null;
4052
4071
  }> {
4053
4072
  static getDerivedStateFromError(error: Error): {
@@ -4057,7 +4076,7 @@ export declare class ErrorBoundary extends React_3.Component<React_3.PropsWithRe
4057
4076
  error: null;
4058
4077
  };
4059
4078
  componentDidCatch(error: unknown): void;
4060
- render(): boolean | JSX_2.Element | Iterable<React_3.ReactNode> | null | number | string | undefined;
4079
+ render(): boolean | JSX_2.Element | Iterable<React_2.ReactNode> | null | number | string | undefined;
4061
4080
  }
4062
4081
 
4063
4082
  /** @public @react */
@@ -4318,6 +4337,8 @@ export declare function getSvgPathFromPoints(points: VecLike[], closed?: boolean
4318
4337
  /** @public */
4319
4338
  export declare function getUserPreferences(): TLUserPreferences;
4320
4339
 
4340
+ /* Excluded from this release type: getVerticesCountForArcLength */
4341
+
4321
4342
  /** @public */
4322
4343
  export declare class Group2d extends Geometry2d {
4323
4344
  children: Geometry2d[];
@@ -4461,7 +4482,7 @@ export declare class HistoryManager<R extends UnknownRecord> {
4461
4482
  export declare function HTMLContainer({ children, className, ...rest }: HTMLContainerProps): JSX_2.Element;
4462
4483
 
4463
4484
  /** @public */
4464
- export declare type HTMLContainerProps = React_3.HTMLAttributes<HTMLDivElement>;
4485
+ export declare type HTMLContainerProps = React_2.HTMLAttributes<HTMLDivElement>;
4465
4486
 
4466
4487
  /** @public */
4467
4488
  export declare const inlineBase64AssetStore: TLAssetStore;
@@ -4517,7 +4538,7 @@ export declare function intersectLineSegmentCircle(a1: VecLike, a2: VecLike, c:
4517
4538
  * @param b2 - The second segment's second point.
4518
4539
  * @public
4519
4540
  */
4520
- export declare function intersectLineSegmentLineSegment(a1: VecLike, a2: VecLike, b1: VecLike, b2: VecLike): null | Vec;
4541
+ export declare function intersectLineSegmentLineSegment(a1: VecLike, a2: VecLike, b1: VecLike, b2: VecLike, precision?: number): null | Vec;
4521
4542
 
4522
4543
  /**
4523
4544
  * Find the intersections between a line segment and a closed polygon.
@@ -4823,7 +4844,7 @@ export declare function precise(A: VecLike): string;
4823
4844
  * @param event - To prevent default on
4824
4845
  * @public
4825
4846
  */
4826
- export declare function preventDefault(event: Event | React_2.BaseSyntheticEvent): void;
4847
+ export declare function preventDefault(event: Event | React_3.BaseSyntheticEvent): void;
4827
4848
 
4828
4849
  /**
4829
4850
  * Convert radians to degrees.
@@ -4858,10 +4879,10 @@ export declare class ReadonlySharedStyleMap {
4858
4879
  getAsKnownValue<T>(prop: StyleProp<T>): T | undefined;
4859
4880
  get size(): number;
4860
4881
  equals(other: ReadonlySharedStyleMap): boolean;
4861
- keys(): IterableIterator<StyleProp<any>>;
4862
- values(): IterableIterator<SharedStyle<unknown>>;
4863
- entries(): IterableIterator<[StyleProp<any>, SharedStyle<unknown>]>;
4864
- [Symbol.iterator](): IterableIterator<[StyleProp<any>, SharedStyle<unknown>]>;
4882
+ keys(): MapIterator<StyleProp<any>>;
4883
+ values(): MapIterator<SharedStyle<unknown>>;
4884
+ entries(): MapIterator<[StyleProp<any>, SharedStyle<unknown>]>;
4885
+ [Symbol.iterator](): MapIterator<[StyleProp<any>, SharedStyle<unknown>]>;
4865
4886
  }
4866
4887
 
4867
4888
  /** @public */
@@ -4885,7 +4906,7 @@ export declare class Rectangle2d extends Polygon2d {
4885
4906
  export declare function refreshPage(): void;
4886
4907
 
4887
4908
  /** @public */
4888
- export declare function releasePointerCapture(element: Element, event: PointerEvent | React_2.PointerEvent<Element>): void;
4909
+ export declare function releasePointerCapture(element: Element, event: PointerEvent | React_3.PointerEvent<Element>): void;
4889
4910
 
4890
4911
  /** @public */
4891
4912
  export declare type RequiredKeys<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
@@ -5028,7 +5049,7 @@ export declare type SelectionEdge = 'bottom' | 'left' | 'right' | 'top';
5028
5049
  export declare type SelectionHandle = SelectionCorner | SelectionEdge;
5029
5050
 
5030
5051
  /** @public */
5031
- export declare function setPointerCapture(element: Element, event: PointerEvent | React_2.PointerEvent<Element>): void;
5052
+ export declare function setPointerCapture(element: Element, event: PointerEvent | React_3.PointerEvent<Element>): void;
5032
5053
 
5033
5054
  /** @public */
5034
5055
  export declare function setRuntimeOverrides(input: Partial<typeof runtime>): void;
@@ -5412,6 +5433,14 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5412
5433
  * @public
5413
5434
  */
5414
5435
  onResizeEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void;
5436
+ /**
5437
+ * A callback called when a shape resize is cancelled.
5438
+ *
5439
+ * @param initial - The shape at the start of the resize.
5440
+ * @param current - The current shape.
5441
+ * @public
5442
+ */
5443
+ onResizeCancel?(initial: Shape, current: Shape): void;
5415
5444
  /**
5416
5445
  * A callback called when a shape starts being translated.
5417
5446
  *
@@ -5438,6 +5467,23 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5438
5467
  * @public
5439
5468
  */
5440
5469
  onTranslateEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void;
5470
+ /**
5471
+ * A callback called when a shape translation is cancelled.
5472
+ *
5473
+ * @param initial - The shape at the start of the translation.
5474
+ * @param current - The current shape.
5475
+ * @public
5476
+ */
5477
+ onTranslateCancel?(initial: Shape, current: Shape): void;
5478
+ /**
5479
+ * A callback called when a shape's handle starts being dragged.
5480
+ *
5481
+ * @param shape - The shape.
5482
+ * @param info - An object containing the handle and whether the handle is 'precise' or not.
5483
+ * @returns A change to apply to the shape, or void.
5484
+ * @public
5485
+ */
5486
+ onHandleDragStart?(shape: Shape, info: TLHandleDragInfo<Shape>): TLShapePartial<Shape> | void;
5441
5487
  /**
5442
5488
  * A callback called when a shape's handle changes.
5443
5489
  *
@@ -5447,6 +5493,23 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5447
5493
  * @public
5448
5494
  */
5449
5495
  onHandleDrag?(shape: Shape, info: TLHandleDragInfo<Shape>): TLShapePartial<Shape> | void;
5496
+ /**
5497
+ * A callback called when a shape's handle finishes being dragged.
5498
+ *
5499
+ * @param current - The current shape.
5500
+ * @param info - An object containing the handle and whether the handle is 'precise' or not.
5501
+ * @returns A change to apply to the shape, or void.
5502
+ * @public
5503
+ */
5504
+ onHandleDragEnd?(current: Shape, info: TLHandleDragInfo<Shape>): TLShapePartial<Shape> | void;
5505
+ /**
5506
+ * A callback called when a shape's handle drag is cancelled.
5507
+ *
5508
+ * @param current - The current shape.
5509
+ * @param info - An object containing the handle and whether the handle is 'precise' or not.
5510
+ * @public
5511
+ */
5512
+ onHandleDragCancel?(current: Shape, info: TLHandleDragInfo<Shape>): void;
5450
5513
  /**
5451
5514
  * A callback called when a shape starts being rotated.
5452
5515
  *
@@ -5473,6 +5536,14 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5473
5536
  * @public
5474
5537
  */
5475
5538
  onRotateEnd?(initial: Shape, current: Shape): TLShapePartial<Shape> | void;
5539
+ /**
5540
+ * A callback called when a shape rotation is cancelled.
5541
+ *
5542
+ * @param initial - The shape at the start of the rotation.
5543
+ * @param current - The current shape.
5544
+ * @public
5545
+ */
5546
+ onRotateCancel?(initial: Shape, current: Shape): void;
5476
5547
  /* Excluded from this release type: onBindingChange */
5477
5548
  /**
5478
5549
  * A callback called when a shape's children change.
@@ -5701,6 +5772,12 @@ export declare abstract class StateNode implements Partial<TLEventHandlers> {
5701
5772
  _currentToolIdMask: Atom<string | undefined, unknown>;
5702
5773
  getCurrentToolIdMask(): string | undefined;
5703
5774
  setCurrentToolIdMask(id: string | undefined): void;
5775
+ /**
5776
+ * Add a child node to this state node.
5777
+ *
5778
+ * @public
5779
+ */
5780
+ addChild(childConstructor: TLStateNodeConstructor): this;
5704
5781
  onWheel?(info: TLWheelEventInfo): void;
5705
5782
  onPointerDown?(info: TLPointerEventInfo): void;
5706
5783
  onPointerMove?(info: TLPointerEventInfo): void;
@@ -5734,7 +5811,7 @@ export declare function suffixSafeId(id: SafeId, suffix: string): SafeId;
5734
5811
  export declare function SVGContainer({ children, className, ...rest }: SVGContainerProps): JSX_2.Element;
5735
5812
 
5736
5813
  /** @public */
5737
- export declare type SVGContainerProps = React_3.ComponentProps<'svg'>;
5814
+ export declare type SVGContainerProps = React_2.ComponentProps<'svg'>;
5738
5815
 
5739
5816
  /** @public */
5740
5817
  export declare interface SvgExportContext {
@@ -5795,10 +5872,9 @@ export declare const TAB_ID: string;
5795
5872
  export declare class TextManager {
5796
5873
  editor: Editor;
5797
5874
  private elm;
5798
- private defaultStyles;
5799
5875
  constructor(editor: Editor);
5876
+ private setElementStyles;
5800
5877
  dispose(): void;
5801
- private resetElmStyles;
5802
5878
  measureText(textToMeasure: string, opts: TLMeasureTextOpts): BoxModel & {
5803
5879
  scrollWidth: number;
5804
5880
  };
@@ -6142,7 +6218,7 @@ export declare interface TLDragShapesOverInfo {
6142
6218
  }
6143
6219
 
6144
6220
  /** @public @react */
6145
- export declare const TldrawEditor: React_2.NamedExoticComponent<TldrawEditorProps>;
6221
+ export declare const TldrawEditor: React_3.NamedExoticComponent<TldrawEditorProps>;
6146
6222
 
6147
6223
  /**
6148
6224
  * Base props for the {@link tldraw#Tldraw} and {@link TldrawEditor} components.
@@ -6419,7 +6495,7 @@ export declare interface TLEditorComponents {
6419
6495
  ShapeIndicator?: ComponentType<TLShapeIndicatorProps> | null;
6420
6496
  ShapeIndicators?: ComponentType | null;
6421
6497
  SnapIndicator?: ComponentType<TLSnapIndicatorProps> | null;
6422
- Spinner?: ComponentType | null;
6498
+ Spinner?: ComponentType<React.SVGProps<SVGSVGElement>> | null;
6423
6499
  SvgDefs?: ComponentType | null;
6424
6500
  ZoomBrush?: ComponentType<TLBrushProps> | null;
6425
6501
  ErrorFallback?: TLErrorFallbackComponent;
@@ -6546,7 +6622,7 @@ export declare const tlenv: {
6546
6622
 
6547
6623
  /** @public */
6548
6624
  export declare interface TLErrorBoundaryProps {
6549
- children: React_3.ReactNode;
6625
+ children: React_2.ReactNode;
6550
6626
  onError?: ((error: unknown) => void) | null;
6551
6627
  fallback: TLErrorFallbackComponent;
6552
6628
  }
@@ -6765,6 +6841,7 @@ export declare interface TLGridProps {
6765
6841
  export declare interface TLHandleDragInfo<T extends TLShape> {
6766
6842
  handle: TLHandle;
6767
6843
  isPrecise: boolean;
6844
+ isCreatingShape: boolean;
6768
6845
  initial?: T | undefined;
6769
6846
  }
6770
6847
 
@@ -7473,6 +7550,25 @@ export declare interface TLTldrawExternalContentSource {
7473
7550
  data: TLContent;
7474
7551
  }
7475
7552
 
7553
+ /** @public */
7554
+ export declare interface TLUpdatePointerOptions {
7555
+ /** Whether to update the pointer immediately, rather than on the next tick. */
7556
+ immediate?: boolean;
7557
+ /**
7558
+ * The point, in screen-space, to update the pointer to. Defaults to the position of the last
7559
+ * pointer event.
7560
+ */
7561
+ point?: VecLike;
7562
+ pointerId?: number;
7563
+ ctrlKey?: boolean;
7564
+ altKey?: boolean;
7565
+ shiftKey?: boolean;
7566
+ metaKey?: boolean;
7567
+ accelKey?: boolean;
7568
+ isPen?: boolean;
7569
+ button?: number;
7570
+ }
7571
+
7476
7572
  /** @public */
7477
7573
  export declare interface TLUrlExternalAsset {
7478
7574
  type: 'url';
@@ -7502,6 +7598,7 @@ export declare interface TLUserPreferences {
7502
7598
  color?: null | string;
7503
7599
  locale?: null | string;
7504
7600
  animationSpeed?: null | number;
7601
+ areKeyboardShortcutsEnabled?: boolean | null;
7505
7602
  edgeScrollSpeed?: null | number;
7506
7603
  colorScheme?: 'dark' | 'light' | 'system';
7507
7604
  isSnapMode?: boolean | null;
@@ -7670,6 +7767,7 @@ export declare class UserPreferencesManager {
7670
7767
  updateUserPreferences(userPreferences: Partial<TLUserPreferences>): void;
7671
7768
  getUserPreferences(): {
7672
7769
  animationSpeed: number;
7770
+ areKeyboardShortcutsEnabled: boolean;
7673
7771
  color: string;
7674
7772
  colorScheme: "dark" | "light" | "system" | undefined;
7675
7773
  id: string;
@@ -7686,6 +7784,7 @@ export declare class UserPreferencesManager {
7686
7784
  */
7687
7785
  getEdgeScrollSpeed(): number;
7688
7786
  getAnimationSpeed(): number;
7787
+ getAreKeyboardShortcutsEnabled(): boolean;
7689
7788
  getId(): string;
7690
7789
  getName(): string;
7691
7790
  getLocale(): string;
package/dist-cjs/index.js CHANGED
@@ -144,6 +144,7 @@ __export(index_exports, {
144
144
  getSvgAsImage: () => import_getSvgAsImage.getSvgAsImage,
145
145
  getSvgPathFromPoints: () => import_getSvgPathFromPoints.getSvgPathFromPoints,
146
146
  getUserPreferences: () => import_TLUserPreferences.getUserPreferences,
147
+ getVerticesCountForArcLength: () => import_geometry_constants.getVerticesCountForArcLength,
147
148
  hardReset: () => import_hardReset.hardReset,
148
149
  hardResetEditor: () => import_hardResetEditor.hardResetEditor,
149
150
  inlineBase64AssetStore: () => import_createTLStore.inlineBase64AssetStore,
@@ -241,11 +242,6 @@ __reExport(index_exports, require("@tldraw/store"), module.exports);
241
242
  __reExport(index_exports, require("@tldraw/tlschema"), module.exports);
242
243
  __reExport(index_exports, require("@tldraw/utils"), module.exports);
243
244
  __reExport(index_exports, require("@tldraw/validate"), module.exports);
244
- var import_TldrawEditor = require("./lib/TldrawEditor");
245
- var import_ErrorBoundary = require("./lib/components/ErrorBoundary");
246
- var import_HTMLContainer = require("./lib/components/HTMLContainer");
247
- var import_MenuClickCapture = require("./lib/components/MenuClickCapture");
248
- var import_SVGContainer = require("./lib/components/SVGContainer");
249
245
  var import_DefaultBackground = require("./lib/components/default-components/DefaultBackground");
250
246
  var import_DefaultBrush = require("./lib/components/default-components/DefaultBrush");
251
247
  var import_DefaultCanvas = require("./lib/components/default-components/DefaultCanvas");
@@ -263,15 +259,19 @@ var import_DefaultShapeIndicators = require("./lib/components/default-components
263
259
  var import_DefaultSnapIndictor = require("./lib/components/default-components/DefaultSnapIndictor");
264
260
  var import_DefaultSpinner = require("./lib/components/default-components/DefaultSpinner");
265
261
  var import_DefaultSvgDefs = require("./lib/components/default-components/DefaultSvgDefs");
266
- var import_TLEditorSnapshot = require("./lib/config/TLEditorSnapshot");
267
- var import_TLSessionStateSnapshot = require("./lib/config/TLSessionStateSnapshot");
268
- var import_TLUserPreferences = require("./lib/config/TLUserPreferences");
262
+ var import_ErrorBoundary = require("./lib/components/ErrorBoundary");
263
+ var import_HTMLContainer = require("./lib/components/HTMLContainer");
264
+ var import_MenuClickCapture = require("./lib/components/MenuClickCapture");
265
+ var import_SVGContainer = require("./lib/components/SVGContainer");
269
266
  var import_createTLStore = require("./lib/config/createTLStore");
270
267
  var import_createTLUser = require("./lib/config/createTLUser");
271
268
  var import_defaultShapes = require("./lib/config/defaultShapes");
269
+ var import_TLEditorSnapshot = require("./lib/config/TLEditorSnapshot");
270
+ var import_TLSessionStateSnapshot = require("./lib/config/TLSessionStateSnapshot");
271
+ var import_TLUserPreferences = require("./lib/config/TLUserPreferences");
272
272
  var import_constants = require("./lib/constants");
273
- var import_Editor = require("./lib/editor/Editor");
274
273
  var import_BindingUtil = require("./lib/editor/bindings/BindingUtil");
274
+ var import_Editor = require("./lib/editor/Editor");
275
275
  var import_ClickManager = require("./lib/editor/managers/ClickManager/ClickManager");
276
276
  var import_EdgeScrollManager = require("./lib/editor/managers/EdgeScrollManager/EdgeScrollManager");
277
277
  var import_FontManager = require("./lib/editor/managers/FontManager/FontManager");
@@ -283,16 +283,16 @@ var import_SnapManager = require("./lib/editor/managers/SnapManager/SnapManager"
283
283
  var import_TextManager = require("./lib/editor/managers/TextManager/TextManager");
284
284
  var import_UserPreferencesManager = require("./lib/editor/managers/UserPreferencesManager/UserPreferencesManager");
285
285
  var import_BaseBoxShapeUtil = require("./lib/editor/shapes/BaseBoxShapeUtil");
286
- var import_ShapeUtil = require("./lib/editor/shapes/ShapeUtil");
287
286
  var import_GroupShapeUtil = require("./lib/editor/shapes/group/GroupShapeUtil");
287
+ var import_ShapeUtil = require("./lib/editor/shapes/ShapeUtil");
288
288
  var import_getPerfectDashProps = require("./lib/editor/shapes/shared/getPerfectDashProps");
289
289
  var import_resizeBox = require("./lib/editor/shapes/shared/resizeBox");
290
290
  var import_resizeScaled = require("./lib/editor/shapes/shared/resizeScaled");
291
291
  var import_BaseBoxShapeTool = require("./lib/editor/tools/BaseBoxShapeTool/BaseBoxShapeTool");
292
292
  var import_Pointing = require("./lib/editor/tools/BaseBoxShapeTool/children/Pointing");
293
293
  var import_StateNode = require("./lib/editor/tools/StateNode");
294
- var import_SvgExportContext = require("./lib/editor/types/SvgExportContext");
295
294
  var import_event_types = require("./lib/editor/types/event-types");
295
+ var import_SvgExportContext = require("./lib/editor/types/SvgExportContext");
296
296
  var import_getSvgAsImage = require("./lib/exports/getSvgAsImage");
297
297
  var import_environment = require("./lib/globals/environment");
298
298
  var import_menus = require("./lib/globals/menus");
@@ -321,8 +321,6 @@ var import_useViewportHeight = require("./lib/hooks/useViewportHeight");
321
321
  var import_LicenseManager = require("./lib/license/LicenseManager");
322
322
  var import_options = require("./lib/options");
323
323
  var import_Box = require("./lib/primitives/Box");
324
- var import_Mat = require("./lib/primitives/Mat");
325
- var import_Vec = require("./lib/primitives/Vec");
326
324
  var import_easings = require("./lib/primitives/easings");
327
325
  var import_Arc2d = require("./lib/primitives/geometry/Arc2d");
328
326
  var import_Circle2d = require("./lib/primitives/geometry/Circle2d");
@@ -330,6 +328,7 @@ var import_CubicBezier2d = require("./lib/primitives/geometry/CubicBezier2d");
330
328
  var import_CubicSpline2d = require("./lib/primitives/geometry/CubicSpline2d");
331
329
  var import_Edge2d = require("./lib/primitives/geometry/Edge2d");
332
330
  var import_Ellipse2d = require("./lib/primitives/geometry/Ellipse2d");
331
+ var import_geometry_constants = require("./lib/primitives/geometry/geometry-constants");
333
332
  var import_Geometry2d = require("./lib/primitives/geometry/Geometry2d");
334
333
  var import_Group2d = require("./lib/primitives/geometry/Group2d");
335
334
  var import_Point2d = require("./lib/primitives/geometry/Point2d");
@@ -338,8 +337,10 @@ var import_Polyline2d = require("./lib/primitives/geometry/Polyline2d");
338
337
  var import_Rectangle2d = require("./lib/primitives/geometry/Rectangle2d");
339
338
  var import_Stadium2d = require("./lib/primitives/geometry/Stadium2d");
340
339
  var import_intersect = require("./lib/primitives/intersect");
340
+ var import_Mat = require("./lib/primitives/Mat");
341
341
  var import_utils2 = require("./lib/primitives/utils");
342
- var import_SharedStylesMap = require("./lib/utils/SharedStylesMap");
342
+ var import_Vec = require("./lib/primitives/Vec");
343
+ var import_TldrawEditor = require("./lib/TldrawEditor");
343
344
  var import_assets = require("./lib/utils/assets");
344
345
  var import_browserCanvasMaxSize = require("./lib/utils/browserCanvasMaxSize");
345
346
  var import_debug_flags = require("./lib/utils/debug-flags");
@@ -356,8 +357,9 @@ var import_reparenting = require("./lib/utils/reparenting");
356
357
  var import_richText = require("./lib/utils/richText");
357
358
  var import_rotation = require("./lib/utils/rotation");
358
359
  var import_runtime = require("./lib/utils/runtime");
359
- var import_LocalIndexedDb = require("./lib/utils/sync/LocalIndexedDb");
360
+ var import_SharedStylesMap = require("./lib/utils/SharedStylesMap");
360
361
  var import_hardReset = require("./lib/utils/sync/hardReset");
362
+ var import_LocalIndexedDb = require("./lib/utils/sync/LocalIndexedDb");
361
363
  var import_uniq = require("./lib/utils/uniq");
362
364
  var import_window_open = require("./lib/utils/window-open");
363
365
  function debugEnableLicensing() {
@@ -365,7 +367,7 @@ function debugEnableLicensing() {
365
367
  }
366
368
  (0, import_utils.registerTldrawLibraryVersion)(
367
369
  "@tldraw/editor",
368
- "3.15.0-canary.5b91d27bf6f0",
370
+ "3.15.0-canary.5c62460ab7f9",
369
371
  "cjs"
370
372
  );
371
373
  //# sourceMappingURL=index.js.map