@tldraw/editor 3.15.0-next.f1dfcef63951 → 3.15.1

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 (143) hide show
  1. package/dist-cjs/index.d.ts +58 -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 +24 -8
  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/tools/StateNode.js +20 -1
  33. package/dist-cjs/lib/editor/tools/StateNode.js.map +2 -2
  34. package/dist-cjs/lib/hooks/useEditorComponents.js.map +1 -1
  35. package/dist-cjs/lib/license/Watermark.js +2 -2
  36. package/dist-cjs/lib/license/Watermark.js.map +2 -2
  37. package/dist-cjs/lib/primitives/geometry/Arc2d.js +1 -1
  38. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  39. package/dist-cjs/lib/primitives/geometry/Circle2d.js +1 -1
  40. package/dist-cjs/lib/primitives/geometry/Circle2d.js.map +2 -2
  41. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +3 -1
  42. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  43. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js +1 -1
  44. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js.map +2 -2
  45. package/dist-cjs/lib/primitives/geometry/geometry-constants.js +2 -2
  46. package/dist-cjs/lib/primitives/geometry/geometry-constants.js.map +2 -2
  47. package/dist-cjs/lib/primitives/intersect.js +4 -4
  48. package/dist-cjs/lib/primitives/intersect.js.map +2 -2
  49. package/dist-cjs/lib/primitives/utils.js +4 -0
  50. package/dist-cjs/lib/primitives/utils.js.map +2 -2
  51. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +0 -1
  52. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
  53. package/dist-cjs/version.js +3 -3
  54. package/dist-cjs/version.js.map +1 -1
  55. package/dist-esm/index.d.mts +58 -44
  56. package/dist-esm/index.mjs +43 -41
  57. package/dist-esm/index.mjs.map +2 -2
  58. package/dist-esm/lib/components/SVGContainer.mjs +1 -1
  59. package/dist-esm/lib/components/SVGContainer.mjs.map +2 -2
  60. package/dist-esm/lib/components/default-components/DefaultBrush.mjs +1 -1
  61. package/dist-esm/lib/components/default-components/DefaultBrush.mjs.map +2 -2
  62. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +1 -1
  63. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  64. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  65. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +2 -2
  66. package/dist-esm/lib/components/default-components/DefaultCursor.mjs +1 -1
  67. package/dist-esm/lib/components/default-components/DefaultCursor.mjs.map +2 -2
  68. package/dist-esm/lib/components/default-components/DefaultGrid.mjs +1 -1
  69. package/dist-esm/lib/components/default-components/DefaultGrid.mjs.map +2 -2
  70. package/dist-esm/lib/components/default-components/DefaultHandles.mjs +1 -1
  71. package/dist-esm/lib/components/default-components/DefaultHandles.mjs.map +2 -2
  72. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +1 -1
  73. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  74. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs +1 -1
  75. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs.map +2 -2
  76. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs +17 -15
  77. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs.map +2 -2
  78. package/dist-esm/lib/config/TLUserPreferences.mjs +7 -1
  79. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  80. package/dist-esm/lib/editor/Editor.mjs +24 -8
  81. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  82. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +96 -101
  83. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
  84. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +7 -2
  85. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  86. package/dist-esm/lib/editor/tools/StateNode.mjs +20 -1
  87. package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
  88. package/dist-esm/lib/hooks/useEditorComponents.mjs.map +1 -1
  89. package/dist-esm/lib/license/Watermark.mjs +2 -2
  90. package/dist-esm/lib/license/Watermark.mjs.map +2 -2
  91. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +2 -2
  92. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  93. package/dist-esm/lib/primitives/geometry/Circle2d.mjs +2 -2
  94. package/dist-esm/lib/primitives/geometry/Circle2d.mjs.map +2 -2
  95. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +3 -1
  96. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  97. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs +2 -2
  98. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs.map +2 -2
  99. package/dist-esm/lib/primitives/geometry/geometry-constants.mjs +2 -2
  100. package/dist-esm/lib/primitives/geometry/geometry-constants.mjs.map +2 -2
  101. package/dist-esm/lib/primitives/intersect.mjs +5 -5
  102. package/dist-esm/lib/primitives/intersect.mjs.map +2 -2
  103. package/dist-esm/lib/primitives/utils.mjs +4 -0
  104. package/dist-esm/lib/primitives/utils.mjs.map +2 -2
  105. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +0 -1
  106. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
  107. package/dist-esm/version.mjs +3 -3
  108. package/dist-esm/version.mjs.map +1 -1
  109. package/editor.css +17 -4
  110. package/package.json +9 -8
  111. package/src/index.ts +63 -62
  112. package/src/lib/components/SVGContainer.tsx +1 -1
  113. package/src/lib/components/default-components/DefaultBrush.tsx +1 -1
  114. package/src/lib/components/default-components/DefaultCanvas.tsx +1 -1
  115. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  116. package/src/lib/components/default-components/DefaultCursor.tsx +1 -1
  117. package/src/lib/components/default-components/DefaultGrid.tsx +1 -1
  118. package/src/lib/components/default-components/DefaultHandles.tsx +5 -1
  119. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +1 -1
  120. package/src/lib/components/default-components/DefaultSnapIndictor.tsx +1 -1
  121. package/src/lib/components/default-components/DefaultSpinner.tsx +12 -12
  122. package/src/lib/config/TLUserPreferences.ts +7 -0
  123. package/src/lib/editor/Editor.test.ts +407 -0
  124. package/src/lib/editor/Editor.ts +35 -9
  125. package/src/lib/editor/managers/TextManager/TextManager.ts +108 -128
  126. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +21 -0
  127. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +8 -0
  128. package/src/lib/editor/tools/StateNode.test.ts +285 -0
  129. package/src/lib/editor/tools/StateNode.ts +27 -1
  130. package/src/lib/hooks/useEditorComponents.tsx +1 -1
  131. package/src/lib/license/LicenseManager.test.ts +1 -1
  132. package/src/lib/license/Watermark.tsx +2 -2
  133. package/src/lib/primitives/geometry/Arc2d.ts +2 -2
  134. package/src/lib/primitives/geometry/Circle2d.ts +2 -2
  135. package/src/lib/primitives/geometry/CubicBezier2d.ts +4 -1
  136. package/src/lib/primitives/geometry/Ellipse2d.ts +2 -2
  137. package/src/lib/primitives/geometry/geometry-constants.ts +2 -1
  138. package/src/lib/primitives/intersect.test.ts +946 -0
  139. package/src/lib/primitives/intersect.ts +12 -5
  140. package/src/lib/primitives/utils.ts +11 -0
  141. package/src/lib/utils/sync/TLLocalSyncClient.ts +0 -1
  142. package/src/version.ts +3 -3
  143. package/src/lib/test/currentToolIdMask.test.ts +0 -49
