From 1516903c77c594c0eb0cbffc185262977c6abd48 Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Thu, 20 Feb 2025 10:45:47 +0000 Subject: [PATCH] refactor: move doc-title and ai-chat-block components (#10316) ### TL;DR Moved doc title and AI chat block components to more appropriate locations while removing unused backlink functionality. ### What changed? - Relocated doc title component from presets to affine-components - Moved AI chat block from presets/blocks to blocks directory - Removed unused backlink-related code and components - Updated imports across files to reference new component locations - Consolidated AI-related exports through a single entry point ### How to test? 1. Verify doc title still renders correctly in documents 2. Confirm AI chat functionality works as expected 3. Check that no backlink-related features are accessible 4. Ensure all AI features continue to work through the new import paths ### Why make this change? This reorganization improves code organization by: - Placing components closer to their related functionality - Removing dead/unused code around backlinks - Simplifying the import structure for AI-related features - Making the codebase more maintainable by consolidating related components --- blocksuite/blocks/src/effects.ts | 2 + blocksuite/blocks/src/index.ts | 4 + blocksuite/presets/src/effects.ts | 5 - .../doc-meta-tags/backlink-popover.ts | 148 ------------------ .../src/fragments/doc-meta-tags/utils.ts | 19 --- .../presets/src/fragments/doc-title/index.ts | 1 - blocksuite/presets/src/fragments/index.ts | 1 - .../src/fragments/outline/utils/scroll.ts | 3 +- .../blocks/ai-chat-block/ai-chat-block.ts | 4 +- .../ai-chat-block/ai-chat-edgeless-block.ts | 0 .../blocks/ai-chat-block/ai-chat-spec.ts | 0 .../components/ai-chat-messages.ts | 4 +- .../ai-chat-block/components/chat-images.ts | 3 +- .../ai-chat-block/components}/icon.ts | 29 ---- .../components/image-placeholder.ts | 0 .../ai-chat-block/components/user-info.ts | 4 +- .../blocksuite/blocks/ai-chat-block/index.ts | 5 +- .../{ => model}/ai-chat-model.ts | 0 .../ai-chat-block/{ => model}/consts.ts | 0 .../blocks/ai-chat-block/model/index.ts | 3 + .../blocks/ai-chat-block/{ => model}/types.ts | 0 .../blocks/ai-chat-block/styles.ts | 0 .../src/blocksuite/initialization/index.ts | 10 -- .../presets/ai/chat-panel/components/utils.ts | 2 +- .../core/src/blocksuite/presets/ai/index.ts | 2 + .../presets/blocks/ai-chat-block/index.ts | 3 - .../src/blocksuite/presets/blocks/index.ts | 2 - .../core/src/blocksuite/presets/effects.ts | 24 +-- .../core/src/blocksuite/presets/index.ts | 3 +- .../block-suite-editor/ai/request.ts | 2 +- .../block-suite-editor/ai/setup-provider.tsx | 2 +- .../block-suite-editor/ai/tracker.ts | 2 +- .../blocksuite-editor-container.tsx | 2 +- .../block-suite-editor/lit-adaper.tsx | 7 +- .../block-suite-editor/specs/common.ts | 4 +- .../specs/custom/root-block.ts | 4 +- .../specs/custom/widgets/copy-as-image.ts | 5 +- .../block-suite-editor/specs/edgeless.ts | 2 +- .../block-suite-editor/specs/page.ts | 2 +- .../block-suite-editor/specs/preview.ts | 2 +- .../block-suite-editor/starter-bar.tsx | 6 +- .../providers/workspace-side-effects.tsx | 2 +- .../workspace/detail-page/detail-page.tsx | 4 +- .../pages/workspace/detail-page/tabs/chat.tsx | 2 +- .../core/src/modules/cloud/services/auth.ts | 2 +- .../src/modules/editor/entities/editor.ts | 6 +- .../view/ai-chat-block-peek-view/index.tsx | 4 +- .../view/doc-preview/doc-peek-view.tsx | 2 +- .../src/modules/workspace/global-schema.ts | 3 +- 49 files changed, 66 insertions(+), 280 deletions(-) delete mode 100644 blocksuite/presets/src/fragments/doc-meta-tags/backlink-popover.ts delete mode 100644 blocksuite/presets/src/fragments/doc-meta-tags/utils.ts delete mode 100644 blocksuite/presets/src/fragments/doc-title/index.ts rename packages/frontend/core/src/blocksuite/{presets => }/blocks/ai-chat-block/ai-chat-block.ts (92%) rename packages/frontend/core/src/blocksuite/{presets => }/blocks/ai-chat-block/ai-chat-edgeless-block.ts (100%) rename packages/frontend/core/src/blocksuite/{presets => }/blocks/ai-chat-block/ai-chat-spec.ts (100%) rename packages/frontend/core/src/blocksuite/{presets => }/blocks/ai-chat-block/components/ai-chat-messages.ts (96%) rename packages/frontend/core/src/blocksuite/{presets => }/blocks/ai-chat-block/components/chat-images.ts (95%) rename packages/frontend/core/src/blocksuite/{presets/blocks/_common => blocks/ai-chat-block/components}/icon.ts (79%) rename packages/frontend/core/src/blocksuite/{presets => }/blocks/ai-chat-block/components/image-placeholder.ts (100%) rename packages/frontend/core/src/blocksuite/{presets => }/blocks/ai-chat-block/components/user-info.ts (95%) rename packages/frontend/core/src/blocksuite/blocks/ai-chat-block/{ => model}/ai-chat-model.ts (100%) rename packages/frontend/core/src/blocksuite/blocks/ai-chat-block/{ => model}/consts.ts (100%) create mode 100644 packages/frontend/core/src/blocksuite/blocks/ai-chat-block/model/index.ts rename packages/frontend/core/src/blocksuite/blocks/ai-chat-block/{ => model}/types.ts (100%) rename packages/frontend/core/src/blocksuite/{presets => }/blocks/ai-chat-block/styles.ts (100%) delete mode 100644 packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/index.ts delete mode 100644 packages/frontend/core/src/blocksuite/presets/blocks/index.ts diff --git a/blocksuite/blocks/src/effects.ts b/blocksuite/blocks/src/effects.ts index dd4cf14af7..840c410398 100644 --- a/blocksuite/blocks/src/effects.ts +++ b/blocksuite/blocks/src/effects.ts @@ -22,6 +22,7 @@ import { effects as componentCaptionEffects } from '@blocksuite/affine-component import { effects as componentColorPickerEffects } from '@blocksuite/affine-components/color-picker'; import { effects as componentContextMenuEffects } from '@blocksuite/affine-components/context-menu'; import { effects as componentDatePickerEffects } from '@blocksuite/affine-components/date-picker'; +import { effects as componentDocTitleEffects } from '@blocksuite/affine-components/doc-title'; import { effects as componentDropIndicatorEffects } from '@blocksuite/affine-components/drop-indicator'; import { effects as componentEmbedCardModalEffects } from '@blocksuite/affine-components/embed-card-modal'; import { FilterableListComponent } from '@blocksuite/affine-components/filterable-list'; @@ -213,6 +214,7 @@ export function effects() { componentAiItemEffects(); componentColorPickerEffects(); componentEmbedCardModalEffects(); + componentDocTitleEffects(); widgetScrollAnchoringEffects(); widgetMobileToolbarEffects(); diff --git a/blocksuite/blocks/src/index.ts b/blocksuite/blocks/src/index.ts index 4415427491..04f3da59df 100644 --- a/blocksuite/blocks/src/index.ts +++ b/blocksuite/blocks/src/index.ts @@ -58,6 +58,10 @@ export { type MenuOptions, onMenuOpen, } from '@blocksuite/affine-components/context-menu'; +export { + DocTitle, + getDocTitleByEditorHost, +} from '@blocksuite/affine-components/doc-title'; export { HoverController, whenHover, diff --git a/blocksuite/presets/src/effects.ts b/blocksuite/presets/src/effects.ts index 1847c2ab1b..6952043bdc 100644 --- a/blocksuite/presets/src/effects.ts +++ b/blocksuite/presets/src/effects.ts @@ -7,8 +7,6 @@ import { PageEditor, } from './editors/index.js'; import { CommentInput } from './fragments/comment/comment-input.js'; -import { BacklinkButton } from './fragments/doc-meta-tags/backlink-popover.js'; -import { effects as docTitleEffects } from './fragments/doc-title/index.js'; import { AFFINE_FRAME_PANEL_BODY, FramePanelBody, @@ -70,8 +68,6 @@ import { } from './fragments/outline/header/outline-setting-menu.js'; export function effects() { - docTitleEffects(); - customElements.define('page-editor', PageEditor); customElements.define('comment-input', CommentInput); customElements.define( @@ -82,7 +78,6 @@ export function effects() { customElements.define(AFFINE_OUTLINE_NOTICE, OutlineNotice); customElements.define('comment-panel', CommentPanel); customElements.define(AFFINE_OUTLINE_PANEL, OutlinePanel); - customElements.define('backlink-button', BacklinkButton); customElements.define(AFFINE_OUTLINE_PANEL_HEADER, OutlinePanelHeader); customElements.define('affine-editor-container', AffineEditorContainer); customElements.define(AFFINE_OUTLINE_NOTE_CARD, OutlineNoteCard); diff --git a/blocksuite/presets/src/fragments/doc-meta-tags/backlink-popover.ts b/blocksuite/presets/src/fragments/doc-meta-tags/backlink-popover.ts deleted file mode 100644 index 3fdf7885c4..0000000000 --- a/blocksuite/presets/src/fragments/doc-meta-tags/backlink-popover.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { DualLinkIcon16, scrollbarStyle } from '@blocksuite/blocks'; -import { WithDisposable } from '@blocksuite/global/utils'; -import { baseTheme } from '@toeverything/theme'; -import { css, html, LitElement, unsafeCSS } from 'lit'; -import { state } from 'lit/decorators.js'; - -import { type BacklinkData, DEFAULT_DOC_NAME } from './utils.js'; - -export class BacklinkButton extends WithDisposable(LitElement) { - static override styles = css` - :host { - position: relative; - display: flex; - } - - .btn { - padding: 0 12px; - box-sizing: border-box; - display: inline-flex; - align-items: center; - border: none; - height: 30px; - border-radius: 8px; - gap: 4px; - background: transparent; - cursor: pointer; - - user-select: none; - font-size: var(--affine-font-sm); - font-family: ${unsafeCSS(baseTheme.fontSansFamily)}; - fill: var(--affine-text-secondary-color); - color: var(--affine-text-secondary-color); - pointer-events: auto; - } - - .btn > span { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - - .btn:hover { - background: var(--affine-hover-color); - } - - .btn:active { - background: var(--affine-hover-color); - } - - .backlink-popover { - position: absolute; - left: 0; - bottom: 0; - transform: translateY(100%); - z-index: 1; - padding-top: 8px; - } - - .menu { - display: flex; - flex-direction: column; - padding: 8px 4px; - background: var(--affine-white); - box-shadow: var(--affine-menu-shadow); - border-radius: 12px; - } - - .backlink-popover .group-title { - color: var(--affine-text-secondary-color); - margin: 8px 12px; - } - - .backlink-popover icon-button { - padding: 8px; - justify-content: flex-start; - gap: 8px; - } - - ${scrollbarStyle('.backlink-popover .group')} - `; - - private readonly _backlinks: BacklinkData[]; - - // Handle click outside - private readonly _onClickAway = (e: Event) => { - if (e.target === this) return; - if (!this._showPopover) return; - this._showPopover = false; - document.removeEventListener('mousedown', this._onClickAway); - }; - - constructor(backlinks: BacklinkData[]) { - super(); - - this._backlinks = backlinks; - } - - override connectedCallback() { - super.connectedCallback(); - - this.tabIndex = 0; - } - - onClick() { - this._showPopover = !this._showPopover; - document.addEventListener('mousedown', this._onClickAway); - } - - override render() { - // Only show linked doc backlinks - const backlinks = this._backlinks; - if (!backlinks.length) return null; - - return html` -
- ${DualLinkIcon16}Backlinks (${backlinks.length}) - ${this._showPopover ? backlinkPopover(backlinks) : null} -
- `; - } - - @state() - private accessor _showPopover = false; -} - -function backlinkPopover(backlinks: BacklinkData[]) { - return html``; -} diff --git a/blocksuite/presets/src/fragments/doc-meta-tags/utils.ts b/blocksuite/presets/src/fragments/doc-meta-tags/utils.ts deleted file mode 100644 index f5697ee8e7..0000000000 --- a/blocksuite/presets/src/fragments/doc-meta-tags/utils.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { AffineTextAttributes } from '@blocksuite/affine-shared/types'; -import type { DocMeta } from '@blocksuite/store'; -import type { TemplateResult } from 'lit'; - -export const DOC_BLOCK_CHILD_PADDING = 24; - -export const DEFAULT_DOC_NAME = 'Untitled'; - -export type BackLink = { - pageId: string; - blockId: string; - type: NonNullable['type']; -}; - -export type BacklinkData = BackLink & - DocMeta & { - jump: () => void; - icon: TemplateResult; - }; diff --git a/blocksuite/presets/src/fragments/doc-title/index.ts b/blocksuite/presets/src/fragments/doc-title/index.ts deleted file mode 100644 index 31bed24c22..0000000000 --- a/blocksuite/presets/src/fragments/doc-title/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '@blocksuite/affine-components/doc-title'; diff --git a/blocksuite/presets/src/fragments/index.ts b/blocksuite/presets/src/fragments/index.ts index 607923fdeb..2f78e9f9c9 100644 --- a/blocksuite/presets/src/fragments/index.ts +++ b/blocksuite/presets/src/fragments/index.ts @@ -1,4 +1,3 @@ export * from './comment/index.js'; -export * from './doc-title/index.js'; export * from './frame-panel/index.js'; export * from './outline/index.js'; diff --git a/blocksuite/presets/src/fragments/outline/utils/scroll.ts b/blocksuite/presets/src/fragments/outline/utils/scroll.ts index 711146e386..c1fedbd3ce 100644 --- a/blocksuite/presets/src/fragments/outline/utils/scroll.ts +++ b/blocksuite/presets/src/fragments/outline/utils/scroll.ts @@ -1,9 +1,8 @@ import type { EditorHost } from '@blocksuite/block-std'; -import { NoteDisplayMode } from '@blocksuite/blocks'; +import { getDocTitleByEditorHost, NoteDisplayMode } from '@blocksuite/blocks'; import { clamp, DisposableGroup } from '@blocksuite/global/utils'; import type { AffineEditorContainer } from '../../../editors/editor-container.js'; -import { getDocTitleByEditorHost } from '../../doc-title/index.js'; import { getHeadingBlocksFromDoc } from './query.js'; export function scrollToBlock(editor: AffineEditorContainer, blockId: string) { diff --git a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/ai-chat-block.ts b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/ai-chat-block.ts similarity index 92% rename from packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/ai-chat-block.ts rename to packages/frontend/core/src/blocksuite/blocks/ai-chat-block/ai-chat-block.ts index c461a1d2a4..3536ff77ea 100644 --- a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/ai-chat-block.ts +++ b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/ai-chat-block.ts @@ -3,8 +3,8 @@ import { Peekable } from '@blocksuite/affine/blocks'; import { computed } from '@preact/signals-core'; import { html } from 'lit'; -import { type AIChatBlockModel, ChatMessagesSchema } from '../../../blocks'; -import { ChatWithAIIcon } from '../_common/icon'; +import { ChatWithAIIcon } from './components/icon'; +import { type AIChatBlockModel, ChatMessagesSchema } from './model'; import { AIChatBlockStyles } from './styles'; @Peekable({ diff --git a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/ai-chat-edgeless-block.ts b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/ai-chat-edgeless-block.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/ai-chat-edgeless-block.ts rename to packages/frontend/core/src/blocksuite/blocks/ai-chat-block/ai-chat-edgeless-block.ts diff --git a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/ai-chat-spec.ts b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/ai-chat-spec.ts similarity index 100% rename from packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/ai-chat-spec.ts rename to packages/frontend/core/src/blocksuite/blocks/ai-chat-block/ai-chat-spec.ts diff --git a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/components/ai-chat-messages.ts b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/ai-chat-messages.ts similarity index 96% rename from packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/components/ai-chat-messages.ts rename to packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/ai-chat-messages.ts index 87169255b7..a8d7dee47c 100644 --- a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/components/ai-chat-messages.ts +++ b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/ai-chat-messages.ts @@ -1,3 +1,4 @@ +import type { TextRendererOptions } from '@affine/core/blocksuite/presets'; import type { EditorHost } from '@blocksuite/affine/block-std'; import type { AffineAIPanelState } from '@blocksuite/affine/blocks'; import { css, html, LitElement } from 'lit'; @@ -5,8 +6,7 @@ import { property } from 'lit/decorators.js'; import { classMap } from 'lit/directives/class-map.js'; import { repeat } from 'lit/directives/repeat.js'; -import type { ChatMessage, MessageRole } from '../../../../blocks'; -import type { TextRendererOptions } from '../../../_common/components/text-renderer'; +import type { ChatMessage, MessageRole } from '../model'; import { UserInfoTemplate } from './user-info'; export class AIChatMessage extends LitElement { diff --git a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/components/chat-images.ts b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/chat-images.ts similarity index 95% rename from packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/components/chat-images.ts rename to packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/chat-images.ts index bd6faeb24d..2f87c77d07 100644 --- a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/components/chat-images.ts +++ b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/chat-images.ts @@ -1,9 +1,10 @@ +import { LoadingIcon } from '@blocksuite/affine/blocks'; import { css, html, LitElement, nothing } from 'lit'; import { property } from 'lit/decorators.js'; import { choose } from 'lit/directives/choose.js'; import { repeat } from 'lit/directives/repeat.js'; -import { ImageLoadingFailedIcon, LoadingIcon } from '../../_common/icon'; +import { ImageLoadingFailedIcon } from './icon'; export class ChatImage extends LitElement { static override styles = css` diff --git a/packages/frontend/core/src/blocksuite/presets/blocks/_common/icon.ts b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/icon.ts similarity index 79% rename from packages/frontend/core/src/blocksuite/presets/blocks/_common/icon.ts rename to packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/icon.ts index bb6199f5fc..adcf38061f 100644 --- a/packages/frontend/core/src/blocksuite/presets/blocks/_common/icon.ts +++ b/packages/frontend/core/src/blocksuite/blocks/ai-chat-block/components/icon.ts @@ -57,35 +57,6 @@ export const ImageLoadingFailedIcon = html` `; -export const LoadingIcon = html` - - - -`; - export const SmallHintIcon = html`; } -export function initEmptyDoc(doc: Store, title?: string) { - doc.load(() => { - initDocFromProps(doc, { - page: { - title: new Text(title), - }, - }); - }); -} - export function initDocFromProps(doc: Store, props?: DocProps) { doc.load(() => { const pageBlockId = doc.addBlock( diff --git a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/components/utils.ts b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/components/utils.ts index 72a2b85b88..bb76fb5b3e 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/components/utils.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/components/utils.ts @@ -1,8 +1,8 @@ import type { CopilotContextDoc, CopilotContextFile } from '@affine/graphql'; +import { LoadingIcon } from '@blocksuite/affine/blocks'; import { WarningIcon } from '@blocksuite/icons/lit'; import { type TemplateResult } from 'lit'; -import { LoadingIcon } from '../../../blocks/_common/icon'; import type { ChatChip, ChipState, DocChip, FileChip } from '../chat-context'; export function getChipTooltip( diff --git a/packages/frontend/core/src/blocksuite/presets/ai/index.ts b/packages/frontend/core/src/blocksuite/presets/ai/index.ts index 2d804bc527..9a7f27cd2f 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/index.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/index.ts @@ -1,3 +1,4 @@ +export * from './_common/config'; export * from './actions/index'; export * from './ai-spec'; export { ChatPanel } from './chat-panel/index'; @@ -6,3 +7,4 @@ export * from './entries/index'; export * from './messages/index'; export { AIChatBlockPeekViewTemplate } from './peek-view/chat-block-peek-view'; export * from './provider'; +export * from './utils/edgeless'; diff --git a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/index.ts b/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/index.ts deleted file mode 100644 index a997ff1f53..0000000000 --- a/packages/frontend/core/src/blocksuite/presets/blocks/ai-chat-block/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './ai-chat-block.js'; -export * from './ai-chat-edgeless-block.js'; -export * from './ai-chat-spec.js'; diff --git a/packages/frontend/core/src/blocksuite/presets/blocks/index.ts b/packages/frontend/core/src/blocksuite/presets/blocks/index.ts deleted file mode 100644 index c22f2e823e..0000000000 --- a/packages/frontend/core/src/blocksuite/presets/blocks/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { AIChatMessages } from './ai-chat-block/components/ai-chat-messages.js'; -export * from './ai-chat-block/index.js'; diff --git a/packages/frontend/core/src/blocksuite/presets/effects.ts b/packages/frontend/core/src/blocksuite/presets/effects.ts index 0c07c63c95..7e95fff4bd 100644 --- a/packages/frontend/core/src/blocksuite/presets/effects.ts +++ b/packages/frontend/core/src/blocksuite/presets/effects.ts @@ -1,3 +1,15 @@ +import { AIChatBlockComponent } from '../blocks/ai-chat-block/ai-chat-block'; +import { EdgelessAIChatBlockComponent } from '../blocks/ai-chat-block/ai-chat-edgeless-block'; +import { + AIChatMessage, + AIChatMessages, +} from '../blocks/ai-chat-block/components/ai-chat-messages'; +import { + ChatImage, + ChatImages, +} from '../blocks/ai-chat-block/components/chat-images'; +import { ImagePlaceholder } from '../blocks/ai-chat-block/components/image-placeholder'; +import { UserInfo } from '../blocks/ai-chat-block/components/user-info'; import { TextRenderer } from './_common/components/text-renderer'; import { AskAIButton } from './ai/_common/components/ask-ai-button'; import { AskAIIcon } from './ai/_common/components/ask-ai-icon'; @@ -29,18 +41,6 @@ import { registerMiniMindmapBlocks } from './ai/mini-mindmap'; import { ChatBlockInput } from './ai/peek-view/chat-block-input'; import { AIChatBlockPeekView } from './ai/peek-view/chat-block-peek-view'; import { DateTime } from './ai/peek-view/date-time'; -import { AIChatBlockComponent } from './blocks/ai-chat-block/ai-chat-block'; -import { EdgelessAIChatBlockComponent } from './blocks/ai-chat-block/ai-chat-edgeless-block'; -import { - AIChatMessage, - AIChatMessages, -} from './blocks/ai-chat-block/components/ai-chat-messages'; -import { - ChatImage, - ChatImages, -} from './blocks/ai-chat-block/components/chat-images'; -import { ImagePlaceholder } from './blocks/ai-chat-block/components/image-placeholder'; -import { UserInfo } from './blocks/ai-chat-block/components/user-info'; export function registerBlocksuitePresetsCustomComponents() { registerMiniMindmapBlocks(); diff --git a/packages/frontend/core/src/blocksuite/presets/index.ts b/packages/frontend/core/src/blocksuite/presets/index.ts index 1ebd6df410..8e604b90e5 100644 --- a/packages/frontend/core/src/blocksuite/presets/index.ts +++ b/packages/frontend/core/src/blocksuite/presets/index.ts @@ -1 +1,2 @@ -export * from './_common/components/text-renderer'; +export * from './_common'; +export * from './ai'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/request.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/request.ts index 236b92be3b..b19a23001a 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/request.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/request.ts @@ -1,4 +1,4 @@ -import { AIProvider } from '@affine/core/blocksuite/presets/ai'; +import { AIProvider } from '@affine/core/blocksuite/presets'; import { assertExists } from '@blocksuite/affine/global/utils'; import { partition } from 'lodash-es'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx index 867516bed6..b55259990e 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/setup-provider.tsx @@ -1,4 +1,4 @@ -import { AIProvider } from '@affine/core/blocksuite/presets/ai'; +import { AIProvider } from '@affine/core/blocksuite/presets'; import { toggleGeneralAIOnboarding } from '@affine/core/components/affine/ai-onboarding/apis'; import type { GlobalDialogService } from '@affine/core/modules/dialogs'; import { diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/tracker.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/tracker.ts index adb0a4ae45..a03dbd8c28 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/tracker.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/ai/tracker.ts @@ -1,4 +1,4 @@ -import { AIProvider } from '@affine/core/blocksuite/presets/ai'; +import { AIProvider } from '@affine/core/blocksuite/presets'; import { mixpanel, track } from '@affine/track'; import type { EditorHost } from '@blocksuite/affine/block-std'; import type { GfxPrimitiveElementModel } from '@blocksuite/affine/block-std/gfx'; 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 38935698f8..f0a112e415 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 @@ -2,12 +2,12 @@ import { FeatureFlagService } from '@affine/core/modules/feature-flag'; import { appendParagraphCommand, type DocMode, + type DocTitle, focusBlockEnd, getLastNoteBlock, } from '@blocksuite/affine/blocks'; import type { AffineEditorContainer, - DocTitle, EdgelessEditor, PageEditor, } from '@blocksuite/affine/presets'; 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 8c2909cf39..b9423515fe 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 @@ -20,17 +20,14 @@ import track from '@affine/track'; import { codeToolbarWidget, type DocMode, + DocTitle, embedCardToolbarWidget, formatBarWidget, imageToolbarWidget, slashMenuWidget, surfaceRefToolbarWidget, } from '@blocksuite/affine/blocks'; -import { - DocTitle, - EdgelessEditor, - PageEditor, -} from '@blocksuite/affine/presets'; +import { EdgelessEditor, PageEditor } from '@blocksuite/affine/presets'; import type { Store } from '@blocksuite/affine/store'; import { useFramework, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/common.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/common.ts index cc77296a06..ee64a8fd92 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/common.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/common.ts @@ -1,9 +1,9 @@ +import { AIChatBlockSpec } from '@affine/core/blocksuite/blocks'; import { AICodeBlockSpec, AIImageBlockSpec, AIParagraphBlockSpec, -} from '@affine/core/blocksuite/presets/ai'; -import { AIChatBlockSpec } from '@affine/core/blocksuite/presets/blocks/ai-chat-block'; +} from '@affine/core/blocksuite/presets'; import { AdapterFactoryExtensions, AttachmentBlockSpec, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts index ed7c53df9d..181b178071 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/root-block.ts @@ -1,9 +1,9 @@ +import { AIChatBlockSpec } from '@affine/core/blocksuite/blocks'; import { AICodeBlockSpec, AIImageBlockSpec, AIParagraphBlockSpec, -} from '@affine/core/blocksuite/presets/ai'; -import { AIChatBlockSpec } from '@affine/core/blocksuite/presets/blocks'; +} from '@affine/core/blocksuite/presets'; import { DocService, DocsService } from '@affine/core/modules/doc'; import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta'; import { EditorSettingService } from '@affine/core/modules/editor-setting'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/copy-as-image.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/copy-as-image.ts index 55aab238bb..cdf1229e60 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/copy-as-image.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/custom/widgets/copy-as-image.ts @@ -1,8 +1,5 @@ import { notify } from '@affine/component'; -import { - isMindmapChild, - isMindMapRoot, -} from '@affine/core/blocksuite/presets/ai/utils/edgeless'; +import { isMindmapChild, isMindMapRoot } from '@affine/core/blocksuite/presets'; import { EditorService } from '@affine/core/modules/editor'; import { apis } from '@affine/electron-api'; import { I18n } from '@affine/i18n'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/edgeless.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/edgeless.ts index 6078318a67..d57e015a33 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/edgeless.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/edgeless.ts @@ -1,4 +1,4 @@ -import { createAIEdgelessRootBlockSpec } from '@affine/core/blocksuite/presets/ai'; +import { createAIEdgelessRootBlockSpec } from '@affine/core/blocksuite/presets'; import { FeatureFlagService } from '@affine/core/modules/feature-flag'; import { builtInTemplates as builtInEdgelessTemplates } from '@affine/templates/edgeless'; import { builtInTemplates as builtInStickersTemplates } from '@affine/templates/stickers'; diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/page.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/page.ts index c5ca1ab94b..f59b2bbd23 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/page.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/page.ts @@ -1,4 +1,4 @@ -import { createAIPageRootBlockSpec } from '@affine/core/blocksuite/presets/ai'; +import { createAIPageRootBlockSpec } from '@affine/core/blocksuite/presets'; import { FeatureFlagService } from '@affine/core/modules/feature-flag'; import { PageRootBlockSpec, diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/preview.ts b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/preview.ts index c75820ee69..7fa31ceb77 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/preview.ts +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/specs/preview.ts @@ -1,4 +1,4 @@ -import { AIChatBlockSpec } from '@affine/core/blocksuite/presets/blocks/ai-chat-block'; +import { AIChatBlockSpec } from '@affine/core/blocksuite/blocks'; import { PeekViewService } from '@affine/core/modules/peek-view/services/peek-view'; import { AppThemeService } from '@affine/core/modules/theme'; import { diff --git a/packages/frontend/core/src/components/blocksuite/block-suite-editor/starter-bar.tsx b/packages/frontend/core/src/components/blocksuite/block-suite-editor/starter-bar.tsx index c302f1d020..8109fe5b68 100644 --- a/packages/frontend/core/src/components/blocksuite/block-suite-editor/starter-bar.tsx +++ b/packages/frontend/core/src/components/blocksuite/block-suite-editor/starter-bar.tsx @@ -1,5 +1,7 @@ -import { handleInlineAskAIAction } from '@affine/core/blocksuite/presets/ai'; -import { pageAIGroups } from '@affine/core/blocksuite/presets/ai/_common/config'; +import { + handleInlineAskAIAction, + pageAIGroups, +} from '@affine/core/blocksuite/presets'; import { DocsService } from '@affine/core/modules/doc'; import { EditorService } from '@affine/core/modules/editor'; import { FeatureFlagService } from '@affine/core/modules/feature-flag'; diff --git a/packages/frontend/core/src/components/providers/workspace-side-effects.tsx b/packages/frontend/core/src/components/providers/workspace-side-effects.tsx index e9c86a773c..a415b7ea94 100644 --- a/packages/frontend/core/src/components/providers/workspace-side-effects.tsx +++ b/packages/frontend/core/src/components/providers/workspace-side-effects.tsx @@ -3,7 +3,7 @@ import { pushGlobalLoadingEventAtom, resolveGlobalLoadingEventAtom, } from '@affine/component/global-loading'; -import { AIProvider } from '@affine/core/blocksuite/presets/ai'; +import { AIProvider } from '@affine/core/blocksuite/presets'; import { SyncAwareness } from '@affine/core/components/affine/awareness'; import { useRegisterFindInPageCommands } from '@affine/core/components/hooks/affine/use-register-find-in-page-commands'; import { useRegisterWorkspaceCommands } from '@affine/core/components/hooks/use-register-workspace-commands'; 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 6ef042b581..fcb7f34e40 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 @@ -1,7 +1,7 @@ import { Scrollable } from '@affine/component'; import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton'; -import type { ChatPanel } from '@affine/core/blocksuite/presets/ai'; -import { AIProvider } from '@affine/core/blocksuite/presets/ai'; +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 { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer'; import { DocPropertySidebar } from '@affine/core/components/doc-properties/sidebar'; 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 01ad60bb2b..af7f1991ee 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,4 @@ -import { ChatPanel } from '@affine/core/blocksuite/presets/ai'; +import { ChatPanel } from '@affine/core/blocksuite/presets'; 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'; diff --git a/packages/frontend/core/src/modules/cloud/services/auth.ts b/packages/frontend/core/src/modules/cloud/services/auth.ts index 9ac6e79276..ee777e8f2e 100644 --- a/packages/frontend/core/src/modules/cloud/services/auth.ts +++ b/packages/frontend/core/src/modules/cloud/services/auth.ts @@ -1,4 +1,4 @@ -import { AIProvider } from '@affine/core/blocksuite/presets/ai'; +import { AIProvider } from '@affine/core/blocksuite/presets'; import type { OAuthProviderType } from '@affine/graphql'; import { track } from '@affine/track'; import { OnEvent, Service } from '@toeverything/infra'; diff --git a/packages/frontend/core/src/modules/editor/entities/editor.ts b/packages/frontend/core/src/modules/editor/entities/editor.ts index ecd65673f4..8c156e641e 100644 --- a/packages/frontend/core/src/modules/editor/entities/editor.ts +++ b/packages/frontend/core/src/modules/editor/entities/editor.ts @@ -2,14 +2,12 @@ import type { DefaultOpenProperty } from '@affine/core/components/doc-properties import { GfxControllerIdentifier } from '@blocksuite/affine/block-std/gfx'; import { type DocMode, + type DocTitle, FeatureFlagService as BSFeatureFlagService, HighlightSelection, type ReferenceParams, } from '@blocksuite/affine/blocks'; -import type { - AffineEditorContainer, - DocTitle, -} from '@blocksuite/affine/presets'; +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/ai-chat-block-peek-view/index.tsx b/packages/frontend/core/src/modules/peek-view/view/ai-chat-block-peek-view/index.tsx index b119bc7f05..a142a13660 100644 --- a/packages/frontend/core/src/modules/peek-view/view/ai-chat-block-peek-view/index.tsx +++ b/packages/frontend/core/src/modules/peek-view/view/ai-chat-block-peek-view/index.tsx @@ -1,11 +1,11 @@ import { toReactNode } from '@affine/component'; -import { AIChatBlockPeekViewTemplate } from '@affine/core/blocksuite/presets/ai'; +import { AIChatBlockPeekViewTemplate } from '@affine/core/blocksuite/presets'; import { AINetworkSearchService } from '@affine/core/modules/ai-button/services/network-search'; import type { EditorHost } from '@blocksuite/affine/block-std'; import { useFramework } from '@toeverything/infra'; import { useMemo } from 'react'; -import type { AIChatBlockModel } from '../../../../blocksuite/blocks/ai-chat-block/ai-chat-model'; +import type { AIChatBlockModel } from '../../../../blocksuite/blocks/ai-chat-block/model/ai-chat-model'; import { createPageModePreviewSpecs } from '../../../../components/blocksuite/block-suite-editor/specs/preview'; export type AIChatBlockPeekViewProps = { 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 73ab851391..d490cdf2fe 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 @@ -1,6 +1,6 @@ import { Scrollable } from '@affine/component'; import { PageDetailSkeleton } from '@affine/component/page-detail-skeleton'; -import { AIProvider } from '@affine/core/blocksuite/presets/ai'; +import { AIProvider } from '@affine/core/blocksuite/presets'; import { AffineErrorBoundary } from '@affine/core/components/affine/affine-error-boundary'; import { EditorOutlineViewer } from '@affine/core/components/blocksuite/outline-viewer'; import { PageNotFound } from '@affine/core/desktop/pages/404'; diff --git a/packages/frontend/core/src/modules/workspace/global-schema.ts b/packages/frontend/core/src/modules/workspace/global-schema.ts index 92ccdd9cc6..9808baa41b 100644 --- a/packages/frontend/core/src/modules/workspace/global-schema.ts +++ b/packages/frontend/core/src/modules/workspace/global-schema.ts @@ -1,8 +1,7 @@ +import { AIChatBlockSchema } from '@affine/core/blocksuite/blocks/ai-chat-block/model'; import { AffineSchemas } from '@blocksuite/affine/blocks/schemas'; import { Schema } from '@blocksuite/affine/store'; -import { AIChatBlockSchema } from '../../blocksuite/blocks'; - let _schema: Schema | null = null; export function getAFFiNEWorkspaceSchema() { if (!_schema) {