@tldraw/editor 5.4.0 → 5.5.0-canary.022e164c8709
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.
- package/dist-cjs/index.d.ts +5 -2
- package/dist-cjs/index.js +1 -1
- package/dist-cjs/lib/constants.js +2 -0
- package/dist-cjs/lib/constants.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +13 -9
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js +10 -6
- package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js +7 -3
- package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +14 -6
- package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +3 -3
- package/dist-cjs/lib/primitives/geometry/Arc2d.js +1 -1
- package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +1 -1
- package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Edge2d.js +1 -1
- package/dist-cjs/lib/primitives/geometry/Edge2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Group2d.js +8 -5
- package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Point2d.js +1 -1
- package/dist-cjs/lib/primitives/geometry/Point2d.js.map +2 -2
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +5 -2
- package/dist-esm/index.mjs +1 -1
- package/dist-esm/lib/constants.mjs +2 -0
- package/dist-esm/lib/constants.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +14 -9
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs +10 -6
- package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs +7 -3
- package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +14 -6
- package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +3 -3
- package/dist-esm/lib/primitives/geometry/Arc2d.mjs +1 -1
- package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +1 -1
- package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Edge2d.mjs +1 -1
- package/dist-esm/lib/primitives/geometry/Edge2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Group2d.mjs +12 -6
- package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Point2d.mjs +1 -1
- package/dist-esm/lib/primitives/geometry/Point2d.mjs.map +2 -2
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/package.json +7 -7
- package/src/lib/constants.ts +8 -0
- package/src/lib/editor/Editor.ts +28 -13
- package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +35 -4
- package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.ts +13 -7
- package/src/lib/editor/managers/ThemeManager/ThemeManager.test.ts +53 -0
- package/src/lib/editor/managers/ThemeManager/ThemeManager.ts +9 -3
- package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +23 -8
- package/src/lib/primitives/geometry/Arc2d.test.ts +9 -0
- package/src/lib/primitives/geometry/Arc2d.ts +1 -1
- package/src/lib/primitives/geometry/CubicBezier2d.test.ts +13 -0
- package/src/lib/primitives/geometry/CubicBezier2d.ts +1 -1
- package/src/lib/primitives/geometry/Edge2d.test.ts +21 -3
- package/src/lib/primitives/geometry/Edge2d.ts +1 -1
- package/src/lib/primitives/geometry/Group2d.test.ts +26 -5
- package/src/lib/primitives/geometry/Group2d.ts +18 -7
- package/src/lib/primitives/geometry/Point2d.test.ts +14 -3
- package/src/lib/primitives/geometry/Point2d.ts +1 -1
- 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
|
|
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 {
|
|
@@ -2957,6 +2961,7 @@ class Editor extends EventEmitter {
|
|
|
2957
2961
|
}
|
|
2958
2962
|
const isOnSamePage = presence.currentPageId === this.getCurrentPageId();
|
|
2959
2963
|
if (!isOnSamePage) {
|
|
2964
|
+
this.markHistoryStoppingPoint("change-page");
|
|
2960
2965
|
this.setCurrentPage(presence.currentPageId);
|
|
2961
2966
|
}
|
|
2962
2967
|
if (opts && opts.animation && !isOnSamePage) {
|
|
@@ -5397,7 +5402,7 @@ class Editor extends EventEmitter {
|
|
|
5397
5402
|
const shapesMovingTogether = [shape];
|
|
5398
5403
|
const boundsOfShapesMovingTogether = [shapePageBounds];
|
|
5399
5404
|
this.collectShapesViaArrowBindings({
|
|
5400
|
-
bindings: this.
|
|
5405
|
+
bindings: this.getBindingsInvolvingShape(shape.id, "arrow"),
|
|
5401
5406
|
initialShapes: freshShapes,
|
|
5402
5407
|
resultShapes: shapesMovingTogether,
|
|
5403
5408
|
resultBounds: boundsOfShapesMovingTogether,
|
|
@@ -8334,8 +8339,8 @@ class Editor extends EventEmitter {
|
|
|
8334
8339
|
break;
|
|
8335
8340
|
}
|
|
8336
8341
|
case "keyboard": {
|
|
8337
|
-
if (info.
|
|
8338
|
-
if (info.
|
|
8342
|
+
if (info.code === "ShiftRight") info.code = "ShiftLeft";
|
|
8343
|
+
if (info.code === "AltRight") info.code = "AltLeft";
|
|
8339
8344
|
if (info.code === "ControlRight") info.code = "ControlLeft";
|
|
8340
8345
|
if (info.code === "MetaRight") info.code = "MetaLeft";
|
|
8341
8346
|
switch (info.name) {
|