Files
AFFiNE-Mirror/blocksuite/affine/block-surface/src/surface-service.ts
T
2024-12-20 15:38:06 +08:00

36 lines
985 B
TypeScript

import { BlockService } from '@blocksuite/block-std';
import { GfxControllerIdentifier } from '@blocksuite/block-std/gfx';
import { type SurfaceBlockModel, SurfaceBlockSchema } from './surface-model.js';
export class SurfaceBlockService extends BlockService {
static override readonly flavour = SurfaceBlockSchema.model.flavour;
surface!: SurfaceBlockModel;
get layer() {
return this.std.get(GfxControllerIdentifier).layer;
}
override mounted(): void {
super.mounted();
this.surface = this.doc.getBlockByFlavour(
'affine:surface'
)[0] as SurfaceBlockModel;
if (!this.surface) {
const disposable = this.doc.slots.blockUpdated.on(payload => {
if (payload.flavour === 'affine:surface') {
disposable.dispose();
const surface = this.doc.getBlockById(
payload.id
) as SurfaceBlockModel | null;
if (!surface) return;
this.surface = surface;
}
});
}
}
}