@tldraw/editor 3.15.0-canary.51c2773438c3 → 3.15.0-canary.5e9b85d814e1

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 (143) hide show
  1. package/dist-cjs/index.d.ts +58 -44
  2. package/dist-cjs/index.js +18 -16
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/components/SVGContainer.js +1 -1
  5. package/dist-cjs/lib/components/SVGContainer.js.map +2 -2
  6. package/dist-cjs/lib/components/default-components/DefaultBrush.js +1 -1
  7. package/dist-cjs/lib/components/default-components/DefaultBrush.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +1 -1
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  11. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +2 -2
  12. package/dist-cjs/lib/components/default-components/DefaultCursor.js +1 -1
  13. package/dist-cjs/lib/components/default-components/DefaultCursor.js.map +2 -2
  14. package/dist-cjs/lib/components/default-components/DefaultGrid.js +1 -1
  15. package/dist-cjs/lib/components/default-components/DefaultGrid.js.map +2 -2
  16. package/dist-cjs/lib/components/default-components/DefaultHandles.js +1 -1
  17. package/dist-cjs/lib/components/default-components/DefaultHandles.js.map +2 -2
  18. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +1 -1
  19. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  20. package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js +1 -1
  21. package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js.map +2 -2
  22. package/dist-cjs/lib/components/default-components/DefaultSpinner.js +27 -15
  23. package/dist-cjs/lib/components/default-components/DefaultSpinner.js.map +3 -3
  24. package/dist-cjs/lib/config/TLUserPreferences.js +7 -1
  25. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  26. package/dist-cjs/lib/editor/Editor.js +24 -8
  27. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  28. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +96 -101
  29. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
  30. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +7 -2
  31. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  32. package/dist-cjs/lib/editor/tools/StateNode.js +20 -1
  33. package/dist-cjs/lib/editor/tools/StateNode.js.map +2 -2
  34. package/dist-cjs/lib/hooks/useEditorComponents.js.map +1 -1
  35. package/dist-cjs/lib/license/Watermark.js +2 -2
  36. package/dist-cjs/lib/license/Watermark.js.map +2 -2
  37. package/dist-cjs/lib/primitives/geometry/Arc2d.js +1 -1
  38. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  39. package/dist-cjs/lib/primitives/geometry/Circle2d.js +1 -1
  40. package/dist-cjs/lib/primitives/geometry/Circle2d.js.map +2 -2
  41. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +3 -1
  42. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  43. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js +1 -1
  44. package/dist-cjs/lib/primitives/geometry/Ellipse2d.js.map +2 -2
  45. package/dist-cjs/lib/primitives/geometry/geometry-constants.js +2 -2
  46. package/dist-cjs/lib/primitives/geometry/geometry-constants.js.map +2 -2
  47. package/dist-cjs/lib/primitives/intersect.js +4 -4
  48. package/dist-cjs/lib/primitives/intersect.js.map +2 -2
  49. package/dist-cjs/lib/primitives/utils.js +4 -0
  50. package/dist-cjs/lib/primitives/utils.js.map +2 -2
  51. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +0 -1
  52. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
  53. package/dist-cjs/version.js +3 -3
  54. package/dist-cjs/version.js.map +1 -1
  55. package/dist-esm/index.d.mts +58 -44
  56. package/dist-esm/index.mjs +43 -41
  57. package/dist-esm/index.mjs.map +2 -2
  58. package/dist-esm/lib/components/SVGContainer.mjs +1 -1
  59. package/dist-esm/lib/components/SVGContainer.mjs.map +2 -2
  60. package/dist-esm/lib/components/default-components/DefaultBrush.mjs +1 -1
  61. package/dist-esm/lib/components/default-components/DefaultBrush.mjs.map +2 -2
  62. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +1 -1
  63. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  64. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  65. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +2 -2
  66. package/dist-esm/lib/components/default-components/DefaultCursor.mjs +1 -1
  67. package/dist-esm/lib/components/default-components/DefaultCursor.mjs.map +2 -2
  68. package/dist-esm/lib/components/default-components/DefaultGrid.mjs +1 -1
  69. package/dist-esm/lib/components/default-components/DefaultGrid.mjs.map +2 -2
  70. package/dist-esm/lib/components/default-components/DefaultHandles.mjs +1 -1
  71. package/dist-esm/lib/components/default-components/DefaultHandles.mjs.map +2 -2
  72. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +1 -1
  73. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  74. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs +1 -1
  75. package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs.map +2 -2
  76. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs +17 -15
  77. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs.map +2 -2
  78. package/dist-esm/lib/config/TLUserPreferences.mjs +7 -1
  79. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  80. package/dist-esm/lib/editor/Editor.mjs +24 -8
  81. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  82. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +96 -101
  83. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
  84. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +7 -2
  85. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  86. package/dist-esm/lib/editor/tools/StateNode.mjs +20 -1
  87. package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
  88. package/dist-esm/lib/hooks/useEditorComponents.mjs.map +1 -1
  89. package/dist-esm/lib/license/Watermark.mjs +2 -2
  90. package/dist-esm/lib/license/Watermark.mjs.map +2 -2
  91. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +2 -2
  92. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  93. package/dist-esm/lib/primitives/geometry/Circle2d.mjs +2 -2
  94. package/dist-esm/lib/primitives/geometry/Circle2d.mjs.map +2 -2
  95. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +3 -1
  96. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  97. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs +2 -2
  98. package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs.map +2 -2
  99. package/dist-esm/lib/primitives/geometry/geometry-constants.mjs +2 -2
  100. package/dist-esm/lib/primitives/geometry/geometry-constants.mjs.map +2 -2
  101. package/dist-esm/lib/primitives/intersect.mjs +5 -5
  102. package/dist-esm/lib/primitives/intersect.mjs.map +2 -2
  103. package/dist-esm/lib/primitives/utils.mjs +4 -0
  104. package/dist-esm/lib/primitives/utils.mjs.map +2 -2
  105. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +0 -1
  106. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
  107. package/dist-esm/version.mjs +3 -3
  108. package/dist-esm/version.mjs.map +1 -1
  109. package/editor.css +17 -4
  110. package/package.json +9 -8
  111. package/src/index.ts +63 -62
  112. package/src/lib/components/SVGContainer.tsx +1 -1
  113. package/src/lib/components/default-components/DefaultBrush.tsx +1 -1
  114. package/src/lib/components/default-components/DefaultCanvas.tsx +1 -1
  115. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  116. package/src/lib/components/default-components/DefaultCursor.tsx +1 -1
  117. package/src/lib/components/default-components/DefaultGrid.tsx +1 -1
  118. package/src/lib/components/default-components/DefaultHandles.tsx +5 -1
  119. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +1 -1
  120. package/src/lib/components/default-components/DefaultSnapIndictor.tsx +1 -1
  121. package/src/lib/components/default-components/DefaultSpinner.tsx +12 -12
  122. package/src/lib/config/TLUserPreferences.ts +7 -0
  123. package/src/lib/editor/Editor.test.ts +407 -0
  124. package/src/lib/editor/Editor.ts +35 -9
  125. package/src/lib/editor/managers/TextManager/TextManager.ts +108 -128
  126. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +21 -0
  127. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +8 -0
  128. package/src/lib/editor/tools/StateNode.test.ts +285 -0
  129. package/src/lib/editor/tools/StateNode.ts +27 -1
  130. package/src/lib/hooks/useEditorComponents.tsx +1 -1
  131. package/src/lib/license/LicenseManager.test.ts +1 -1
  132. package/src/lib/license/Watermark.tsx +2 -2
  133. package/src/lib/primitives/geometry/Arc2d.ts +2 -2
  134. package/src/lib/primitives/geometry/Circle2d.ts +2 -2
  135. package/src/lib/primitives/geometry/CubicBezier2d.ts +4 -1
  136. package/src/lib/primitives/geometry/Ellipse2d.ts +2 -2
  137. package/src/lib/primitives/geometry/geometry-constants.ts +2 -1
  138. package/src/lib/primitives/intersect.test.ts +946 -0
  139. package/src/lib/primitives/intersect.ts +12 -5
  140. package/src/lib/primitives/utils.ts +11 -0
  141. package/src/lib/utils/sync/TLLocalSyncClient.ts +0 -1
  142. package/src/version.ts +3 -3
  143. package/src/lib/test/currentToolIdMask.test.ts +0 -49
