From fee86304ae80cfa3e3a1a67c348c96ed791157c0 Mon Sep 17 00:00:00 2001 From: donteatfriedrice Date: Fri, 27 Dec 2024 08:52:03 +0000 Subject: [PATCH] refactor(editor): extract adapters to shared (#9344) Extract AttachmentAdapter, ImageAdapter, NotionTextAdapter to shared. --- .../shared/src}/adapters/attachment.ts | 3 ++- .../shared/src}/adapters/image.ts | 3 ++- blocksuite/affine/shared/src/adapters/index.ts | 3 +++ .../shared/src}/adapters/notion-text.ts | 5 +++-- .../__tests__/adapters/notion-text.unit.spec.ts | 2 +- .../blocks/src/_common/adapters/extension.ts | 6 +++--- blocksuite/blocks/src/_common/adapters/index.ts | 3 --- blocksuite/blocks/src/index.ts | 9 +++++++++ .../blocks/src/root-block/clipboard/index.ts | 14 +++++++------- 9 files changed, 30 insertions(+), 18 deletions(-) rename blocksuite/{blocks/src/_common => affine/shared/src}/adapters/attachment.ts (98%) rename blocksuite/{blocks/src/_common => affine/shared/src}/adapters/image.ts (97%) rename blocksuite/{blocks/src/_common => affine/shared/src}/adapters/notion-text.ts (96%) diff --git a/blocksuite/blocks/src/_common/adapters/attachment.ts b/blocksuite/affine/shared/src/adapters/attachment.ts similarity index 98% rename from blocksuite/blocks/src/_common/adapters/attachment.ts rename to blocksuite/affine/shared/src/adapters/attachment.ts index d4b06c7d52..b30188dfa9 100644 --- a/blocksuite/blocks/src/_common/adapters/attachment.ts +++ b/blocksuite/affine/shared/src/adapters/attachment.ts @@ -1,4 +1,3 @@ -import { AdapterFactoryIdentifier } from '@blocksuite/affine-shared/adapters'; import type { ExtensionType } from '@blocksuite/block-std'; import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions'; import { sha } from '@blocksuite/global/utils'; @@ -20,6 +19,8 @@ import { type ToDocSnapshotPayload, } from '@blocksuite/store'; +import { AdapterFactoryIdentifier } from './types/adapter'; + export type Attachment = File[]; type AttachmentToSliceSnapshotPayload = { diff --git a/blocksuite/blocks/src/_common/adapters/image.ts b/blocksuite/affine/shared/src/adapters/image.ts similarity index 97% rename from blocksuite/blocks/src/_common/adapters/image.ts rename to blocksuite/affine/shared/src/adapters/image.ts index a5d95048bb..e8eca4a0c2 100644 --- a/blocksuite/blocks/src/_common/adapters/image.ts +++ b/blocksuite/affine/shared/src/adapters/image.ts @@ -1,4 +1,3 @@ -import { AdapterFactoryIdentifier } from '@blocksuite/affine-shared/adapters'; import type { ExtensionType } from '@blocksuite/block-std'; import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions'; import { sha } from '@blocksuite/global/utils'; @@ -20,6 +19,8 @@ import { type ToDocSnapshotPayload, } from '@blocksuite/store'; +import { AdapterFactoryIdentifier } from './types/adapter'; + export type Image = File[]; type ImageToSliceSnapshotPayload = { diff --git a/blocksuite/affine/shared/src/adapters/index.ts b/blocksuite/affine/shared/src/adapters/index.ts index acd422798e..94dda07733 100644 --- a/blocksuite/affine/shared/src/adapters/index.ts +++ b/blocksuite/affine/shared/src/adapters/index.ts @@ -1,3 +1,4 @@ +export * from './attachment'; export { BlockHtmlAdapterExtension, type BlockHtmlAdapterMatcher, @@ -14,6 +15,7 @@ export { type InlineDeltaToHtmlAdapterMatcher, InlineDeltaToHtmlAdapterMatcherIdentifier, } from './html'; +export * from './image'; export { BlockMarkdownAdapterExtension, type BlockMarkdownAdapterMatcher, @@ -41,6 +43,7 @@ export { NotionHtmlASTToDeltaMatcherIdentifier, NotionHtmlDeltaConverter, } from './notion-html'; +export * from './notion-text'; export { BlockPlainTextAdapterExtension, type BlockPlainTextAdapterMatcher, diff --git a/blocksuite/blocks/src/_common/adapters/notion-text.ts b/blocksuite/affine/shared/src/adapters/notion-text.ts similarity index 96% rename from blocksuite/blocks/src/_common/adapters/notion-text.ts rename to blocksuite/affine/shared/src/adapters/notion-text.ts index a7b8858805..a5cceadb5b 100644 --- a/blocksuite/blocks/src/_common/adapters/notion-text.ts +++ b/blocksuite/affine/shared/src/adapters/notion-text.ts @@ -1,6 +1,4 @@ import { DEFAULT_NOTE_BACKGROUND_COLOR } from '@blocksuite/affine-model'; -import { AdapterFactoryIdentifier } from '@blocksuite/affine-shared/adapters'; -import type { AffineTextAttributes } from '@blocksuite/affine-shared/types'; import type { ExtensionType } from '@blocksuite/block-std'; import { BlockSuiteError, ErrorCode } from '@blocksuite/global/exceptions'; import type { DeltaInsert } from '@blocksuite/inline'; @@ -17,6 +15,9 @@ import { type SliceSnapshot, } from '@blocksuite/store'; +import type { AffineTextAttributes } from '../types'; +import { AdapterFactoryIdentifier } from './types/adapter'; + type NotionEditingStyle = { 0: string; }; diff --git a/blocksuite/blocks/src/__tests__/adapters/notion-text.unit.spec.ts b/blocksuite/blocks/src/__tests__/adapters/notion-text.unit.spec.ts index 1dd7ca1043..bc23448487 100644 --- a/blocksuite/blocks/src/__tests__/adapters/notion-text.unit.spec.ts +++ b/blocksuite/blocks/src/__tests__/adapters/notion-text.unit.spec.ts @@ -1,8 +1,8 @@ import { DEFAULT_NOTE_BACKGROUND_COLOR } from '@blocksuite/affine-model'; +import { NotionTextAdapter } from '@blocksuite/affine-shared/adapters'; import type { SliceSnapshot } from '@blocksuite/store'; import { describe, expect, test } from 'vitest'; -import { NotionTextAdapter } from '../../_common/adapters/notion-text.js'; import { nanoidReplacement } from '../../_common/test-utils/test-utils.js'; import { createJob } from '../utils/create-job.js'; diff --git a/blocksuite/blocks/src/_common/adapters/extension.ts b/blocksuite/blocks/src/_common/adapters/extension.ts index 431ace5238..6e5ea4e2df 100644 --- a/blocksuite/blocks/src/_common/adapters/extension.ts +++ b/blocksuite/blocks/src/_common/adapters/extension.ts @@ -1,18 +1,18 @@ import { + AttachmentAdapterFactoryExtension, HtmlAdapterFactoryExtension, + ImageAdapterFactoryExtension, NotionHtmlAdapterFactoryExtension, + NotionTextAdapterFactoryExtension, PlainTextAdapterFactoryExtension, } from '@blocksuite/affine-shared/adapters'; import type { ExtensionType } from '@blocksuite/block-std'; -import { AttachmentAdapterFactoryExtension } from './attachment.js'; import { htmlInlineToDeltaMatchers } from './html/delta-converter/html-inline.js'; import { inlineDeltaToHtmlAdapterMatchers } from './html/delta-converter/inline-delta.js'; -import { ImageAdapterFactoryExtension } from './image.js'; import { MarkdownAdapterFactoryExtension } from './markdown/markdown.js'; import { MixTextAdapterFactoryExtension } from './mix-text.js'; import { notionHtmlInlineToDeltaMatchers } from './notion-html/delta-converter/html-inline.js'; -import { NotionTextAdapterFactoryExtension } from './notion-text.js'; import { inlineDeltaToPlainTextAdapterMatchers } from './plain-text/delta-converter/inline-delta.js'; export const AdapterFactoryExtensions: ExtensionType[] = [ diff --git a/blocksuite/blocks/src/_common/adapters/index.ts b/blocksuite/blocks/src/_common/adapters/index.ts index ff260ae46b..4891b724fd 100644 --- a/blocksuite/blocks/src/_common/adapters/index.ts +++ b/blocksuite/blocks/src/_common/adapters/index.ts @@ -1,7 +1,4 @@ -export * from './attachment.js'; export * from './extension.js'; -export * from './image.js'; export * from './markdown/index.js'; export * from './mix-text.js'; export * from './notion-html/index.js'; -export * from './notion-text.js'; diff --git a/blocksuite/blocks/src/index.ts b/blocksuite/blocks/src/index.ts index 77619e3b32..6694cab5b6 100644 --- a/blocksuite/blocks/src/index.ts +++ b/blocksuite/blocks/src/index.ts @@ -100,9 +100,18 @@ export { } from '@blocksuite/affine-components/toolbar'; export * from '@blocksuite/affine-model'; export { + AttachmentAdapter, + AttachmentAdapterFactoryExtension, + AttachmentAdapterFactoryIdentifier, HtmlAdapter, HtmlAdapterFactoryExtension, HtmlAdapterFactoryIdentifier, + ImageAdapter, + ImageAdapterFactoryExtension, + ImageAdapterFactoryIdentifier, + NotionTextAdapter, + NotionTextAdapterFactoryExtension, + NotionTextAdapterFactoryIdentifier, PlainTextAdapter, PlainTextAdapterFactoryExtension, PlainTextAdapterFactoryIdentifier, diff --git a/blocksuite/blocks/src/root-block/clipboard/index.ts b/blocksuite/blocks/src/root-block/clipboard/index.ts index eb1d515e88..0cfbe11313 100644 --- a/blocksuite/blocks/src/root-block/clipboard/index.ts +++ b/blocksuite/blocks/src/root-block/clipboard/index.ts @@ -1,14 +1,14 @@ -import { HtmlAdapter } from '@blocksuite/affine-shared/adapters'; +import { + AttachmentAdapter, + HtmlAdapter, + ImageAdapter, + NotionTextAdapter, +} from '@blocksuite/affine-shared/adapters'; import type { BlockComponent, UIEventHandler } from '@blocksuite/block-std'; import { DisposableGroup } from '@blocksuite/global/utils'; import type { BlockSnapshot, Doc } from '@blocksuite/store'; -import { - AttachmentAdapter, - ImageAdapter, - MixTextAdapter, - NotionTextAdapter, -} from '../../_common/adapters/index.js'; +import { MixTextAdapter } from '../../_common/adapters/index.js'; import { defaultImageProxyMiddleware, replaceIdMiddleware,