@tldraw/editor 3.13.0-canary.77b2db3d8725 → 3.13.0-canary.87a0019c391d

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 (114) hide show
  1. package/dist-cjs/index.d.ts +97 -84
  2. package/dist-cjs/index.js +22 -7
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +5 -9
  5. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  6. package/dist-cjs/lib/editor/Editor.js +7 -19
  7. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  8. package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js.map +2 -2
  9. package/dist-cjs/lib/editor/managers/TextManager.js +0 -10
  10. package/dist-cjs/lib/editor/managers/TextManager.js.map +2 -2
  11. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/editor/shapes/shared/getPerfectDashProps.js.map +2 -2
  13. package/dist-cjs/lib/hooks/useEditorComponents.js +2 -1
  14. package/dist-cjs/lib/hooks/useEditorComponents.js.map +2 -2
  15. package/dist-cjs/lib/primitives/Box.js +0 -16
  16. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  17. package/dist-cjs/lib/primitives/Mat.js +1 -1
  18. package/dist-cjs/lib/primitives/Mat.js.map +2 -2
  19. package/dist-cjs/lib/primitives/Vec.js +0 -20
  20. package/dist-cjs/lib/primitives/Vec.js.map +2 -2
  21. package/dist-cjs/lib/primitives/geometry/Arc2d.js +2 -2
  22. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  23. package/dist-cjs/lib/primitives/geometry/Circle2d.js +1 -1
  24. package/dist-cjs/lib/primitives/geometry/Circle2d.js.map +2 -2
  25. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +1 -1
  26. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  27. package/dist-cjs/lib/primitives/geometry/CubicSpline2d.js.map +2 -2
  28. package/dist-cjs/lib/primitives/geometry/Edge2d.js +1 -1
  29. package/dist-cjs/lib/primitives/geometry/Edge2d.js.map +2 -2
  30. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js.map +2 -2
  31. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +20 -91
  32. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
  33. package/dist-cjs/lib/primitives/geometry/Group2d.js +2 -55
  34. package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
  35. package/dist-cjs/lib/primitives/geometry/Point2d.js.map +2 -2
  36. package/dist-cjs/lib/primitives/geometry/Polyline2d.js.map +2 -2
  37. package/dist-cjs/lib/primitives/geometry/Stadium2d.js.map +2 -2
  38. package/dist-cjs/lib/utils/debug-flags.js +2 -5
  39. package/dist-cjs/lib/utils/debug-flags.js.map +2 -2
  40. package/dist-cjs/version.js +3 -3
  41. package/dist-cjs/version.js.map +1 -1
  42. package/dist-esm/index.d.mts +97 -84
  43. package/dist-esm/index.mjs +41 -9
  44. package/dist-esm/index.mjs.map +2 -2
  45. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +5 -9
  46. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  47. package/dist-esm/lib/editor/Editor.mjs +7 -19
  48. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  49. package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs.map +2 -2
  50. package/dist-esm/lib/editor/managers/TextManager.mjs +0 -10
  51. package/dist-esm/lib/editor/managers/TextManager.mjs.map +2 -2
  52. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  53. package/dist-esm/lib/editor/shapes/shared/getPerfectDashProps.mjs.map +2 -2
  54. package/dist-esm/lib/hooks/useEditorComponents.mjs +4 -1
  55. package/dist-esm/lib/hooks/useEditorComponents.mjs.map +2 -2
  56. package/dist-esm/lib/primitives/Box.mjs +0 -16
  57. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  58. package/dist-esm/lib/primitives/Mat.mjs +1 -1
  59. package/dist-esm/lib/primitives/Mat.mjs.map +2 -2
  60. package/dist-esm/lib/primitives/Vec.mjs +0 -20
  61. package/dist-esm/lib/primitives/Vec.mjs.map +2 -2
  62. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +2 -2
  63. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  64. package/dist-esm/lib/primitives/geometry/Circle2d.mjs +1 -1
  65. package/dist-esm/lib/primitives/geometry/Circle2d.mjs.map +2 -2
  66. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +1 -1
  67. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  68. package/dist-esm/lib/primitives/geometry/CubicSpline2d.mjs.map +2 -2
  69. package/dist-esm/lib/primitives/geometry/Edge2d.mjs +1 -1
  70. package/dist-esm/lib/primitives/geometry/Edge2d.mjs.map +2 -2
  71. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs.map +2 -2
  72. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +21 -92
  73. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
  74. package/dist-esm/lib/primitives/geometry/Group2d.mjs +2 -55
  75. package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
  76. package/dist-esm/lib/primitives/geometry/Point2d.mjs.map +2 -2
  77. package/dist-esm/lib/primitives/geometry/Polyline2d.mjs.map +2 -2
  78. package/dist-esm/lib/primitives/geometry/Stadium2d.mjs.map +2 -2
  79. package/dist-esm/lib/utils/debug-flags.mjs +2 -5
  80. package/dist-esm/lib/utils/debug-flags.mjs.map +2 -2
  81. package/dist-esm/version.mjs +3 -3
  82. package/dist-esm/version.mjs.map +1 -1
  83. package/editor.css +4 -31
  84. package/package.json +7 -7
  85. package/src/index.ts +31 -16
  86. package/src/lib/components/default-components/DefaultCanvas.tsx +5 -9
  87. package/src/lib/editor/Editor.test.ts +1 -1
  88. package/src/lib/editor/Editor.ts +7 -19
  89. package/src/lib/editor/managers/SnapManager/HandleSnaps.ts +1 -0
  90. package/src/lib/editor/managers/TextManager.ts +0 -12
  91. package/src/lib/editor/shapes/ShapeUtil.ts +1 -9
  92. package/src/lib/editor/shapes/shared/getPerfectDashProps.ts +9 -9
  93. package/src/lib/hooks/useEditorComponents.tsx +5 -2
  94. package/src/lib/primitives/Box.ts +0 -20
  95. package/src/lib/primitives/Mat.ts +4 -5
  96. package/src/lib/primitives/Vec.ts +0 -23
  97. package/src/lib/primitives/geometry/Arc2d.ts +5 -5
  98. package/src/lib/primitives/geometry/Circle2d.ts +4 -4
  99. package/src/lib/primitives/geometry/CubicBezier2d.ts +4 -4
  100. package/src/lib/primitives/geometry/CubicSpline2d.ts +3 -3
  101. package/src/lib/primitives/geometry/Edge2d.ts +3 -3
  102. package/src/lib/primitives/geometry/Ellipse2d.ts +3 -3
  103. package/src/lib/primitives/geometry/Geometry2d.ts +35 -123
  104. package/src/lib/primitives/geometry/Group2d.ts +7 -70
  105. package/src/lib/primitives/geometry/Point2d.ts +2 -2
  106. package/src/lib/primitives/geometry/Polyline2d.ts +3 -3
  107. package/src/lib/primitives/geometry/Stadium2d.ts +3 -3
  108. package/src/lib/test/currentToolIdMask.test.ts +1 -1
  109. package/src/lib/test/user.test.ts +1 -1
  110. package/src/lib/utils/debug-flags.ts +2 -7
  111. package/src/lib/utils/sync/LocalIndexedDb.test.ts +1 -1
  112. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +1 -1
  113. package/src/version.ts +3 -3
  114. package/src/lib/primitives/geometry/Geometry2d.test.ts +0 -42
