refactor(editor): reduce getService (#10100)

This commit is contained in:
Saul-Mirone
2025-02-11 12:26:01 +00:00
parent dbf0f9dc20
commit 6b78d2dcf2
33 changed files with 189 additions and 300 deletions

View File

@@ -76,10 +76,6 @@ export class BlockRenderer
return this.host?.doc.getBlock(this.rowId)?.model;
}
get service() {
return this.host.std.getService('affine:database');
}
override connectedCallback() {
super.connectedCallback();
if (this.model && this.model.text) {

View File

@@ -123,10 +123,6 @@ abstract class BaseTextCell extends BaseCellRenderer<Text> {
return this.host?.std.get(DefaultInlineManagerExtension.identifier);
}
get service() {
return this.host?.std.getService('affine:database');
}
get topContenteditableElement() {
const databaseBlock =
this.closest<DatabaseBlockComponent>('affine-database');

View File

@@ -40,10 +40,6 @@ export function toEdgelessEmbedBlock<
return Bound.deserialize(this.model.xywh);
}
get rootService() {
return this.std.getService('affine:page');
}
_handleClick(_: MouseEvent): void {
return;
}

View File

@@ -36,12 +36,6 @@ export class EmbedEdgelessLinkedDocBlockComponent extends toEdgelessEmbedBlock(
bound.w = EMBED_CARD_WIDTH[style];
bound.h = EMBED_CARD_HEIGHT[style];
const edgelessService = this.rootService;
if (!edgelessService) {
return;
}
const { addBlock } = this.std.get(EdgelessCRUDIdentifier);
const surface = this.gfx.surface ?? undefined;
const newId = addBlock(
@@ -67,10 +61,6 @@ export class EmbedEdgelessLinkedDocBlockComponent extends toEdgelessEmbedBlock(
doc.deleteBlock(this.model);
};
get rootService() {
return this.std.getService('affine:page');
}
protected override _handleClick(evt: MouseEvent): void {
if (isNewTabTrigger(evt)) {
this.open({ openMode: 'open-in-new-tab', event: evt });

View File

@@ -123,16 +123,11 @@ export class EmbedEdgelessSyncedDocBlockComponent extends toEdgelessEmbedBlock(
override convertToCard = (aliasInfo?: AliasInfo) => {
const { id, doc, caption, xywh } = this.model;
const edgelessService = this.rootService;
const style = 'vertical';
const bound = Bound.deserialize(xywh);
bound.w = EMBED_CARD_WIDTH[style];
bound.h = EMBED_CARD_HEIGHT[style];
if (!edgelessService) {
return;
}
const { addBlock } = this.std.get(EdgelessCRUDIdentifier);
const surface = this.gfx.surface ?? undefined;
const newId = addBlock(
@@ -159,10 +154,6 @@ export class EmbedEdgelessSyncedDocBlockComponent extends toEdgelessEmbedBlock(
doc.deleteBlock(this.model);
};
get rootService() {
return this.std.getService('affine:page');
}
override renderGfxBlock() {
const { style, xywh } = this.model;
const bound = Bound.deserialize(xywh);

View File

@@ -351,10 +351,6 @@ export class EmbedSyncedDocBlockComponent extends EmbedBlockComponent<EmbedSynce
.title(pageId, { params, referenced: true });
});
private get _rootService() {
return this.std.getService('affine:page');
}
get blockState() {
return {
isLoading: this._loading,
@@ -504,8 +500,8 @@ export class EmbedSyncedDocBlockComponent extends EmbedBlockComponent<EmbedSynce
})
);
if (this._rootService && !this.linkedMode) {
const docMode = this._rootService.std.get(DocModeProvider);
if (!this.linkedMode) {
const docMode = this.std.get(DocModeProvider);
this.syncedDocMode = docMode.getPrimaryMode(this.model.pageId);
this._isEmptySyncedDoc = isEmptyDoc(this.syncedDoc, this.editorMode);
this.disposables.add(

View File

@@ -34,10 +34,6 @@ export class EdgelessNoteBlockComponent extends toGfxBlockComponent(
return this.gfx.viewport.zoom;
}
get rootService() {
return this.std.getService('affine:page');
}
private _collapsedContent() {
if (!this._isShowCollapsedContent) {
return nothing;

View File

@@ -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;

View File

@@ -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;
}
}
}

View File

@@ -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();
})
);