tldraw 4.1.0-canary.c62140a07605 → 4.1.0-canary.c9992319dc92

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 +35 -10
  2. package/dist-cjs/index.js +3 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/defaultEmbedDefinitions.js +25 -30
  5. package/dist-cjs/lib/defaultEmbedDefinitions.js.map +2 -2
  6. package/dist-cjs/lib/defaultExternalContentHandlers.js +9 -32
  7. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  8. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -0
  9. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  10. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +43 -101
  11. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/bookmark/bookmarks.js +138 -0
  13. package/dist-cjs/lib/shapes/bookmark/bookmarks.js.map +7 -0
  14. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +25 -3
  15. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +2 -2
  16. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +3 -0
  17. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js +20 -4
  19. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Cropping.js.map +2 -2
  20. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js +23 -11
  21. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.js.map +2 -2
  22. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +27 -6
  23. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  24. package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js +21 -9
  25. package/dist-cjs/lib/tools/SelectTool/childStates/PointingArrowLabel.js.map +2 -2
  26. package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js +24 -8
  27. package/dist-cjs/lib/tools/SelectTool/childStates/PointingResizeHandle.js.map +2 -2
  28. package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js +21 -9
  29. package/dist-cjs/lib/tools/SelectTool/childStates/PointingRotateHandle.js.map +2 -2
  30. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +23 -8
  31. package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
  32. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +21 -9
  33. package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +2 -2
  34. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +26 -11
  35. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  36. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +5 -0
  37. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  38. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js +6 -2
  39. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenu.js.map +2 -2
  40. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js +1 -1
  41. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +1 -1
  42. package/dist-cjs/lib/ui/context/actions.js +23 -29
  43. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  44. package/dist-cjs/lib/ui/version.js +3 -3
  45. package/dist-cjs/lib/ui/version.js.map +1 -1
  46. package/dist-esm/index.d.mts +35 -10
  47. package/dist-esm/index.mjs +3 -1
  48. package/dist-esm/index.mjs.map +2 -2
  49. package/dist-esm/lib/defaultEmbedDefinitions.mjs +25 -30
  50. package/dist-esm/lib/defaultEmbedDefinitions.mjs.map +2 -2
  51. package/dist-esm/lib/defaultExternalContentHandlers.mjs +9 -32
  52. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  53. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +3 -0
  54. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  55. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +46 -101
  56. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  57. package/dist-esm/lib/shapes/bookmark/bookmarks.mjs +124 -0
  58. package/dist-esm/lib/shapes/bookmark/bookmarks.mjs.map +7 -0
  59. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +26 -3
  60. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +2 -2
  61. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +3 -0
  62. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  63. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs +20 -4
  64. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Cropping.mjs.map +2 -2
  65. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs +23 -11
  66. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.mjs.map +2 -2
  67. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +29 -7
  68. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  69. package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs +21 -9
  70. package/dist-esm/lib/tools/SelectTool/childStates/PointingArrowLabel.mjs.map +2 -2
  71. package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs +24 -8
  72. package/dist-esm/lib/tools/SelectTool/childStates/PointingResizeHandle.mjs.map +2 -2
  73. package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs +21 -9
  74. package/dist-esm/lib/tools/SelectTool/childStates/PointingRotateHandle.mjs.map +2 -2
  75. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +23 -8
  76. package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
  77. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +21 -9
  78. package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +2 -2
  79. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +26 -11
  80. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  81. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +5 -0
  82. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  83. package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs +6 -2
  84. package/dist-esm/lib/ui/components/SharePanel/PeopleMenu.mjs.map +2 -2
  85. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +1 -1
  86. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +1 -1
  87. package/dist-esm/lib/ui/context/actions.mjs +23 -29
  88. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  89. package/dist-esm/lib/ui/version.mjs +3 -3
  90. package/dist-esm/lib/ui/version.mjs.map +1 -1
  91. package/package.json +3 -3
  92. package/src/index.ts +1 -0
  93. package/src/lib/defaultEmbedDefinitions.ts +20 -24
  94. package/src/lib/defaultExternalContentHandlers.ts +11 -36
  95. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +3 -0
  96. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +51 -135
  97. package/src/lib/shapes/bookmark/bookmarks.ts +170 -0
  98. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +28 -2
  99. package/src/lib/shapes/line/LineShapeUtil.tsx +3 -0
  100. package/src/lib/tools/SelectTool/childStates/Crop/children/Cropping.ts +23 -6
  101. package/src/lib/tools/SelectTool/childStates/Crop/children/PointingCropHandle.ts +24 -12
  102. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +34 -11
  103. package/src/lib/tools/SelectTool/childStates/PointingArrowLabel.ts +23 -11
  104. package/src/lib/tools/SelectTool/childStates/PointingResizeHandle.ts +26 -9
  105. package/src/lib/tools/SelectTool/childStates/PointingRotateHandle.ts +23 -10
  106. package/src/lib/tools/SelectTool/childStates/Resizing.ts +24 -9
  107. package/src/lib/tools/SelectTool/childStates/Rotating.ts +27 -11
  108. package/src/lib/tools/SelectTool/childStates/Translating.ts +28 -12
  109. package/src/lib/ui/components/Minimap/MinimapManager.ts +6 -0
  110. package/src/lib/ui/components/SharePanel/PeopleMenu.tsx +6 -2
  111. package/src/lib/ui/components/StylePanel/StylePanelButtonPicker.tsx +1 -1
  112. package/src/lib/ui/context/actions.tsx +27 -31
  113. package/src/lib/ui/version.ts +3 -3
  114. package/src/lib/utils/embeds/embeds.test.ts +16 -34
  115. package/src/test/SelectTool.test.ts +251 -0
  116. package/src/test/bookmark-shapes.test.ts +129 -7
  117. package/src/test/customSnapping.test.tsx +55 -11
  118. package/tldraw.css +7 -2