@@ -1,12 +1,16 @@
1
1
  /// <reference types="react" />
2
2
 
3
3
  import { Atom } from '@tldraw/state';
4
+ import { atom } from '@tldraw/state';
4
5
  import { BoxModel } from '@tldraw/tlschema';
5
6
  import { ComponentType } from 'react';
6
7
  import { Computed } from '@tldraw/state';
8
+ import { computed } from '@tldraw/state';
7
9
  import { Dispatch } from 'react';
8
10
  import { Editor as Editor_2 } from '@tiptap/core';
9
11
  import { EditorProviderProps } from '@tiptap/react';
12
+ import { EffectScheduler } from '@tldraw/state';
13
+ import { EMPTY_ARRAY } from '@tldraw/state';
10
14
  import EventEmitter from 'eventemitter3';
11
15
  import { ExoticComponent } from 'react';
12
16
  import { HistoryEntry } from '@tldraw/store';
@@ -19,6 +23,7 @@ import { NamedExoticComponent } from 'react';
19
23
  import { Node as Node_2 } from '@tiptap/pm/model';
20
24
  import { PerformanceTracker } from '@tldraw/utils';
21
25
  import { PointerEventHandler } from 'react';
26
+ import { react } from '@tldraw/state';
22
27
  import { default as React_2 } from 'react';
23
28
  import * as React_3 from 'react';
24
29
  import { ReactElement } from 'react';
@@ -77,8 +82,18 @@ import { TLStoreSnapshot } from '@tldraw/tlschema';
77
82
  import { TLUnknownBinding } from '@tldraw/tlschema';
78
83
  import { TLUnknownShape } from '@tldraw/tlschema';
79
84
  import { TLVideoAsset } from '@tldraw/tlschema';
85
+ import { track } from '@tldraw/state-react';
86
+ import { transact } from '@tldraw/state';
87
+ import { transaction } from '@tldraw/state';
80
88
  import { UnknownRecord } from '@tldraw/store';
89
+ import { useAtom } from '@tldraw/state-react';
90
+ import { useComputed } from '@tldraw/state-react';
91
+ import { useQuickReactor } from '@tldraw/state-react';
92
+ import { useReactor } from '@tldraw/state-react';
93
+ import { useStateTracking } from '@tldraw/state-react';
94
+ import { useValue } from '@tldraw/state-react';
81
95
  import { VecModel } from '@tldraw/tlschema';
96
+ import { whyAmIRunning } from '@tldraw/state';
82
97
 
83
98
  /* Excluded from this release type: activeElementShouldCaptureKeys */
84
99
 
@@ -121,8 +136,8 @@ export declare class Arc2d extends Geometry2d {
121
136
  start: Vec;
122
137
  sweepFlag: number;
123
138
  });
124
- nearestPoint(point: VecLike): Vec;
125
- hitTestLineSegment(A: VecLike, B: VecLike): boolean;
139
+ nearestPoint(point: Vec): Vec;
140
+ hitTestLineSegment(A: Vec, B: Vec): boolean;
126
141
  getVertices(): Vec[];
127
142
  getSvgPathData(first?: boolean): string;
128
143
  getLength(): number;