@@ -1432,7 +1432,9 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1432
1432
  return this;
1433
1433
  }
1434
1434
  /**
1435
- * Select all direct children of the current page.
1435
+ * Select all shapes. If the user has selected shapes that share a parent,
1436
+ * select all shapes within that parent. If the user has not selected any shapes,
1437
+ * or if the shapes shapes are only on select all shapes on the current page.
1436
1438
  *
1437
1439
  * @example
1438
1440
  * ```ts
@@ -1442,7 +1444,23 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1442
1444
  * @public
1443
1445
  */
1444
1446
  selectAll() {
1445
- const ids = this.getSortedChildIdsForParent(this.getCurrentPageId());
1447
+ let parentToSelectWithinId = null;
1448
+ const selectedShapeIds = this.getSelectedShapeIds();
1449
+ if (selectedShapeIds.length > 0) {
1450
+ for (const id of selectedShapeIds) {
1451
+ const shape = this.getShape(id);
1452
+ if (!shape) continue;
1453
+ if (parentToSelectWithinId === null) {
1454
+ parentToSelectWithinId = shape.parentId;
1455
+ } else if (parentToSelectWithinId !== shape.parentId) {
1456
+ return this;
1457
+ }
1458
+ }
1459
+ }
1460
+ if (!parentToSelectWithinId) {
1461
+ parentToSelectWithinId = this.getCurrentPageId();
1462
+ }
1463
+ const ids = this.getSortedChildIdsForParent(parentToSelectWithinId);
1446
1464
  if (ids.length <= 0) return this;
1447
1465
  this.setSelectedShapes(this._getUnlockedShapeIds(ids));
1448
1466
  return this;
@@ -1461,9 +1479,8 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1461
1479
  const selectedShapeIds = this.getSelectedShapeIds();
1462
1480
  const firstParentId = selectedShapeIds[0] ? this.getShape(selectedShapeIds[0])?.parentId : null;
1463
1481
  const isSelectedWithinContainer = firstParentId && selectedShapeIds.every((shapeId) => this.getShape(shapeId)?.parentId === firstParentId) && !(0, import_tlschema.isPageId)(firstParentId);
1464
- const readingOrderShapes = isSelectedWithinContainer ? this._getShapesInReadingOrder(
1465
- this.getCurrentPageShapes().filter((shape2) => shape2.parentId === firstParentId)
1466
- ) : this.getCurrentPageShapesInReadingOrder();
1482
+ const filteredShapes = isSelectedWithinContainer ? this.getCurrentPageShapes().filter((shape2) => shape2.parentId === firstParentId) : this.getCurrentPageShapes().filter((shape2) => (0, import_tlschema.isPageId)(shape2.parentId));
1483
+ const readingOrderShapes = isSelectedWithinContainer ? this._getShapesInReadingOrder(filteredShapes) : this.getCurrentPageShapesInReadingOrder();
1467
1484
  const currentShapeId = selectedShapeIds.length === 1 ? selectedShapeIds[0] : readingOrderShapes.find((shape2) => selectedShapeIds.includes(shape2.id))?.id;
1468
1485
  let adjacentShapeId;
1469
1486
  if (direction === "next" || direction === "prev") {
@@ -1473,7 +1490,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1473
1490
  adjacentShapeId = shapeIds[adjacentIndex];
1474
1491
  } else {
1475
1492
  if (!currentShapeId) return;
1476
- adjacentShapeId = this.getNearestAdjacentShape(currentShapeId, direction);
1493
+ adjacentShapeId = this.getNearestAdjacentShape(filteredShapes, currentShapeId, direction);
1477
1494
  }
1478
1495
  const shape = this.getShape(adjacentShapeId);
1479
1496
  if (!shape) return;
@@ -1539,11 +1556,10 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1539
1556
  *
1540
1557
  * @public
1541
1558
  */
1542
- getNearestAdjacentShape(currentShapeId, direction) {
1559
+ getNearestAdjacentShape(shapes, currentShapeId, direction) {
1543
1560
  const directionToAngle = { right: 0, left: 180, down: 90, up: 270 };
1544
1561
  const currentShape = this.getShape(currentShapeId);
1545
1562
  if (!currentShape) return currentShapeId;
1546
- const shapes = this.getCurrentPageShapes();
1547
1563
  const tabbableShapes = shapes.filter(
1548
1564
  (shape) => this.getShapeUtil(shape).canTabTo(shape) && shape.id !== currentShapeId
1549
1565
  );