@tldraw/editor 5.3.0-canary.263f9dbe88bb → 5.3.0-canary.26ec89c1864b

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 (30) hide show
  1. package/dist-cjs/index.d.ts +3 -1
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/lib/editor/Editor.js +10 -0
  4. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  5. package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js +18 -29
  6. package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js.map +2 -2
  7. package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js +96 -54
  8. package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js.map +2 -2
  9. package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js +3 -0
  10. package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js.map +2 -2
  11. package/dist-cjs/version.js +3 -3
  12. package/dist-cjs/version.js.map +1 -1
  13. package/dist-esm/index.d.mts +3 -1
  14. package/dist-esm/index.mjs +1 -1
  15. package/dist-esm/lib/editor/Editor.mjs +10 -0
  16. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  17. package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs +18 -29
  18. package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs.map +2 -2
  19. package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs +103 -56
  20. package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs.map +2 -2
  21. package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs +3 -0
  22. package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs.map +2 -2
  23. package/dist-esm/version.mjs +3 -3
  24. package/dist-esm/version.mjs.map +1 -1
  25. package/package.json +7 -7
  26. package/src/lib/editor/Editor.ts +11 -0
  27. package/src/lib/editor/managers/SpatialIndexManager/RBushIndex.ts +19 -33
  28. package/src/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.ts +173 -86
  29. package/src/lib/editor/shapes/BaseFrameLikeShapeUtil.tsx +6 -1
  30. package/src/version.ts +3 -3
@@ -219,7 +219,7 @@ export declare abstract class BaseBoxShapeUtil<Shape extends TLBaseBoxShape> ext
219
219
  }
220
220
 
221
221
  /**
222
- * A base class for frame-like shapes — containers that clip their children,
222
+ * A base class for frame-like shapes — containers that clip their children except arrows,
223
223
  * require full-brush selection, block erasure from inside, and support
224
224
  * drag-and-drop reparenting.
225
225
  *
@@ -231,6 +231,7 @@ export declare abstract class BaseBoxShapeUtil<Shape extends TLBaseBoxShape> ext
231
231
  * - `canReceiveNewChildrenOfType()` returns `true` unless the container is locked
232
232
  * - `canRemoveChildrenOfType()` returns `true` unless the container is locked
233
233
  * - `getClipPath()` returns the shape geometry's vertices
234
+ * - `shouldClipChild()` clips all children except arrows
234
235
  * - `onDragShapesIn()` reparents shapes into the frame (with index restoration)
235
236
  * - `onDragShapesOut()` reparents shapes back to the page
236
237
  *
@@ -266,6 +267,7 @@ export declare abstract class BaseFrameLikeShapeUtil<Shape extends TLBaseBoxShap
266
267
  canReceiveNewChildrenOfType(shape: Shape, _type: TLShape['type']): boolean;
267
268
  canRemoveChildrenOfType(shape: Shape, _type: TLShape['type']): boolean;
268
269
  getClipPath(shape: Shape): undefined | Vec[];
270
+ shouldClipChild(child: TLShape): boolean;
269
271
  onDragShapesIn(shape: Shape, draggingShapes: TLShape[], { initialParentIds, initialIndices }: TLDragShapesInInfo): void;
270
272
  onDragShapesOut(shape: Shape, draggingShapes: TLShape[], info: TLDragShapesOutInfo): void;
271
273
  }
package/dist-cjs/index.js CHANGED
@@ -379,7 +379,7 @@ var import_uniq = require("./lib/utils/uniq");
379
379
  var import_defaultThemes2 = require("./lib/editor/managers/ThemeManager/defaultThemes");
380
380
  (0, import_utils.registerTldrawLibraryVersion)(
381
381
  "@tldraw/editor",
382
- "5.3.0-canary.263f9dbe88bb",
382
+ "5.3.0-canary.26ec89c1864b",
383
383
  "cjs"
384
384
  );
385
385
  //# sourceMappingURL=index.js.map
@@ -273,12 +273,16 @@ class Editor extends import_eventemitter3.default {
273
273
  let deletedBindings = /* @__PURE__ */ new Map();
274
274
  const deletedShapeIds = /* @__PURE__ */ new Set();
275
275
  const invalidParents = /* @__PURE__ */ new Set();
276
+ const createdShapes = /* @__PURE__ */ new Set();
276
277
  let invalidBindingTypes = /* @__PURE__ */ new Set();
277
278
  this.disposables.add(
278
279
  this.sideEffects.registerOperationCompleteHandler(() => {
279
280
  deletedShapeIds.clear();
281
+ const justCreatedShapeIds = new Set(createdShapes);
282
+ createdShapes.clear();
280
283
  for (const parentId of invalidParents) {
281
284
  invalidParents.delete(parentId);
285
+ if (justCreatedShapeIds.has(parentId)) continue;
282
286
  const parent = this.getShape(parentId);
283
287
  if (!parent) continue;
284
288
  const util = this.getShapeUtil(parent);
@@ -308,6 +312,12 @@ class Editor extends import_eventemitter3.default {
308
312
  this.disposables.add(
309
313
  this.sideEffects.register({
310
314
  shape: {
315
+ afterCreate: (shape) => {
316
+ createdShapes.add(shape.id);
317
+ if (shape.parentId && (0, import_tlschema.isShapeId)(shape.parentId)) {
318
+ invalidParents.add(shape.parentId);
319
+ }
320
+ },
311
321
  afterChange: (shapeBefore, shapeAfter) => {
312
322
  for (const binding of this.getBindingsInvolvingShape(shapeAfter)) {
313
323
  invalidBindingTypes.add(binding.type);