@tldraw/editor 5.2.0-canary.7e69fa3c70ec → 5.2.0-canary.c61eb676972d

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 (35) hide show
  1. package/dist-cjs/index.d.ts +4 -7
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/lib/editor/Editor.js +11 -10
  4. package/dist-cjs/lib/editor/Editor.js.map +3 -3
  5. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +8 -58
  6. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
  7. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js +1 -2
  8. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js.map +2 -2
  9. package/dist-cjs/lib/editor/tools/StateNode.js.map +2 -2
  10. package/dist-cjs/lib/editor/types/event-types.js +0 -2
  11. package/dist-cjs/lib/editor/types/event-types.js.map +2 -2
  12. package/dist-cjs/version.js +3 -3
  13. package/dist-cjs/version.js.map +1 -1
  14. package/dist-esm/index.d.mts +4 -7
  15. package/dist-esm/index.mjs +1 -1
  16. package/dist-esm/lib/editor/Editor.mjs +11 -10
  17. package/dist-esm/lib/editor/Editor.mjs.map +3 -3
  18. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +8 -58
  19. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
  20. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs +1 -2
  21. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs.map +2 -2
  22. package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
  23. package/dist-esm/lib/editor/types/event-types.mjs +0 -2
  24. package/dist-esm/lib/editor/types/event-types.mjs.map +2 -2
  25. package/dist-esm/version.mjs +3 -3
  26. package/dist-esm/version.mjs.map +1 -1
  27. package/package.json +7 -7
  28. package/src/lib/editor/Editor.ts +20 -14
  29. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +54 -74
  30. package/src/lib/editor/managers/ClickManager/ClickManager.ts +15 -65
  31. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +4 -4
  32. package/src/lib/editor/managers/FocusManager/FocusManager.ts +1 -2
  33. package/src/lib/editor/tools/StateNode.ts +0 -2
  34. package/src/lib/editor/types/event-types.ts +2 -6
  35. package/src/version.ts +3 -3
