From 2278cfc9ce27f85ef24ac32879e169858b4ca7d9 Mon Sep 17 00:00:00 2001 From: fundon Date: Tue, 25 Jun 2024 15:56:47 +0000 Subject: [PATCH] fix(core): direct replacement of old card with new card in ai chat input (#7324) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes: [BS-643](https://linear.app/affine-design/issue/BS-643/continue-with-ai-:-在存在候选内容的情况下,点击-continue-with-ai-应该将选区内容直接替换) https://github.com/toeverything/AFFiNE/assets/27926/ff6e2c31-9d2e-462b-aa7e-6ef1eba50ef5 --- .../presets/ai/chat-panel/chat-cards.ts | 23 +++++++++++-------- .../ai/chat-panel/chat-panel-messages.ts | 16 ++++--------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-cards.ts b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-cards.ts index f3440224ea..bb260ff1ab 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-cards.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-cards.ts @@ -2,6 +2,7 @@ import type { EditorHost } from '@blocksuite/block-std'; import { WithDisposable } from '@blocksuite/block-std'; import { type ImageBlockModel, + isInsideEdgelessEditor, type NoteBlockModel, NoteDisplayMode, } from '@blocksuite/blocks'; @@ -97,11 +98,15 @@ const MAX_CARDS = 3; export class ChatCards extends WithDisposable(LitElement) { static override styles = css` :host { - display: flex; + display: none; flex-direction: column; gap: 12px; } + :host([data-show]) { + display: flex; + } + ${cardsStyles} `; @@ -361,10 +366,10 @@ export class ChatCards extends WithDisposable(LitElement) { } } - private async _extractOnEdgeless() { - if (!this.host.closest('edgeless-editor')) return; + private async _extractOnEdgeless(host: EditorHost) { + if (!isInsideEdgelessEditor(host)) return; - const canvas = await selectedToCanvas(this.host); + const canvas = await selectedToCanvas(host); if (!canvas) return; const blob: Blob | null = await new Promise(resolve => @@ -423,13 +428,13 @@ export class ChatCards extends WithDisposable(LitElement) { }; } - private readonly _appendCardWithParams = async ({ - // host: _, + private async _appendCardWithParams({ + host, mode, autoSelect, - }: AIChatParams) => { + }: AIChatParams) { if (mode === 'edgeless') { - await this._extractOnEdgeless(); + await this._extractOnEdgeless(host); } else { await this._extract(); } @@ -444,7 +449,7 @@ export class ChatCards extends WithDisposable(LitElement) { await this._selectCard(card); } - }; + } protected override async willUpdate(changedProperties: PropertyValues) { if (changedProperties.has('temporaryParams') && this.temporaryParams) { diff --git a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-panel-messages.ts b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-panel-messages.ts index 1f20ab0656..9671664e76 100644 --- a/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-panel-messages.ts +++ b/packages/frontend/core/src/blocksuite/presets/ai/chat-panel/chat-panel-messages.ts @@ -27,7 +27,6 @@ import { } from '@blocksuite/blocks'; import { css, html, nothing, type PropertyValues } from 'lit'; import { customElement, property, query, state } from 'lit/decorators.js'; -import { cache } from 'lit/directives/cache.js'; import { repeat } from 'lit/directives/repeat.js'; import { styleMap } from 'lit/directives/style-map.js'; @@ -277,16 +276,11 @@ export class ChatPanelMessages extends WithDisposable(ShadowlessElement) { ${this._renderAIOnboarding()} - ${cache( - this.showChatCards - ? html` - - ` - : nothing - )}` + ` : repeat(filteredItems, (item, index) => { const isLast = index === filteredItems.length - 1; return html`