kxeditor
Version:
Rich Text Editor
308 lines (307 loc) • 8.34 kB
TypeScript
/* 0.98.6 */
import type { Keys } from './types-utils';
import type { ParseMode, Style, TabularEnvironment } from './core-types';
import type { InsertOptions, Mathfield, Model } from './mathfield';
/**
* How much of the formula should be spoken:
* | | |
* |---:|:---|
* | `all` | the entire formula |
* | `selection` | the selection portion of the formula |
* | `left` | the element to the left of the selection |
* | `right` | the element to the right of the selection |
* | `group` | the group (numerator, root, etc..) the selection is in |
* | `parent` | the parent of the selection |
*/
export type SpeechScope = 'all' | 'selection' | 'left' | 'right' | 'group' | 'parent';
/**
* To perform editing commands on a mathfield, use [[MathfieldElement.executeCommand]] with the commands below.
*
* ```ts
* const mf = document.getElementById('mathfield');
* mf.executeCommand('selectAll');
* mf.executeCommand('copyToClipboard');
* ```
*
* Commands return true if they resulted in a dirty state.
* @command executeCommand
*/
export interface Commands {
/**
* @category Undo/Redo
*/
undo: (mathfield: Mathfield) => boolean;
/**
* @category Undo/Redo
*/
redo: (mathfield: Mathfield) => boolean;
/**
* Perform a command and include interactive feedback such as sound and
* haptic feedback. This is useful to simulate user interaction,
* for example for commands from the virtual keyboard
*/
performWithFeedback: (mathfield: Mathfield, command: string) => boolean;
commit: (mathfield: Mathfield) => boolean;
/**
* @category Auto-complete
*/
complete: (mathfield: Mathfield) => boolean;
/**
* @category Auto-complete
*/
nextSuggestion: (mathfield: Mathfield) => boolean;
/**
* @category Auto-complete
*/
previousSuggestion: (mathfield: Mathfield) => boolean;
/**
* @category Clipboard
*/
copyToClipboard: (mathfield: Mathfield) => boolean;
/**
* @category Clipboard
*/
cutToClipboard: (mathfield: Mathfield) => boolean;
/**
* @category Clipboard
*/
pasteFromClipboard: (mathfield: Mathfield) => boolean;
/**
* @category Scrolling
*/
scrollIntoView: (mathfield: Mathfield) => boolean;
/**
* @category Scrolling
*/
scrollToStart: (mathfield: Mathfield) => boolean;
/**
* @category Scrolling
*/
scrollToEnd: (mathfield: Mathfield) => boolean;
toggleContextMenu: (mathfield: Mathfield) => boolean;
toggleKeystrokeCaption: (mathfield: Mathfield) => boolean;
plonk: (mathfield: Mathfield) => boolean;
switchMode: (mathfield: Mathfield, mode: ParseMode) => boolean;
insert: (mathfield: Mathfield, s: string, options: InsertOptions) => boolean;
insertDecimalSeparator: (mathfield: Mathfield) => boolean;
typedText: (text: string, options: {
/** If true, the mathfield will be focused */
focus: boolean;
/** If true, provide audio and haptic feedback */
feedback: boolean;
/** If true, generate some synthetic
* keystrokes (useful to trigger inline shortcuts, for example).
*/
simulateKeystroke: boolean;
}) => boolean;
speak: (mathfield: Mathfield,
/** {@inheritDoc SpeechScope} */
scope: SpeechScope, options: {
/**
* In addition to speaking the requested portion of the formula,
* visually highlight it as it is read (read aloud functionality)
*/
withHighlighting: boolean;
}) => boolean;
/**
* @category Prompt
*/
insertPrompt: (mathfield: Mathfield, id?: string, options?: InsertOptions) => boolean;
/**
* @category Array
*/
addRowAfter: (model: Model) => boolean;
/**
* @category Array
*/
addColumnAfter: (model: Model) => boolean;
/**
* @category Array
*/
addRowBefore: (model: Model) => boolean;
/**
* @category Array
*/
addColumnBefore: (model: Model) => boolean;
/**
* @category Array
*/
removeRow: (model: Model) => boolean;
/**
* @category Array
*/
removeColumn: (model: Model) => boolean;
/**
* @category Array
*/
setEnvironment: (model: Model, environment: TabularEnvironment) => boolean;
/**
* @category Deleting
*/
deleteAll: (model: Model) => boolean;
/**
* @category Deleting
*/
deleteForward: (model: Model) => boolean;
/**
* @category Deleting
*/
deleteBackward: (model: Model) => boolean;
/**
* @category Deleting
*/
deleteNextWord: (model: Model) => boolean;
/**
* @category Deleting
*/
deletePreviousWord: (model: Model) => boolean;
/**
* @category Deleting
*/
deleteToGroupStart: (model: Model) => boolean;
/**
* @category Deleting
*/
deleteToGroupEnd: (model: Model) => boolean;
/**
* @category Deleting
*/
deleteToMathFieldStart: (model: Model) => boolean;
/**
* @category Deleting
*/
deleteToMathFieldEnd: (model: Model) => boolean;
/**
* @category Selection
*/
moveToOpposite: (model: Model) => boolean;
/**
* @category Selection
*/
moveBeforeParent: (model: Model) => boolean;
/**
* @category Selection
*/
moveAfterParent: (model: Model) => boolean;
/**
* @category Selection
*/
moveToNextPlaceholder: (model: Model) => boolean;
/**
* @category Selection
*/
moveToPreviousPlaceholder: (model: Model) => boolean;
/**
* @category Selection
*/
moveToNextChar: (model: Model) => boolean;
/**
* @category Selection
*/
moveToPreviousChar: (model: Model) => boolean;
/**
* @category Selection
*/
moveUp: (model: Model) => boolean;
/**
* @category Selection
*/
moveDown: (model: Model) => boolean;
/**
* @category Selection
*/
moveToNextWord: (model: Model) => boolean;
/**
* @category Selection
*/
moveToPreviousWord: (model: Model) => boolean;
/**
* @category Selection
*/
moveToGroupStart: (model: Model) => boolean;
/**
* @category Selection
*/
moveToGroupEnd: (model: Model) => boolean;
/**
* @category Selection
*/
moveToNextGroup: (model: Model) => boolean;
/**
* @category Selection
*/
moveToPreviousGroup: (model: Model) => boolean;
/**
* @category Selection
*/
moveToMathfieldStart: (model: Model) => boolean;
/**
* @category Selection
*/
moveToMathfieldEnd: (model: Model) => boolean;
/**
* @category Selection
*/
moveToSuperscript: (model: Model) => boolean;
/**
* @category Selection
*/
moveToSubscript: (model: Model) => boolean;
/**
* @category Selection
*/
selectGroup: (model: Model) => boolean;
/**
* @category Selection
*/
selectAll: (model: Model) => boolean;
/**
* @category Selection
*/
extendSelectionForward: (model: Model) => boolean;
/**
* @category Selection
*/
extendSelectionBackward: (model: Model) => boolean;
/**
* @category Selection
*/
extendToNextWord: (model: Model) => boolean;
/**
* @category Selection
*/
extendToPreviousWord: (model: Model) => boolean;
/**
* @category Selection
*/
extendSelectionUpward: (model: Model) => boolean;
/**
* @category Selection
*/
extendSelectionDownward: (model: Model) => boolean;
/**
* @category Selection
*/
extendToNextBoundary: (model: Model) => boolean;
/**
* @category Selection
*/
extendToPreviousBoundary: (model: Model) => boolean;
/**
* @category Selection
*/
extendToGroupStart: (model: Model) => boolean;
/**
* @category Selection
*/
extendToGroupEnd: (model: Model) => boolean;
/**
* @category Selection
*/
extendToMathFieldStart: (model: Model) => boolean;
/**
* @category Selection
*/
extendToMathFieldEnd: (model: Model) => boolean;
applyStyle: (mathfield: Mathfield, style: Style) => boolean;
}
export type Selector = Keys<Commands>;