UNPKG

lexical

Version:

Lexical is an extensible text editor framework that provides excellent reliability, accessible and performance.

241 lines (236 loc) • 9.03 kB
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ import type {LexicalCommand} from './LexicalEditor'; import type {LexicalNode} from './LexicalNode'; import type {BaseSelection} from './LexicalSelection'; import type {ElementFormatType} from './nodes/LexicalElementNode'; import type {TextFormatType} from './nodes/LexicalTextNode'; export type PasteCommandType = ClipboardEvent | InputEvent | KeyboardEvent; /** * Crete a command that can be used with `editor.dispatchCommand` and * `editor.registerCommand`. Commands are used by unique reference, not by * name. * * @param type A string to identify the command, very helpful for debugging * @returns A new LexicalCommand * * @__NO_SIDE_EFFECTS__ */ export function createCommand<T>(type?: string): LexicalCommand<T> { return {type}; } export const SELECTION_CHANGE_COMMAND: LexicalCommand<void> = createCommand( 'SELECTION_CHANGE_COMMAND', ); export const SELECTION_INSERT_CLIPBOARD_NODES_COMMAND: LexicalCommand<{ nodes: Array<LexicalNode>; selection: BaseSelection; }> = createCommand('SELECTION_INSERT_CLIPBOARD_NODES_COMMAND'); export const CLICK_COMMAND: LexicalCommand<MouseEvent> = createCommand('CLICK_COMMAND'); export const BEFORE_INPUT_COMMAND: LexicalCommand<InputEvent> = createCommand( 'BEFORE_INPUT_COMMAND', ); export const INPUT_COMMAND: LexicalCommand<InputEvent> = createCommand('INPUT_COMMAND'); export const COMPOSITION_START_COMMAND: LexicalCommand<CompositionEvent> = createCommand('COMPOSITION_START_COMMAND'); export const COMPOSITION_END_COMMAND: LexicalCommand<CompositionEvent> = createCommand('COMPOSITION_END_COMMAND'); /** * Dispatched to delete a character, the payload will be `true` if the deletion * is backwards (backspace or delete on macOS) and `false` if forwards * (delete or Fn+Delete on macOS). */ export const DELETE_CHARACTER_COMMAND: LexicalCommand<boolean> = createCommand( 'DELETE_CHARACTER_COMMAND', ); /** * Dispatched to insert a line break. With a false payload the * cursor moves to the new line (Shift+Enter), with a true payload the cursor * does not move (Ctrl+O on macOS). */ export const INSERT_LINE_BREAK_COMMAND: LexicalCommand<boolean> = createCommand( 'INSERT_LINE_BREAK_COMMAND', ); export const INSERT_PARAGRAPH_COMMAND: LexicalCommand<void> = createCommand( 'INSERT_PARAGRAPH_COMMAND', ); export const CONTROLLED_TEXT_INSERTION_COMMAND: LexicalCommand< InputEvent | string > = createCommand('CONTROLLED_TEXT_INSERTION_COMMAND'); export const PASTE_COMMAND: LexicalCommand<PasteCommandType> = createCommand('PASTE_COMMAND'); export const REMOVE_TEXT_COMMAND: LexicalCommand<InputEvent | null> = createCommand('REMOVE_TEXT_COMMAND'); /** * Dispatched to delete a word, the payload will be `true` if the deletion is * backwards (Ctrl+Backspace or Opt+Delete on macOS), and `false` if * forwards (Ctrl+Delete or Fn+Opt+Delete on macOS). */ export const DELETE_WORD_COMMAND: LexicalCommand<boolean> = createCommand( 'DELETE_WORD_COMMAND', ); /** * Dispatched to delete a line, the payload will be `true` if the deletion is * backwards (Cmd+Delete on macOS), and `false` if forwards * (Fn+Cmd+Delete on macOS). */ export const DELETE_LINE_COMMAND: LexicalCommand<boolean> = createCommand( 'DELETE_LINE_COMMAND', ); /** * Dispatched to format the selected text. */ export const FORMAT_TEXT_COMMAND: LexicalCommand<TextFormatType> = createCommand('FORMAT_TEXT_COMMAND'); /** * Dispatched on undo (Cmd+Z on macOS, Ctrl+Z elsewhere). */ export const UNDO_COMMAND: LexicalCommand<void> = createCommand('UNDO_COMMAND'); /** * Dispatched on redo (Shift+Cmd+Z on macOS, Shift+Ctrl+Z or Ctrl+Y elsewhere). */ export const REDO_COMMAND: LexicalCommand<void> = createCommand('REDO_COMMAND'); /** * Dispatched when any key is pressed. */ export const KEY_DOWN_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEYDOWN_COMMAND'); /** * Dispatched when the `'ArrowRight'` key is pressed. * The shift modifier key may also be down. */ export const KEY_ARROW_RIGHT_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_ARROW_RIGHT_COMMAND'); /** * Dispatched when the move to end keyboard shortcut is pressed, * (Cmd+Right on macOS; Ctrl+Right elsewhere). */ export const MOVE_TO_END: LexicalCommand<KeyboardEvent> = createCommand('MOVE_TO_END'); /** * Dispatched when the `'ArrowLeft'` key is pressed. * The shift modifier key may also be down. */ export const KEY_ARROW_LEFT_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_ARROW_LEFT_COMMAND'); /** * Dispatched when the move to start keyboard shortcut is pressed, * (Cmd+Left on macOS; Ctrl+Left elsewhere). */ export const MOVE_TO_START: LexicalCommand<KeyboardEvent> = createCommand('MOVE_TO_START'); /** * Dispatched when the `'ArrowUp'` key is pressed. * The shift and/or alt (option) modifier keys may also be down. */ export const KEY_ARROW_UP_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_ARROW_UP_COMMAND'); /** * Dispatched when the `'ArrowDown'` key is pressed. * The shift and/or alt (option) modifier keys may also be down. */ export const KEY_ARROW_DOWN_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_ARROW_DOWN_COMMAND'); /** * Dispatched when the enter key is pressed, may also be called with a null * payload when the intent is to insert a newline. The shift modifier key * must be down, any other modifier keys may also be down. */ export const KEY_ENTER_COMMAND: LexicalCommand<KeyboardEvent | null> = createCommand('KEY_ENTER_COMMAND'); /** * Dispatched whenever the space (`' '`) key is pressed, any modifier * keys may be down. */ export const KEY_SPACE_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_SPACE_COMMAND'); /** * Dispatched whenever the `'Backspace'` key is pressed, the shift * modifier key may be down. */ export const KEY_BACKSPACE_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_BACKSPACE_COMMAND'); /** * Dispatched whenever the `'Escape'` key is pressed, any modifier * keys may be down. */ export const KEY_ESCAPE_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_ESCAPE_COMMAND'); /** * Dispatched whenever the `'Delete'` key is pressed (Fn+Delete on macOS). */ export const KEY_DELETE_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_DELETE_COMMAND'); /** * Dispatched whenever the `'Tab'` key is pressed. The shift modifier key * may be down. */ export const KEY_TAB_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_TAB_COMMAND'); export const INSERT_TAB_COMMAND: LexicalCommand<void> = createCommand('INSERT_TAB_COMMAND'); export const INDENT_CONTENT_COMMAND: LexicalCommand<void> = createCommand( 'INDENT_CONTENT_COMMAND', ); export const OUTDENT_CONTENT_COMMAND: LexicalCommand<void> = createCommand( 'OUTDENT_CONTENT_COMMAND', ); export const DROP_COMMAND: LexicalCommand<DragEvent> = createCommand('DROP_COMMAND'); export const FORMAT_ELEMENT_COMMAND: LexicalCommand<ElementFormatType> = createCommand('FORMAT_ELEMENT_COMMAND'); export const DRAGSTART_COMMAND: LexicalCommand<DragEvent> = createCommand('DRAGSTART_COMMAND'); export const DRAGOVER_COMMAND: LexicalCommand<DragEvent> = createCommand('DRAGOVER_COMMAND'); export const DRAGEND_COMMAND: LexicalCommand<DragEvent> = createCommand('DRAGEND_COMMAND'); /** * Dispatched on a copy event, either via the clipboard or a KeyboardEvent * (Cmd+C on macOS, Ctrl+C elsewhere). */ export const COPY_COMMAND: LexicalCommand< ClipboardEvent | KeyboardEvent | null > = createCommand('COPY_COMMAND'); /** * Dispatched on a cut event, either via the clipboard or a KeyboardEvent * (Cmd+X on macOS, Ctrl+X elsewhere). */ export const CUT_COMMAND: LexicalCommand< ClipboardEvent | KeyboardEvent | null > = createCommand('CUT_COMMAND'); /** * Dispatched on the select all keyboard shortcut * (Cmd+A on macOS, Ctrl+A elsehwere). */ export const SELECT_ALL_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('SELECT_ALL_COMMAND'); export const CLEAR_EDITOR_COMMAND: LexicalCommand<void> = createCommand( 'CLEAR_EDITOR_COMMAND', ); export const CLEAR_HISTORY_COMMAND: LexicalCommand<void> = createCommand( 'CLEAR_HISTORY_COMMAND', ); export const CAN_REDO_COMMAND: LexicalCommand<boolean> = createCommand('CAN_REDO_COMMAND'); export const CAN_UNDO_COMMAND: LexicalCommand<boolean> = createCommand('CAN_UNDO_COMMAND'); export const FOCUS_COMMAND: LexicalCommand<FocusEvent> = createCommand('FOCUS_COMMAND'); export const BLUR_COMMAND: LexicalCommand<FocusEvent> = createCommand('BLUR_COMMAND'); /** * @deprecated in v0.31.0, use KEY_DOWN_COMMAND and check for modifiers * directly. * * Dispatched after any KeyboardEvent when modifiers are pressed */ export const KEY_MODIFIER_COMMAND: LexicalCommand<KeyboardEvent> = createCommand('KEY_MODIFIER_COMMAND');