@tldraw/editor 3.16.0-canary.c1bcdabc9513 → 3.16.0-canary.c7d3f7d5729d

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 (80) hide show
  1. package/dist-cjs/index.d.ts +47 -0
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +5 -1
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/Shape.js +7 -10
  7. package/dist-cjs/lib/components/Shape.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +4 -23
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/editor/Editor.js +28 -10
  11. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  12. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +13 -0
  13. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  14. package/dist-cjs/lib/exports/getSvgJsx.js +34 -14
  15. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  16. package/dist-cjs/lib/hooks/useCanvasEvents.js +7 -5
  17. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  18. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js +4 -1
  19. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  20. package/dist-cjs/lib/license/LicenseManager.js +17 -22
  21. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  22. package/dist-cjs/lib/license/LicenseProvider.js +5 -0
  23. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  24. package/dist-cjs/lib/license/useLicenseManagerState.js.map +2 -2
  25. package/dist-cjs/lib/primitives/Box.js +3 -0
  26. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  27. package/dist-cjs/version.js +3 -3
  28. package/dist-cjs/version.js.map +1 -1
  29. package/dist-esm/index.d.mts +47 -0
  30. package/dist-esm/index.mjs +1 -1
  31. package/dist-esm/index.mjs.map +2 -2
  32. package/dist-esm/lib/TldrawEditor.mjs +5 -1
  33. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  34. package/dist-esm/lib/components/Shape.mjs +7 -10
  35. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  36. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +4 -23
  37. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  38. package/dist-esm/lib/editor/Editor.mjs +28 -10
  39. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  40. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +13 -0
  41. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  42. package/dist-esm/lib/exports/getSvgJsx.mjs +34 -14
  43. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  44. package/dist-esm/lib/hooks/useCanvasEvents.mjs +7 -5
  45. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  46. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs +4 -1
  47. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  48. package/dist-esm/lib/license/LicenseManager.mjs +17 -22
  49. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  50. package/dist-esm/lib/license/LicenseProvider.mjs +5 -0
  51. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  52. package/dist-esm/lib/license/useLicenseManagerState.mjs.map +2 -2
  53. package/dist-esm/lib/primitives/Box.mjs +4 -1
  54. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  55. package/dist-esm/version.mjs +3 -3
  56. package/dist-esm/version.mjs.map +1 -1
  57. package/editor.css +8 -0
  58. package/package.json +7 -7
  59. package/src/index.ts +1 -0
  60. package/src/lib/TldrawEditor.tsx +6 -1
  61. package/src/lib/components/Shape.tsx +6 -12
  62. package/src/lib/components/default-components/DefaultCanvas.tsx +5 -22
  63. package/src/lib/editor/Editor.ts +37 -21
  64. package/src/lib/editor/shapes/ShapeUtil.ts +35 -0
  65. package/src/lib/exports/getSvgJsx.test.ts +868 -0
  66. package/src/lib/exports/getSvgJsx.tsx +76 -19
  67. package/src/lib/hooks/useCanvasEvents.ts +6 -6
  68. package/src/lib/hooks/usePassThroughWheelEvents.ts +6 -1
  69. package/src/lib/license/LicenseManager.test.ts +58 -51
  70. package/src/lib/license/LicenseManager.ts +32 -24
  71. package/src/lib/license/LicenseProvider.tsx +8 -0
  72. package/src/lib/license/useLicenseManagerState.ts +2 -2
  73. package/src/lib/primitives/Box.test.ts +126 -0
  74. package/src/lib/primitives/Box.ts +10 -1
  75. package/src/version.ts +3 -3
  76. package/dist-cjs/lib/utils/nearestMultiple.js +0 -34
  77. package/dist-cjs/lib/utils/nearestMultiple.js.map +0 -7
  78. package/dist-esm/lib/utils/nearestMultiple.mjs +0 -14
  79. package/dist-esm/lib/utils/nearestMultiple.mjs.map +0 -7
  80. package/src/lib/utils/nearestMultiple.ts +0 -13
@@ -296,6 +296,27 @@ export abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknownShape> {
296
296
  return false
297
297
  }
298
298
 
299
+ /**
300
+ * Get the clip path to apply to this shape's children.
301
+ *
302
+ * @param shape - The shape to get the clip path for
303
+ * @returns Array of points defining the clipping polygon in local coordinates, or undefined if no clipping
304
+ * @public
305
+ */
306
+ getClipPath?(shape: Shape): Vec[] | undefined
307
+
308
+ /**
309
+ * Whether a specific child shape should be clipped by this shape.
310
+ * Only called if getClipPath returns a valid polygon.
311
+ *
312
+ * If not defined, the default behavior is to clip all children.
313
+ *
314
+ * @param child - The child shape to check
315
+ * @returns boolean indicating if this child should be clipped
316
+ * @public
317
+ */
318
+ shouldClipChild?(child: TLShape): boolean
319
+
299
320
  /**
300
321
  * Whether the shape should hide its resize handles when selected.
301
322
  *
@@ -341,6 +362,20 @@ export abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknownShape> {
341
362
  return false
342
363
  }
343
364
 
365
+ /**
366
+ * By default, the bounds of an image export are the bounds of all the shapes it contains, plus
367
+ * some padding. If an export includes a shape where `isExportBoundsContainer` is true, then the
368
+ * padding is skipped _if the bounds of that shape contains all the other shapes_. This is
369
+ * useful in cases like annotating on top of an image, where you usually want to avoid extra
370
+ * padding around the image if you don't need it.
371
+ *
372
+ * @param _shape - The shape to check
373
+ * @returns True if this shape should be treated as an export bounds container
374
+ */
375
+ isExportBoundsContainer(_shape: Shape): boolean {
376
+ return false
377
+ }
378
+
344
379
  /**
345
380
  * Get a JSX element for the shape (as an HTML element) to be rendered as part of the canvas background - behind any other shape content.
346
381
  *