@tldraw/editor 5.5.0-next.b6a9f7cd7be2 → 5.5.0-next.c91b2de0a423
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 +47 -23
- package/dist-cjs/index.js +1 -1
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/TldrawEditor.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js +5 -1
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +2 -5
- package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +3 -3
- package/dist-cjs/lib/components/default-components/DefaultSpinner.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +24 -26
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +3 -2
- package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/EditorManager.js +11 -2
- package/dist-cjs/lib/editor/managers/EditorManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/PerformanceManager/PerformanceManager.js +49 -63
- package/dist-cjs/lib/editor/managers/PerformanceManager/PerformanceManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js +1 -1
- package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js +24 -24
- package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js +7 -1
- package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js +4 -3
- package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js.map +2 -2
- package/dist-cjs/lib/editor/types/external-content.js.map +1 -1
- package/dist-cjs/lib/hooks/EditorComponentsContext.js.map +2 -2
- package/dist-cjs/lib/utils/debug-flags.js +0 -6
- package/dist-cjs/lib/utils/debug-flags.js.map +2 -2
- package/dist-cjs/lib/utils/sync/LocalIndexedDb.js +19 -8
- package/dist-cjs/lib/utils/sync/LocalIndexedDb.js.map +2 -2
- package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +3 -0
- package/dist-cjs/lib/utils/sync/TLLocalSyncClient.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 +47 -23
- package/dist-esm/index.mjs +4 -2
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +5 -1
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +2 -5
- package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +3 -3
- package/dist-esm/lib/components/default-components/DefaultSpinner.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +24 -26
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +3 -2
- package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/EditorManager.mjs +11 -2
- package/dist-esm/lib/editor/managers/EditorManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/PerformanceManager/PerformanceManager.mjs +49 -63
- package/dist-esm/lib/editor/managers/PerformanceManager/PerformanceManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs +1 -1
- package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs +24 -24
- package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs +7 -1
- package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs +4 -3
- package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs.map +2 -2
- package/dist-esm/lib/hooks/EditorComponentsContext.mjs.map +2 -2
- package/dist-esm/lib/utils/debug-flags.mjs +0 -6
- package/dist-esm/lib/utils/debug-flags.mjs.map +2 -2
- package/dist-esm/lib/utils/sync/LocalIndexedDb.mjs +19 -8
- package/dist-esm/lib/utils/sync/LocalIndexedDb.mjs.map +2 -2
- package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +3 -0
- package/dist-esm/lib/utils/sync/TLLocalSyncClient.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/index.ts +5 -1
- package/src/lib/TldrawEditor.tsx +8 -6
- package/src/lib/components/default-components/DefaultCanvas.tsx +7 -1
- package/src/lib/components/default-components/DefaultErrorFallback.tsx +13 -5
- package/src/lib/components/default-components/DefaultSpinner.tsx +4 -1
- package/src/lib/editor/Editor.test.ts +45 -0
- package/src/lib/editor/Editor.ts +40 -35
- package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +1 -0
- package/src/lib/editor/managers/ClickManager/ClickManager.ts +3 -2
- package/src/lib/editor/managers/EditorManager.test.ts +32 -1
- package/src/lib/editor/managers/EditorManager.ts +15 -3
- package/src/lib/editor/managers/PerformanceManager/PerformanceManager.test.ts +80 -0
- package/src/lib/editor/managers/PerformanceManager/PerformanceManager.ts +54 -81
- package/src/lib/editor/managers/ScribbleManager/ScribbleManager.ts +1 -1
- package/src/lib/editor/managers/SnapManager/BoundsSnaps.ts +32 -36
- package/src/lib/editor/managers/SnapManager/HandleSnaps.ts +13 -2
- package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +13 -0
- package/src/lib/editor/managers/SnapManager/SnapManager.ts +6 -4
- package/src/lib/editor/types/external-content.ts +5 -0
- package/src/lib/hooks/EditorComponentsContext.tsx +2 -1
- package/src/lib/utils/debug-flags.ts +0 -6
- package/src/lib/utils/sync/LocalIndexedDb.test.ts +93 -1
- package/src/lib/utils/sync/LocalIndexedDb.ts +23 -8
- package/src/lib/utils/sync/TLLocalSyncClient.test.ts +21 -1
- package/src/lib/utils/sync/TLLocalSyncClient.ts +6 -0
- package/src/version.ts +3 -3
|
@@ -1449,7 +1449,7 @@ class Editor extends EventEmitter {
|
|
|
1449
1449
|
updateInstanceState(partial, historyOptions) {
|
|
1450
1450
|
this._updateInstanceState(partial, { history: "ignore", ...historyOptions });
|
|
1451
1451
|
if (partial.isChangingStyle !== void 0) {
|
|
1452
|
-
clearTimeout(this._isChangingStyleTimeout);
|
|
1452
|
+
this.timers.clearTimeout(this._isChangingStyleTimeout);
|
|
1453
1453
|
if (partial.isChangingStyle === true) {
|
|
1454
1454
|
this._isChangingStyleTimeout = this.timers.setTimeout(() => {
|
|
1455
1455
|
this._updateInstanceState({ isChangingStyle: false }, { history: "ignore" });
|
|
@@ -7863,22 +7863,22 @@ class Editor extends EventEmitter {
|
|
|
7863
7863
|
const releaseCtrl = this._ctrlKeyTimeout !== -1;
|
|
7864
7864
|
const releaseMeta = this._metaKeyTimeout !== -1;
|
|
7865
7865
|
if (releaseShift) {
|
|
7866
|
-
clearTimeout(this._shiftKeyTimeout);
|
|
7866
|
+
this.timers.clearTimeout(this._shiftKeyTimeout);
|
|
7867
7867
|
this._shiftKeyTimeout = -1;
|
|
7868
7868
|
this.inputs.setShiftKey(false);
|
|
7869
7869
|
}
|
|
7870
7870
|
if (releaseAlt) {
|
|
7871
|
-
clearTimeout(this._altKeyTimeout);
|
|
7871
|
+
this.timers.clearTimeout(this._altKeyTimeout);
|
|
7872
7872
|
this._altKeyTimeout = -1;
|
|
7873
7873
|
this.inputs.setAltKey(false);
|
|
7874
7874
|
}
|
|
7875
7875
|
if (releaseCtrl) {
|
|
7876
|
-
clearTimeout(this._ctrlKeyTimeout);
|
|
7876
|
+
this.timers.clearTimeout(this._ctrlKeyTimeout);
|
|
7877
7877
|
this._ctrlKeyTimeout = -1;
|
|
7878
7878
|
this.inputs.setCtrlKey(false);
|
|
7879
7879
|
}
|
|
7880
7880
|
if (releaseMeta) {
|
|
7881
|
-
clearTimeout(this._metaKeyTimeout);
|
|
7881
|
+
this.timers.clearTimeout(this._metaKeyTimeout);
|
|
7882
7882
|
this._metaKeyTimeout = -1;
|
|
7883
7883
|
this.inputs.setMetaKey(false);
|
|
7884
7884
|
}
|
|
@@ -7992,28 +7992,28 @@ class Editor extends EventEmitter {
|
|
|
7992
7992
|
return;
|
|
7993
7993
|
}
|
|
7994
7994
|
if (info.shiftKey) {
|
|
7995
|
-
clearTimeout(this._shiftKeyTimeout);
|
|
7995
|
+
this.timers.clearTimeout(this._shiftKeyTimeout);
|
|
7996
7996
|
this._shiftKeyTimeout = -1;
|
|
7997
7997
|
inputs.setShiftKey(true);
|
|
7998
7998
|
} else if (!info.shiftKey && inputs.getShiftKey() && this._shiftKeyTimeout === -1) {
|
|
7999
7999
|
this._shiftKeyTimeout = this.timers.setTimeout(this._releaseShiftKey, 150);
|
|
8000
8000
|
}
|
|
8001
8001
|
if (info.altKey) {
|
|
8002
|
-
clearTimeout(this._altKeyTimeout);
|
|
8002
|
+
this.timers.clearTimeout(this._altKeyTimeout);
|
|
8003
8003
|
this._altKeyTimeout = -1;
|
|
8004
8004
|
inputs.setAltKey(true);
|
|
8005
8005
|
} else if (!info.altKey && inputs.getAltKey() && this._altKeyTimeout === -1) {
|
|
8006
8006
|
this._altKeyTimeout = this.timers.setTimeout(this._releaseAltKey, 150);
|
|
8007
8007
|
}
|
|
8008
8008
|
if (info.ctrlKey) {
|
|
8009
|
-
clearTimeout(this._ctrlKeyTimeout);
|
|
8009
|
+
this.timers.clearTimeout(this._ctrlKeyTimeout);
|
|
8010
8010
|
this._ctrlKeyTimeout = -1;
|
|
8011
8011
|
inputs.setCtrlKey(true);
|
|
8012
8012
|
} else if (!info.ctrlKey && inputs.getCtrlKey() && this._ctrlKeyTimeout === -1) {
|
|
8013
8013
|
this._ctrlKeyTimeout = this.timers.setTimeout(this._releaseCtrlKey, 150);
|
|
8014
8014
|
}
|
|
8015
8015
|
if (info.metaKey && info.name !== "key_up") {
|
|
8016
|
-
clearTimeout(this._metaKeyTimeout);
|
|
8016
|
+
this.timers.clearTimeout(this._metaKeyTimeout);
|
|
8017
8017
|
this._metaKeyTimeout = -1;
|
|
8018
8018
|
inputs.setMetaKey(true);
|
|
8019
8019
|
} else if (!info.metaKey && inputs.getMetaKey() && this._metaKeyTimeout === -1) {
|
|
@@ -8027,8 +8027,7 @@ class Editor extends EventEmitter {
|
|
|
8027
8027
|
const cameraOptions = this._cameraOptions.__unsafe__getWithoutCapture();
|
|
8028
8028
|
switch (type) {
|
|
8029
8029
|
case "pinch": {
|
|
8030
|
-
|
|
8031
|
-
clearTimeout(this._longPressTimeout);
|
|
8030
|
+
this.timers.clearTimeout(this._longPressTimeout);
|
|
8032
8031
|
this.inputs.updateFromEvent(info);
|
|
8033
8032
|
switch (info.name) {
|
|
8034
8033
|
case "pinch_start": {
|
|
@@ -8049,6 +8048,7 @@ class Editor extends EventEmitter {
|
|
|
8049
8048
|
}
|
|
8050
8049
|
case "pinch": {
|
|
8051
8050
|
if (!inputs.getIsPinching()) return;
|
|
8051
|
+
if (cameraOptions.isLocked) return;
|
|
8052
8052
|
const {
|
|
8053
8053
|
point: { z = 1 },
|
|
8054
8054
|
delta: { x: dx, y: dy }
|
|
@@ -8104,7 +8104,7 @@ class Editor extends EventEmitter {
|
|
|
8104
8104
|
const { panSpeed, zoomSpeed } = cameraOptions;
|
|
8105
8105
|
let wheelBehavior = cameraOptions.wheelBehavior;
|
|
8106
8106
|
const inputMode = this.user.getUserPreferences().inputMode;
|
|
8107
|
-
if (inputMode !== null) {
|
|
8107
|
+
if (inputMode !== null && wheelBehavior !== "none") {
|
|
8108
8108
|
wheelBehavior = inputMode === "trackpad" ? "pan" : "zoom";
|
|
8109
8109
|
}
|
|
8110
8110
|
if (wheelBehavior !== "none") {
|
|
@@ -8156,12 +8156,12 @@ class Editor extends EventEmitter {
|
|
|
8156
8156
|
}
|
|
8157
8157
|
case "pointer": {
|
|
8158
8158
|
if (inputs.getIsPinching()) return;
|
|
8159
|
-
this.inputs.updateFromEvent(info);
|
|
8160
8159
|
const { isPen } = info;
|
|
8161
8160
|
const { isPenMode } = instanceState;
|
|
8161
|
+
if (isPenMode && !isPen) return;
|
|
8162
|
+
this.inputs.updateFromEvent(info);
|
|
8162
8163
|
switch (info.name) {
|
|
8163
8164
|
case "pointer_down": {
|
|
8164
|
-
if (isPenMode && !isPen) return;
|
|
8165
8165
|
this._releaseDebouncedModifiers();
|
|
8166
8166
|
if (!this.inputs.getIsPanning()) {
|
|
8167
8167
|
this._longPressTimeout = this.timers.setTimeout(() => {
|
|
@@ -8190,7 +8190,7 @@ class Editor extends EventEmitter {
|
|
|
8190
8190
|
this.updateInstanceState({ isPenMode: true });
|
|
8191
8191
|
this.interrupt();
|
|
8192
8192
|
}
|
|
8193
|
-
if (info.button === STYLUS_ERASER_BUTTON) {
|
|
8193
|
+
if (info.button === STYLUS_ERASER_BUTTON && this.getStateDescendant("eraser")) {
|
|
8194
8194
|
this._restoreToolId = this.getCurrentToolId();
|
|
8195
8195
|
this.complete();
|
|
8196
8196
|
this.setCurrentTool("eraser");
|
|
@@ -8199,10 +8199,10 @@ class Editor extends EventEmitter {
|
|
|
8199
8199
|
this._prevCursor = this.getInstanceState().cursor.type;
|
|
8200
8200
|
}
|
|
8201
8201
|
this.inputs.setIsPanning(true);
|
|
8202
|
-
clearTimeout(this._longPressTimeout);
|
|
8202
|
+
this.timers.clearTimeout(this._longPressTimeout);
|
|
8203
8203
|
} else if (info.button === RIGHT_MOUSE_BUTTON && this.options.rightClickPanning) {
|
|
8204
8204
|
this.inputs.setIsRightPointing(true);
|
|
8205
|
-
clearTimeout(this._longPressTimeout);
|
|
8205
|
+
this.timers.clearTimeout(this._longPressTimeout);
|
|
8206
8206
|
return this;
|
|
8207
8207
|
}
|
|
8208
8208
|
if (this.inputs.getIsPanning()) {
|
|
@@ -8213,7 +8213,6 @@ class Editor extends EventEmitter {
|
|
|
8213
8213
|
break;
|
|
8214
8214
|
}
|
|
8215
8215
|
case "pointer_move": {
|
|
8216
|
-
if (!isPen && isPenMode) return;
|
|
8217
8216
|
const { x: cx, y: cy, z: cz } = unsafe__withoutCapture(() => this.getCamera());
|
|
8218
8217
|
if (this.inputs.getIsRightPointing() && !this.inputs.getIsPanning()) {
|
|
8219
8218
|
const currentScreenPoint = this.inputs.getCurrentScreenPoint();
|
|
@@ -8244,16 +8243,15 @@ class Editor extends EventEmitter {
|
|
|
8244
8243
|
}
|
|
8245
8244
|
if (inputs.getIsPointing() && !inputs.getIsDragging() && Vec.Dist2(inputs.getOriginPagePoint(), inputs.getCurrentPagePoint()) * this.getZoomLevel() > (instanceState.isCoarsePointer ? this.options.coarseDragDistanceSquared : this.options.dragDistanceSquared) / cz) {
|
|
8246
8245
|
inputs.setIsDragging(true);
|
|
8247
|
-
clearTimeout(this._longPressTimeout);
|
|
8246
|
+
this.timers.clearTimeout(this._longPressTimeout);
|
|
8248
8247
|
}
|
|
8249
8248
|
break;
|
|
8250
8249
|
}
|
|
8251
8250
|
case "pointer_up": {
|
|
8252
8251
|
inputs.setIsDragging(false);
|
|
8253
8252
|
inputs.setIsPointing(false);
|
|
8254
|
-
clearTimeout(this._longPressTimeout);
|
|
8253
|
+
this.timers.clearTimeout(this._longPressTimeout);
|
|
8255
8254
|
inputs.buttons.delete(info.button);
|
|
8256
|
-
if (instanceState.isPenMode && !isPen) return;
|
|
8257
8255
|
if (this.inputs.getIsRightPointing() && !this.inputs.getIsPanning()) {
|
|
8258
8256
|
this.inputs.setIsRightPointing(false);
|
|
8259
8257
|
this._selectedShapeIdsAtPointerDown = [];
|
|
@@ -8309,7 +8307,7 @@ class Editor extends EventEmitter {
|
|
|
8309
8307
|
});
|
|
8310
8308
|
}
|
|
8311
8309
|
} else {
|
|
8312
|
-
if (info.button === STYLUS_ERASER_BUTTON) {
|
|
8310
|
+
if (info.button === STYLUS_ERASER_BUTTON && this.getStateDescendant("eraser")) {
|
|
8313
8311
|
this.complete();
|
|
8314
8312
|
this.setCurrentTool(this._restoreToolId);
|
|
8315
8313
|
}
|
|
@@ -8336,7 +8334,7 @@ class Editor extends EventEmitter {
|
|
|
8336
8334
|
}
|
|
8337
8335
|
this.inputs.setIsPanning(true);
|
|
8338
8336
|
this.inputs.setIsSpacebarPanning(true);
|
|
8339
|
-
clearTimeout(this._longPressTimeout);
|
|
8337
|
+
this.timers.clearTimeout(this._longPressTimeout);
|
|
8340
8338
|
this.setCursor({
|
|
8341
8339
|
type: this.inputs.getIsPointing() ? "grabbing" : "grab",
|
|
8342
8340
|
rotation: 0
|
|
@@ -8362,7 +8360,7 @@ class Editor extends EventEmitter {
|
|
|
8362
8360
|
break;
|
|
8363
8361
|
}
|
|
8364
8362
|
}
|
|
8365
|
-
if (offset) {
|
|
8363
|
+
if (offset && !cameraOptions.isLocked) {
|
|
8366
8364
|
const bounds = this.getViewportPageBounds();
|
|
8367
8365
|
const next = bounds.clone().translate(offset.mulV({ x: bounds.w, y: bounds.h }));
|
|
8368
8366
|
this._animateToViewport(next, { animation: { duration: 320 } });
|
|
@@ -8402,7 +8400,7 @@ class Editor extends EventEmitter {
|
|
|
8402
8400
|
this.setCurrentTool("select");
|
|
8403
8401
|
}
|
|
8404
8402
|
const { isPenMode } = this.store.unsafeGetWithoutCapture(TLINSTANCE_ID);
|
|
8405
|
-
if (info.isPen
|
|
8403
|
+
if (!isPenMode || info.isPen) {
|
|
8406
8404
|
const clickInfo = this._clickManager.handlePointerEvent(info);
|
|
8407
8405
|
if (info.name !== clickInfo.name) {
|
|
8408
8406
|
this.root.handleEvent(info);
|
|
@@ -8424,7 +8422,7 @@ class Editor extends EventEmitter {
|
|
|
8424
8422
|
maybeTrackPerformance(name) {
|
|
8425
8423
|
if (debugFlags.measurePerformance.get()) {
|
|
8426
8424
|
if (this.performanceTracker.isStarted()) {
|
|
8427
|
-
clearTimeout(this.performanceTrackerTimeout);
|
|
8425
|
+
this.timers.clearTimeout(this.performanceTrackerTimeout);
|
|
8428
8426
|
} else {
|
|
8429
8427
|
this.performanceTracker.start(name);
|
|
8430
8428
|
}
|