@@ -138,6 +153,10 @@ export declare class Arc2d extends Geometry2d {
138
153
  */
139
154
  export declare function areAnglesCompatible(a: number, b: number): boolean;
140
155
 
156
+ export { Atom }
157
+
158
+ export { atom }
159
+
141
160
  /** @public */
142
161
  export declare function average(A: VecLike, B: VecLike): string;
143
162
 
@@ -458,16 +477,12 @@ export declare class Box {
458
477
  set point(val: Vec);
459
478
  get minX(): number;
460
479
  set minX(n: number);
461
- get left(): number;
462
480
  get midX(): number;
463
481
  get maxX(): number;
464
- get right(): number;
465
482
  get minY(): number;
466
483
  set minY(n: number);
467
- get top(): number;
468
484
  get midY(): number;
469
485
  get maxY(): number;
470
- get bottom(): number;
471
486
  get width(): number;
472
487
  set width(n: number);
473
488
  get height(): number;
@@ -563,8 +578,8 @@ export declare class Circle2d extends Geometry2d {
563
578
  });
564
579
  getBounds(): Box;
565
580
  getVertices(): Vec[];
566
- nearestPoint(point: VecLike): Vec;
567
- hitTestLineSegment(A: VecLike, B: VecLike, distance?: number): boolean;
581
+ nearestPoint(point: Vec): Vec;
582
+ hitTestLineSegment(A: Vec, B: Vec, distance?: number): boolean;
568
583
  getSvgPathData(): string;
569
584
  }
570
585
 