@@ -173,6 +173,7 @@ describe('custom handle snapping', () => {
173
173
  handlePoints: VecModel[] | 'default'
174
174
  selfSnapOutline: VecModel[] | 'default'
175
175
  selfSnapPoints: VecModel[] | 'default'
176
+ handleSnapType?: 'point' | 'align'
176
177
  }
177
178
  >
178
179
  class TestShapeUtil extends BaseBoxShapeUtil<TestShape> {
@@ -213,17 +214,23 @@ describe('custom handle snapping', () => {
213
214
  }
214
215
  }
215
216
  override getHandles(shape: TestShape): TLHandle[] {
216
- return [
217
- {
218
- id: 'handle',
219
- label: 'handle',
220
- type: 'vertex',
221
- x: shape.props.ownHandle.x,
222
- y: shape.props.ownHandle.y,
223
- index: ZERO_INDEX_KEY,
224
- canSnap: true,
225
- },
226
- ]
217
+ const handle: TLHandle = {
218
+ id: 'handle',
219
+ label: 'handle',
220
+ type: 'vertex',
221
+ x: shape.props.ownHandle.x,
222
+ y: shape.props.ownHandle.y,
223
+ index: ZERO_INDEX_KEY,
224
+ }
225
+
226
+ if (shape.props.handleSnapType) {
227
+ handle.snapType = shape.props.handleSnapType
228
+ } else {
229
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
230
+ handle.canSnap = true
231
+ }
232
+
233
+ return [handle]
227
234
  }
228
235
  override onHandleDrag(shape: TestShape, { handle }: TLHandleDragInfo<TestShape>) {
229
236
  return { ...shape, props: { ...shape.props, ownHandle: { x: handle.x, y: handle.y } } }
@@ -495,5 +502,42 @@ describe('custom handle snapping', () => {
495
502
  expect(ownHandlePosition()).toMatchObject({ x: 20, y: 50 })
496
503
  })
497
504
  })
505
+
506
+ describe('with snapType set to align', () => {
507
+ beforeEach(() => {
508
+ editor.updateShape<TestShape>({
509
+ id: ids.test,
510
+ type: 'test',
511
+ props: {
512
+ selfSnapPoints: [
513
+ { x: 20, y: 50 },
514
+ { x: 60, y: 10 },
515
+ ],
516
+ handleSnapType: 'align',
517
+ },
518
+ })
519
+ })
520
+
521
+ test('snaps to the y axis', () => {
522
+ startDraggingOwnHandle()
523
+ editor.pointerMove(18, 0, undefined, { ctrlKey: true })
524
+ expect(editor.snaps.getIndicators()).toHaveLength(1)
525
+ expect(ownHandlePosition()).toMatchObject({ x: 20, y: 0 })
526
+ })
527
+
528
+ test('snaps to the x axis', () => {
529
+ startDraggingOwnHandle()
530
+ editor.pointerMove(0, 48, undefined, { ctrlKey: true })
531
+ expect(editor.snaps.getIndicators()).toHaveLength(1)
532
+ expect(ownHandlePosition()).toMatchObject({ x: 0, y: 50 })
533
+ })
534
+
535
+ test('snaps to both axes', () => {
536
+ startDraggingOwnHandle()
537
+ editor.pointerMove(18, 9, undefined, { ctrlKey: true })
538
+ expect(editor.snaps.getIndicators()).toHaveLength(2)
539
+ expect(ownHandlePosition()).toMatchObject({ x: 20, y: 10 })
540
+ })
541
+ })
498
542
  })
499
543
  })
package/tldraw.css CHANGED
@@ -1325,6 +1325,10 @@ input,
1325
1325
  flex: 1;
1326
1326
  }
1327
1327
 
1328
+ .tl-bookmark__copy_container:has(.tl-bookmark__link:only-child) {
1329
+ justify-content: center;
1330
+ }
1331
+
1328
1332
  .tl-bookmark__heading,
1329
1333
  .tl-bookmark__description,
1330
1334
  .tl-bookmark__link {
@@ -1357,7 +1361,7 @@ input,
1357
1361
  line-clamp: 3;
1358
1362
  text-overflow: ellipsis;
1359
1363
  display: -webkit-box;
1360
- color: var(--tl-color-text-2);
1364
+ color: var(--tl-color-text-1);
1361
1365
  margin: var(--tl-space-2) 0px;
1362
1366
  }
1363
1367
 
@@ -1369,11 +1373,12 @@ input,
1369
1373
  font-size: 12px;
1370
1374
  pointer-events: all;
1371
1375
  display: flex;
1372
- color: var(--tl-color-text-2);
1376
+ color: var(--tl-color-text-1);
1373
1377
  align-items: center;
1374
1378
  cursor: var(--tl-cursor-pointer);
1375
1379
  width: fit-content;
1376
1380
  max-width: 100%;
1381
+ text-decoration: none;
1377
1382
  }
1378
1383
 
1379
1384
  .tl-bookmark__link > span {