import { Keyboard, Step } from '@ephox/agar'; import { SugarElement, SugarShadowDom } from '@ephox/sugar'; import { Editor } from '../../alien/EditorTypes'; export interface TinyActions { sContentKeydown: (code: number, modifiers?: Record) => Step; sContentKeystroke: (code: number, modifiers?: Record) => Step; sContentKeypress: (code: number, modifiers?: Record) => Step; sUiKeydown: (code: number, modifiers?: Record) => Step; } export const TinyActions = (editor: Editor): TinyActions => { const iDoc = SugarElement.fromDom(editor.getDoc()); const uiDoc = SugarShadowDom.getRootNode(SugarElement.fromDom(editor.getElement())); const sContentKeydown = (code: number, modifiers = {}) => { return Keyboard.sKeydown(iDoc, code, modifiers); }; const sContentKeystroke = (code: number, modifiers = {}) => { return Keyboard.sKeystroke(iDoc, code, modifiers); }; const sContentKeypress = (code: number, modifiers = {}) => { return Keyboard.sKeypress(iDoc, code, modifiers); }; const sUiKeydown = (code: number, modifiers = {}) => { return Keyboard.sKeydown(uiDoc, code, modifiers); }; return { sContentKeypress, sContentKeydown, sContentKeystroke, sUiKeydown }; };