@tldraw/editor 5.4.0 → 5.5.0-canary.05a393565877

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 (67) hide show
  1. package/dist-cjs/index.d.ts +5 -2
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/lib/constants.js +2 -0
  4. package/dist-cjs/lib/constants.js.map +2 -2
  5. package/dist-cjs/lib/editor/Editor.js +9 -6
  6. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  7. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js +10 -6
  8. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +2 -2
  9. package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js +7 -3
  10. package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js.map +2 -2
  11. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +14 -6
  12. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +3 -3
  13. package/dist-cjs/lib/primitives/geometry/Arc2d.js +1 -1
  14. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  15. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +1 -1
  16. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  17. package/dist-cjs/lib/primitives/geometry/Edge2d.js +1 -1
  18. package/dist-cjs/lib/primitives/geometry/Edge2d.js.map +2 -2
  19. package/dist-cjs/lib/primitives/geometry/Group2d.js +8 -5
  20. package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
  21. package/dist-cjs/lib/primitives/geometry/Point2d.js +1 -1
  22. package/dist-cjs/lib/primitives/geometry/Point2d.js.map +2 -2
  23. package/dist-cjs/version.js +3 -3
  24. package/dist-cjs/version.js.map +1 -1
  25. package/dist-esm/index.d.mts +5 -2
  26. package/dist-esm/index.mjs +1 -1
  27. package/dist-esm/lib/constants.mjs +2 -0
  28. package/dist-esm/lib/constants.mjs.map +2 -2
  29. package/dist-esm/lib/editor/Editor.mjs +10 -6
  30. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  31. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs +10 -6
  32. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +2 -2
  33. package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs +7 -3
  34. package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs.map +2 -2
  35. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +14 -6
  36. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +3 -3
  37. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +1 -1
  38. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  39. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +1 -1
  40. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  41. package/dist-esm/lib/primitives/geometry/Edge2d.mjs +1 -1
  42. package/dist-esm/lib/primitives/geometry/Edge2d.mjs.map +2 -2
  43. package/dist-esm/lib/primitives/geometry/Group2d.mjs +12 -6
  44. package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
  45. package/dist-esm/lib/primitives/geometry/Point2d.mjs +1 -1
  46. package/dist-esm/lib/primitives/geometry/Point2d.mjs.map +2 -2
  47. package/dist-esm/version.mjs +3 -3
  48. package/dist-esm/version.mjs.map +1 -1
  49. package/package.json +7 -7
  50. package/src/lib/constants.ts +8 -0
  51. package/src/lib/editor/Editor.ts +19 -9
  52. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +35 -4
  53. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.ts +13 -7
  54. package/src/lib/editor/managers/ThemeManager/ThemeManager.test.ts +53 -0
  55. package/src/lib/editor/managers/ThemeManager/ThemeManager.ts +9 -3
  56. package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +23 -8
  57. package/src/lib/primitives/geometry/Arc2d.test.ts +9 -0
  58. package/src/lib/primitives/geometry/Arc2d.ts +1 -1
  59. package/src/lib/primitives/geometry/CubicBezier2d.test.ts +13 -0
  60. package/src/lib/primitives/geometry/CubicBezier2d.ts +1 -1
  61. package/src/lib/primitives/geometry/Edge2d.test.ts +21 -3
  62. package/src/lib/primitives/geometry/Edge2d.ts +1 -1
  63. package/src/lib/primitives/geometry/Group2d.test.ts +26 -5
  64. package/src/lib/primitives/geometry/Group2d.ts +18 -7
  65. package/src/lib/primitives/geometry/Point2d.test.ts +14 -3
  66. package/src/lib/primitives/geometry/Point2d.ts +1 -1
  67. package/src/version.ts +3 -3
@@ -75,6 +75,7 @@ import {
75
75
  import {
76
76
  DEFAULT_ANIMATION_OPTIONS,
77
77
  DEFAULT_CAMERA_OPTIONS,
78
+ FRAME_MS_60HZ,
78
79
  INTERNAL_POINTER_IDS,
79
80
  LEFT_MOUSE_BUTTON,
80
81
  MIDDLE_MOUSE_BUTTON,
@@ -1657,7 +1658,8 @@ class Editor extends EventEmitter {
1657
1658
  if (direction === "next" || direction === "prev") {
1658
1659
  const shapeIds = readingOrderShapes.map((shape2) => shape2.id);
1659
1660
  const currentIndex = currentShapeId ? shapeIds.indexOf(currentShapeId) : -1;
1660
- const adjacentIndex = (currentIndex + (direction === "next" ? 1 : -1) + shapeIds.length) % shapeIds.length;
1661
+ const startIndex = currentIndex === -1 && direction === "prev" ? 0 : currentIndex;
1662
+ const adjacentIndex = (startIndex + (direction === "next" ? 1 : -1) + shapeIds.length) % shapeIds.length;
1661
1663
  adjacentShapeId = shapeIds[adjacentIndex];
1662
1664
  } else {
1663
1665
  if (!currentShapeId) return;
@@ -2537,14 +2539,16 @@ class Editor extends EventEmitter {
2537
2539
  setCamera(point, opts) {
2538
2540
  const { isLocked } = this._cameraOptions.__unsafe__getWithoutCapture();
2539
2541
  if (isLocked && !opts?.force) return this;
2542
+ const _point = Vec.Cast(point);
2543
+ if (!Number.isFinite(_point.x) || !Number.isFinite(_point.y) || !Number.isFinite(_point.z)) {
2544
+ throw Error(
2545
+ `Editor.setCamera: expected finite values, got (${_point.x}, ${_point.y}, ${_point.z}).`
2546
+ );
2547
+ }
2540
2548
  this.stopCameraAnimation();
2541
2549
  if (this.getInstanceState().followingUserId) {
2542
2550
  this.stopFollowingUser();
2543
2551
  }
2544
- const _point = Vec.Cast(point);
2545
- if (!Number.isFinite(_point.x)) _point.x = 0;
2546
- if (!Number.isFinite(_point.y)) _point.y = 0;
2547
- if (_point.z === void 0 || !Number.isFinite(_point.z)) point.z = this.getZoomLevel();
2548
2552
  const camera = this.getConstrainedCamera(_point, opts);
2549
2553
  if (opts?.animation) {
2550
2554
  const { width, height } = this.getViewportScreenBounds();
@@ -2923,7 +2927,7 @@ class Editor extends EventEmitter {
2923
2927
  newCx += center.x / newCz - center.x / cz;
2924
2928
  newCy += center.y / newCz - center.y / cz;
2925
2929
  }
2926
- currentSpeed *= 1 - friction;
2930
+ currentSpeed *= (1 - friction) ** (elapsed / FRAME_MS_60HZ);
2927
2931
  if (currentSpeed < speedThreshold) {
2928
2932
  cancel();
2929
2933
  } else {