@@ -69,7 +69,7 @@ export interface TLEditorComponents {
69
69
  ShapeIndicator?: ComponentType<TLShapeIndicatorProps> | null
70
70
  ShapeIndicators?: ComponentType | null
71
71
  SnapIndicator?: ComponentType<TLSnapIndicatorProps> | null
72
- Spinner?: ComponentType | null
72
+ Spinner?: ComponentType<React.SVGProps<SVGSVGElement>> | null
73
73
  SvgDefs?: ComponentType | null
74
74
  ZoomBrush?: ComponentType<TLBrushProps> | null
75
75
 
@@ -417,7 +417,7 @@ function importPrivateKey(pemContents: string) {
417
417
  // base64 decode the string to get the binary data
418
418
  const binaryDerString = atob(pemContents)
419
419
  // convert from a binary string to an ArrayBuffer
420
- const binaryDer = str2ab(binaryDerString) as Uint8Array
420
+ const binaryDer = str2ab(binaryDerString)
421
421
 
422
422
  return crypto.subtle.importKey(
423
423
  'pkcs8',
@@ -143,7 +143,7 @@ To remove the watermark, please purchase a license at tldraw.dev.
143
143
  }
144
144
 
145
145
  .${className}:hover > button {
146
- animation: delayed_link 0.2s forwards ease-in-out;
146
+ animation: ${className}_delayed_link 0.2s forwards ease-in-out;
147
147
  animation-delay: 0.32s;
148
148
  }
149
149
 
@@ -153,7 +153,7 @@ To remove the watermark, please purchase a license at tldraw.dev.
153
153
  }
154
154
 
155
155
 
156
- @keyframes delayed_link {
156
+ @keyframes ${className}_delayed_link {
157
157
  0% {
158
158
  cursor: inherit;
159
159
  opacity: .38;
@@ -2,7 +2,7 @@ import { Vec, VecLike } from '../Vec'
2
2
  import { intersectLineSegmentCircle } from '../intersect'
3
3
  import { getArcMeasure, getPointInArcT, getPointOnCircle } from '../utils'
4
4
  import { Geometry2d, Geometry2dOptions } from './Geometry2d'
5
- import { getVerticesCountForLength } from './geometry-constants'
5
+ import { getVerticesCountForArcLength } from './geometry-constants'
6
6
 
7
7
  /** @public */
8
8
  export class Arc2d extends Geometry2d {
@@ -94,7 +94,7 @@ export class Arc2d extends Geometry2d {
94
94
  getVertices(): Vec[] {
95
95
  const { _center, _measure: measure, length, _radius: radius, _angleStart: angleStart } = this
96
96
  const vertices: Vec[] = []
97
- for (let i = 0, n = getVerticesCountForLength(Math.abs(length)); i < n + 1; i++) {
97
+ for (let i = 0, n = getVerticesCountForArcLength(Math.abs(length)); i < n + 1; i++) {
98
98
  const t = (i / n) * measure
99
99
  const angle = angleStart + t
100
100
  vertices.push(getPointOnCircle(_center, radius, angle))
@@ -3,7 +3,7 @@ import { Vec, VecLike } from '../Vec'
3
3
  import { intersectLineSegmentCircle } from '../intersect'
4
4
  import { PI2, getPointOnCircle } from '../utils'
5
5
  import { Geometry2d, Geometry2dOptions } from './Geometry2d'
6
- import { getVerticesCountForLength } from './geometry-constants'
6
+ import { getVerticesCountForArcLength } from './geometry-constants'
7
7
 
8
8
  /** @public */
9
9
  export class Circle2d extends Geometry2d {
@@ -36,7 +36,7 @@ export class Circle2d extends Geometry2d {
36
36
  const { _center, _radius: radius } = this
37
37
  const perimeter = PI2 * radius
38
38
  const vertices: Vec[] = []
39
- for (let i = 0, n = getVerticesCountForLength(perimeter); i < n; i++) {
39
+ for (let i = 0, n = getVerticesCountForArcLength(perimeter); i < n; i++) {
40
40
  const angle = (i / n) * PI2
41
41
  vertices.push(getPointOnCircle(_center, radius, angle))
42
42
  }
@@ -8,6 +8,7 @@ export class CubicBezier2d extends Polyline2d {
8
8
  private _b: Vec
9
9
  private _c: Vec
10
10
  private _d: Vec
11
+ private _resolution: number
11
12
 
12
13
  constructor(
13
14
  config: Omit<Geometry2dOptions, 'isFilled' | 'isClosed'> & {
@@ -15,6 +16,7 @@ export class CubicBezier2d extends Polyline2d {
15
16
  cp1: Vec
16
17
  cp2: Vec
17
18
  end: Vec
19
+ resolution?: number
18
20
  }
19
21
  ) {
20
22
  const { start: a, cp1: b, cp2: c, end: d } = config
@@ -24,13 +26,14 @@ export class CubicBezier2d extends Polyline2d {
24
26
  this._b = b
25
27
  this._c = c
26
28
  this._d = d
29
+ this._resolution = config.resolution ?? 10
27
30
  }
28
31
 
29
32
  override getVertices() {
30
33
  const vertices = [] as Vec[]
31
34
  const { _a: a, _b: b, _c: c, _d: d } = this
32
35
  // we'll always use ten vertices for each bezier curve
33
- for (let i = 0, n = 10; i <= n; i++) {
36
+ for (let i = 0, n = this._resolution; i <= n; i++) {
34
37
  const t = i / n
35
38
  vertices.push(
36
39
  new Vec(
@@ -3,7 +3,7 @@ import { Vec, VecLike } from '../Vec'
3
3
  import { PI, PI2, clamp, perimeterOfEllipse } from '../utils'
4
4
  import { Edge2d } from './Edge2d'
5
5
  import { Geometry2d, Geometry2dOptions } from './Geometry2d'
6
- import { getVerticesCountForLength } from './geometry-constants'
6
+ import { getVerticesCountForArcLength } from './geometry-constants'
7
7
 
8
8
  /** @public */
9
9
  export class Ellipse2d extends Geometry2d {
@@ -47,7 +47,7 @@ export class Ellipse2d extends Geometry2d {
47
47
  const q = Math.pow(cx - cy, 2) / Math.pow(cx + cy, 2)
48
48
  const p = PI * (cx + cy) * (1 + (3 * q) / (10 + Math.sqrt(4 - 3 * q)))
49
49
  // Number of points
50
- const len = getVerticesCountForLength(p)
50
+ const len = getVerticesCountForArcLength(p)
51
51
  // Size of step
52
52
  const step = PI2 / len
53
53
 
@@ -1,6 +1,7 @@
1
1
  const SPACING = 20
2
2
  const MIN_COUNT = 8
3
3
 
4
- export function getVerticesCountForLength(length: number, spacing = SPACING) {
4
+ /** @internal */
5
+ export function getVerticesCountForArcLength(length: number, spacing = SPACING) {
5
6
  return Math.max(MIN_COUNT, Math.ceil(length / spacing))
6
7
  }