mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-15 17:16:16 +08:00
1f45cc5dec
**Directory Structure Changes** - Renamed multiple block-related directories by removing the "block-" prefix: - `block-attachment` → `attachment` - `block-bookmark` → `bookmark` - `block-callout` → `callout` - `block-code` → `code` - `block-data-view` → `data-view` - `block-database` → `database` - `block-divider` → `divider` - `block-edgeless-text` → `edgeless-text` - `block-embed` → `embed`
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import { type Container, createIdentifier } from '@blocksuite/global/di';
|
|
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
|
|
import {
|
|
type GfxController,
|
|
GfxControllerIdentifier,
|
|
} from '@blocksuite/std/gfx';
|
|
import { Extension } from '@blocksuite/store';
|
|
|
|
import type { RoughCanvas } from '../utils/rough/canvas.js';
|
|
import type { CanvasRenderer } from './canvas-renderer.js';
|
|
|
|
/**
|
|
* An overlay is a layer covered on top of elements,
|
|
* can be used for rendering non-CRDT state indicators.
|
|
*/
|
|
export abstract class Overlay extends Extension {
|
|
static overlayName: string = '';
|
|
|
|
protected _renderer: CanvasRenderer | null = null;
|
|
|
|
constructor(protected gfx: GfxController) {
|
|
super();
|
|
}
|
|
|
|
static override setup(di: Container): void {
|
|
if (!this.overlayName) {
|
|
throw new BlockSuiteError(
|
|
ErrorCode.ValueNotExists,
|
|
`The overlay constructor '${this.name}' should have a static 'overlayName' property.`
|
|
);
|
|
}
|
|
|
|
di.addImpl(OverlayIdentifier(this.overlayName), this, [
|
|
GfxControllerIdentifier,
|
|
]);
|
|
}
|
|
|
|
clear() {}
|
|
|
|
dispose() {}
|
|
|
|
refresh() {
|
|
if (this._renderer) {
|
|
this._renderer.refresh();
|
|
}
|
|
}
|
|
|
|
abstract render(ctx: CanvasRenderingContext2D, rc: RoughCanvas): void;
|
|
|
|
setRenderer(renderer: CanvasRenderer | null) {
|
|
this._renderer = renderer;
|
|
}
|
|
}
|
|
|
|
export const OverlayIdentifier = createIdentifier<Overlay>('Overlay');
|