@tldraw/editor 3.16.0-canary.e4220f725a90 → 3.16.0-canary.e455ab838b8f

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 (74) hide show
  1. package/dist-cjs/index.d.ts +27 -28
  2. package/dist-cjs/index.js +2 -4
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +0 -2
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +4 -4
  7. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  8. package/dist-cjs/lib/editor/Editor.js +29 -0
  9. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  10. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js +4 -2
  11. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js.map +2 -2
  12. package/dist-cjs/lib/hooks/useCanvasEvents.js +17 -17
  13. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  14. package/dist-cjs/lib/hooks/useDocumentEvents.js +4 -4
  15. package/dist-cjs/lib/hooks/useDocumentEvents.js.map +2 -2
  16. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js +1 -1
  17. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js.map +2 -2
  18. package/dist-cjs/lib/hooks/useHandleEvents.js +6 -6
  19. package/dist-cjs/lib/hooks/useHandleEvents.js.map +2 -2
  20. package/dist-cjs/lib/hooks/useSelectionEvents.js +8 -8
  21. package/dist-cjs/lib/hooks/useSelectionEvents.js.map +2 -2
  22. package/dist-cjs/lib/license/Watermark.js +97 -90
  23. package/dist-cjs/lib/license/Watermark.js.map +2 -2
  24. package/dist-cjs/lib/utils/dom.js +1 -12
  25. package/dist-cjs/lib/utils/dom.js.map +2 -2
  26. package/dist-cjs/lib/utils/getPointerInfo.js +2 -3
  27. package/dist-cjs/lib/utils/getPointerInfo.js.map +2 -2
  28. package/dist-cjs/version.js +3 -3
  29. package/dist-cjs/version.js.map +1 -1
  30. package/dist-esm/index.d.mts +27 -28
  31. package/dist-esm/index.mjs +3 -7
  32. package/dist-esm/index.mjs.map +2 -2
  33. package/dist-esm/lib/TldrawEditor.mjs +0 -2
  34. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  35. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +5 -5
  36. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  37. package/dist-esm/lib/editor/Editor.mjs +29 -0
  38. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  39. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs +4 -2
  40. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs.map +2 -2
  41. package/dist-esm/lib/hooks/useCanvasEvents.mjs +18 -24
  42. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  43. package/dist-esm/lib/hooks/useDocumentEvents.mjs +5 -10
  44. package/dist-esm/lib/hooks/useDocumentEvents.mjs.map +2 -2
  45. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs +2 -2
  46. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  47. package/dist-esm/lib/hooks/useHandleEvents.mjs +7 -12
  48. package/dist-esm/lib/hooks/useHandleEvents.mjs.map +2 -2
  49. package/dist-esm/lib/hooks/useSelectionEvents.mjs +9 -15
  50. package/dist-esm/lib/hooks/useSelectionEvents.mjs.map +2 -2
  51. package/dist-esm/lib/license/Watermark.mjs +98 -91
  52. package/dist-esm/lib/license/Watermark.mjs.map +2 -2
  53. package/dist-esm/lib/utils/dom.mjs +1 -12
  54. package/dist-esm/lib/utils/dom.mjs.map +2 -2
  55. package/dist-esm/lib/utils/getPointerInfo.mjs +2 -3
  56. package/dist-esm/lib/utils/getPointerInfo.mjs.map +2 -2
  57. package/dist-esm/version.mjs +3 -3
  58. package/dist-esm/version.mjs.map +1 -1
  59. package/package.json +7 -7
  60. package/src/index.ts +0 -2
  61. package/src/lib/TldrawEditor.tsx +0 -2
  62. package/src/lib/components/default-components/DefaultCanvas.tsx +5 -5
  63. package/src/lib/editor/Editor.ts +33 -0
  64. package/src/lib/editor/managers/FocusManager/FocusManager.ts +6 -2
  65. package/src/lib/hooks/useCanvasEvents.ts +18 -24
  66. package/src/lib/hooks/useDocumentEvents.ts +5 -10
  67. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +2 -2
  68. package/src/lib/hooks/useHandleEvents.ts +7 -12
  69. package/src/lib/hooks/useSelectionEvents.ts +9 -15
  70. package/src/lib/license/Watermark.tsx +100 -92
  71. package/src/lib/utils/dom.test.ts +33 -24
  72. package/src/lib/utils/dom.ts +1 -31
  73. package/src/lib/utils/getPointerInfo.ts +3 -3
  74. package/src/version.ts +3 -3
@@ -404,6 +404,8 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
404
404
  __publicField(this, "performanceTracker");
405
405
  /** @internal */
406
406
  __publicField(this, "performanceTrackerTimeout", -1);
407
+ /** @internal */
408
+ __publicField(this, "handledEvents", /* @__PURE__ */ new WeakSet());
407
409
  __publicField(this, "_pendingEventsForNextTick", []);
408
410
  this._getShapeVisibility = getShapeVisibility;
409
411
  this.options = { ...import_options.defaultTldrawOptions, ...options };
@@ -431,6 +433,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
431
433
  }
432
434
  this.root = new NewRoot(this);
433
435
  this.root.children = {};
436
+ this.markEventAsHandled = this.markEventAsHandled.bind(this);
434
437
  const allShapeUtils = (0, import_defaultShapes.checkShapesAndAddCore)(shapeUtils);
435
438
  const _shapeUtils = {};
436
439
  const _styleProps = {};
@@ -7371,6 +7374,32 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
7371
7374
  code: "MetaLeft"
7372
7375
  });
7373
7376
  }
7377
+ /**
7378
+ * In tldraw, events are sometimes handled by multiple components. For example, the shapes might
7379
+ * have events, but the canvas handles events too. The way that the canvas handles events can
7380
+ * interfere with the with the shapes event handlers - for example, it calls `.preventDefault()`
7381
+ * on `pointerDown`, which also prevents `click` events from firing on the shapes.
7382
+ *
7383
+ * You can use `.stopPropagation()` to prevent the event from propagating to the rest of the
7384
+ * DOM, but that can impact non-tldraw event handlers set up elsewhere. By using
7385
+ * `markEventAsHandled`, you'll stop other parts of tldraw from handling the event without
7386
+ * impacting other, non-tldraw event handlers. See also {@link Editor.wasEventAlreadyHandled}.
7387
+ *
7388
+ * @public
7389
+ */
7390
+ markEventAsHandled(e) {
7391
+ const nativeEvent = "nativeEvent" in e ? e.nativeEvent : e;
7392
+ this.handledEvents.add(nativeEvent);
7393
+ }
7394
+ /**
7395
+ * Checks if an event has already been handled. See {@link Editor.markEventAsHandled}.
7396
+ *
7397
+ * @public
7398
+ */
7399
+ wasEventAlreadyHandled(e) {
7400
+ const nativeEvent = "nativeEvent" in e ? e.nativeEvent : e;
7401
+ return this.handledEvents.has(nativeEvent);
7402
+ }
7374
7403
  /**
7375
7404
  * Dispatch an event to the editor.
7376
7405
  *