@tldraw/editor 3.13.0-canary.ce8e6cffa809 → 3.13.0-canary.d6fe56e14603
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 +95 -98
- package/dist-cjs/index.js +7 -22
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/components/Shape.js +12 -8
- package/dist-cjs/lib/components/Shape.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js +21 -2
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +17 -11
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +33 -14
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js.map +2 -2
- package/dist-cjs/lib/editor/managers/TextManager.js +10 -0
- package/dist-cjs/lib/editor/managers/TextManager.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/shared/getPerfectDashProps.js.map +2 -2
- package/dist-cjs/lib/exports/getSvgJsx.js +12 -3
- package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
- package/dist-cjs/lib/primitives/Box.js +16 -0
- package/dist-cjs/lib/primitives/Box.js.map +2 -2
- package/dist-cjs/lib/primitives/Mat.js +1 -1
- package/dist-cjs/lib/primitives/Mat.js.map +2 -2
- package/dist-cjs/lib/primitives/Vec.js +20 -0
- package/dist-cjs/lib/primitives/Vec.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Arc2d.js +2 -2
- package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Circle2d.js +1 -1
- package/dist-cjs/lib/primitives/geometry/Circle2d.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/CubicSpline2d.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/Ellipse2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Geometry2d.js +91 -20
- package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Group2d.js +55 -2
- package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Point2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Polyline2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Stadium2d.js.map +2 -2
- package/dist-cjs/lib/utils/areShapesContentEqual.js +25 -0
- package/dist-cjs/lib/utils/areShapesContentEqual.js.map +7 -0
- package/dist-cjs/lib/utils/debug-flags.js +5 -2
- package/dist-cjs/lib/utils/debug-flags.js.map +2 -2
- package/dist-cjs/lib/utils/nearestMultiple.js +34 -0
- package/dist-cjs/lib/utils/nearestMultiple.js.map +7 -0
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +95 -98
- package/dist-esm/index.mjs +9 -41
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/components/Shape.mjs +12 -8
- package/dist-esm/lib/components/Shape.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +21 -2
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +17 -11
- package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +33 -14
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/TextManager.mjs +10 -0
- package/dist-esm/lib/editor/managers/TextManager.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/shared/getPerfectDashProps.mjs.map +2 -2
- package/dist-esm/lib/exports/getSvgJsx.mjs +12 -3
- package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
- package/dist-esm/lib/primitives/Box.mjs +16 -0
- package/dist-esm/lib/primitives/Box.mjs.map +2 -2
- package/dist-esm/lib/primitives/Mat.mjs +1 -1
- package/dist-esm/lib/primitives/Mat.mjs.map +2 -2
- package/dist-esm/lib/primitives/Vec.mjs +20 -0
- package/dist-esm/lib/primitives/Vec.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Arc2d.mjs +2 -2
- package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Circle2d.mjs +1 -1
- package/dist-esm/lib/primitives/geometry/Circle2d.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/CubicSpline2d.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/Ellipse2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +92 -21
- package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Group2d.mjs +55 -2
- package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Point2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Polyline2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Stadium2d.mjs.map +2 -2
- package/dist-esm/lib/utils/areShapesContentEqual.mjs +5 -0
- package/dist-esm/lib/utils/areShapesContentEqual.mjs.map +7 -0
- package/dist-esm/lib/utils/debug-flags.mjs +5 -2
- package/dist-esm/lib/utils/debug-flags.mjs.map +2 -2
- package/dist-esm/lib/utils/nearestMultiple.mjs +14 -0
- package/dist-esm/lib/utils/nearestMultiple.mjs.map +7 -0
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/editor.css +29 -4
- package/package.json +7 -7
- package/src/index.ts +16 -31
- package/src/lib/components/Shape.tsx +14 -10
- package/src/lib/components/default-components/DefaultCanvas.tsx +21 -2
- package/src/lib/components/default-components/DefaultShapeIndicator.tsx +17 -8
- package/src/lib/editor/Editor.test.ts +1 -1
- package/src/lib/editor/Editor.ts +33 -14
- package/src/lib/editor/managers/SnapManager/HandleSnaps.ts +0 -1
- package/src/lib/editor/managers/TextManager.ts +12 -0
- package/src/lib/editor/shapes/ShapeUtil.ts +22 -2
- package/src/lib/editor/shapes/shared/getPerfectDashProps.ts +9 -9
- package/src/lib/exports/getSvgJsx.tsx +16 -7
- package/src/lib/primitives/Box.ts +20 -0
- package/src/lib/primitives/Mat.ts +5 -4
- package/src/lib/primitives/Vec.ts +23 -0
- package/src/lib/primitives/geometry/Arc2d.ts +5 -5
- package/src/lib/primitives/geometry/Circle2d.ts +4 -4
- package/src/lib/primitives/geometry/CubicBezier2d.ts +4 -4
- package/src/lib/primitives/geometry/CubicSpline2d.ts +3 -3
- package/src/lib/primitives/geometry/Edge2d.ts +3 -3
- package/src/lib/primitives/geometry/Ellipse2d.ts +3 -3
- package/src/lib/primitives/geometry/Geometry2d.test.ts +42 -0
- package/src/lib/primitives/geometry/Geometry2d.ts +123 -35
- package/src/lib/primitives/geometry/Group2d.ts +70 -7
- package/src/lib/primitives/geometry/Point2d.ts +2 -2
- package/src/lib/primitives/geometry/Polyline2d.ts +3 -3
- package/src/lib/primitives/geometry/Stadium2d.ts +3 -3
- package/src/lib/test/currentToolIdMask.test.ts +1 -1
- package/src/lib/test/user.test.ts +1 -1
- package/src/lib/utils/areShapesContentEqual.ts +4 -0
- package/src/lib/utils/debug-flags.ts +7 -2
- package/src/lib/utils/nearestMultiple.ts +13 -0
- package/src/lib/utils/sync/LocalIndexedDb.test.ts +1 -1
- package/src/lib/utils/sync/TLLocalSyncClient.test.ts +1 -1
- package/src/version.ts +3 -3
|
@@ -100,6 +100,7 @@ var import_Group2d = require("../primitives/geometry/Group2d");
|
|
|
100
100
|
var import_intersect = require("../primitives/intersect");
|
|
101
101
|
var import_utils2 = require("../primitives/utils");
|
|
102
102
|
var import_SharedStylesMap = require("../utils/SharedStylesMap");
|
|
103
|
+
var import_areShapesContentEqual = require("../utils/areShapesContentEqual");
|
|
103
104
|
var import_assets = require("../utils/assets");
|
|
104
105
|
var import_debug_flags = require("../utils/debug-flags");
|
|
105
106
|
var import_deepLinks = require("../utils/deepLinks");
|
|
@@ -1737,13 +1738,15 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
1737
1738
|
setEditingShape(shape) {
|
|
1738
1739
|
const id = typeof shape === "string" ? shape : shape?.id ?? null;
|
|
1739
1740
|
this.setRichTextEditor(null);
|
|
1740
|
-
|
|
1741
|
+
const prevEditingShapeId = this.getEditingShapeId();
|
|
1742
|
+
if (id !== prevEditingShapeId) {
|
|
1741
1743
|
if (id) {
|
|
1742
1744
|
const shape2 = this.getShape(id);
|
|
1743
1745
|
if (shape2 && this.getShapeUtil(shape2).canEdit(shape2)) {
|
|
1744
1746
|
this.run(
|
|
1745
1747
|
() => {
|
|
1746
1748
|
this._updateCurrentPageState({ editingShapeId: id });
|
|
1749
|
+
this.getShapeUtil(shape2).onEditStart?.(shape2);
|
|
1747
1750
|
},
|
|
1748
1751
|
{ history: "ignore" }
|
|
1749
1752
|
);
|
|
@@ -1754,6 +1757,12 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
1754
1757
|
() => {
|
|
1755
1758
|
this._updateCurrentPageState({ editingShapeId: null });
|
|
1756
1759
|
this._currentRichTextEditor.set(null);
|
|
1760
|
+
if (prevEditingShapeId) {
|
|
1761
|
+
const prevEditingShape = this.getShape(prevEditingShapeId);
|
|
1762
|
+
if (prevEditingShape) {
|
|
1763
|
+
this.getShapeUtil(prevEditingShape).onEditEnd?.(prevEditingShape);
|
|
1764
|
+
}
|
|
1765
|
+
}
|
|
1757
1766
|
},
|
|
1758
1767
|
{ history: "ignore" }
|
|
1759
1768
|
);
|
|
@@ -3439,7 +3448,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
3439
3448
|
this.fonts.trackFontsForShape(shape2);
|
|
3440
3449
|
return this.getShapeUtil(shape2).getGeometry(shape2, opts);
|
|
3441
3450
|
},
|
|
3442
|
-
{ areRecordsEqual:
|
|
3451
|
+
{ areRecordsEqual: import_areShapesContentEqual.areShapesContentEqual }
|
|
3443
3452
|
);
|
|
3444
3453
|
}
|
|
3445
3454
|
return this._shapeGeometryCaches[context].get(
|
|
@@ -3482,9 +3491,15 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
3482
3491
|
);
|
|
3483
3492
|
}
|
|
3484
3493
|
_getShapeHandlesCache() {
|
|
3485
|
-
return this.store.createComputedCache(
|
|
3486
|
-
|
|
3487
|
-
|
|
3494
|
+
return this.store.createComputedCache(
|
|
3495
|
+
"handles",
|
|
3496
|
+
(shape) => {
|
|
3497
|
+
return this.getShapeUtil(shape).getHandles?.(shape);
|
|
3498
|
+
},
|
|
3499
|
+
{
|
|
3500
|
+
areRecordsEqual: import_areShapesContentEqual.areShapesContentEqual
|
|
3501
|
+
}
|
|
3502
|
+
);
|
|
3488
3503
|
}
|
|
3489
3504
|
/**
|
|
3490
3505
|
* Get the handles (if any) for a shape.
|
|
@@ -4368,9 +4383,15 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
4368
4383
|
}
|
|
4369
4384
|
_getBindingsIndexCache() {
|
|
4370
4385
|
const index = (0, import_bindingsIndex.bindingsIndex)(this);
|
|
4371
|
-
return this.store.createComputedCache(
|
|
4372
|
-
|
|
4373
|
-
|
|
4386
|
+
return this.store.createComputedCache(
|
|
4387
|
+
"bindingsIndex",
|
|
4388
|
+
(shape) => {
|
|
4389
|
+
return index.get().get(shape.id);
|
|
4390
|
+
},
|
|
4391
|
+
// we can ignore the shape equality check here because the index is
|
|
4392
|
+
// computed incrementally based on what bindings are in the store
|
|
4393
|
+
{ areRecordsEqual: () => true }
|
|
4394
|
+
);
|
|
4374
4395
|
}
|
|
4375
4396
|
/**
|
|
4376
4397
|
* Get a binding from the store by its ID if it exists.
|
|
@@ -7445,7 +7466,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
7445
7466
|
const { x: cx, y: cy, z: cz } = (0, import_state.unsafe__withoutCapture)(() => this.getCamera());
|
|
7446
7467
|
const { x: dx, y: dy, z: dz = 0 } = info.delta;
|
|
7447
7468
|
let behavior = wheelBehavior;
|
|
7448
|
-
if (
|
|
7469
|
+
if (info.ctrlKey) behavior = wheelBehavior === "pan" ? "zoom" : "pan";
|
|
7449
7470
|
switch (behavior) {
|
|
7450
7471
|
case "zoom": {
|
|
7451
7472
|
const { x, y } = this.inputs.currentScreenPoint;
|
|
@@ -7526,12 +7547,10 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
7526
7547
|
const { x: cx, y: cy, z: cz } = (0, import_state.unsafe__withoutCapture)(() => this.getCamera());
|
|
7527
7548
|
if (this.inputs.isPanning && this.inputs.isPointing) {
|
|
7528
7549
|
const { currentScreenPoint, previousScreenPoint } = this.inputs;
|
|
7529
|
-
const { panSpeed } = cameraOptions;
|
|
7530
7550
|
const offset = import_Vec.Vec.Sub(currentScreenPoint, previousScreenPoint);
|
|
7531
|
-
this.setCamera(
|
|
7532
|
-
|
|
7533
|
-
|
|
7534
|
-
);
|
|
7551
|
+
this.setCamera(new import_Vec.Vec(cx + offset.x / cz, cy + offset.y / cz, cz), {
|
|
7552
|
+
immediate: true
|
|
7553
|
+
});
|
|
7535
7554
|
this.maybeTrackPerformance("Panning");
|
|
7536
7555
|
return;
|
|
7537
7556
|
}
|