diff --git a/blocksuite/playground/examples/basic/edgeless/index.html b/blocksuite/playground/examples/basic/edgeless/index.html deleted file mode 100644 index 29a6b70fe..000000000 --- a/blocksuite/playground/examples/basic/edgeless/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - Basic EdgelessEditor Example - - - - - - diff --git a/blocksuite/playground/examples/basic/edgeless/main.ts b/blocksuite/playground/examples/basic/edgeless/main.ts deleted file mode 100644 index 0f8e2b6c4..000000000 --- a/blocksuite/playground/examples/basic/edgeless/main.ts +++ /dev/null @@ -1,15 +0,0 @@ -import '../../../style.css'; - -import { effects as blocksEffects } from '@blocksuite/blocks/effects'; -import { EdgelessEditor } from '@blocksuite/presets'; -import { effects as presetsEffects } from '@blocksuite/presets/effects'; - -import { createEmptyDoc } from '../../../apps/_common/helper'; - -blocksEffects(); -presetsEffects(); - -const doc = createEmptyDoc().init(); -const editor = new EdgelessEditor(); -editor.doc = doc; -document.body.append(editor); diff --git a/blocksuite/playground/examples/basic/page/index.html b/blocksuite/playground/examples/basic/page/index.html deleted file mode 100644 index c3d3d9612..000000000 --- a/blocksuite/playground/examples/basic/page/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - Basic PageEditor Example - - - - - - diff --git a/blocksuite/playground/examples/basic/page/main.ts b/blocksuite/playground/examples/basic/page/main.ts deleted file mode 100644 index 8fd32baa6..000000000 --- a/blocksuite/playground/examples/basic/page/main.ts +++ /dev/null @@ -1,20 +0,0 @@ -import '../../../style.css'; - -import { effects as blocksEffects } from '@blocksuite/blocks/effects'; -import { PageEditor } from '@blocksuite/presets'; -import { effects as presetsEffects } from '@blocksuite/presets/effects'; -import { Text } from '@blocksuite/store'; - -import { createEmptyDoc } from '../../../apps/_common/helper'; - -blocksEffects(); -presetsEffects(); - -const doc = createEmptyDoc().init(); -const editor = new PageEditor(); -editor.doc = doc; -document.body.append(editor); - -const paragraphs = doc.getBlockByFlavour('affine:paragraph'); -const paragraph = paragraphs[0]; -doc.updateBlock(paragraph, { text: new Text('Hello World!') }); diff --git a/blocksuite/playground/examples/multiple-editors/edgeless-edgeless/index.html b/blocksuite/playground/examples/multiple-editors/edgeless-edgeless/index.html deleted file mode 100644 index ce9616a52..000000000 --- a/blocksuite/playground/examples/multiple-editors/edgeless-edgeless/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - Edgeless+Edgeless Multiple-Editors Example - - - - - - diff --git a/blocksuite/playground/examples/multiple-editors/edgeless-edgeless/main.ts b/blocksuite/playground/examples/multiple-editors/edgeless-edgeless/main.ts deleted file mode 100644 index 79d8c3368..000000000 --- a/blocksuite/playground/examples/multiple-editors/edgeless-edgeless/main.ts +++ /dev/null @@ -1,30 +0,0 @@ -import '../../../style.css'; - -import { effects as blocksEffects } from '@blocksuite/blocks/effects'; -import { EdgelessEditor } from '@blocksuite/presets'; -import { effects as presetsEffects } from '@blocksuite/presets/effects'; - -import { createEmptyDoc } from '../../../apps/_common/helper'; - -blocksEffects(); -presetsEffects(); - -const container = document.createElement('div'); -container.style.display = 'flex'; -container.style.height = '100%'; -container.style.width = '100%'; -document.body.append(container); - -const doc1 = createEmptyDoc().init(); -const editor1 = new EdgelessEditor(); -editor1.doc = doc1; -editor1.style.flex = '1'; -editor1.style.borderRight = '1px solid #ccc'; -container.append(editor1); - -const doc2 = createEmptyDoc().init(); -const editor2 = new EdgelessEditor(); -editor2.doc = doc2; -editor2.style.flex = '1'; -editor2.style.borderLeft = '1px solid #ccc'; -container.append(editor2); diff --git a/blocksuite/playground/examples/multiple-editors/page-edgeless/index.html b/blocksuite/playground/examples/multiple-editors/page-edgeless/index.html deleted file mode 100644 index e8948eb2f..000000000 --- a/blocksuite/playground/examples/multiple-editors/page-edgeless/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - Doc+Edgeless Multiple-Editors Example - - - - - - diff --git a/blocksuite/playground/examples/multiple-editors/page-edgeless/main.ts b/blocksuite/playground/examples/multiple-editors/page-edgeless/main.ts deleted file mode 100644 index 6c1138ddb..000000000 --- a/blocksuite/playground/examples/multiple-editors/page-edgeless/main.ts +++ /dev/null @@ -1,30 +0,0 @@ -import '../../../style.css'; - -import { effects as blocksEffects } from '@blocksuite/blocks/effects'; -import { EdgelessEditor, PageEditor } from '@blocksuite/presets'; -import { effects as presetsEffects } from '@blocksuite/presets/effects'; - -import { createEmptyDoc } from '../../../apps/_common/helper'; - -blocksEffects(); -presetsEffects(); - -const container = document.createElement('div'); -container.style.display = 'flex'; -container.style.height = '100%'; -container.style.width = '100%'; -document.body.append(container); - -const doc1 = createEmptyDoc().init(); -const editor1 = new PageEditor(); -editor1.doc = doc1; -editor1.style.flex = '2'; -editor1.style.borderRight = '1px solid #ccc'; -container.append(editor1); - -const doc2 = createEmptyDoc().init(); -const editor2 = new EdgelessEditor(); -editor2.doc = doc2; -editor2.style.flex = '3'; -editor2.style.borderLeft = '1px solid #ccc'; -container.append(editor2); diff --git a/blocksuite/playground/examples/multiple-editors/page-page/index.html b/blocksuite/playground/examples/multiple-editors/page-page/index.html deleted file mode 100644 index d7ae1fdf0..000000000 --- a/blocksuite/playground/examples/multiple-editors/page-page/index.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - Doc+Doc Multiple-Editors Example - - - - - - diff --git a/blocksuite/playground/examples/multiple-editors/page-page/main.ts b/blocksuite/playground/examples/multiple-editors/page-page/main.ts deleted file mode 100644 index d53998a7f..000000000 --- a/blocksuite/playground/examples/multiple-editors/page-page/main.ts +++ /dev/null @@ -1,30 +0,0 @@ -import '../../../style.css'; - -import { effects as blocksEffects } from '@blocksuite/blocks/effects'; -import { PageEditor } from '@blocksuite/presets'; -import { effects as presetsEffects } from '@blocksuite/presets/effects'; - -import { createEmptyDoc } from '../../../apps/_common/helper'; - -blocksEffects(); -presetsEffects(); - -const container = document.createElement('div'); -container.style.display = 'flex'; -container.style.height = '100%'; -container.style.width = '100%'; -document.body.append(container); - -const doc1 = createEmptyDoc().init(); -const editor1 = new PageEditor(); -editor1.doc = doc1; -editor1.style.flex = '1'; -editor1.style.borderRight = '1px solid #ccc'; -container.append(editor1); - -const doc2 = createEmptyDoc().init(); -const editor2 = new PageEditor(); -editor2.doc = doc2; -editor2.style.flex = '1'; -editor2.style.borderLeft = '1px solid #ccc'; -container.append(editor2); diff --git a/blocksuite/playground/index.html b/blocksuite/playground/index.html index c4fc2a09f..7658d44b5 100644 --- a/blocksuite/playground/index.html +++ b/blocksuite/playground/index.html @@ -44,6 +44,19 @@ margin-top: 0px; } } + + affine-editor-container { + display: block; + height: 100%; + } + + .affine-page-viewport { + height: 100%; + } + + .playground-page-editor-container { + height: 100%; + } diff --git a/blocksuite/playground/vite.config.ts b/blocksuite/playground/vite.config.ts index 7ae0542ba..f4dea70e0 100644 --- a/blocksuite/playground/vite.config.ts +++ b/blocksuite/playground/vite.config.ts @@ -99,26 +99,6 @@ export default defineConfig(({ mode }) => { }, input: { main: resolve(__dirname, 'index.html'), - 'examples/basic/page': resolve( - __dirname, - 'examples/basic/page/index.html' - ), - 'examples/basic/edgeless': resolve( - __dirname, - 'examples/basic/edgeless/index.html' - ), - 'examples/multiple-editors/page-page': resolve( - __dirname, - 'examples/multiple-editors/page-page/index.html' - ), - 'examples/multiple-editors/page-edgeless': resolve( - __dirname, - 'examples/multiple-editors/page-edgeless/index.html' - ), - 'examples/multiple-editors/edgeless-edgeless': resolve( - __dirname, - 'examples/multiple-editors/edgeless-edgeless/index.html' - ), 'examples/inline': resolve(__dirname, 'examples/inline/index.html'), }, treeshake: true, diff --git a/blocksuite/presets/src/editors/index.ts b/blocksuite/presets/src/editors/index.ts index 0ca846692..00aced7fb 100644 --- a/blocksuite/presets/src/editors/index.ts +++ b/blocksuite/presets/src/editors/index.ts @@ -1,3 +1 @@ -export * from './edgeless-editor.js'; export * from './editor-container.js'; -export * from './page-editor.js'; diff --git a/blocksuite/presets/src/effects.ts b/blocksuite/presets/src/effects.ts index 6aa7fa268..19994bce1 100644 --- a/blocksuite/presets/src/effects.ts +++ b/blocksuite/presets/src/effects.ts @@ -1,18 +1,12 @@ import '@blocksuite/affine-shared/commands'; import '@blocksuite/blocks/effects'; -import { - AffineEditorContainer, - EdgelessEditor, - PageEditor, -} from './editors/index.js'; +import { AffineEditorContainer } from './editors/index.js'; import { CommentInput } from './fragments/comment/comment-input.js'; import { CommentPanel } from './fragments/index.js'; export function effects() { - customElements.define('page-editor', PageEditor); customElements.define('comment-input', CommentInput); customElements.define('comment-panel', CommentPanel); customElements.define('affine-editor-container', AffineEditorContainer); - customElements.define('edgeless-editor', EdgelessEditor); } diff --git a/blocksuite/tests-legacy/e2e/utils/inline-editor.ts b/blocksuite/tests-legacy/e2e/utils/inline-editor.ts index c03aae6f8..364eb2bd0 100644 --- a/blocksuite/tests-legacy/e2e/utils/inline-editor.ts +++ b/blocksuite/tests-legacy/e2e/utils/inline-editor.ts @@ -1,17 +1,14 @@ import type { Page } from '@playwright/test'; -import { currentEditorIndex } from './multiple-editor.js'; - export async function getStringFromRichText( page: Page, index = 0 ): Promise { await page.waitForTimeout(50); return page.evaluate( - ([index, currentEditorIndex]) => { - const editorHost = - document.querySelectorAll('editor-host')[currentEditorIndex]; - const richTexts = editorHost.querySelectorAll('rich-text'); + ([index]) => { + const editorHost = document.querySelector('editor-host'); + const richTexts = editorHost?.querySelectorAll('rich-text'); if (!richTexts) { throw new Error('Cannot find rich-text'); @@ -20,6 +17,6 @@ export async function getStringFromRichText( const editor = (richTexts[index] as any).inlineEditor; return editor.yText.toString(); }, - [index, currentEditorIndex] + [index] ); } diff --git a/blocksuite/presets/src/editors/edgeless-editor.ts b/packages/frontend/core/src/blocksuite/editors/edgeless-editor.ts similarity index 87% rename from blocksuite/presets/src/editors/edgeless-editor.ts rename to packages/frontend/core/src/blocksuite/editors/edgeless-editor.ts index 4b91dbda9..976bcb640 100644 --- a/blocksuite/presets/src/editors/edgeless-editor.ts +++ b/packages/frontend/core/src/blocksuite/editors/edgeless-editor.ts @@ -1,7 +1,10 @@ -import { BlockStdScope, ShadowlessElement } from '@blocksuite/block-std'; -import { EdgelessEditorBlockSpecs, ThemeProvider } from '@blocksuite/blocks'; -import { SignalWatcher, WithDisposable } from '@blocksuite/global/utils'; -import type { Store } from '@blocksuite/store'; +import { BlockStdScope, ShadowlessElement } from '@blocksuite/affine/block-std'; +import { + EdgelessEditorBlockSpecs, + ThemeProvider, +} from '@blocksuite/affine/blocks'; +import { SignalWatcher, WithDisposable } from '@blocksuite/affine/global/utils'; +import type { Store } from '@blocksuite/affine/store'; import { css, html, nothing, type TemplateResult } from 'lit'; import { property, state } from 'lit/decorators.js'; import { guard } from 'lit/directives/guard.js'; diff --git a/packages/frontend/core/src/blocksuite/editors/index.ts b/packages/frontend/core/src/blocksuite/editors/index.ts new file mode 100644 index 000000000..4ba445ba8 --- /dev/null +++ b/packages/frontend/core/src/blocksuite/editors/index.ts @@ -0,0 +1,10 @@ +import { EdgelessEditor } from './edgeless-editor'; +import { PageEditor } from './page-editor'; + +export * from './edgeless-editor'; +export * from './page-editor'; + +export function effects() { + customElements.define('page-editor', PageEditor); + customElements.define('edgeless-editor', EdgelessEditor); +} diff --git a/blocksuite/presets/src/editors/page-editor.ts b/packages/frontend/core/src/blocksuite/editors/page-editor.ts similarity index 91% rename from blocksuite/presets/src/editors/page-editor.ts rename to packages/frontend/core/src/blocksuite/editors/page-editor.ts index 1948185a6..d49c712ef 100644 --- a/blocksuite/presets/src/editors/page-editor.ts +++ b/packages/frontend/core/src/blocksuite/editors/page-editor.ts @@ -2,10 +2,14 @@ import { BlockStdScope, EditorHost, ShadowlessElement, -} from '@blocksuite/block-std'; -import { PageEditorBlockSpecs, ThemeProvider } from '@blocksuite/blocks'; -import { noop, SignalWatcher, WithDisposable } from '@blocksuite/global/utils'; -import type { Store } from '@blocksuite/store'; +} from '@blocksuite/affine/block-std'; +import { PageEditorBlockSpecs, ThemeProvider } from '@blocksuite/affine/blocks'; +import { + noop, + SignalWatcher, + WithDisposable, +} from '@blocksuite/affine/global/utils'; +import type { Store } from '@blocksuite/affine/store'; import { css, html, nothing } from 'lit'; import { property, state } from 'lit/decorators.js'; import { guard } from 'lit/directives/guard.js'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx index f0a112e41..5302a4bef 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor-container.tsx @@ -1,16 +1,17 @@ +import type { + EdgelessEditor, + PageEditor, +} from '@affine/core/blocksuite/editors'; import { FeatureFlagService } from '@affine/core/modules/feature-flag'; +import type { BlockStdScope, EditorHost } from '@blocksuite/affine/block-std'; import { appendParagraphCommand, type DocMode, type DocTitle, focusBlockEnd, getLastNoteBlock, + type RootBlockModel, } from '@blocksuite/affine/blocks'; -import type { - AffineEditorContainer, - EdgelessEditor, - PageEditor, -} from '@blocksuite/affine/presets'; import { type Store } from '@blocksuite/affine/store'; import { useLiveData, useService } from '@toeverything/infra'; import clsx from 'clsx'; @@ -37,6 +38,18 @@ interface BlocksuiteEditorContainerProps { style?: React.CSSProperties; } +export interface AffineEditorContainer extends HTMLElement { + page: Store; + doc: Store; + docTitle: DocTitle; + host: EditorHost; + model: RootBlockModel | null; + updateComplete: Promise; + mode: DocMode; + origin: HTMLDivElement; + std: BlockStdScope; +} + export const BlocksuiteEditorContainer = forwardRef< AffineEditorContainer, BlocksuiteEditorContainerProps @@ -66,9 +79,11 @@ export const BlocksuiteEditorContainer = forwardRef< return docTitleRef.current; }, get host() { - return mode === 'page' - ? docRef.current?.host - : edgelessRef.current?.host; + return ( + (mode === 'page' + ? docRef.current?.host + : edgelessRef.current?.host) ?? null + ); }, get model() { return page.root as any; @@ -110,7 +125,7 @@ export const BlocksuiteEditorContainer = forwardRef< } return undefined; }, - }) as unknown as AffineEditorContainer & { origin: HTMLDivElement }; + }) as AffineEditorContainer; return proxy; }, [mode, page]); diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx index 7bd791753..0d5f0f926 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/blocksuite-editor.tsx @@ -12,7 +12,6 @@ import { LinkPreviewerService, } from '@blocksuite/affine/blocks'; import { DisposableGroup } from '@blocksuite/affine/global/utils'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import type { Store } from '@blocksuite/affine/store'; import { Slot } from '@radix-ui/react-slot'; import { useLiveData, useService } from '@toeverything/infra'; @@ -21,7 +20,10 @@ import type { CSSProperties } from 'react'; import { useEffect, useMemo, useState } from 'react'; import type { DefaultOpenProperty } from '../../doc-properties'; -import { BlocksuiteEditorContainer } from './blocksuite-editor-container'; +import { + type AffineEditorContainer, + BlocksuiteEditorContainer, +} from './blocksuite-editor-container'; import { NoPageRootError } from './no-page-error'; export type EditorProps = { diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/index.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/index.ts index c5b3d3f00..8f91c5fec 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/index.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/index.ts @@ -1,3 +1,4 @@ +import { effects as editorEffects } from '@affine/core/blocksuite/editors'; import { registerBlocksuitePresetsCustomComponents } from '@affine/core/blocksuite/presets/effects'; import { effects as bsEffects } from '@blocksuite/affine/effects'; @@ -6,7 +7,9 @@ import { effects as patchEffects } from './specs/preview'; bsEffects(); patchEffects(); +editorEffects(); edgelessEffects(); registerBlocksuitePresetsCustomComponents(); export * from './blocksuite-editor'; +export * from './blocksuite-editor-container'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx index b9423515f..c657b4a3d 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/lit-adaper.tsx @@ -3,6 +3,7 @@ import { useConfirmModal, useLitPortalFactory, } from '@affine/component'; +import { EdgelessEditor, PageEditor } from '@affine/core/blocksuite/editors'; import type { DocCustomPropertyInfo } from '@affine/core/modules/db'; import { DocService, DocsService } from '@affine/core/modules/doc'; import type { @@ -27,7 +28,6 @@ import { slashMenuWidget, surfaceRefToolbarWidget, } from '@blocksuite/affine/blocks'; -import { EdgelessEditor, PageEditor } from '@blocksuite/affine/presets'; import type { Store } from '@blocksuite/affine/store'; import { useFramework, diff --git a/packages/frontend/core/src/components/hooks/affine/use-export-page.ts b/packages/frontend/core/src/components/hooks/affine/use-export-page.ts index 8bb511245..506fe823a 100644 --- a/packages/frontend/core/src/components/hooks/affine/use-export-page.ts +++ b/packages/frontend/core/src/components/hooks/affine/use-export-page.ts @@ -21,12 +21,12 @@ import { titleMiddleware, ZipTransformer, } from '@blocksuite/affine/blocks'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import { type Store, Transformer } from '@blocksuite/affine/store'; import { useLiveData, useService } from '@toeverything/infra'; import { useSetAtom } from 'jotai'; import { nanoid } from 'nanoid'; +import type { AffineEditorContainer } from '../../blocksuite/block-suite-editor/blocksuite-editor-container'; import { useAsyncCallback } from '../affine-async-hooks'; type ExportType = 'pdf' | 'html' | 'png' | 'markdown' | 'snapshot'; diff --git a/packages/frontend/core/src/components/hooks/use-block-suite-editor.ts b/packages/frontend/core/src/components/hooks/use-block-suite-editor.ts index 608b6ee93..d45498440 100644 --- a/packages/frontend/core/src/components/hooks/use-block-suite-editor.ts +++ b/packages/frontend/core/src/components/hooks/use-block-suite-editor.ts @@ -1,7 +1,8 @@ -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import type { SetStateAction } from 'jotai'; import { atom, useAtom } from 'jotai'; +import type { AffineEditorContainer } from '../blocksuite/block-suite-editor'; + const activeEditorContainerAtom = atom(null); export function useActiveBlocksuiteEditor(): [ diff --git a/packages/frontend/core/src/components/hooks/use-register-workspace-commands.ts b/packages/frontend/core/src/components/hooks/use-register-workspace-commands.ts index 86643b690..9b3c57133 100644 --- a/packages/frontend/core/src/components/hooks/use-register-workspace-commands.ts +++ b/packages/frontend/core/src/components/hooks/use-register-workspace-commands.ts @@ -9,7 +9,6 @@ import { UrlService } from '@affine/core/modules/url'; import { WorkspaceService } from '@affine/core/modules/workspace'; import { useI18n } from '@affine/i18n'; import { TextSelection } from '@blocksuite/affine/block-std'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import { useService, useServiceOptional } from '@toeverything/infra'; import { useStore } from 'jotai'; import { useTheme } from 'next-themes'; @@ -29,6 +28,7 @@ import { import { usePageHelper } from '../../components/blocksuite/block-suite-page-list/utils'; import { EditorSettingService } from '../../modules/editor-setting'; import { CMDKQuickSearchService } from '../../modules/quicksearch/services/cmdk'; +import type { AffineEditorContainer } from '../blocksuite/block-suite-editor'; import { useActiveBlocksuiteEditor } from './use-block-suite-editor'; import { useNavigateHelper } from './use-navigate-helper'; diff --git a/packages/frontend/core/src/components/page-detail-editor.tsx b/packages/frontend/core/src/components/page-detail-editor.tsx index 7936db52f..ac7fa5d15 100644 --- a/packages/frontend/core/src/components/page-detail-editor.tsx +++ b/packages/frontend/core/src/components/page-detail-editor.tsx @@ -1,6 +1,5 @@ import './page-detail-editor.css'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import { useLiveData, useService } from '@toeverything/infra'; import clsx from 'clsx'; import { useEffect } from 'react'; @@ -8,6 +7,7 @@ import { useEffect } from 'react'; import { DocService } from '../modules/doc'; import { EditorService } from '../modules/editor'; import { EditorSettingService } from '../modules/editor-setting'; +import type { AffineEditorContainer } from './blocksuite/block-suite-editor'; import { BlockSuiteEditor } from './blocksuite/block-suite-editor'; import * as styles from './page-detail-editor.css'; diff --git a/packages/frontend/core/src/desktop/pages/workspace/detail-page/detail-page.tsx b/packages/frontend/core/src/desktop/pages/workspace/detail-page/detail-page.tsx index b998cbf89..be87018e9 100644 --- a/packages/frontend/core/src/desktop/pages/workspace/detail-page/detail-page.tsx +++ b/packages/frontend/core/src/desktop/pages/workspace/detail-page/detail-page.tsx @@ -3,6 +3,7 @@ import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton'; import type { ChatPanel } from '@affine/core/blocksuite/presets'; import { AIProvider } from '@affine/core/blocksuite/presets'; import { PageAIOnboarding } from '@affine/core/components/affine/ai-onboarding'; +import type { AffineEditorContainer } from '@affine/core/components/blocksuite/block-suite-editor'; import { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer'; import { DocPropertySidebar } from '@affine/core/components/doc-properties/sidebar'; import { useAppSettingHelper } from '@affine/core/components/hooks/affine/use-app-setting-helper'; @@ -22,7 +23,6 @@ import { type Disposable, DisposableGroup, } from '@blocksuite/affine/global/utils'; -import { type AffineEditorContainer } from '@blocksuite/affine/presets'; import { AiIcon, FrameIcon, diff --git a/packages/frontend/core/src/desktop/pages/workspace/detail-page/tabs/chat.tsx b/packages/frontend/core/src/desktop/pages/workspace/detail-page/tabs/chat.tsx index af7f1991e..0359e195b 100644 --- a/packages/frontend/core/src/desktop/pages/workspace/detail-page/tabs/chat.tsx +++ b/packages/frontend/core/src/desktop/pages/workspace/detail-page/tabs/chat.tsx @@ -1,4 +1,5 @@ import { ChatPanel } from '@affine/core/blocksuite/presets'; +import type { AffineEditorContainer } from '@affine/core/components/blocksuite/block-suite-editor'; import { createPageModePreviewSpecs } from '@affine/core/components/blocksuite/block-suite-editor/specs/preview'; import { AINetworkSearchService } from '@affine/core/modules/ai-button/services/network-search'; import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta'; @@ -9,7 +10,6 @@ import { DocModeProvider, RefNodeSlotsProvider, } from '@blocksuite/affine/blocks'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import { useFramework } from '@toeverything/infra'; import { forwardRef, useEffect, useRef } from 'react'; diff --git a/packages/frontend/core/src/desktop/pages/workspace/share/share-page.tsx b/packages/frontend/core/src/desktop/pages/workspace/share/share-page.tsx index 02c616369..2abec5aae 100644 --- a/packages/frontend/core/src/desktop/pages/workspace/share/share-page.tsx +++ b/packages/frontend/core/src/desktop/pages/workspace/share/share-page.tsx @@ -1,4 +1,5 @@ import { Scrollable } from '@affine/component'; +import type { AffineEditorContainer } from '@affine/core/components/blocksuite/block-suite-editor'; import { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer'; import { useActiveBlocksuiteEditor } from '@affine/core/components/hooks/use-block-suite-editor'; import { usePageDocumentTitle } from '@affine/core/components/hooks/use-global-state'; @@ -26,7 +27,6 @@ import { RefNodeSlotsProvider, } from '@blocksuite/affine/blocks'; import { DisposableGroup } from '@blocksuite/affine/global/utils'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import { Logo1Icon } from '@blocksuite/icons/rc'; import { FrameworkScope, useLiveData, useService } from '@toeverything/infra'; import clsx from 'clsx'; diff --git a/packages/frontend/core/src/mobile/pages/workspace/detail/mobile-detail-page.tsx b/packages/frontend/core/src/mobile/pages/workspace/detail/mobile-detail-page.tsx index 4b35ef003..9b055ed0f 100644 --- a/packages/frontend/core/src/mobile/pages/workspace/detail/mobile-detail-page.tsx +++ b/packages/frontend/core/src/mobile/pages/workspace/detail/mobile-detail-page.tsx @@ -1,6 +1,7 @@ import { useThemeColorV2 } from '@affine/component'; import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton'; import { AffineErrorBoundary } from '@affine/core/components/affine/affine-error-boundary'; +import type { AffineEditorContainer } from '@affine/core/components/blocksuite/block-suite-editor'; import { useActiveBlocksuiteEditor } from '@affine/core/components/hooks/use-block-suite-editor'; import { usePageDocumentTitle } from '@affine/core/components/hooks/use-global-state'; import { useNavigateHelper } from '@affine/core/components/hooks/use-navigate-helper'; @@ -28,7 +29,6 @@ import { RefNodeSlotsProvider, } from '@blocksuite/affine/blocks'; import { DisposableGroup } from '@blocksuite/affine/global/utils'; -import { type AffineEditorContainer } from '@blocksuite/affine/presets'; import { FrameworkScope, useLiveData, diff --git a/packages/frontend/core/src/modules/editor/entities/editor.ts b/packages/frontend/core/src/modules/editor/entities/editor.ts index 8c156e641..950f46d04 100644 --- a/packages/frontend/core/src/modules/editor/entities/editor.ts +++ b/packages/frontend/core/src/modules/editor/entities/editor.ts @@ -1,3 +1,4 @@ +import type { AffineEditorContainer } from '@affine/core/components/blocksuite/block-suite-editor'; import type { DefaultOpenProperty } from '@affine/core/components/doc-properties'; import { GfxControllerIdentifier } from '@blocksuite/affine/block-std/gfx'; import { @@ -7,7 +8,6 @@ import { HighlightSelection, type ReferenceParams, } from '@blocksuite/affine/blocks'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import type { InlineEditor } from '@blocksuite/inline'; import { effect } from '@preact/signals-core'; import { Entity, LiveData } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx b/packages/frontend/core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx index 15022daa6..b781d1e41 100644 --- a/packages/frontend/core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx +++ b/packages/frontend/core/src/modules/peek-view/view/doc-preview/doc-peek-view.tsx @@ -2,6 +2,7 @@ import { Scrollable } from '@affine/component'; import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton'; import { AIProvider } from '@affine/core/blocksuite/presets'; import { AffineErrorBoundary } from '@affine/core/components/affine/affine-error-boundary'; +import type { AffineEditorContainer } from '@affine/core/components/blocksuite/block-suite-editor'; import { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer'; import { PageNotFound } from '@affine/core/desktop/pages/404'; import { EditorService } from '@affine/core/modules/editor'; @@ -14,7 +15,6 @@ import { type Disposable, DisposableGroup, } from '@blocksuite/affine/global/utils'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import { FrameworkScope, useLiveData, diff --git a/tests/affine-local/e2e/blocksuite/edgeless/note.spec.ts b/tests/affine-local/e2e/blocksuite/edgeless/note.spec.ts index e411b82f6..e767e1a69 100644 --- a/tests/affine-local/e2e/blocksuite/edgeless/note.spec.ts +++ b/tests/affine-local/e2e/blocksuite/edgeless/note.spec.ts @@ -27,7 +27,6 @@ import { type, waitForEditorLoad, } from '@affine-test/kit/utils/page-logic'; -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; import type { EdgelessRootBlockComponent, NoteBlockModel, @@ -294,16 +293,13 @@ test.describe('edgeless note element toolbar', () => { test('note edgeless styles', async ({ page }) => { const getNoteEdgelessProps = async (page: Page, noteId: string) => { const container = locateEditorContainer(page); - return await container.evaluate( - (container: AffineEditorContainer, noteId) => { - const root = container.querySelector( - 'affine-edgeless-root' - ) as EdgelessRootBlockComponent; - const note = root.gfx.getElementById(noteId) as NoteBlockModel; - return note.edgeless; - }, - noteId - ); + return await container.evaluate((container: HTMLElement, noteId) => { + const root = container.querySelector( + 'affine-edgeless-root' + ) as EdgelessRootBlockComponent; + const note = root.gfx.getElementById(noteId) as NoteBlockModel; + return note.edgeless; + }, noteId); }; const toolbar = locateElementToolbar(page); diff --git a/tests/kit/src/utils/editor.ts b/tests/kit/src/utils/editor.ts index b68bbfc3c..30936fa86 100644 --- a/tests/kit/src/utils/editor.ts +++ b/tests/kit/src/utils/editor.ts @@ -1,7 +1,9 @@ -import type { AffineEditorContainer } from '@blocksuite/affine/presets'; +import type * as BlocksuiteBlocks from '@blocksuite/affine/blocks'; import type { IVec, XYWH } from '@blocksuite/global/utils'; import { expect, type Locator, type Page } from '@playwright/test'; +declare type _GLOBAL_ = typeof BlocksuiteBlocks; + const AFFINE_FORMAT_BAR_WIDGET = 'affine-format-bar-widget'; const EDGELESS_ELEMENT_TOOLBAR_WIDGET = 'edgeless-element-toolbar-widget'; const EDGELESS_TOOLBAR_WIDGET = 'edgeless-toolbar-widget'; @@ -73,7 +75,7 @@ export function locateFormatBar(page: Page, editorIndex = 0) { export async function getEdgelessSelectedIds(page: Page, editorIndex = 0) { const container = locateEditorContainer(page, editorIndex); - return container.evaluate((container: AffineEditorContainer) => { + return container.evaluate(container => { const root = container.querySelector('affine-edgeless-root'); if (!root) { throw new Error('Edgeless root not found'); @@ -100,7 +102,7 @@ export async function getSelectedXYWH( export async function getViewportCenter(page: Page, editorIndex = 0) { const container = locateEditorContainer(page, editorIndex); - return container.evaluate((container: AffineEditorContainer) => { + return container.evaluate(container => { const root = container.querySelector('affine-edgeless-root'); if (!root) { throw new Error('Edgeless root not found'); @@ -115,7 +117,7 @@ export async function setViewportCenter( editorIndex = 0 ) { const container = locateEditorContainer(page, editorIndex); - return container.evaluate((container: AffineEditorContainer, center) => { + return container.evaluate((container, center) => { const root = container.querySelector('affine-edgeless-root'); if (!root) { throw new Error('Edgeless root not found'); @@ -126,7 +128,7 @@ export async function setViewportCenter( export async function setViewportZoom(page: Page, zoom = 1, editorIndex = 0) { const container = locateEditorContainer(page, editorIndex); - return container.evaluate((container: AffineEditorContainer, zoom) => { + return container.evaluate((container, zoom) => { const root = container.querySelector('affine-edgeless-root'); if (!root) { throw new Error('Edgeless root not found'); @@ -141,7 +143,7 @@ export async function setViewportZoom(page: Page, zoom = 1, editorIndex = 0) { */ export async function toViewCoord(page: Page, point: IVec, editorIndex = 0) { const container = locateEditorContainer(page, editorIndex); - return container.evaluate((container: AffineEditorContainer, point) => { + return container.evaluate((container, point) => { const root = container.querySelector('affine-edgeless-root'); if (!root) { throw new Error('Edgeless root not found'); @@ -159,7 +161,7 @@ export async function toViewCoord(page: Page, point: IVec, editorIndex = 0) { */ export async function toModelCoord(page: Page, point: IVec, editorIndex = 0) { const container = locateEditorContainer(page, editorIndex); - return container.evaluate((container: AffineEditorContainer, point) => { + return container.evaluate((container, point) => { const root = container.querySelector('affine-edgeless-root'); if (!root) { throw new Error('Edgeless root not found');