From f4202a7976d64df297f7eaa1bab6fe4b9f1626ba Mon Sep 17 00:00:00 2001 From: donteatfriedrice Date: Thu, 20 Mar 2025 08:56:25 +0000 Subject: [PATCH] refactor(editor): move embed iframe config and service extension to shared (#11029) --- blocksuite/affine/all/src/extensions/store.ts | 6 ++---- .../affine/blocks/block-bookmark/src/configs/toolbar.ts | 2 +- .../embed-iframe-block/commands/insert-embed-iframe.ts | 2 +- .../components/embed-iframe-create-modal.ts | 3 +-- .../components/embed-iframe-link-edit-popup.ts | 3 +-- .../embed-iframe-block/configs/providers/excalidraw.ts | 3 ++- .../embed-iframe-block/configs/providers/google-docs.ts | 3 ++- .../embed-iframe-block/configs/providers/google-drive.ts | 3 ++- .../src/embed-iframe-block/configs/providers/miro.ts | 3 ++- .../src/embed-iframe-block/configs/providers/spotify.ts | 3 ++- .../src/embed-iframe-block/embed-iframe-block.ts | 8 +++----- .../blocks/block-embed/src/embed-iframe-block/index.ts | 1 - .../src/services/embed-iframe}/embed-iframe-config.ts | 0 .../src/services/embed-iframe}/embed-iframe-service.ts | 5 ----- .../src/services/embed-iframe}/index.ts | 0 blocksuite/affine/shared/src/services/index.ts | 1 + 16 files changed, 20 insertions(+), 26 deletions(-) rename blocksuite/affine/{blocks/block-embed/src/embed-iframe-block/extension => shared/src/services/embed-iframe}/embed-iframe-config.ts (100%) rename blocksuite/affine/{blocks/block-embed/src/embed-iframe-block/extension => shared/src/services/embed-iframe}/embed-iframe-service.ts (96%) rename blocksuite/affine/{blocks/block-embed/src/embed-iframe-block/extension => shared/src/services/embed-iframe}/index.ts (100%) diff --git a/blocksuite/affine/all/src/extensions/store.ts b/blocksuite/affine/all/src/extensions/store.ts index 916e574fa..9c3dab997 100644 --- a/blocksuite/affine/all/src/extensions/store.ts +++ b/blocksuite/affine/all/src/extensions/store.ts @@ -1,9 +1,6 @@ import { DataViewBlockSchemaExtension } from '@blocksuite/affine-block-data-view'; import { DatabaseSelectionExtension } from '@blocksuite/affine-block-database'; -import { - EmbedIframeConfigExtensions, - EmbedIframeService, -} from '@blocksuite/affine-block-embed'; +import { EmbedIframeConfigExtensions } from '@blocksuite/affine-block-embed'; import { ImageStoreSpec } from '@blocksuite/affine-block-image'; import { SurfaceBlockSchemaExtension } from '@blocksuite/affine-block-surface'; import { TableSelectionExtension } from '@blocksuite/affine-block-table'; @@ -39,6 +36,7 @@ import { } from '@blocksuite/affine-shared/selection'; import { BlockMetaService, + EmbedIframeService, FeatureFlagService, FileSizeLimitService, LinkPreviewerService, diff --git a/blocksuite/affine/blocks/block-bookmark/src/configs/toolbar.ts b/blocksuite/affine/blocks/block-bookmark/src/configs/toolbar.ts index 1e09bf9b3..fa34768a4 100644 --- a/blocksuite/affine/blocks/block-bookmark/src/configs/toolbar.ts +++ b/blocksuite/affine/blocks/block-bookmark/src/configs/toolbar.ts @@ -1,4 +1,3 @@ -import { EmbedIframeService } from '@blocksuite/affine-block-embed'; import { reassociateConnectorsCommand } from '@blocksuite/affine-block-surface'; import { toast } from '@blocksuite/affine-components/toast'; import { @@ -12,6 +11,7 @@ import { } from '@blocksuite/affine-shared/consts'; import { ActionPlacement, + EmbedIframeService, EmbedOptionProvider, FeatureFlagService, type LinkEventType, diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/commands/insert-embed-iframe.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/commands/insert-embed-iframe.ts index 7c15ade5c..d24eeebf7 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/commands/insert-embed-iframe.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/commands/insert-embed-iframe.ts @@ -2,6 +2,7 @@ import { EdgelessCRUDIdentifier, SurfaceBlockComponent, } from '@blocksuite/affine-block-surface'; +import { EmbedIframeService } from '@blocksuite/affine-shared/services'; import { BlockSelection, type Command, @@ -15,7 +16,6 @@ import { EMBED_IFRAME_DEFAULT_HEIGHT_IN_SURFACE, EMBED_IFRAME_DEFAULT_WIDTH_IN_SURFACE, } from '../consts'; -import { EmbedIframeService } from '../extension/embed-iframe-service'; export const insertEmbedIframeCommand: Command< { url: string }, diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/components/embed-iframe-create-modal.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/components/embed-iframe-create-modal.ts index 06bee8399..128218e4e 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/components/embed-iframe-create-modal.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/components/embed-iframe-create-modal.ts @@ -1,3 +1,4 @@ +import { EmbedIframeService } from '@blocksuite/affine-shared/services'; import { unsafeCSSVar, unsafeCSSVarV2 } from '@blocksuite/affine-shared/theme'; import { isValidUrl, stopPropagation } from '@blocksuite/affine-shared/utils'; import type { BlockStdScope } from '@blocksuite/block-std'; @@ -9,8 +10,6 @@ import { css, html, LitElement, nothing, unsafeCSS } from 'lit'; import { property, query, state } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; -import { EmbedIframeService } from '../extension/embed-iframe-service'; - type EmbedModalVariant = 'default' | 'compact'; export class EmbedIframeCreateModal extends WithDisposable(LitElement) { diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/components/embed-iframe-link-edit-popup.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/components/embed-iframe-link-edit-popup.ts index 6eb846e63..1b5b9e26a 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/components/embed-iframe-link-edit-popup.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/components/embed-iframe-link-edit-popup.ts @@ -1,4 +1,5 @@ import { type EmbedIframeBlockModel } from '@blocksuite/affine-model'; +import { EmbedIframeService } from '@blocksuite/affine-shared/services'; import { unsafeCSSVar, unsafeCSSVarV2 } from '@blocksuite/affine-shared/theme'; import { isValidUrl, stopPropagation } from '@blocksuite/affine-shared/utils'; import { BlockSelection, type BlockStdScope } from '@blocksuite/block-std'; @@ -7,8 +8,6 @@ import { DoneIcon } from '@blocksuite/icons/lit'; import { css, html, LitElement } from 'lit'; import { property, query, state } from 'lit/decorators.js'; -import { EmbedIframeService } from '../extension/embed-iframe-service'; - export class EmbedIframeLinkEditPopup extends SignalWatcher( WithDisposable(LitElement) ) { diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/excalidraw.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/excalidraw.ts index a9f484cc0..0d1e02542 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/excalidraw.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/excalidraw.ts @@ -1,4 +1,5 @@ -import { EmbedIframeConfigExtension } from '../../extension/embed-iframe-config'; +import { EmbedIframeConfigExtension } from '@blocksuite/affine-shared/services'; + import { type EmbedIframeUrlValidationOptions, validateEmbedIframeUrl, diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/google-docs.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/google-docs.ts index 192b8a9c2..24d38ae42 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/google-docs.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/google-docs.ts @@ -1,4 +1,5 @@ -import { EmbedIframeConfigExtension } from '../../extension/embed-iframe-config'; +import { EmbedIframeConfigExtension } from '@blocksuite/affine-shared/services'; + import { type EmbedIframeUrlValidationOptions, validateEmbedIframeUrl, diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/google-drive.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/google-drive.ts index 872e26211..f6e633f67 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/google-drive.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/google-drive.ts @@ -1,4 +1,5 @@ -import { EmbedIframeConfigExtension } from '../../extension/embed-iframe-config'; +import { EmbedIframeConfigExtension } from '@blocksuite/affine-shared/services'; + import { type EmbedIframeUrlValidationOptions, validateEmbedIframeUrl, diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/miro.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/miro.ts index c977312b4..f91466f71 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/miro.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/miro.ts @@ -1,4 +1,5 @@ -import { EmbedIframeConfigExtension } from '../../extension/embed-iframe-config'; +import { EmbedIframeConfigExtension } from '@blocksuite/affine-shared/services'; + import { type EmbedIframeUrlValidationOptions, validateEmbedIframeUrl, diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/spotify.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/spotify.ts index c0fa3f171..289141305 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/spotify.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/configs/providers/spotify.ts @@ -1,4 +1,5 @@ -import { EmbedIframeConfigExtension } from '../../extension/embed-iframe-config'; +import { EmbedIframeConfigExtension } from '@blocksuite/affine-shared/services'; + import { type EmbedIframeUrlValidationOptions, validateEmbedIframeUrl, diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/embed-iframe-block.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/embed-iframe-block.ts index fc03a0d4e..421144109 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/embed-iframe-block.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/embed-iframe-block.ts @@ -5,7 +5,10 @@ import { } from '@blocksuite/affine-components/caption'; import type { EmbedIframeBlockModel } from '@blocksuite/affine-model'; import { + type EmbedIframeData, + EmbedIframeService, FeatureFlagService, + type IframeOptions, LinkPreviewerService, } from '@blocksuite/affine-shared/services'; import { matchModels } from '@blocksuite/affine-shared/utils'; @@ -16,11 +19,6 @@ import { html, nothing } from 'lit'; import { type ClassInfo, classMap } from 'lit/directives/class-map.js'; import { ifDefined } from 'lit/directives/if-defined.js'; -import type { IframeOptions } from './extension/embed-iframe-config.js'; -import { - type EmbedIframeData, - EmbedIframeService, -} from './extension/embed-iframe-service.js'; import { embedIframeBlockStyles } from './style.js'; import type { EmbedIframeStatusCardOptions } from './types.js'; import { safeGetIframeSrc } from './utils.js'; diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/index.ts b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/index.ts index 52ec403af..b6ed1f974 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/index.ts +++ b/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/index.ts @@ -4,4 +4,3 @@ export * from './components/embed-iframe-create-modal'; export * from './configs'; export * from './embed-iframe-block'; export * from './embed-iframe-spec'; -export * from './extension'; diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/extension/embed-iframe-config.ts b/blocksuite/affine/shared/src/services/embed-iframe/embed-iframe-config.ts similarity index 100% rename from blocksuite/affine/blocks/block-embed/src/embed-iframe-block/extension/embed-iframe-config.ts rename to blocksuite/affine/shared/src/services/embed-iframe/embed-iframe-config.ts diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/extension/embed-iframe-service.ts b/blocksuite/affine/shared/src/services/embed-iframe/embed-iframe-service.ts similarity index 96% rename from blocksuite/affine/blocks/block-embed/src/embed-iframe-block/extension/embed-iframe-service.ts rename to blocksuite/affine/shared/src/services/embed-iframe/embed-iframe-service.ts index 4f5d45412..edcca85bc 100644 --- a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/extension/embed-iframe-service.ts +++ b/blocksuite/affine/shared/src/services/embed-iframe/embed-iframe-service.ts @@ -1,5 +1,4 @@ import type { EmbedIframeBlockProps } from '@blocksuite/affine-model'; -import { createIdentifier } from '@blocksuite/global/di'; import { type Store, StoreExtension } from '@blocksuite/store'; import { @@ -69,10 +68,6 @@ export interface EmbedIframeProvider { ) => string | undefined; } -export const EmbedIframeProvider = createIdentifier( - 'EmbedIframeProvider' -); - export class EmbedIframeService extends StoreExtension implements EmbedIframeProvider diff --git a/blocksuite/affine/blocks/block-embed/src/embed-iframe-block/extension/index.ts b/blocksuite/affine/shared/src/services/embed-iframe/index.ts similarity index 100% rename from blocksuite/affine/blocks/block-embed/src/embed-iframe-block/extension/index.ts rename to blocksuite/affine/shared/src/services/embed-iframe/index.ts diff --git a/blocksuite/affine/shared/src/services/index.ts b/blocksuite/affine/shared/src/services/index.ts index c89e3ab47..994115272 100644 --- a/blocksuite/affine/shared/src/services/index.ts +++ b/blocksuite/affine/shared/src/services/index.ts @@ -4,6 +4,7 @@ export * from './doc-mode-service'; export * from './drag-handle-config'; export * from './edit-props-store'; export * from './editor-setting-service'; +export * from './embed-iframe'; export * from './embed-option-service'; export * from './feature-flag-service'; export * from './file-size-limit-service';