refactor(editor): remove legacy block service spec slots (#11013)

This commit is contained in:
Saul-Mirone
2025-03-19 15:52:20 +00:00
parent 1c8d25bc29
commit 76dc55f328
8 changed files with 9 additions and 68 deletions
@@ -43,6 +43,7 @@ import {
compareLayer,
type GfxBlockElementModel,
type GfxCompatibleProps,
GfxControllerIdentifier,
type GfxModel,
type GfxPrimitiveElementModel,
type SerializedElement,
@@ -406,7 +407,7 @@ export class EdgelessClipboardController extends PageClipboard {
}
private get selectionManager() {
return this.host.service.selection;
return this.std.get(GfxControllerIdentifier).selection;
}
private get std() {
@@ -188,11 +188,11 @@ export class EdgelessAutoConnectWidget extends WidgetComponent<RootBlockModel> {
}
private readonly _updateLabels = () => {
const service = this.service;
if (!service.doc.root) return;
const doc = this.std.store;
const root = doc.root;
if (!root) return;
const pageVisibleBlocks = new Map<AutoConnectElement, number>();
const notes = service.doc.root?.children.filter(child =>
const notes = root.children.filter(child =>
matchModels(child, [NoteBlockModel])
);
const edgelessOnlyNotesSet = new Set<NoteBlockModel>();
@@ -63,9 +63,7 @@ export class AffineScrollAnchoringWidget extends WidgetComponent {
anchorBounds$ = signal<Bound | null>(null);
highlighted$ = computed(() =>
this.service.selectionManager.find(HighlightSelection)
);
highlighted$ = computed(() => this.std.selection.find(HighlightSelection));
#getBoundsInEdgeless() {
const controller = this.std.get(GfxControllerIdentifier);
@@ -10,7 +10,6 @@ import {
StdIdentifier,
} from '../identifier.js';
import type { BlockStdScope } from '../scope/index.js';
import { getSlots } from '../spec/index.js';
/**
* @deprecated
@@ -27,8 +26,6 @@ export abstract class BlockService extends Extension {
readonly flavour: string;
readonly specSlots = getSlots();
get collection() {
return this.std.workspace;
}
@@ -108,13 +105,9 @@ export abstract class BlockService extends Extension {
}
// life cycle end
mounted() {
this.specSlots.mounted.next({ service: this });
}
mounted() {}
unmounted() {
this.dispose();
this.specSlots.unmounted.next({ service: this });
this.disposables.dispose();
}
// event handlers end
}
@@ -1,2 +1 @@
export * from './slots.js';
export * from './type.js';
@@ -1,27 +0,0 @@
import { Subject } from 'rxjs';
import type { BlockService } from '../extension/service.js';
import type { BlockComponent, WidgetComponent } from '../view/index.js';
export type BlockSpecSlots<Service extends BlockService = BlockService> = {
mounted: Subject<{ service: Service }>;
unmounted: Subject<{ service: Service }>;
viewConnected: Subject<{ component: BlockComponent; service: Service }>;
viewDisconnected: Subject<{ component: BlockComponent; service: Service }>;
widgetConnected: Subject<{ component: WidgetComponent; service: Service }>;
widgetDisconnected: Subject<{
component: WidgetComponent;
service: Service;
}>;
};
export const getSlots = (): BlockSpecSlots => {
return {
mounted: new Subject(),
unmounted: new Subject(),
viewConnected: new Subject(),
viewDisconnected: new Subject(),
widgetConnected: new Subject(),
widgetDisconnected: new Subject(),
};
};
@@ -229,20 +229,6 @@ export class BlockComponent<
this.requestUpdate();
})
);
this.service?.specSlots.viewConnected.next({
service: this.service,
component: this,
});
}
override disconnectedCallback() {
super.disconnectedCallback();
this.service?.specSlots.viewDisconnected.next({
service: this.service,
component: this,
});
}
protected override async getUpdateComplete(): Promise<boolean> {
@@ -73,20 +73,11 @@ export class WidgetComponent<
override connectedCallback() {
super.connectedCallback();
this.std.view.setWidget(this);
this.service?.specSlots.widgetConnected.next({
service: this.service,
component: this,
});
}
override disconnectedCallback() {
super.disconnectedCallback();
this.std?.view.deleteWidget(this);
this.service?.specSlots.widgetDisconnected.next({
service: this.service,
component: this,
});
}
override render(): unknown {