@@ -746,6 +746,7 @@ export declare class ClickManager {
746
746
  private _clickTimeout?;
747
747
  private _clickScreenPoint?;
748
748
  private _previousScreenPoint?;
749
+ private _isPressingWhilePending;
749
750
  _getClickTimeout(state: TLClickState, id?: string): void;
750
751
  /* Excluded from this release type: _clickState */
751
752
  /**
@@ -7166,8 +7167,6 @@ export declare abstract class StateNode implements Partial<TLEventHandlers> {
7166
7167
  onLongPress?(info: TLPointerEventInfo): void;
7167
7168
  onPointerUp?(info: TLPointerEventInfo): void;
7168
7169
  onDoubleClick?(info: TLClickEventInfo): void;
7169
- onTripleClick?(info: TLClickEventInfo): void;
7170
- onQuadrupleClick?(info: TLClickEventInfo): void;
7171
7170
  onRightClick?(info: TLPointerEventInfo): void;
7172
7171
  onMiddleClick?(info: TLPointerEventInfo): void;
7173
7172
  onKeyDown?(info: TLKeyboardEventInfo): void;
@@ -7567,17 +7566,17 @@ export declare type TLClickEvent = (info: TLClickEventInfo) => void;
7567
7566
  export declare type TLClickEventInfo = TLBaseEventInfo & {
7568
7567
  button: number;
7569
7568
  name: TLCLickEventName;
7570
- phase: 'down' | 'settle' | 'up';
7569
+ phase: 'down' | 'settle-down' | 'settle-up' | 'up';
7571
7570
  point: VecLike;
7572
7571
  pointerId: number;
7573
7572
  type: 'click';
7574
7573
  } & TLPointerEventTarget;
7575
7574
 
7576
7575
  /** @public */
7577
- export declare type TLCLickEventName = 'double_click' | 'quadruple_click' | 'triple_click';
7576
+ export declare type TLCLickEventName = 'double_click';
7578
7577
 
7579
7578
  /** @public */
7580
- export declare type TLClickState = 'idle' | 'overflow' | 'pendingDouble' | 'pendingOverflow' | 'pendingQuadruple' | 'pendingTriple';
7579
+ export declare type TLClickState = 'idle' | 'overflow' | 'pendingDouble' | 'pendingOverflow';
7581
7580
 
7582
7581
  /**
7583
7582
  * Raw clipboard paste payload, before tldraw parses clipboard contents into {@link TLExternalContent}.
@@ -8357,8 +8356,6 @@ export declare interface TLEventHandlers {
8357
8356
  onLongPress: TLPointerEvent;
8358
8357
  onRightClick: TLPointerEvent;
8359
8358
  onDoubleClick: TLClickEvent;
8360
- onTripleClick: TLClickEvent;
8361
- onQuadrupleClick: TLClickEvent;
8362
8359
  onMiddleClick: TLPointerEvent;
8363
8360
  onPointerUp: TLPointerEvent;
8364
8361
  onKeyDown: TLKeyboardEvent;
package/dist-cjs/index.js CHANGED
@@ -380,7 +380,7 @@ var import_uniq = require("./lib/utils/uniq");
380
380
  var import_defaultThemes2 = require("./lib/editor/managers/ThemeManager/defaultThemes");
381
381
  (0, import_utils.registerTldrawLibraryVersion)(
382
382
  "@tldraw/editor",
383
- "5.2.0-canary.7e69fa3c70ec",
383
+ "5.2.0-canary.c61eb676972d",
384
384
  "cjs"
385
385
  );
386
386
  //# sourceMappingURL=index.js.map
@@ -2340,6 +2340,11 @@ class Editor extends import_eventemitter3.default {
2340
2340
  getConstrainedCamera(point, opts) {
2341
2341
  const currentCamera = this.getCamera();
2342
2342
  let { x, y, z = currentCamera.z } = point;
2343
+ const preserveFocalPoint = (current, requested, rz, z2) => {
2344
+ const cz = currentCamera.z;
2345
+ if (rz === cz) return current;
2346
+ return current + (requested - current) * (1 / z2 - 1 / cz) / (1 / rz - 1 / cz);
2347
+ };
2343
2348
  if (!opts?.force) {
2344
2349
  const cameraOptions = this.getCameraOptions();
2345
2350
  const zoomMin = cameraOptions.zoomSteps[0];
@@ -2359,14 +2364,10 @@ class Editor extends import_eventemitter3.default {
2359
2364
  z = this.getInitialZoom();
2360
2365
  }
2361
2366
  if (z < minZ || z > maxZ) {
2362
- const { x: cx, y: cy, z: cz } = currentCamera;
2363
- const cxA = -cx + vsb.w / cz / 2;
2364
- const cyA = -cy + vsb.h / cz / 2;
2367
+ const rz = z;
2365
2368
  z = (0, import_utils2.clamp)(z, minZ, maxZ);
2366
- const cxB = -cx + vsb.w / z / 2;
2367
- const cyB = -cy + vsb.h / z / 2;
2368
- x = cx + cxB - cxA;
2369
- y = cy + cyB - cyA;
2369
+ x = preserveFocalPoint(currentCamera.x, x, rz, z);
2370
+ y = preserveFocalPoint(currentCamera.y, y, rz, z);
2370
2371
  }
2371
2372
  const minX = px / z - bounds.x;
2372
2373
  const minY = py / z - bounds.y;
@@ -2435,10 +2436,10 @@ class Editor extends import_eventemitter3.default {
2435
2436
  }
2436
2437
  } else {
2437
2438
  if (z > zoomMax || z < zoomMin) {
2438
- const { x: cx, y: cy, z: cz } = currentCamera;
2439
+ const rz = z;
2439
2440
  z = (0, import_utils2.clamp)(z, zoomMin, zoomMax);
2440
- x = cx + (-cx + vsb.w / z / 2) - (-cx + vsb.w / cz / 2);
2441
- y = cy + (-cy + vsb.h / z / 2) - (-cy + vsb.h / cz / 2);
2441
+ x = preserveFocalPoint(currentCamera.x, x, rz, z);
2442
+ y = preserveFocalPoint(currentCamera.y, y, rz, z);
2442
2443
  }
2443
2444
  }
2444
2445
  }