feat(editor): scaffolding store and view manager in affine (#11840)

Closes: BS-3254
This commit is contained in:
Saul-Mirone
2025-04-21 09:22:11 +00:00
parent 5244ff9b98
commit 652d42ba1e
37 changed files with 91 additions and 18 deletions
+20 -6
View File
@@ -30,6 +30,7 @@
"@blocksuite/affine-block-surface-ref": "workspace:*",
"@blocksuite/affine-block-table": "workspace:*",
"@blocksuite/affine-components": "workspace:*",
"@blocksuite/affine-ext-loader": "workspace:*",
"@blocksuite/affine-fragment-doc-title": "workspace:*",
"@blocksuite/affine-fragment-frame-panel": "workspace:*",
"@blocksuite/affine-fragment-outline": "workspace:*",
@@ -71,6 +72,7 @@
"exports": {
".": "./src/index.ts",
"./effects": "./src/effects.ts",
"./ext-loader": "./src/ext-loader/index.ts",
"./std": "./src/std/index.ts",
"./std/gfx": "./src/std/gfx.ts",
"./std/inline": "./src/std/inline.ts",
@@ -86,12 +88,24 @@
"./global/lit": "./src/global/lit.ts",
"./store": "./src/store/index.ts",
"./store/test": "./src/store/test.ts",
"./blocks/attachment": "./src/blocks/attachment.ts",
"./blocks/bookmark": "./src/blocks/bookmark.ts",
"./blocks/callout": "./src/blocks/callout.ts",
"./blocks/code": "./src/blocks/code.ts",
"./blocks/data-view": "./src/blocks/data-view.ts",
"./blocks/database": "./src/blocks/database.ts",
"./blocks/attachment": "./src/blocks/attachment/index.ts",
"./blocks/attachment/store": "./src/blocks/attachment/store.ts",
"./blocks/attachment/view": "./src/blocks/attachment/view.ts",
"./blocks/bookmark": "./src/blocks/bookmark/index.ts",
"./blocks/bookmark/store": "./src/blocks/bookmark/store.ts",
"./blocks/bookmark/view": "./src/blocks/bookmark/view.ts",
"./blocks/callout": "./src/blocks/callout/index.ts",
"./blocks/callout/store": "./src/blocks/callout/store.ts",
"./blocks/callout/view": "./src/blocks/callout/view.ts",
"./blocks/code": "./src/blocks/code/index.ts",
"./blocks/code/store": "./src/blocks/code/store.ts",
"./blocks/code/view": "./src/blocks/code/view.ts",
"./blocks/data-view": "./src/blocks/data-view/index.ts",
"./blocks/data-view/store": "./src/blocks/data-view/store.ts",
"./blocks/data-view/view": "./src/blocks/data-view/view.ts",
"./blocks/database": "./src/blocks/database/index.ts",
"./blocks/database/store": "./src/blocks/database/store.ts",
"./blocks/database/view": "./src/blocks/database/view.ts",
"./blocks/divider": "./src/blocks/divider.ts",
"./blocks/edgeless-text": "./src/blocks/edgeless-text.ts",
"./blocks/embed": "./src/blocks/embed.ts",
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-attachment/store';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-attachment/view';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-bookmark/store';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-bookmark/view';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-callout/store';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-callout/view';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-code';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-code/store';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-code/view';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-data-view';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-data-view/store';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-data-view/view';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-database';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-database/store';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-block-database/view';
@@ -0,0 +1 @@
export * from '@blocksuite/affine-ext-loader';
+1
View File
@@ -27,6 +27,7 @@
{ "path": "../blocks/surface-ref" },
{ "path": "../blocks/table" },
{ "path": "../components" },
{ "path": "../ext-loader" },
{ "path": "../fragments/doc-title" },
{ "path": "../fragments/frame-panel" },
{ "path": "../fragments/outline" },
@@ -6,7 +6,7 @@ import { AttachmentBlockSchemaExtension } from '@blocksuite/affine-model';
import { AttachmentBlockNotionHtmlAdapterExtension } from './adapters/notion-html';
export default class AttachmentStoreExtension extends StoreExtensionProvider {
export class AttachmentStoreExtension extends StoreExtensionProvider {
override name = 'affine-attachment-block';
override setup(context: StoreExtensionContext) {
@@ -18,7 +18,7 @@ import {
const flavour = AttachmentBlockSchema.model.flavour;
export default class AttachmentViewExtension extends ViewExtensionProvider {
export class AttachmentViewExtension extends ViewExtensionProvider {
override name = 'affine-attachment-block';
override effect() {
@@ -6,7 +6,7 @@ import { BookmarkBlockSchemaExtension } from '@blocksuite/affine-model';
import { BookmarkBlockAdapterExtensions } from './adapters/extension';
export default class BookmarkStoreExtension extends StoreExtensionProvider {
export class BookmarkStoreExtension extends StoreExtensionProvider {
override name = 'affine-bookmark-block';
override setup(context: StoreExtensionContext) {
@@ -12,7 +12,7 @@ import { effects } from './effects';
const flavour = BookmarkBlockSchema.model.flavour;
export default class BookmarkViewExtension extends ViewExtensionProvider {
export class BookmarkViewExtension extends ViewExtensionProvider {
override name = 'affine-bookmark-block';
override effect() {
@@ -4,7 +4,7 @@ import {
} from '@blocksuite/affine-ext-loader';
import { CalloutBlockSchemaExtension } from '@blocksuite/affine-model';
export default class CalloutStoreExtension extends StoreExtensionProvider {
export class CalloutStoreExtension extends StoreExtensionProvider {
override name = 'affine-callout-block';
override setup(context: StoreExtensionContext) {
+1 -1
View File
@@ -10,7 +10,7 @@ import { CalloutKeymapExtension } from './callout-keymap';
import { calloutSlashMenuConfig } from './configs/slash-menu';
import { effects } from './effects';
export default class CalloutViewExtension extends ViewExtensionProvider {
export class CalloutViewExtension extends ViewExtensionProvider {
override name = 'affine-callout-block';
override effect() {
+1 -1
View File
@@ -6,7 +6,7 @@ import { CodeBlockSchemaExtension } from '@blocksuite/affine-model';
import { CodeBlockAdapterExtensions } from './adapters/extension';
export default class CodeStoreExtension extends StoreExtensionProvider {
export class CodeStoreExtension extends StoreExtensionProvider {
override name = 'affine-code-block';
override setup(context: StoreExtensionContext) {
+1 -1
View File
@@ -27,7 +27,7 @@ export const codeToolbarWidget = WidgetViewExtension(
literal`${unsafeStatic(AFFINE_CODE_TOOLBAR_WIDGET)}`
);
export default class CodeBlockViewExtension extends ViewExtensionProvider {
export class CodeBlockViewExtension extends ViewExtensionProvider {
override name = 'affine-code-block';
override effect() {
@@ -5,7 +5,7 @@ import {
import { DataViewBlockSchemaExtension } from './data-view-model';
export default class DataViewStoreExtension extends StoreExtensionProvider {
export class DataViewStoreExtension extends StoreExtensionProvider {
override name = 'affine-data-view-block';
override setup(context: StoreExtensionContext) {
@@ -10,7 +10,7 @@ import { effects } from './effects';
const flavour = DataViewBlockSchema.model.flavour;
export default class DataViewViewExtension extends ViewExtensionProvider {
export class DataViewViewExtension extends ViewExtensionProvider {
override name = 'affine-data-view-block';
override effect() {
@@ -7,7 +7,7 @@ import { DatabaseBlockSchemaExtension } from '@blocksuite/affine-model';
import { DatabaseBlockAdapterExtensions } from './adapters/extension';
import { DatabaseSelectionExtension } from './selection';
export default class DatabaseStoreExtension extends StoreExtensionProvider {
export class DatabaseStoreExtension extends StoreExtensionProvider {
override name = 'affine-database-block';
override setup(context: StoreExtensionContext) {
@@ -9,7 +9,7 @@ import { literal } from 'lit/static-html.js';
import { databaseSlashMenuConfig } from './configs/slash-menu.js';
import { effects } from './effects';
export default class DatabaseViewExtension extends ViewExtensionProvider {
export class DatabaseViewExtension extends ViewExtensionProvider {
override name = 'affine-database-block';
override effect() {
@@ -0,0 +1,20 @@
import { AttachmentStoreExtension } from '@blocksuite/affine/blocks/attachment/store';
import { BookmarkStoreExtension } from '@blocksuite/affine/blocks/bookmark/store';
import { CalloutStoreExtension } from '@blocksuite/affine/blocks/callout/store';
import { CodeStoreExtension } from '@blocksuite/affine/blocks/code/store';
import { DataViewStoreExtension } from '@blocksuite/affine/blocks/data-view/store';
import { DatabaseStoreExtension } from '@blocksuite/affine/blocks/database/store';
import { StoreExtensionManager } from '@blocksuite/affine/ext-loader';
export function createStoreManager() {
const manager = new StoreExtensionManager([
AttachmentStoreExtension,
BookmarkStoreExtension,
CalloutStoreExtension,
CodeStoreExtension,
DataViewStoreExtension,
DatabaseStoreExtension,
]);
return manager;
}
@@ -0,0 +1,20 @@
import { AttachmentViewExtension } from '@blocksuite/affine/blocks/attachment/view';
import { BookmarkViewExtension } from '@blocksuite/affine/blocks/bookmark/view';
import { CalloutViewExtension } from '@blocksuite/affine/blocks/callout/view';
import { CodeBlockViewExtension } from '@blocksuite/affine/blocks/code/view';
import { DataViewViewExtension } from '@blocksuite/affine/blocks/data-view/view';
import { DatabaseViewExtension } from '@blocksuite/affine/blocks/database/view';
import { ViewExtensionManager } from '@blocksuite/affine/ext-loader';
export function createViewManager() {
const manager = new ViewExtensionManager([
AttachmentViewExtension,
BookmarkViewExtension,
CalloutViewExtension,
CodeBlockViewExtension,
DataViewViewExtension,
DatabaseViewExtension,
]);
return manager;
}
+1
View File
@@ -25,6 +25,7 @@ export const PackageList = [
'blocksuite/affine/blocks/surface-ref',
'blocksuite/affine/blocks/table',
'blocksuite/affine/components',
'blocksuite/affine/ext-loader',
'blocksuite/affine/fragments/doc-title',
'blocksuite/affine/fragments/frame-panel',
'blocksuite/affine/fragments/outline',
+1
View File
@@ -3840,6 +3840,7 @@ __metadata:
"@blocksuite/affine-block-surface-ref": "workspace:*"
"@blocksuite/affine-block-table": "workspace:*"
"@blocksuite/affine-components": "workspace:*"
"@blocksuite/affine-ext-loader": "workspace:*"
"@blocksuite/affine-fragment-doc-title": "workspace:*"
"@blocksuite/affine-fragment-frame-panel": "workspace:*"
"@blocksuite/affine-fragment-outline": "workspace:*"