From c91a4eb0aac0ffa19c5fe0769d781f511890ea49 Mon Sep 17 00:00:00 2001 From: L-Sun Date: Thu, 29 May 2025 02:34:15 +0000 Subject: [PATCH] fix(editor): shloud get closest viewport element from editor (#12603) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Close [BS-3338](https://linear.app/affine-design/issue/BS-3338/center-peek-框选会出现奇怪的选区) ## Summary by CodeRabbit - **Refactor** - Improved the method for locating the viewport element to ensure it is found relative to a scoped host element rather than the entire document. No visible changes to user-facing features. --- .../affine/shared/src/services/viewport-element-service.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/blocksuite/affine/shared/src/services/viewport-element-service.ts b/blocksuite/affine/shared/src/services/viewport-element-service.ts index c14c3e318f..6440ecbd36 100644 --- a/blocksuite/affine/shared/src/services/viewport-element-service.ts +++ b/blocksuite/affine/shared/src/services/viewport-element-service.ts @@ -1,5 +1,6 @@ import { createIdentifier } from '@blocksuite/global/di'; import { BlockSuiteError } from '@blocksuite/global/exceptions'; +import { StdIdentifier } from '@blocksuite/std'; import type { ExtensionType } from '@blocksuite/store'; import type { Viewport } from '../types'; @@ -16,9 +17,10 @@ export const ViewportElementProvider = createIdentifier( export const ViewportElementExtension = (selector: string): ExtensionType => { return { setup: di => { - di.override(ViewportElementProvider, () => { + di.override(ViewportElementProvider, provider => { const getViewportElement = (): HTMLElement => { - const viewportElement = document.querySelector(selector); + const std = provider.get(StdIdentifier); + const viewportElement = std.host.closest(selector); if (!viewportElement) { throw new BlockSuiteError( BlockSuiteError.ErrorCode.ValueNotExists,