@tldraw/editor 5.3.0-canary.263f9dbe88bb → 5.3.0-canary.3c03dcdf8fa0
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.
- package/dist-cjs/index.d.ts +9 -1
- package/dist-cjs/index.js +1 -1
- package/dist-cjs/lib/editor/Editor.js +34 -1
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js +18 -29
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js +96 -54
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js +3 -0
- package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js.map +2 -2
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +9 -1
- package/dist-esm/index.mjs +1 -1
- package/dist-esm/lib/editor/Editor.mjs +34 -1
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs +18 -29
- package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs +103 -56
- package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs +3 -0
- package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs.map +2 -2
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/package.json +7 -7
- package/src/lib/editor/Editor.ts +41 -4
- package/src/lib/editor/managers/SpatialIndexManager/RBushIndex.ts +19 -33
- package/src/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.ts +173 -86
- package/src/lib/editor/shapes/BaseFrameLikeShapeUtil.tsx +6 -1
- package/src/version.ts +3 -3
package/dist-cjs/index.d.ts
CHANGED
|
@@ -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
|
}
|
|
@@ -1218,6 +1220,12 @@ export declare class Editor extends EventEmitter<TLEventMap> {
|
|
|
1218
1220
|
* @public
|
|
1219
1221
|
*/
|
|
1220
1222
|
isDisposed: boolean;
|
|
1223
|
+
/**
|
|
1224
|
+
* Whether the editor is mounted.
|
|
1225
|
+
*
|
|
1226
|
+
* @public
|
|
1227
|
+
*/
|
|
1228
|
+
isMounted: boolean;
|
|
1221
1229
|
/* Excluded from this release type: _tickManager */
|
|
1222
1230
|
/**
|
|
1223
1231
|
* A manager for the editor's input state.
|
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.
|
|
382
|
+
"5.3.0-canary.3c03dcdf8fa0",
|
|
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);
|
|
@@ -554,6 +564,9 @@ class Editor extends import_eventemitter3.default {
|
|
|
554
564
|
this.stopFollowingUser();
|
|
555
565
|
}
|
|
556
566
|
this.on("tick", this._flushEventsForTick);
|
|
567
|
+
this.once("mount", () => {
|
|
568
|
+
this.isMounted = true;
|
|
569
|
+
});
|
|
557
570
|
this.timers.requestAnimationFrame(() => {
|
|
558
571
|
this._tickManager.start();
|
|
559
572
|
});
|
|
@@ -648,6 +661,12 @@ class Editor extends import_eventemitter3.default {
|
|
|
648
661
|
* @public
|
|
649
662
|
*/
|
|
650
663
|
isDisposed = false;
|
|
664
|
+
/**
|
|
665
|
+
* Whether the editor is mounted.
|
|
666
|
+
*
|
|
667
|
+
* @public
|
|
668
|
+
*/
|
|
669
|
+
isMounted = false;
|
|
651
670
|
/**
|
|
652
671
|
* A manager for the editor's tick events.
|
|
653
672
|
*
|
|
@@ -4224,7 +4243,21 @@ class Editor extends import_eventemitter3.default {
|
|
|
4224
4243
|
*/
|
|
4225
4244
|
getSelectedShapeAtPoint(point) {
|
|
4226
4245
|
const selectedShapeIds = this.getSelectedShapeIds();
|
|
4227
|
-
|
|
4246
|
+
const margin = this.options.hitTestMargin / this.getZoomLevel();
|
|
4247
|
+
const sortedShapes = this.getCurrentPageShapesSorted();
|
|
4248
|
+
for (let i = sortedShapes.length - 1; i >= 0; i--) {
|
|
4249
|
+
const shape = sortedShapes[i];
|
|
4250
|
+
if (shape.type === "group") continue;
|
|
4251
|
+
if (!selectedShapeIds.includes(shape.id)) continue;
|
|
4252
|
+
if (this.getShapeGeometry(shape).hitTestPoint(
|
|
4253
|
+
this.getPointInShapeSpace(shape, point),
|
|
4254
|
+
margin,
|
|
4255
|
+
true
|
|
4256
|
+
)) {
|
|
4257
|
+
return shape;
|
|
4258
|
+
}
|
|
4259
|
+
}
|
|
4260
|
+
return void 0;
|
|
4228
4261
|
}
|
|
4229
4262
|
/**
|
|
4230
4263
|
* Get the shape at the current point.
|