mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-11 23:26:30 +08:00
a1500e3ee1
Closes: [BS-3006](https://linear.app/affine-design/issue/BS-3006/insider上面,圈选yuan素后,ad-hoc的ai对话框焦点控制有大问题(无法对焦,总是会跳走))
20 lines
833 B
TypeScript
20 lines
833 B
TypeScript
import { RANGE_SYNC_EXCLUDE_ATTR } from './consts';
|
|
|
|
/**
|
|
* Check if the active element is in the editor host.
|
|
* TODO(@mirone): this is a trade-off, we need to use separate awareness store for every store to make sure the selection is isolated.
|
|
*
|
|
* @param editorHost - The editor host element.
|
|
* @returns Whether the active element is in the editor host.
|
|
*/
|
|
export function isActiveInEditor(editorHost: HTMLElement) {
|
|
const currentActiveElement = document.activeElement;
|
|
if (!currentActiveElement) return false;
|
|
// The input or textarea in the widget should be ignored.
|
|
if (currentActiveElement.closest(`[${RANGE_SYNC_EXCLUDE_ATTR}="true"]`))
|
|
return false;
|
|
const currentEditorHost = currentActiveElement?.closest('editor-host');
|
|
if (!currentEditorHost) return false;
|
|
return currentEditorHost === editorHost;
|
|
}
|