@tldraw/editor 3.16.0-canary.da3348c13973 → 3.16.0-canary.da558c1dc67d

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 (118) hide show
  1. package/dist-cjs/index.d.ts +49 -0
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/lib/TldrawEditor.js +5 -1
  4. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  5. package/dist-cjs/lib/components/Shape.js +7 -10
  6. package/dist-cjs/lib/components/Shape.js.map +2 -2
  7. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +4 -23
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  9. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  10. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +1 -1
  11. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
  12. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
  13. package/dist-cjs/lib/components/default-components/DefaultScribble.js +1 -1
  14. package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +2 -2
  15. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +9 -1
  16. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  17. package/dist-cjs/lib/config/TLUserPreferences.js +1 -1
  18. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  19. package/dist-cjs/lib/editor/Editor.js +38 -11
  20. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  21. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +1 -1
  22. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  23. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +13 -0
  24. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  25. package/dist-cjs/lib/exports/getSvgJsx.js +35 -16
  26. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  27. package/dist-cjs/lib/hooks/useCanvasEvents.js +7 -5
  28. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  29. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js +4 -1
  30. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  31. package/dist-cjs/lib/license/Watermark.js +6 -6
  32. package/dist-cjs/lib/license/Watermark.js.map +1 -1
  33. package/dist-cjs/lib/options.js +6 -0
  34. package/dist-cjs/lib/options.js.map +2 -2
  35. package/dist-cjs/lib/primitives/Box.js +3 -0
  36. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  37. package/dist-cjs/version.js +3 -3
  38. package/dist-cjs/version.js.map +1 -1
  39. package/dist-esm/index.d.mts +49 -0
  40. package/dist-esm/index.mjs +1 -1
  41. package/dist-esm/lib/TldrawEditor.mjs +5 -1
  42. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  43. package/dist-esm/lib/components/Shape.mjs +7 -10
  44. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  45. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +4 -23
  46. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  47. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  48. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +1 -1
  49. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
  50. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
  51. package/dist-esm/lib/components/default-components/DefaultScribble.mjs +1 -1
  52. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
  53. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +9 -1
  54. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  55. package/dist-esm/lib/config/TLUserPreferences.mjs +1 -1
  56. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  57. package/dist-esm/lib/editor/Editor.mjs +38 -11
  58. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  59. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +1 -1
  60. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  61. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +13 -0
  62. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  63. package/dist-esm/lib/exports/getSvgJsx.mjs +36 -16
  64. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  65. package/dist-esm/lib/hooks/useCanvasEvents.mjs +7 -5
  66. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  67. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs +4 -1
  68. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  69. package/dist-esm/lib/license/Watermark.mjs +6 -6
  70. package/dist-esm/lib/license/Watermark.mjs.map +1 -1
  71. package/dist-esm/lib/options.mjs +6 -0
  72. package/dist-esm/lib/options.mjs.map +2 -2
  73. package/dist-esm/lib/primitives/Box.mjs +4 -1
  74. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  75. package/dist-esm/version.mjs +3 -3
  76. package/dist-esm/version.mjs.map +1 -1
  77. package/editor.css +301 -290
  78. package/package.json +14 -37
  79. package/src/lib/TldrawEditor.tsx +6 -1
  80. package/src/lib/components/Shape.tsx +6 -12
  81. package/src/lib/components/default-components/DefaultCanvas.tsx +5 -22
  82. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  83. package/src/lib/components/default-components/DefaultErrorFallback.tsx +1 -1
  84. package/src/lib/components/default-components/DefaultScribble.tsx +1 -1
  85. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +5 -1
  86. package/src/lib/config/TLUserPreferences.ts +1 -1
  87. package/src/lib/editor/Editor.test.ts +12 -11
  88. package/src/lib/editor/Editor.ts +48 -22
  89. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +15 -14
  90. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +16 -15
  91. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +49 -48
  92. package/src/lib/editor/managers/FontManager/FontManager.test.ts +24 -23
  93. package/src/lib/editor/managers/HistoryManager/HistoryManager.test.ts +7 -6
  94. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +12 -11
  95. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +57 -50
  96. package/src/lib/editor/managers/TextManager/TextManager.test.ts +51 -26
  97. package/src/lib/editor/managers/TickManager/TickManager.test.ts +14 -13
  98. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +21 -26
  99. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +1 -1
  100. package/src/lib/editor/shapes/ShapeUtil.ts +35 -0
  101. package/src/lib/exports/getSvgJsx.test.ts +868 -0
  102. package/src/lib/exports/getSvgJsx.tsx +78 -21
  103. package/src/lib/hooks/useCanvasEvents.ts +6 -6
  104. package/src/lib/hooks/usePassThroughWheelEvents.ts +6 -1
  105. package/src/lib/license/LicenseManager.test.ts +3 -1
  106. package/src/lib/license/Watermark.test.tsx +2 -1
  107. package/src/lib/license/Watermark.tsx +6 -6
  108. package/src/lib/options.ts +6 -0
  109. package/src/lib/primitives/Box.test.ts +126 -0
  110. package/src/lib/primitives/Box.ts +10 -1
  111. package/src/lib/utils/sync/LocalIndexedDb.test.ts +2 -1
  112. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +15 -15
  113. package/src/version.ts +3 -3
  114. package/dist-cjs/lib/utils/nearestMultiple.js +0 -34
  115. package/dist-cjs/lib/utils/nearestMultiple.js.map +0 -7
  116. package/dist-esm/lib/utils/nearestMultiple.mjs +0 -14
  117. package/dist-esm/lib/utils/nearestMultiple.mjs.map +0 -7
  118. package/src/lib/utils/nearestMultiple.ts +0 -13
