refactor: rewrite dblclick and selection logic of default-tool (#11036)

continue #10824

### Changed
- Moved double-click-to-edit behavior from the default tool to individual model views
- Introduced `onSelected` callback interface in gfx view components to allows developers to override default selection logic
This commit is contained in:
doouding committed 2025-03-26 07:32:43 +00:00
1 parent 61c0d01da3
commit ace5d44a61
38 files changed
+779 -353

No files matched your search

@@ -6,6 +6,8 @@ import {
GfxElementModelView,
} from '@blocksuite/block-std/gfx';
import { mountConnectorLabelEditor } from '../text/edgeless-connector-label-editor';
export class ConnectorElementView extends GfxElementModelView<ConnectorElementModel> {
static override type = 'connector';
@@ -24,4 +26,24 @@ export class ConnectorElementView extends GfxElementModelView<ConnectorElementMo
this.model.moveTo(currentBound.moveDelta(dx, dy));
};
override onCreated(): void {
super.onCreated();
this._initDblClickToEdit();
}
private _initDblClickToEdit(): void {
this.on('dblclick', evt => {
const edgeless = this.std.view.getBlock(this.std.store.root!.id);
if (edgeless && !this.model.isLocked()) {
mountConnectorLabelEditor(
this.model,
edgeless,
this.gfx.viewport.toModelCoord(evt.x, evt.y)
);
}
});
}
}