mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 20:38:52 +00:00
feat(editor): life cycle ext (#10668)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import { DisposableGroup, Slot } from '@blocksuite/global/slot';
|
||||
|
||||
import type { BlockStdScope } from '../scope/block-std-scope';
|
||||
import { LifeCycleWatcher } from './lifecycle-watcher';
|
||||
|
||||
export class EditorLifeCycleExtension extends LifeCycleWatcher {
|
||||
static override key = 'editor-life-cycle';
|
||||
|
||||
disposables = new DisposableGroup();
|
||||
|
||||
readonly slots = {
|
||||
created: new Slot(),
|
||||
mounted: new Slot(),
|
||||
rendered: new Slot(),
|
||||
unmounted: new Slot(),
|
||||
};
|
||||
|
||||
constructor(override readonly std: BlockStdScope) {
|
||||
super(std);
|
||||
|
||||
this.disposables.add(this.slots.created);
|
||||
this.disposables.add(this.slots.mounted);
|
||||
this.disposables.add(this.slots.rendered);
|
||||
this.disposables.add(this.slots.unmounted);
|
||||
}
|
||||
|
||||
override created() {
|
||||
super.created();
|
||||
this.slots.created.emit();
|
||||
}
|
||||
|
||||
override mounted() {
|
||||
super.mounted();
|
||||
this.slots.mounted.emit();
|
||||
}
|
||||
|
||||
override rendered() {
|
||||
super.rendered();
|
||||
this.slots.rendered.emit();
|
||||
}
|
||||
|
||||
override unmounted() {
|
||||
super.unmounted();
|
||||
this.slots.unmounted.emit();
|
||||
|
||||
this.disposables.dispose();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
export * from './block-view.js';
|
||||
export * from './config.js';
|
||||
export * from './dnd/index.js';
|
||||
export * from './editor-life-cycle.js';
|
||||
export * from './flavour.js';
|
||||
export * from './keymap.js';
|
||||
export * from './lifecycle-watcher.js';
|
||||
|
||||
@@ -10,6 +10,7 @@ import { Clipboard } from '../clipboard/index.js';
|
||||
import { CommandManager } from '../command/index.js';
|
||||
import { UIEventDispatcher } from '../event/index.js';
|
||||
import { DndController } from '../extension/dnd/index.js';
|
||||
import { EditorLifeCycleExtension } from '../extension/editor-life-cycle.js';
|
||||
import { GfxController } from '../gfx/controller.js';
|
||||
import { GfxSelectionManager } from '../gfx/selection.js';
|
||||
import { SurfaceMiddlewareExtension } from '../gfx/surface-middleware.js';
|
||||
@@ -41,6 +42,7 @@ const internalExtensions = [
|
||||
SurfaceMiddlewareExtension,
|
||||
ViewManager,
|
||||
DndController,
|
||||
EditorLifeCycleExtension,
|
||||
];
|
||||
|
||||
export class BlockStdScope {
|
||||
|
||||
@@ -4,7 +4,6 @@ import {
|
||||
handleError,
|
||||
} from '@blocksuite/global/exceptions';
|
||||
import { SignalWatcher, WithDisposable } from '@blocksuite/global/lit';
|
||||
import { Slot } from '@blocksuite/global/slot';
|
||||
import {
|
||||
type BlockModel,
|
||||
Store,
|
||||
@@ -90,10 +89,6 @@ export class EditorHost extends SignalWatcher(
|
||||
)}`;
|
||||
};
|
||||
|
||||
readonly slots = {
|
||||
unmounted: new Slot(),
|
||||
};
|
||||
|
||||
get command(): CommandManager {
|
||||
return this.std.command;
|
||||
}
|
||||
@@ -131,8 +126,6 @@ export class EditorHost extends SignalWatcher(
|
||||
override disconnectedCallback() {
|
||||
super.disconnectedCallback();
|
||||
this.std.unmount();
|
||||
this.slots.unmounted.emit();
|
||||
this.slots.unmounted.dispose();
|
||||
}
|
||||
|
||||
override async getUpdateComplete(): Promise<boolean> {
|
||||
|
||||
Reference in New Issue
Block a user