2026-02-22 23:47:56 +01:00

27 lines
921 B
TypeScript

import { EDITABLE_INPUT_ID, EDITABLE_INPUT_MODAL_ID } from '../../../../config';
const MAX_NESTING_PARENTS = 5;
export function isSelectionInsideInput(selectionRange: Range, inputId: string) {
const { commonAncestorContainer } = selectionRange;
let parentNode: HTMLElement | null = commonAncestorContainer as HTMLElement;
let iterations = 1;
while (parentNode && parentNode.id !== inputId && iterations < MAX_NESTING_PARENTS) {
parentNode = parentNode.parentElement;
iterations++;
}
return Boolean(parentNode && parentNode.id === inputId);
}
export function isComposerHasSelection() {
const activeElement = document.activeElement;
const isComposerFocused = activeElement?.id === EDITABLE_INPUT_ID
|| activeElement?.id === EDITABLE_INPUT_MODAL_ID;
if (!isComposerFocused) return false;
const selection = window.getSelection();
return Boolean(selection && !selection.isCollapsed);
}