@@ -641,6 +656,8 @@ export declare class ClickManager {
641
656
  */
642
657
  export declare function clockwiseAngleDist(a0: number, a1: number): number;
643
658
 
659
+ export { computed }
660
+
644
661
  /**
645
662
  * @public
646
663
  * @react
@@ -728,10 +745,10 @@ export declare class CubicBezier2d extends Polyline2d {
728
745
  });
729
746
  getVertices(): Vec[];
730
747
  midPoint(): Vec;
731
- nearestPoint(A: VecLike): Vec;
748
+ nearestPoint(A: Vec): Vec;
732
749
  getSvgPathData(first?: boolean): string;
733
750
  static GetAtT(segment: CubicBezier2d, t: number): Vec;
734
- getLength(filters?: Geometry2dFilters, precision?: number): number;
751
+ getLength(precision?: number): number;
735
752
  }
736
753
 
737
754
  /** @public */
@@ -744,8 +761,8 @@ export declare class CubicSpline2d extends Geometry2d {
744
761
  get segments(): CubicBezier2d[];
745
762
  getLength(): number;
746
763
  getVertices(): Vec[];
747
- nearestPoint(A: VecLike): Vec;
748
- hitTestLineSegment(A: VecLike, B: VecLike): boolean;
764
+ nearestPoint(A: Vec): Vec;
765
+ hitTestLineSegment(A: Vec, B: Vec): boolean;
749
766
  getSvgPathData(): string;
750
767
  }
751
768
 
@@ -939,8 +956,8 @@ export declare class Edge2d extends Geometry2d {
939
956
  getLength(): number;
940
957
  midPoint(): Vec;
941
958
  getVertices(): Vec[];
942
- nearestPoint(point: VecLike): Vec;
943
- hitTestLineSegment(A: VecLike, B: VecLike, distance?: number): boolean;
959
+ nearestPoint(point: Vec): Vec;
960
+ hitTestLineSegment(A: Vec, B: Vec, distance?: number): boolean;
944
961
  getSvgPathData(first?: boolean): string;
945
962
  }
946
963
 
@@ -3977,6 +3994,8 @@ export declare class Editor extends EventEmitter<TLEventMap> {
3977
3994
  /** @public */
3978
3995
  export declare const EditorContext: React_2.Context<Editor | null>;
3979
3996
 
3997
+ export { EffectScheduler }
3998
+
3980
3999
  /** @public */
3981
4000
  export declare class Ellipse2d extends Geometry2d {
3982
4001
  config: Omit<Geometry2dOptions, 'isClosed'> & {
@@ -3992,13 +4011,15 @@ export declare class Ellipse2d extends Geometry2d {
3992
4011
  _edges?: Edge2d[];
3993
4012
  get edges(): Edge2d[];
3994
4013
  getVertices(): any[];
3995
- nearestPoint(A: VecLike): Vec;
3996
- hitTestLineSegment(A: VecLike, B: VecLike): boolean;
4014
+ nearestPoint(A: Vec): Vec;
4015
+ hitTestLineSegment(A: Vec, B: Vec): boolean;
3997
4016
  getBounds(): Box;
3998
4017
  getLength(): number;
3999
4018
  getSvgPathData(first?: boolean): string;
4000
4019
  }
4001
4020
 
4021
+ export { EMPTY_ARRAY }
4022
+
4002
4023
  /** @public */
4003
4024
  export declare class ErrorBoundary extends React_3.Component<React_3.PropsWithRef<React_3.PropsWithChildren<TLErrorBoundaryProps>>, {
4004
4025
  error: Error | null;
@@ -4066,27 +4087,18 @@ export declare abstract class Geometry2d {
4066
4087
  constructor(opts: Geometry2dOptions);
4067
4088
  isExcludedByFilter(filters?: Geometry2dFilters): boolean;
4068
4089
  abstract getVertices(filters: Geometry2dFilters): Vec[];
4069
- abstract nearestPoint(point: VecLike, _filters?: Geometry2dFilters): Vec;
4070
- hitTestPoint(point: VecLike, margin?: number, hitInside?: boolean, _filters?: Geometry2dFilters): boolean;
4071
- distanceToPoint(point: VecLike, hitInside?: boolean, filters?: Geometry2dFilters): number;
4072
- distanceToLineSegment(A: VecLike, B: VecLike, filters?: Geometry2dFilters): number;
4073
- hitTestLineSegment(A: VecLike, B: VecLike, distance?: number, filters?: Geometry2dFilters): boolean;
4090
+ abstract nearestPoint(point: Vec, _filters?: Geometry2dFilters): Vec;
4091
+ hitTestPoint(point: Vec, margin?: number, hitInside?: boolean, _filters?: Geometry2dFilters): boolean;
4092
+ distanceToPoint(point: Vec, hitInside?: boolean, filters?: Geometry2dFilters): number;
4093
+ distanceToLineSegment(A: Vec, B: Vec, filters?: Geometry2dFilters): number;
4094
+ hitTestLineSegment(A: Vec, B: Vec, distance?: number, filters?: Geometry2dFilters): boolean;
4074
4095
  intersectLineSegment(A: VecLike, B: VecLike, _filters?: Geometry2dFilters): VecLike[];
4075
4096
  intersectCircle(center: VecLike, radius: number, _filters?: Geometry2dFilters): VecLike[];
4076
4097
  intersectPolygon(polygon: VecLike[], _filters?: Geometry2dFilters): VecLike[];
4077
4098
  intersectPolyline(polyline: VecLike[], _filters?: Geometry2dFilters): VecLike[];
4078
- /**
4079
- * Find a point along the edge of the geometry that is a fraction `t` along the entire way round.
4080
- */
4081
- interpolateAlongEdge(t: number, _filters?: Geometry2dFilters): Vec;
4082
- /**
4083
- * Take `point`, find the closest point to it on the edge of the geometry, and return how far
4084
- * along the edge it is as a fraction of the total length.
4085
- */
4086
- uninterpolateAlongEdge(point: VecLike, _filters?: Geometry2dFilters): number;
4087
4099
  /** @deprecated Iterate the vertices instead. */
4088
- nearestPointOnLineSegment(A: VecLike, B: VecLike): Vec;
4089
- isPointInBounds(point: VecLike, margin?: number): boolean;
4100
+ nearestPointOnLineSegment(A: Vec, B: Vec): Vec;
4101
+ isPointInBounds(point: Vec, margin?: number): boolean;
4090
4102
  transform(transform: MatModel, opts?: TransformedGeometry2dOptions): Geometry2d;
4091
4103
  private _vertices;
4092
4104
  get vertices(): Vec[];
@@ -4100,7 +4112,7 @@ export declare abstract class Geometry2d {
4100
4112
  toSimpleSvgPath(): string;
4101
4113
  private _length?;
4102
4114
  get length(): number;
4103
- getLength(_filters?: Geometry2dFilters): number;
4115
+ getLength(): number;
4104
4116
  abstract getSvgPathData(first: boolean): string;
4105
4117
  }
4106
4118
 
@@ -4168,15 +4180,15 @@ export declare function getFreshUserPreferences(): TLUserPreferences;
4168
4180
  export declare function getIncrementedName(name: string, others: string[]): string;
4169
4181
 
4170
4182
  /** @public */
4171
- export declare function getPerfectDashProps(totalLength: number, strokeWidth: number, opts?: {
4172
- closed?: boolean;
4173
- end?: 'none' | 'outset' | 'skip';
4174
- forceSolid?: boolean;
4175
- lengthRatio?: number;
4176
- snap?: number;
4177
- start?: 'none' | 'outset' | 'skip';
4178
- style?: TLDefaultDashStyle;
4179
- }): {
4183
+ export declare function getPerfectDashProps(totalLength: number, strokeWidth: number, opts?: Partial<{
4184
+ closed: boolean;
4185
+ end: 'none' | 'outset' | 'skip';
4186
+ forceSolid: boolean;
4187
+ lengthRatio: number;
4188
+ snap: number;
4189
+ start: 'none' | 'outset' | 'skip';
4190
+ style: TLDefaultDashStyle;
4191
+ }>): {
4180
4192
  strokeDasharray: string;
4181
4193
  strokeDashoffset: string;
4182
4194
  };
@@ -4263,20 +4275,18 @@ export declare class Group2d extends Geometry2d {
4263
4275
  children: Geometry2d[];
4264
4276
  });
4265
4277
  getVertices(filters: Geometry2dFilters): Vec[];
4266
- nearestPoint(point: VecLike, filters?: Geometry2dFilters): Vec;
4267
- distanceToPoint(point: VecLike, hitInside?: boolean, filters?: Geometry2dFilters): number;
4268
- hitTestPoint(point: VecLike, margin: number, hitInside: boolean, filters?: Geometry2dFilters): boolean;
4269
- hitTestLineSegment(A: VecLike, B: VecLike, zoom: number, filters?: Geometry2dFilters): boolean;
4278
+ nearestPoint(point: Vec, filters?: Geometry2dFilters): Vec;
4279
+ distanceToPoint(point: Vec, hitInside?: boolean, filters?: Geometry2dFilters): number;
4280
+ hitTestPoint(point: Vec, margin: number, hitInside: boolean, filters?: Geometry2dFilters): boolean;
4281
+ hitTestLineSegment(A: Vec, B: Vec, zoom: number, filters?: Geometry2dFilters): boolean;
4270
4282
  intersectLineSegment(A: VecLike, B: VecLike, filters?: Geometry2dFilters): VecLike[];
4271
4283
  intersectCircle(center: VecLike, radius: number, filters?: Geometry2dFilters): VecLike[];
4272
4284
  intersectPolygon(polygon: VecLike[], filters?: Geometry2dFilters): VecLike[];
4273
4285
  intersectPolyline(polyline: VecLike[], filters?: Geometry2dFilters): VecLike[];
4274
- interpolateAlongEdge(t: number, filters?: Geometry2dFilters): Vec;
4275
- uninterpolateAlongEdge(point: VecLike, filters?: Geometry2dFilters): number;
4276
4286
  transform(transform: Mat): Geometry2d;
4277
4287
  getArea(): number;
4278
4288
  toSimpleSvgPath(): string;
4279
- getLength(filters?: Geometry2dFilters): number;
4289
+ getLength(): number;
4280
4290
  getSvgPathData(): string;
4281
4291
  }
4282
4292
 
@@ -4581,8 +4591,8 @@ export declare class Mat {
4581
4591
  static Identity(): Mat;
4582
4592
  static Translate(x: number, y: number): Mat;
4583
4593
  static Rotate(r: number, cx?: number, cy?: number): Mat;
4584
- static Scale(x: number, y: number): Mat;
4585
- static Scale(x: number, y: number, cx: number, cy: number): Mat;
4594
+ static Scale(x: number, y: number): MatModel;
4595
+ static Scale(x: number, y: number, cx: number, cy: number): MatModel;
4586
4596
  static Multiply(m1: MatModel, m2: MatModel): MatModel;
4587
4597
  static Inverse(m: MatModel): MatModel;
4588
4598
  static Absolute(m: MatLike): MatModel;
@@ -4677,7 +4687,7 @@ export declare class Point2d extends Geometry2d {
4677
4687
  });
4678
4688
  getVertices(): Vec[];
4679
4689
  nearestPoint(): Vec;
4680
- hitTestLineSegment(A: VecLike, B: VecLike, margin: number): boolean;
4690
+ hitTestLineSegment(A: Vec, B: Vec, margin: number): boolean;
4681
4691
  getSvgPathData(): string;
4682
4692
  }
4683
4693
 
@@ -4722,8 +4732,8 @@ export declare class Polyline2d extends Geometry2d {
4722
4732
  get segments(): Edge2d[];
4723
4733
  getLength(): number;
4724
4734
  getVertices(): Vec[];
4725
- nearestPoint(A: VecLike): Vec;
4726
- hitTestLineSegment(A: VecLike, B: VecLike, distance?: number): boolean;
4735
+ nearestPoint(A: Vec): Vec;
4736
+ hitTestLineSegment(A: Vec, B: Vec, distance?: number): boolean;
4727
4737
  getSvgPathData(): string;
4728
4738
  }
4729
4739
 
@@ -4764,6 +4774,8 @@ export declare function radiansToDegrees(r: number): number;
4764
4774
  */
4765
4775
  export declare function rangeIntersection(a0: number, a1: number, b0: number, b1: number): [number, number] | null;
4766
4776
 
4777
+ export { react }
4778
+
4767
4779
  /**
4768
4780
  * A map of {@link @tldraw/tlschema#StyleProp | StyleProps} to their {@link SharedStyle} values. See
4769
4781
  * {@link Editor.getSharedStyles}.
@@ -5438,14 +5450,7 @@ export declare abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknown
5438
5450
  */
5439
5451
  onClick?(shape: Shape): TLShapePartial<Shape> | void;
5440
5452
  /**
5441
- * A callback called when a shape starts being edited.
5442
- *
5443
- * @param shape - The shape.
5444
- * @public
5445
- */
5446
- onEditStart?(shape: Shape): void;
5447
- /**
5448
- * A callback called when a shape finishes being edited.
5453
+ * A callback called when a shape finishes being editing.
5449
5454
  *
5450
5455
  * @param shape - The shape.
5451
5456
  * @public
@@ -5484,6 +5489,8 @@ export declare function shortAngleDist(a0: number, a1: number): number;
5484
5489
  /** @public */
5485
5490
  export declare const SIDES: readonly ["top", "right", "bottom", "left"];
5486
5491
 
5492
+ export { Signal }
5493
+
5487
5494
  /** @public */
5488
5495
  export declare const SIN: (x: number) => number;
5489
5496
 
@@ -5535,8 +5542,8 @@ export declare class Stadium2d extends Geometry2d {
5535
5542
  height: number;
5536
5543
  width: number;
5537
5544
  });
5538
- nearestPoint(A: VecLike): Vec;
5539
- hitTestLineSegment(A: VecLike, B: VecLike): boolean;
5545
+ nearestPoint(A: Vec): Vec;
5546
+ hitTestLineSegment(A: Vec, B: Vec): boolean;
5540
5547
  getVertices(): Vec[];
5541
5548
  getBounds(): Box;
5542
5549
  getLength(): number;
@@ -5740,7 +5747,6 @@ export declare class TextManager {
5740
5747
  fontWeight: string;
5741
5748
  lineHeight: number;
5742
5749
  minWidth?: null | number;
5743
- otherStyles?: Record<string, string>;
5744
5750
  padding: string;
5745
5751
  }): BoxModel & {
5746
5752
  scrollWidth: number;
@@ -6779,7 +6785,6 @@ export declare interface TLMeasureTextSpanOpts {
6779
6785
  fontStyle: string;
6780
6786
  lineHeight: number;
6781
6787
  textAlign: TLDefaultHorizontalAlignStyle;
6782
- otherStyles?: Record<string, string>;
6783
6788
  }
6784
6789
 
6785
6790
  /** @public */
@@ -7417,6 +7422,12 @@ export declare function toFixed(v: number): number;
7417
7422
  */
7418
7423
  export declare function toPrecision(n: number, precision?: number): number;
7419
7424
 
7425
+ export { track }
7426
+
7427
+ export { transact }
7428
+
7429
+ export { transaction }
7430
+
7420
7431
  /** @public */
7421
7432
  export declare class TransformedGeometry2d extends Geometry2d {
7422
7433
  private readonly geometry;
@@ -7425,13 +7436,13 @@ export declare class TransformedGeometry2d extends Geometry2d {
7425
7436
  private readonly decomposed;
7426
7437
  constructor(geometry: Geometry2d, matrix: MatModel, opts?: TransformedGeometry2dOptions);
7427
7438
  getVertices(filters: Geometry2dFilters): Vec[];
7428
- nearestPoint(point: VecLike, filters?: Geometry2dFilters): Vec;
7429
- hitTestPoint(point: VecLike, margin?: number, hitInside?: boolean, filters?: Geometry2dFilters): boolean;
7430
- distanceToPoint(point: VecLike, hitInside?: boolean, filters?: Geometry2dFilters): number;
7431
- distanceToLineSegment(A: VecLike, B: VecLike, filters?: Geometry2dFilters): number;
7432
- hitTestLineSegment(A: VecLike, B: VecLike, distance?: number, filters?: Geometry2dFilters): boolean;
7433
- intersectLineSegment(A: VecLike, B: VecLike, filters?: Geometry2dFilters): Vec[];
7434
- intersectCircle(center: VecLike, radius: number, filters?: Geometry2dFilters): Vec[];
7439
+ nearestPoint(point: Vec, filters?: Geometry2dFilters): Vec;
7440
+ hitTestPoint(point: Vec, margin?: number, hitInside?: boolean, filters?: Geometry2dFilters): boolean;
7441
+ distanceToPoint(point: Vec, hitInside?: boolean, filters?: Geometry2dFilters): number;
7442
+ distanceToLineSegment(A: Vec, B: Vec, filters?: Geometry2dFilters): number;
7443
+ hitTestLineSegment(A: Vec, B: Vec, distance?: number, filters?: Geometry2dFilters): boolean;
7444
+ intersectLineSegment(A: VecLike, B: VecLike, filters?: Geometry2dFilters): VecLike[];
7445
+ intersectCircle(center: VecLike, radius: number, filters?: Geometry2dFilters): VecLike[];
7435
7446
  intersectPolygon(polygon: VecLike[], filters?: Geometry2dFilters): VecLike[];
7436
7447
  intersectPolyline(polyline: VecLike[], filters?: Geometry2dFilters): VecLike[];
7437
7448
  transform(transform: MatModel, opts?: TransformedGeometry2dOptions): Geometry2d;
@@ -7458,6 +7469,10 @@ export declare function uniq<T>(array: {
7458
7469
  readonly length: number;
7459
7470
  } | null | undefined): T[];
7460
7471
 
7472
+ export { useAtom }
7473
+
7474
+ export { useComputed }
7475
+
7461
7476
  /** @public */
7462
7477
  export declare function useContainer(): HTMLElement;
7463
7478
 
@@ -7527,9 +7542,12 @@ export declare function usePeerIds(): string[];
7527
7542
  */
7528
7543
  export declare function usePresence(userId: string): null | TLInstancePresence;
7529
7544
 
7545
+ export { useQuickReactor }
7546
+
7530
7547
  /* Excluded from this release type: USER_COLORS */
7531
7548
 
7532
7549
  /* Excluded from this release type: useReactiveEvent */
7550
+ export { useReactor }
7533
7551
 
7534
7552
  /* Excluded from this release type: useRefState */
7535
7553
 
@@ -7592,6 +7610,8 @@ export declare function useSelectionEvents(handle: TLSelectionHandle): {
7592
7610
  */
7593
7611
  export declare function useSharedSafeId(id: string): SafeId;
7594
7612
 
7613
+ export { useStateTracking }
7614
+
7595
7615
  /**
7596
7616
  * Returns the current SVG export context. Returns null if the component isn't being rendered for an
7597
7617
  * SVG export.
@@ -7625,6 +7645,8 @@ export declare function useTransform(ref: React.RefObject<HTMLElement | SVGEleme
7625
7645
  */
7626
7646
  export declare function useUniqueSafeId(suffix?: string): SafeId;
7627
7647
 
7648
+ export { useValue }
7649
+
7628
7650
  /** @public */
7629
7651
  export declare function useViewportHeight(): number;
7630
7652
 
@@ -7696,7 +7718,6 @@ export declare class Vec {
7696
7718
  static Per(A: VecLike): Vec;
7697
7719
  static Abs(A: VecLike): Vec;
7698
7720
  static Dist(A: VecLike, B: VecLike): number;
7699
- static ManhattanDist(A: VecLike, B: VecLike): number;
7700
7721
  static DistMin(A: VecLike, B: VecLike, n: number): boolean;
7701
7722
  static Dist2(A: VecLike, B: VecLike): number;
7702
7723
  /**
@@ -7744,15 +7765,7 @@ export declare class Vec {
7744
7765
  static Cast(A: VecLike): Vec;
7745
7766
  static Slope(A: VecLike, B: VecLike): number;
7746
7767
  static IsNaN(A: VecLike): boolean;
7747
- /**
7748
- * Get the angle from position A to position B.
7749
- */
7750
7768
  static Angle(A: VecLike, B: VecLike): number;
7751
- /**
7752
- * Get the angle between vector A and vector B. This will return the smallest angle between the
7753
- * two vectors, between -π and π. The sign indicates direction of angle.
7754
- */
7755
- static AngleBetween(A: VecLike, B: VecLike): number;
7756
7769
  /**
7757
7770
  * Linearly interpolate between two points.
7758
7771
  * @param A - The first point.
@@ -7796,9 +7809,9 @@ export declare class Vec {
7796
7809
  /** @public */
7797
7810
  export declare type VecLike = Vec | VecModel;
7798
7811
 
7812
+ export { whyAmIRunning }
7813
+
7799
7814
 
7800
- export * from "@tldraw/state";
7801
- export * from "@tldraw/state-react";
7802
7815
  export * from "@tldraw/store";
7803
7816
  export * from "@tldraw/tlschema";
7804
7817
  export * from "@tldraw/utils";
package/dist-cjs/index.js CHANGED
@@ -50,11 +50,13 @@ __export(index_exports, {
50
50
  DefaultSpinner: () => import_DefaultSpinner.DefaultSpinner,
51
51
  DefaultSvgDefs: () => import_DefaultSvgDefs.DefaultSvgDefs,
52
52
  EASINGS: () => import_easings.EASINGS,
53
+ EMPTY_ARRAY: () => import_state.EMPTY_ARRAY,
53
54
  EVENT_NAME_MAP: () => import_event_types.EVENT_NAME_MAP,
54
55
  Edge2d: () => import_Edge2d.Edge2d,
55
56
  EdgeScrollManager: () => import_EdgeScrollManager.EdgeScrollManager,
56
57
  Editor: () => import_Editor.Editor,
57
58
  EditorContext: () => import_useEditor.EditorContext,
59
+ EffectScheduler: () => import_state.EffectScheduler,
58
60
  Ellipse2d: () => import_Ellipse2d.Ellipse2d,
59
61
  ErrorBoundary: () => import_ErrorBoundary.ErrorBoundary,
60
62
  ErrorScreen: () => import_TldrawEditor.ErrorScreen,
@@ -103,6 +105,7 @@ __export(index_exports, {
103
105
  applyRotationToSnapshotShapes: () => import_rotation.applyRotationToSnapshotShapes,
104
106
  approximately: () => import_utils2.approximately,
105
107
  areAnglesCompatible: () => import_utils2.areAnglesCompatible,
108
+ atom: () => import_state.atom,
106
109
  average: () => import_utils2.average,
107
110
  canonicalizeRotation: () => import_utils2.canonicalizeRotation,
108
111
  centerOfCircleFromThreePoints: () => import_utils2.centerOfCircleFromThreePoints,
@@ -110,6 +113,7 @@ __export(index_exports, {
110
113
  clampRadians: () => import_utils2.clampRadians,
111
114
  clampToBrowserMaxCanvasSize: () => import_browserCanvasMaxSize.clampToBrowserMaxCanvasSize,
112
115
  clockwiseAngleDist: () => import_utils2.clockwiseAngleDist,
116
+ computed: () => import_state.computed,
113
117
  coreShapes: () => import_defaultShapes.coreShapes,
114
118
  counterClockwiseAngleDist: () => import_utils2.counterClockwiseAngleDist,
115
119
  createDeepLinkString: () => import_deepLinks.createDeepLinkString,
@@ -172,6 +176,7 @@ __export(index_exports, {
172
176
  preventDefault: () => import_dom.preventDefault,
173
177
  radiansToDegrees: () => import_utils2.radiansToDegrees,
174
178
  rangeIntersection: () => import_utils2.rangeIntersection,
179
+ react: () => import_state.react,
175
180
  refreshPage: () => import_refreshPage.refreshPage,
176
181
  releasePointerCapture: () => import_dom.releasePointerCapture,
177
182
  resizeBox: () => import_resizeBox.resizeBox,
@@ -192,7 +197,12 @@ __export(index_exports, {
192
197
  toDomPrecision: () => import_utils2.toDomPrecision,
193
198
  toFixed: () => import_utils2.toFixed,
194
199
  toPrecision: () => import_utils2.toPrecision,
200
+ track: () => import_state_react.track,
201
+ transact: () => import_state.transact,
202
+ transaction: () => import_state.transaction,
195
203
  uniq: () => import_uniq.uniq,
204
+ useAtom: () => import_state_react.useAtom,
205
+ useComputed: () => import_state_react.useComputed,
196
206
  useContainer: () => import_useContainer.useContainer,
197
207
  useContainerIfExists: () => import_useContainer.useContainerIfExists,
198
208
  useDelaySvgExport: () => import_SvgExportContext.useDelaySvgExport,
@@ -210,20 +220,25 @@ __export(index_exports, {
210
220
  usePassThroughWheelEvents: () => import_usePassThroughWheelEvents.usePassThroughWheelEvents,
211
221
  usePeerIds: () => import_usePeerIds.usePeerIds,
212
222
  usePresence: () => import_usePresence.usePresence,
223
+ useQuickReactor: () => import_state_react.useQuickReactor,
213
224
  useReactiveEvent: () => import_useEvent.useReactiveEvent,
225
+ useReactor: () => import_state_react.useReactor,
214
226
  useRefState: () => import_useRefState.useRefState,
215
227
  useSelectionEvents: () => import_useSelectionEvents.useSelectionEvents,
216
228
  useShallowArrayIdentity: () => import_useIdentity.useShallowArrayIdentity,
217
229
  useShallowObjectIdentity: () => import_useIdentity.useShallowObjectIdentity,
218
230
  useSharedSafeId: () => import_useSafeId.useSharedSafeId,
231
+ useStateTracking: () => import_state_react.useStateTracking,
219
232
  useSvgExportContext: () => import_SvgExportContext.useSvgExportContext,
220
233
  useTLSchemaFromUtils: () => import_useTLStore.useTLSchemaFromUtils,
221
234
  useTLStore: () => import_useTLStore.useTLStore,
222
235
  useTldrawUser: () => import_createTLUser.useTldrawUser,
223
236
  useTransform: () => import_useTransform.useTransform,
224
237
  useUniqueSafeId: () => import_useSafeId.useUniqueSafeId,
238
+ useValue: () => import_state_react.useValue,
225
239
  useViewportHeight: () => import_useViewportHeight.useViewportHeight,
226
- userTypeValidator: () => import_TLUserPreferences.userTypeValidator
240
+ userTypeValidator: () => import_TLUserPreferences.userTypeValidator,
241
+ whyAmIRunning: () => import_state.whyAmIRunning
227
242
  });
228
243
  module.exports = __toCommonJS(index_exports);
229
244
  var import_utils = require("@tldraw/utils");
@@ -232,8 +247,11 @@ var import_flat_map = require("core-js/stable/array/flat-map.js");
232
247
  var import_flat = require("core-js/stable/array/flat.js");
233
248
  var import_at2 = require("core-js/stable/string/at.js");
234
249
  var import_replace_all = require("core-js/stable/string/replace-all.js");
235
- __reExport(index_exports, require("@tldraw/state"), module.exports);
236
- __reExport(index_exports, require("@tldraw/state-react"), module.exports);
250
+ var import_state = require("@tldraw/state");
251
+ var import_state_react = require("@tldraw/state-react");
252
+ var import_resizeScaled = require("./lib/editor/shapes/shared/resizeScaled");
253
+ var import_richText = require("./lib/utils/richText");
254
+ var import_LocalIndexedDb = require("./lib/utils/sync/LocalIndexedDb");
237
255
  __reExport(index_exports, require("@tldraw/store"), module.exports);
238
256
  __reExport(index_exports, require("@tldraw/tlschema"), module.exports);
239
257
  __reExport(index_exports, require("@tldraw/utils"), module.exports);
@@ -284,7 +302,6 @@ var import_ShapeUtil = require("./lib/editor/shapes/ShapeUtil");
284
302
  var import_GroupShapeUtil = require("./lib/editor/shapes/group/GroupShapeUtil");
285
303
  var import_getPerfectDashProps = require("./lib/editor/shapes/shared/getPerfectDashProps");
286
304
  var import_resizeBox = require("./lib/editor/shapes/shared/resizeBox");
287
- var import_resizeScaled = require("./lib/editor/shapes/shared/resizeScaled");
288
305
  var import_BaseBoxShapeTool = require("./lib/editor/tools/BaseBoxShapeTool/BaseBoxShapeTool");
289
306
  var import_Pointing = require("./lib/editor/tools/BaseBoxShapeTool/children/Pointing");
290
307
  var import_StateNode = require("./lib/editor/tools/StateNode");
@@ -349,10 +366,8 @@ var import_hardResetEditor = require("./lib/utils/hardResetEditor");
349
366
  var import_keyboard = require("./lib/utils/keyboard");
350
367
  var import_normalizeWheel = require("./lib/utils/normalizeWheel");
351
368
  var import_refreshPage = require("./lib/utils/refreshPage");
352
- var import_richText = require("./lib/utils/richText");
353
369
  var import_rotation = require("./lib/utils/rotation");
354
370
  var import_runtime = require("./lib/utils/runtime");
355
- var import_LocalIndexedDb = require("./lib/utils/sync/LocalIndexedDb");
356
371
  var import_hardReset = require("./lib/utils/sync/hardReset");
357
372
  var import_uniq = require("./lib/utils/uniq");
358
373
  var import_window_open = require("./lib/utils/window-open");
@@ -361,7 +376,7 @@ function debugEnableLicensing() {
361
376
  }
362
377
  (0, import_utils.registerTldrawLibraryVersion)(
363
378
  "@tldraw/editor",
364
- "3.13.0-canary.77b2db3d8725",
379
+ "3.13.0-canary.87a0019c391d",
365
380
  "cjs"
366
381
  );
367
382
  //# sourceMappingURL=index.js.map