import { SimRange, SugarElement } from '@ephox/sugar'; import type { Editor } from '../alien/EditorTypes'; export interface TinyDom { readonly fromDom: (elm: T) => SugarElement; readonly fromRange: (rng: Range) => SimRange; readonly body: (editor: Editor) => SugarElement; readonly document: (editor: Editor) => SugarElement; readonly documentElement: (editor: Editor) => SugarElement; readonly container: (editor: Editor) => SugarElement; readonly contentAreaContainer: (editor: Editor) => SugarElement; readonly targetElement: (editor: Editor) => SugarElement; } /** * @deprecated Use SugarElement.fromDom instead. */ const fromDom = (elm: T): SugarElement => SugarElement.fromDom(elm); const fromRange = (rng: Range): SimRange => SimRange.create( SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset ); const body = (editor: Editor): SugarElement => SugarElement.fromDom(editor.getBody()); const document = (editor: Editor): SugarElement => SugarElement.fromDom(editor.getDoc()); const documentElement = (editor: Editor): SugarElement => SugarElement.fromDom(editor.getDoc().documentElement); const container = (editor: Editor): SugarElement => SugarElement.fromDom(editor.getContainer()); const contentAreaContainer = (editor: Editor): SugarElement => SugarElement.fromDom(editor.getContentAreaContainer()); const targetElement = (editor: Editor): SugarElement => SugarElement.fromDom(editor.getElement()); export const TinyDom: TinyDom = { fromDom, fromRange, body, container, contentAreaContainer, document, documentElement, targetElement };