feat(editor): use store extension manager (#11891)

Closes: BS-3284
This commit is contained in:
Saul-Mirone
2025-04-22 15:51:22 +00:00
parent 99ad4e871e
commit 43966a6c6b
25 changed files with 160 additions and 54 deletions

View File

@@ -1,5 +1,4 @@
import { defaultImageProxyMiddleware } from '@blocksuite/affine-block-image';
import { SpecProvider } from '@blocksuite/affine-shared/utils';
import {
Schema,
Transformer,
@@ -8,6 +7,7 @@ import {
import { TestWorkspace } from '@blocksuite/store/test';
import { AffineSchemas } from '../../schemas.js';
import { testStoreExtensions } from './store.js';
declare global {
interface Window {
@@ -27,7 +27,7 @@ export function createJob(middlewares?: TransformerMiddleware[]) {
testMiddlewares.push(defaultImageProxyMiddleware);
const schema = new Schema().register(AffineSchemas);
const docCollection = new TestWorkspace();
docCollection.storeExtensions = SpecProvider._.getSpec('store').value;
docCollection.storeExtensions = testStoreExtensions;
docCollection.meta.initialize();
return new Transformer({
schema,

View File

@@ -1,17 +1,17 @@
import { SpecProvider } from '@blocksuite/affine-shared/utils';
import { Container } from '@blocksuite/global/di';
import {
registerBlockSpecs,
registerStoreSpecs,
} from '../../extensions/register';
import { testStoreExtensions } from './store';
registerStoreSpecs();
registerBlockSpecs();
export function getProvider() {
const container = new Container();
const exts = SpecProvider._.getSpec('store').value;
const exts = testStoreExtensions;
exts.forEach(ext => {
ext.setup(container);
});

View File

@@ -0,0 +1,40 @@
import { AttachmentStoreExtension } from '@blocksuite/affine-block-attachment/store';
import { BookmarkStoreExtension } from '@blocksuite/affine-block-bookmark/store';
import { CalloutStoreExtension } from '@blocksuite/affine-block-callout/store';
import { CodeStoreExtension } from '@blocksuite/affine-block-code/store';
import { DataViewStoreExtension } from '@blocksuite/affine-block-data-view/store';
import { DatabaseStoreExtension } from '@blocksuite/affine-block-database/store';
import { DividerStoreExtension } from '@blocksuite/affine-block-divider/store';
import { EdgelessTextStoreExtension } from '@blocksuite/affine-block-edgeless-text/store';
import { EmbedStoreExtension } from '@blocksuite/affine-block-embed/store';
import { FrameStoreExtension } from '@blocksuite/affine-block-frame/store';
import { ImageStoreExtension } from '@blocksuite/affine-block-image/store';
import { LatexStoreExtension } from '@blocksuite/affine-block-latex/store';
import { ListStoreExtension } from '@blocksuite/affine-block-list/store';
import { NoteStoreExtension } from '@blocksuite/affine-block-note/store';
import { ParagraphStoreExtension } from '@blocksuite/affine-block-paragraph/store';
import { StoreExtensionManager } from '@blocksuite/affine-ext-loader';
import { MigratingStoreExtension } from '../../extensions/store';
const manager = new StoreExtensionManager([
AttachmentStoreExtension,
BookmarkStoreExtension,
CalloutStoreExtension,
CodeStoreExtension,
DataViewStoreExtension,
DatabaseStoreExtension,
DividerStoreExtension,
EdgelessTextStoreExtension,
EmbedStoreExtension,
FrameStoreExtension,
ImageStoreExtension,
LatexStoreExtension,
ListStoreExtension,
NoteStoreExtension,
ParagraphStoreExtension,
MigratingStoreExtension,
]);
export const testStoreExtensions = manager.get('store');

View File

@@ -10,7 +10,7 @@ import {
} from '@blocksuite/affine-block-root';
import { SurfaceBlockSchemaExtension } from '@blocksuite/affine-block-surface';
import {
TableBlockHtmlAdapterExtension,
TableBlockAdapterExtensions,
TableSelectionExtension,
} from '@blocksuite/affine-block-table';
import {
@@ -66,10 +66,7 @@ function getAdapterFactoryExtensions(): ExtensionType[] {
];
}
const defaultBlockHtmlAdapterMatchers = [
RootBlockHtmlAdapterExtension,
TableBlockHtmlAdapterExtension,
];
const defaultBlockHtmlAdapterMatchers = [RootBlockHtmlAdapterExtension];
const defaultBlockMarkdownAdapterMatchers = [RootBlockMarkdownAdapterExtension];
@@ -130,6 +127,7 @@ const MigratingStoreExtensions: ExtensionType[] = [
DatabaseSelectionExtension,
TableSelectionExtension,
TableBlockAdapterExtensions,
getHtmlAdapterExtensions(),
getMarkdownAdapterExtensions(),
getNotionHtmlAdapterExtensions(),