@lexical/plain-text
Version:
This package contains plain text helpers for Lexical.
10 lines (8 loc) • 4.79 kB
JavaScript
/**
* 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.
*
*/
"use strict";var e=require("@lexical/clipboard"),t=require("@lexical/selection"),n=require("@lexical/utils"),r=require("lexical");const i="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,o=i&&"documentMode"in document?document.documentMode:null,a=!(!i||!("InputEvent"in window)||o)&&"getTargetRanges"in new window.InputEvent("input"),l=i&&/Version\/[\d.]+.*Safari/.test(navigator.userAgent),s=i&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,R=i&&/^(?=.*Chrome).*/i.test(navigator.userAgent),c=i&&/AppleWebKit\/[\d.]+/.test(navigator.userAgent)&&!R;function O(t,i){i.update((()=>{if(null!==t){const o=n.objectKlassEquals(t,KeyboardEvent)?null:t.clipboardData,a=r.$getSelection();if(null!==a&&null!=o){t.preventDefault();const n=e.$getHtmlContent(i);null!==n&&o.setData("text/html",n),o.setData("text/plain",a.getTextContent())}}}))}exports.registerPlainText=function(i){const o=n.mergeRegister(i.registerCommand(r.DELETE_CHARACTER_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(t.deleteCharacter(e),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.DELETE_WORD_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(t.deleteWord(e),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.DELETE_LINE_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(t.deleteLine(e),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.CONTROLLED_TEXT_INSERTION_COMMAND,(t=>{const n=r.$getSelection();if(!r.$isRangeSelection(n))return!1;if("string"==typeof t)n.insertText(t);else{const r=t.dataTransfer;if(null!=r)e.$insertDataTransferForPlainText(r,n);else{const e=t.data;e&&n.insertText(e)}}return!0}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.REMOVE_TEXT_COMMAND,(()=>{const e=r.$getSelection();return!!r.$isRangeSelection(e)&&(e.removeText(),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.INSERT_LINE_BREAK_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(t.insertLineBreak(e),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.INSERT_PARAGRAPH_COMMAND,(()=>{const e=r.$getSelection();return!!r.$isRangeSelection(e)&&(e.insertLineBreak(),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.KEY_ARROW_LEFT_COMMAND,(e=>{const n=r.$getSelection();if(!r.$isRangeSelection(n))return!1;const i=e,o=i.shiftKey;return!!t.$shouldOverrideDefaultCharacterSelection(n,!0)&&(i.preventDefault(),t.$moveCharacter(n,o,!0),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.KEY_ARROW_RIGHT_COMMAND,(e=>{const n=r.$getSelection();if(!r.$isRangeSelection(n))return!1;const i=e,o=i.shiftKey;return!!t.$shouldOverrideDefaultCharacterSelection(n,!1)&&(i.preventDefault(),t.$moveCharacter(n,o,!1),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.KEY_BACKSPACE_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&((!s||"ko-KR"!==navigator.language)&&(e.preventDefault(),i.dispatchCommand(r.DELETE_CHARACTER_COMMAND,!0)))}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.KEY_DELETE_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(e.preventDefault(),i.dispatchCommand(r.DELETE_CHARACTER_COMMAND,!1))}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.KEY_ENTER_COMMAND,(e=>{const t=r.$getSelection();if(!r.$isRangeSelection(t))return!1;if(null!==e){if((s||l||c)&&a)return!1;e.preventDefault()}return i.dispatchCommand(r.INSERT_LINE_BREAK_COMMAND,!1)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.SELECT_ALL_COMMAND,(()=>(r.$selectAll(),!0)),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.COPY_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(O(e,i),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.CUT_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(function(e,t){O(e,t),t.update((()=>{const e=r.$getSelection();r.$isRangeSelection(e)&&e.removeText()}))}(e,i),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.PASTE_COMMAND,(t=>{const o=r.$getSelection();return!!r.$isRangeSelection(o)&&(function(t,i){t.preventDefault(),i.update((()=>{const i=r.$getSelection(),o=n.objectKlassEquals(t,ClipboardEvent)?t.clipboardData:null;null!=o&&r.$isRangeSelection(i)&&e.$insertDataTransferForPlainText(o,i)}),{tag:r.PASTE_TAG})}(t,i),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.DROP_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(e.preventDefault(),!0)}),r.COMMAND_PRIORITY_EDITOR),i.registerCommand(r.DRAGSTART_COMMAND,(e=>{const t=r.$getSelection();return!!r.$isRangeSelection(t)&&(e.preventDefault(),!0)}),r.COMMAND_PRIORITY_EDITOR));return o};