@tldraw/editor 3.13.0-canary.bbec36f93805 → 3.13.0-canary.bd7655d74283
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 +109 -111
- 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 +36 -7
- 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 +40 -15
- 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/hooks/useEditorComponents.js +16 -16
- package/dist-cjs/lib/hooks/useEditorComponents.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 +109 -111
- 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 +36 -7
- 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 +40 -15
- 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/hooks/useEditorComponents.mjs +16 -18
- package/dist-esm/lib/hooks/useEditorComponents.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 +34 -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 +41 -7
- 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 +40 -15
- 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/hooks/useEditorComponents.tsx +33 -32
- 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");
|
|
@@ -423,7 +424,6 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
423
424
|
) : getShapeVisibility;
|
|
424
425
|
this.options = { ...import_options.defaultTldrawOptions, ...options };
|
|
425
426
|
this.store = store;
|
|
426
|
-
this.disposables.add(this.store.dispose.bind(this.store));
|
|
427
427
|
this.history = new import_HistoryManager.HistoryManager({
|
|
428
428
|
store,
|
|
429
429
|
annotateError: (error) => {
|
|
@@ -835,6 +835,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
835
835
|
dispose() {
|
|
836
836
|
this.disposables.forEach((dispose) => dispose());
|
|
837
837
|
this.disposables.clear();
|
|
838
|
+
this.store.dispose();
|
|
838
839
|
this.isDisposed = true;
|
|
839
840
|
}
|
|
840
841
|
getShapeUtil(arg) {
|
|
@@ -1737,13 +1738,21 @@ 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
|
+
if (prevEditingShapeId) {
|
|
1750
|
+
const prevEditingShape = this.getShape(prevEditingShapeId);
|
|
1751
|
+
if (prevEditingShape) {
|
|
1752
|
+
this.getShapeUtil(prevEditingShape).onEditEnd?.(prevEditingShape);
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
this.getShapeUtil(shape2).onEditStart?.(shape2);
|
|
1747
1756
|
},
|
|
1748
1757
|
{ history: "ignore" }
|
|
1749
1758
|
);
|
|
@@ -1754,6 +1763,12 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
1754
1763
|
() => {
|
|
1755
1764
|
this._updateCurrentPageState({ editingShapeId: null });
|
|
1756
1765
|
this._currentRichTextEditor.set(null);
|
|
1766
|
+
if (prevEditingShapeId) {
|
|
1767
|
+
const prevEditingShape = this.getShape(prevEditingShapeId);
|
|
1768
|
+
if (prevEditingShape) {
|
|
1769
|
+
this.getShapeUtil(prevEditingShape).onEditEnd?.(prevEditingShape);
|
|
1770
|
+
}
|
|
1771
|
+
}
|
|
1757
1772
|
},
|
|
1758
1773
|
{ history: "ignore" }
|
|
1759
1774
|
);
|
|
@@ -3439,7 +3454,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
3439
3454
|
this.fonts.trackFontsForShape(shape2);
|
|
3440
3455
|
return this.getShapeUtil(shape2).getGeometry(shape2, opts);
|
|
3441
3456
|
},
|
|
3442
|
-
{ areRecordsEqual:
|
|
3457
|
+
{ areRecordsEqual: import_areShapesContentEqual.areShapesContentEqual }
|
|
3443
3458
|
);
|
|
3444
3459
|
}
|
|
3445
3460
|
return this._shapeGeometryCaches[context].get(
|
|
@@ -3482,9 +3497,15 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
3482
3497
|
);
|
|
3483
3498
|
}
|
|
3484
3499
|
_getShapeHandlesCache() {
|
|
3485
|
-
return this.store.createComputedCache(
|
|
3486
|
-
|
|
3487
|
-
|
|
3500
|
+
return this.store.createComputedCache(
|
|
3501
|
+
"handles",
|
|
3502
|
+
(shape) => {
|
|
3503
|
+
return this.getShapeUtil(shape).getHandles?.(shape);
|
|
3504
|
+
},
|
|
3505
|
+
{
|
|
3506
|
+
areRecordsEqual: import_areShapesContentEqual.areShapesContentEqual
|
|
3507
|
+
}
|
|
3508
|
+
);
|
|
3488
3509
|
}
|
|
3489
3510
|
/**
|
|
3490
3511
|
* Get the handles (if any) for a shape.
|
|
@@ -4368,9 +4389,15 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
4368
4389
|
}
|
|
4369
4390
|
_getBindingsIndexCache() {
|
|
4370
4391
|
const index = (0, import_bindingsIndex.bindingsIndex)(this);
|
|
4371
|
-
return this.store.createComputedCache(
|
|
4372
|
-
|
|
4373
|
-
|
|
4392
|
+
return this.store.createComputedCache(
|
|
4393
|
+
"bindingsIndex",
|
|
4394
|
+
(shape) => {
|
|
4395
|
+
return index.get().get(shape.id);
|
|
4396
|
+
},
|
|
4397
|
+
// we can ignore the shape equality check here because the index is
|
|
4398
|
+
// computed incrementally based on what bindings are in the store
|
|
4399
|
+
{ areRecordsEqual: () => true }
|
|
4400
|
+
);
|
|
4374
4401
|
}
|
|
4375
4402
|
/**
|
|
4376
4403
|
* Get a binding from the store by its ID if it exists.
|
|
@@ -7445,7 +7472,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
7445
7472
|
const { x: cx, y: cy, z: cz } = (0, import_state.unsafe__withoutCapture)(() => this.getCamera());
|
|
7446
7473
|
const { x: dx, y: dy, z: dz = 0 } = info.delta;
|
|
7447
7474
|
let behavior = wheelBehavior;
|
|
7448
|
-
if (
|
|
7475
|
+
if (info.ctrlKey) behavior = wheelBehavior === "pan" ? "zoom" : "pan";
|
|
7449
7476
|
switch (behavior) {
|
|
7450
7477
|
case "zoom": {
|
|
7451
7478
|
const { x, y } = this.inputs.currentScreenPoint;
|
|
@@ -7526,12 +7553,10 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
7526
7553
|
const { x: cx, y: cy, z: cz } = (0, import_state.unsafe__withoutCapture)(() => this.getCamera());
|
|
7527
7554
|
if (this.inputs.isPanning && this.inputs.isPointing) {
|
|
7528
7555
|
const { currentScreenPoint, previousScreenPoint } = this.inputs;
|
|
7529
|
-
const { panSpeed } = cameraOptions;
|
|
7530
7556
|
const offset = import_Vec.Vec.Sub(currentScreenPoint, previousScreenPoint);
|
|
7531
|
-
this.setCamera(
|
|
7532
|
-
|
|
7533
|
-
|
|
7534
|
-
);
|
|
7557
|
+
this.setCamera(new import_Vec.Vec(cx + offset.x / cz, cy + offset.y / cz, cz), {
|
|
7558
|
+
immediate: true
|
|
7559
|
+
});
|
|
7535
7560
|
this.maybeTrackPerformance("Panning");
|
|
7536
7561
|
return;
|
|
7537
7562
|
}
|