mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-17 01:56:27 +08:00
refactor(editor): make turbo renderer a gfx extension (#10818)
This allows for easier debugging via `gfx.turboRenderer`
This commit is contained in:
@@ -1,14 +1,11 @@
|
||||
import { ConfigExtensionFactory } from '@blocksuite/block-std';
|
||||
import {
|
||||
ConfigExtensionFactory,
|
||||
LifeCycleWatcher,
|
||||
LifeCycleWatcherIdentifier,
|
||||
StdIdentifier,
|
||||
} from '@blocksuite/block-std';
|
||||
import {
|
||||
GfxControllerIdentifier,
|
||||
type GfxController,
|
||||
GfxExtension,
|
||||
GfxExtensionIdentifier,
|
||||
type GfxViewportElement,
|
||||
} from '@blocksuite/block-std/gfx';
|
||||
import type { Container, ServiceIdentifier } from '@blocksuite/global/di';
|
||||
import type { Container } from '@blocksuite/global/di';
|
||||
import { createIdentifier } from '@blocksuite/global/di';
|
||||
import { DisposableGroup } from '@blocksuite/global/disposable';
|
||||
import debounce from 'lodash-es/debounce';
|
||||
@@ -45,7 +42,9 @@ export const BlockPainterConfigIdentifier =
|
||||
export const TurboRendererConfigFactory =
|
||||
ConfigExtensionFactory<TurboRendererConfig>('viewport-turbo-renderer');
|
||||
|
||||
export class ViewportTurboRendererExtension extends LifeCycleWatcher {
|
||||
export class ViewportTurboRendererExtension extends GfxExtension {
|
||||
static override key = 'viewportTurboRenderer';
|
||||
|
||||
public state: RenderingState = 'inactive';
|
||||
public readonly canvas: HTMLCanvasElement = document.createElement('canvas');
|
||||
private readonly worker: Worker = new Worker(workerUrl, { type: 'module' });
|
||||
@@ -55,8 +54,16 @@ export class ViewportTurboRendererExtension extends LifeCycleWatcher {
|
||||
private bitmap: ImageBitmap | null = null;
|
||||
private viewportElement: GfxViewportElement | null = null;
|
||||
|
||||
static override extendGfx(gfx: GfxController) {
|
||||
Object.defineProperty(gfx, 'turboRenderer', {
|
||||
get() {
|
||||
return gfx.std.get(ViewportTurboRendererIdentifier);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
static override setup(di: Container) {
|
||||
di.addImpl(ViewportTurboRendererIdentifier, this, [StdIdentifier]);
|
||||
super.setup(di);
|
||||
}
|
||||
|
||||
get options(): RendererOptions {
|
||||
@@ -135,10 +142,6 @@ export class ViewportTurboRendererExtension extends LifeCycleWatcher {
|
||||
this.setState('inactive');
|
||||
}
|
||||
|
||||
get gfx() {
|
||||
return this.std.get(GfxControllerIdentifier);
|
||||
}
|
||||
|
||||
get viewport() {
|
||||
return this.gfx.viewport;
|
||||
}
|
||||
@@ -357,6 +360,6 @@ export class ViewportTurboRendererExtension extends LifeCycleWatcher {
|
||||
}
|
||||
}
|
||||
|
||||
export const ViewportTurboRendererIdentifier = LifeCycleWatcherIdentifier(
|
||||
'ViewportTurboRenderer'
|
||||
) as ServiceIdentifier<ViewportTurboRendererExtension>;
|
||||
export const ViewportTurboRendererIdentifier = GfxExtensionIdentifier(
|
||||
'viewportTurboRenderer'
|
||||
);
|
||||
|
||||
@@ -26,7 +26,9 @@ async function init() {
|
||||
addSampleNotes(doc, 100);
|
||||
doc.load();
|
||||
|
||||
const renderer = editor.std.get(ViewportTurboRendererIdentifier);
|
||||
const renderer = editor.std.get(
|
||||
ViewportTurboRendererIdentifier
|
||||
) as ViewportTurboRendererExtension;
|
||||
window.renderer = renderer;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user