refactor(editor): reorg code structure of store package (#9525)

This commit is contained in:
Saul-Mirone
2025-01-05 12:49:02 +00:00
parent 1180e9bc15
commit 3d168ba2d2
55 changed files with 618 additions and 635 deletions

View File

@@ -1,7 +1,10 @@
import type { BlockModel, InternalPrimitives } from '../schema/index.js';
import { internalPrimitives } from '../schema/index.js';
import type { BlockModel } from '../model/block/block-model.js';
import type { DraftModel } from '../model/block/draft.js';
import {
type InternalPrimitives,
internalPrimitives,
} from '../model/block/zod.js';
import type { AssetsManager } from './assets.js';
import type { DraftModel } from './draft.js';
import { fromJSON, toJSON } from './json.js';
import type { BlockSnapshot } from './type.js';

View File

@@ -1,35 +0,0 @@
import type { BlockModel } from '../schema/base.js';
type PropsInDraft = 'version' | 'flavour' | 'role' | 'id' | 'keys' | 'text';
type ModelProps<Model> = Model extends BlockModel<infer U> ? U : never;
export type DraftModel<Model extends BlockModel = BlockModel> = Pick<
Model,
PropsInDraft
> & {
children: DraftModel[];
} & ModelProps<Model>;
export function toDraftModel<Model extends BlockModel = BlockModel>(
origin: Model
): DraftModel<Model> {
const { id, version, flavour, role, keys, text, children } = origin;
const props = origin.keys.reduce((acc, key) => {
return {
...acc,
[key]: origin[key as keyof Model],
};
}, {} as ModelProps<Model>);
return {
id,
version,
flavour,
role,
keys,
text,
children: children.map(toDraftModel),
...props,
} as DraftModel<Model>;
}

View File

@@ -1,6 +1,5 @@
export * from './assets.js';
export * from './base.js';
export * from './draft.js';
export * from './job.js';
export * from './json.js';
export * from './middleware.js';

View File

@@ -1,11 +1,15 @@
import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions';
import { nextTick, Slot } from '@blocksuite/global/utils';
import type { BlockModel, BlockSchemaType, Schema } from '../schema/index.js';
import type { Blocks } from '../store/index.js';
import type {
BlockModel,
Blocks,
BlockSchemaType,
DraftModel,
} from '../model/index.js';
import type { Schema } from '../schema/index.js';
import { AssetsManager } from './assets.js';
import { BaseBlockTransformer } from './base.js';
import type { DraftModel } from './draft.js';
import type {
BeforeExportPayload,
BeforeImportPayload,

View File

@@ -1,8 +1,7 @@
import type { Slot } from '@blocksuite/global/utils';
import type { Blocks } from '../store/index.js';
import type { Blocks, DraftModel } from '../model/index.js';
import type { AssetsManager } from './assets.js';
import type { DraftModel } from './draft.js';
import type { Slice } from './slice.js';
import type {
BlockSnapshot,

View File

@@ -1,5 +1,4 @@
import type { Blocks } from '../store/index.js';
import type { DraftModel } from './draft.js';
import type { Blocks, DraftModel } from '../model/index.js';
type SliceData = {
content: DraftModel[];

View File

@@ -1,7 +1,7 @@
import { z } from 'zod';
import type { Blocks } from '../store/doc/doc.js';
import type { DocMeta, DocsPropertiesMeta } from '../store/workspace.js';
import type { Blocks } from '../model/blocks/blocks.js';
import type { DocMeta, DocsPropertiesMeta } from '../model/workspace-meta.js';
export type BlockSnapshot = {
type: 'block';