mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-31 17:19:56 +08:00
refactor(editor): reduce getService (#10100)
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import type { Command } from '@blocksuite/block-std';
|
||||
|
||||
import { SurfaceBlockService } from '../surface-service';
|
||||
|
||||
/**
|
||||
* Re-associate bindings for block that have been converted.
|
||||
*
|
||||
@@ -11,7 +13,7 @@ export const reassociateConnectorsCommand: Command<{
|
||||
newId: string;
|
||||
}> = (ctx, next) => {
|
||||
const { oldId, newId } = ctx;
|
||||
const service = ctx.std.getService('affine:surface');
|
||||
const service = ctx.std.get(SurfaceBlockService);
|
||||
if (!oldId || !newId || !service) {
|
||||
next();
|
||||
return;
|
||||
|
||||
@@ -2,8 +2,10 @@ import type { SurfaceElementModelMap } from '@blocksuite/affine-model';
|
||||
import { EditPropsStore } from '@blocksuite/affine-shared/services';
|
||||
import { type BlockStdScope, StdIdentifier } from '@blocksuite/block-std';
|
||||
import {
|
||||
GfxBlockElementModel,
|
||||
GfxControllerIdentifier,
|
||||
type GfxModel,
|
||||
isGfxGroupCompatibleModel,
|
||||
} from '@blocksuite/block-std/gfx';
|
||||
import { type Container, createIdentifier } from '@blocksuite/global/di';
|
||||
import { type BlockModel, Extension } from '@blocksuite/store';
|
||||
@@ -155,4 +157,25 @@ export class EdgelessCRUDExtension extends Extension {
|
||||
}
|
||||
return this._surface.getElementsByType(type);
|
||||
}
|
||||
|
||||
removeElement(id: string | GfxModel) {
|
||||
id = typeof id === 'string' ? id : id.id;
|
||||
|
||||
const el = this.getElementById(id);
|
||||
if (isGfxGroupCompatibleModel(el)) {
|
||||
el.childIds.forEach(childId => {
|
||||
this.removeElement(childId);
|
||||
});
|
||||
}
|
||||
|
||||
if (el instanceof GfxBlockElementModel) {
|
||||
this.std.store.deleteBlock(el);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this._surface?.hasElementById(id)) {
|
||||
this._surface.deleteElement(id);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,10 @@ import { query } from 'lit/decorators.js';
|
||||
|
||||
import { ConnectorElementModel } from './element-model/index.js';
|
||||
import { CanvasRenderer } from './renderer/canvas-renderer.js';
|
||||
import type { ElementRenderer } from './renderer/elements/index.js';
|
||||
import {
|
||||
type ElementRenderer,
|
||||
elementRenderers,
|
||||
} from './renderer/elements/index.js';
|
||||
import { OverlayIdentifier } from './renderer/overlay.js';
|
||||
import type { SurfaceBlockModel } from './surface-model.js';
|
||||
import type { SurfaceBlockService } from './surface-service.js';
|
||||
@@ -126,10 +129,6 @@ export class SurfaceBlockComponent extends BlockComponent<
|
||||
this._renderer?.refresh();
|
||||
};
|
||||
|
||||
private get _edgelessService() {
|
||||
return this.std.getService('affine:page') as unknown as SurfaceContext;
|
||||
}
|
||||
|
||||
private get _gfx() {
|
||||
return this.std.get(GfxControllerIdentifier);
|
||||
}
|
||||
@@ -179,12 +178,12 @@ export class SurfaceBlockComponent extends BlockComponent<
|
||||
property,
|
||||
themeService.edgelessTheme
|
||||
),
|
||||
selectedElements: () => this._edgelessService.selection.selectedIds,
|
||||
selectedElements: () => gfx.selection.selectedIds,
|
||||
},
|
||||
onStackingCanvasCreated(canvas) {
|
||||
canvas.className = 'indexable-canvas';
|
||||
},
|
||||
elementRenderers: this._edgelessService.elementRenderers,
|
||||
elementRenderers,
|
||||
surfaceModel: this.model,
|
||||
});
|
||||
|
||||
@@ -205,7 +204,7 @@ export class SurfaceBlockComponent extends BlockComponent<
|
||||
})
|
||||
);
|
||||
this._disposables.add(
|
||||
this._edgelessService.selection.slots.updated.on(() => {
|
||||
gfx.selection.slots.updated.on(() => {
|
||||
this._renderer.refresh();
|
||||
})
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user