@@ -3700,16 +3700,17 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3700
3700
  _getShapeMaskCache() {
3701
3701
  return this.store.createComputedCache("pageMaskCache", (shape) => {
3702
3702
  if (isPageId(shape.parentId)) return void 0;
3703
- const frameAncestors = this.getShapeAncestors(shape.id).filter(
3704
- (shape2) => this.isShapeOfType(shape2, "frame")
3705
- );
3706
- if (frameAncestors.length === 0) return void 0;
3707
- const pageMask = frameAncestors.map((s) => {
3708
- const geometry = this.getShapeGeometry(s.id);
3709
- const pageTransform = this.getShapePageTransform(s.id);
3710
- return pageTransform.applyToPoints(geometry.vertices);
3711
- }).reduce((acc, b) => {
3712
- if (!(b && acc)) return void 0;
3703
+ const clipPaths = [];
3704
+ for (const ancestor of this.getShapeAncestors(shape.id)) {
3705
+ const util = this.getShapeUtil(ancestor);
3706
+ const clipPath = util.getClipPath?.(ancestor);
3707
+ if (!clipPath) continue;
3708
+ if (util.shouldClipChild?.(shape) === false) continue;
3709
+ const pageTransform = this.getShapePageTransform(ancestor.id);
3710
+ clipPaths.push(pageTransform.applyToPoints(clipPath));
3711
+ }
3712
+ if (clipPaths.length === 0) return void 0;
3713
+ const pageMask = clipPaths.reduce((acc, b) => {
3713
3714
  const intersection = intersectPolygonPolygon(acc, b);
3714
3715
  if (intersection) {
3715
3716
  return intersection.map(Vec.Cast);
@@ -4782,7 +4783,16 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4782
4783
  }
4783
4784
  this.createShapes(shapesToCreate);
4784
4785
  this.createBindings(bindingsToCreate);
4785
- this.setSelectedShapes(compact(ids.map((id) => shapeIds.get(id))));
4786
+ this.setSelectedShapes(
4787
+ compact(
4788
+ ids.map((oldId) => {
4789
+ const newId = shapeIds.get(oldId);
4790
+ if (!newId) return null;
4791
+ if (!this.getShape(newId)) return null;
4792
+ return newId;
4793
+ })
4794
+ )
4795
+ );
4786
4796
  if (offset !== void 0) {
4787
4797
  const selectionPageBounds = this.getSelectionPageBounds();
4788
4798
  const viewportPageBounds = this.getViewportPageBounds();
@@ -6967,6 +6977,23 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
6967
6977
  }
6968
6978
  }
6969
6979
  }
6980
+ /**
6981
+ * Get an exported image of the given shapes as a data URL.
6982
+ *
6983
+ * @param shapes - The shapes (or shape ids) to export.
6984
+ * @param opts - Options for the export.
6985
+ *
6986
+ * @returns A data URL of the image.
6987
+ * @public
6988
+ */
6989
+ async toImageDataUrl(shapes, opts = {}) {
6990
+ const { blob, width, height } = await this.toImage(shapes, opts);
6991
+ return {
6992
+ url: await FileHelpers.blobToDataUrl(blob),
6993
+ width,
6994
+ height
6995
+ };
6996
+ }
6970
6997
  /**
6971
6998
  * Update the input points from a pointer, pinch, or wheel event.
6972
6999
  *