@lexical/rich-text 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -126,7 +126,7 @@ class QuoteNode extends lexical.ElementNode {
126
126
 
127
127
  }
128
128
  function $createQuoteNode() {
129
- return new QuoteNode();
129
+ return lexical.$applyNodeReplacement(new QuoteNode());
130
130
  }
131
131
  function $isQuoteNode(node) {
132
132
  return node instanceof QuoteNode;
@@ -298,7 +298,7 @@ function convertBlockquoteElement() {
298
298
  }
299
299
 
300
300
  function $createHeadingNode(headingTag) {
301
- return new HeadingNode(headingTag);
301
+ return lexical.$applyNodeReplacement(new HeadingNode(headingTag));
302
302
  }
303
303
  function $isHeadingNode(node) {
304
304
  return node instanceof HeadingNode;
@@ -348,10 +348,13 @@ function eventFiles(event) {
348
348
  }
349
349
 
350
350
  if (dataTransfer === null) {
351
- return [false, []];
351
+ return [false, [], false];
352
352
  }
353
353
 
354
- return [dataTransfer.types.includes('Files'), Array.from(dataTransfer.files)];
354
+ const types = dataTransfer.types;
355
+ const hasFiles = types.includes('Files');
356
+ const hasContent = types.includes('text/html') || types.includes('text/plain');
357
+ return [hasFiles, Array.from(dataTransfer.files), hasContent];
355
358
  }
356
359
 
357
360
  function handleIndentAndOutdent(insertTab, indentOrOutdent) {
@@ -780,9 +783,9 @@ function registerRichText(editor) {
780
783
  onCutForRichText(event, editor);
781
784
  return true;
782
785
  }, lexical.COMMAND_PRIORITY_EDITOR), editor.registerCommand(lexical.PASTE_COMMAND, event => {
783
- const [, files] = eventFiles(event);
786
+ const [, files, hasTextContent] = eventFiles(event);
784
787
 
785
- if (files !== null && files.length > 0) {
788
+ if (files.length > 0 && !hasTextContent) {
786
789
  editor.dispatchCommand(DRAG_DROP_PASTE, files);
787
790
  return true;
788
791
  }
@@ -14,9 +14,11 @@ import type {
14
14
  NodeKey,
15
15
  ParagraphNode,
16
16
  LexicalEditor,
17
+ LexicalCommand,
17
18
  } from 'lexical';
18
19
  import {ElementNode} from 'lexical';
19
20
 
21
+ declare export var DRAG_DROP_PASTE: LexicalCommand<Array<File>>;
20
22
  declare export class QuoteNode extends ElementNode {
21
23
  static getType(): string;
22
24
  static clone(node: QuoteNode): QuoteNode;
@@ -7,12 +7,13 @@
7
7
  'use strict';var a=require("@lexical/clipboard"),g=require("@lexical/selection"),h=require("@lexical/utils"),k=require("lexical");let l="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement,q=l&&"documentMode"in document?document.documentMode:null;l&&/Mac|iPod|iPhone|iPad/.test(navigator.platform);l&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);
8
8
  let r=l&&"InputEvent"in window&&!q?"getTargetRanges"in new window.InputEvent("input"):!1,t=l&&/Version\/[\d.]+.*Safari/.test(navigator.userAgent),u=l&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,v=k.createCommand("DRAG_DROP_PASTE_FILE");
9
9
  class w extends k.ElementNode{static getType(){return"quote"}static clone(c){return new w(c.__key)}constructor(c){super(c)}createDOM(c){let b=document.createElement("blockquote");h.addClassNamesToElement(b,c.theme.quote);return b}updateDOM(){return!1}static importDOM(){return{blockquote:()=>({conversion:x,priority:0})}}static importJSON(c){let b=y();b.setFormat(c.format);b.setIndent(c.indent);b.setDirection(c.direction);return b}exportJSON(){return{...super.exportJSON(),type:"quote"}}insertNewAfter(){let c=
10
- k.$createParagraphNode(),b=this.getDirection();c.setDirection(b);this.insertAfter(c);return c}collapseAtStart(){let c=k.$createParagraphNode();this.getChildren().forEach(b=>c.append(b));this.replace(c);return!0}}function y(){return new w}
10
+ k.$createParagraphNode(),b=this.getDirection();c.setDirection(b);this.insertAfter(c);return c}collapseAtStart(){let c=k.$createParagraphNode();this.getChildren().forEach(b=>c.append(b));this.replace(c);return!0}}function y(){return k.$applyNodeReplacement(new w)}
11
11
  class z extends k.ElementNode{static getType(){return"heading"}static clone(c){return new z(c.__tag,c.__key)}constructor(c,b){super(b);this.__tag=c}getTag(){return this.__tag}createDOM(c){let b=this.__tag,d=document.createElement(b);c=c.theme.heading;void 0!==c&&h.addClassNamesToElement(d,c[b]);return d}updateDOM(){return!1}static importDOM(){return{h1:()=>({conversion:A,priority:0}),h2:()=>({conversion:A,priority:0}),h3:()=>({conversion:A,priority:0}),h4:()=>({conversion:A,priority:0}),h5:()=>({conversion:A,
12
12
  priority:0}),h6:()=>({conversion:A,priority:0}),p:c=>{c=c.firstChild;return null!==c&&B(c)?{conversion:()=>({node:null}),priority:3}:null},span:c=>B(c)?{conversion:()=>({node:C("h1")}),priority:3}:null}}static importJSON(c){let b=C(c.tag);b.setFormat(c.format);b.setIndent(c.indent);b.setDirection(c.direction);return b}exportJSON(){return{...super.exportJSON(),tag:this.getTag(),type:"heading",version:1}}insertNewAfter(){let c=k.$createParagraphNode(),b=this.getDirection();c.setDirection(b);this.insertAfter(c);
13
- return c}collapseAtStart(){let c=k.$createParagraphNode();this.getChildren().forEach(b=>c.append(b));this.replace(c);return!0}extractWithChild(){return!0}}function B(c){return"span"===c.nodeName.toLowerCase()?"26pt"===c.style.fontSize:!1}function A(c){c=c.nodeName.toLowerCase();let b=null;if("h1"===c||"h2"===c||"h3"===c||"h4"===c||"h5"===c||"h6"===c)b=C(c);return{node:b}}function x(){return{node:y()}}function C(c){return new z(c)}
13
+ return c}collapseAtStart(){let c=k.$createParagraphNode();this.getChildren().forEach(b=>c.append(b));this.replace(c);return!0}extractWithChild(){return!0}}function B(c){return"span"===c.nodeName.toLowerCase()?"26pt"===c.style.fontSize:!1}function A(c){c=c.nodeName.toLowerCase();let b=null;if("h1"===c||"h2"===c||"h3"===c||"h4"===c||"h5"===c||"h6"===c)b=C(c);return{node:b}}function x(){return{node:y()}}function C(c){return k.$applyNodeReplacement(new z(c))}
14
14
  function D(c,b){c.preventDefault();b.update(()=>{let d=k.$getSelection(),e=c instanceof InputEvent||c instanceof KeyboardEvent?null:c.clipboardData;null!=e&&(k.$isRangeSelection(d)||k.DEPRECATED_$isGridSelection(d))&&a.$insertDataTransferForRichText(e,d,b)},{tag:"paste"})}
15
- async function E(c,b){null!=b.getEditorState().read(()=>k.$getSelection())&&(await a.copyToClipboard__EXPERIMENTAL(b,c instanceof ClipboardEvent?c:null),b.update(()=>{let d=k.$getSelection();k.$isRangeSelection(d)?d.removeText():k.$isNodeSelection(d)&&d.getNodes().forEach(e=>e.remove())}))}function F(c){let b=null;c instanceof DragEvent?b=c.dataTransfer:c instanceof ClipboardEvent&&(b=c.clipboardData);return null===b?[!1,[]]:[b.types.includes("Files"),Array.from(b.files)]}
15
+ async function E(c,b){null!=b.getEditorState().read(()=>k.$getSelection())&&(await a.copyToClipboard__EXPERIMENTAL(b,c instanceof ClipboardEvent?c:null),b.update(()=>{let d=k.$getSelection();k.$isRangeSelection(d)?d.removeText():k.$isNodeSelection(d)&&d.getNodes().forEach(e=>e.remove())}))}
16
+ function F(c){let b=null;c instanceof DragEvent?b=c.dataTransfer:c instanceof ClipboardEvent&&(b=c.clipboardData);if(null===b)return[!1,[],!1];var d=b.types;c=d.includes("Files");d=d.includes("text/html")||d.includes("text/plain");return[c,Array.from(b.files),d]}
16
17
  function G(c,b){var d=k.$getSelection();if(k.$isRangeSelection(d)){var e=new Set;d=d.getNodes();for(let m=0;m<d.length;m++){let n=d[m];var f=n.getKey();e.has(f)||(e.add(f),f=h.$getNearestBlockElementAncestorOrThrow(n),f.canInsertTab()?c(n):f.canIndent()&&b(f))}}}function H(c){c=k.$getNearestNodeFromDOMNode(c);return k.$isDecoratorNode(c)}exports.$createHeadingNode=C;exports.$createQuoteNode=y;exports.$isHeadingNode=function(c){return c instanceof z};
17
18
  exports.$isQuoteNode=function(c){return c instanceof w};exports.DRAG_DROP_PASTE=v;exports.HeadingNode=z;exports.QuoteNode=w;exports.eventFiles=F;
18
19
  exports.registerRichText=function(c){return h.mergeRegister(c.registerCommand(k.CLICK_COMMAND,()=>{const b=k.$getSelection();return k.$isNodeSelection(b)?(b.clear(),!0):!1},0),c.registerCommand(k.DELETE_CHARACTER_COMMAND,b=>{const d=k.$getSelection();if(!k.$isRangeSelection(d))return!1;d.deleteCharacter(b);return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.DELETE_WORD_COMMAND,b=>{const d=k.$getSelection();if(!k.$isRangeSelection(d))return!1;d.deleteWord(b);return!0},k.COMMAND_PRIORITY_EDITOR),
@@ -27,4 +28,4 @@ b.preventDefault();return c.dispatchCommand(k.DELETE_CHARACTER_COMMAND,!1)},k.CO
27
28
  b.preventDefault();return c.dispatchCommand(b.shiftKey?k.OUTDENT_CONTENT_COMMAND:k.INDENT_CONTENT_COMMAND,void 0)},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.KEY_ESCAPE_COMMAND,()=>{const b=k.$getSelection();if(!k.$isRangeSelection(b))return!1;c.blur();return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.DROP_COMMAND,b=>{const [,d]=F(b);if(0<d.length){var e=b.clientX;var f=b.clientY;e="undefined"!==typeof document.caretRangeFromPoint?document.caretRangeFromPoint(e,f):"undefined"!==document.caretPositionFromPoint?
28
29
  document.caretPositionFromPoint(e,f):null;if(null!==e){const {startOffset:m,endOffset:n,startContainer:I,endContainer:J}=e;e=k.$getNearestNodeFromDOMNode(I);f=k.$getNearestNodeFromDOMNode(J);if(null!==e&&null!==f){const p=k.$createRangeSelection();k.$isTextNode(e)?p.anchor.set(e.getKey(),m,"text"):p.anchor.set(e.getParentOrThrow().getKey(),e.getIndexWithinParent()+1,"element");k.$isTextNode(f)?p.focus.set(f.getKey(),n,"text"):p.focus.set(f.getParentOrThrow().getKey(),f.getIndexWithinParent()+1,"element");
29
30
  e=k.$normalizeSelection__EXPERIMENTAL(p);k.$setSelection(e)}c.dispatchCommand(v,d)}b.preventDefault();return!0}b=k.$getSelection();return k.$isRangeSelection(b)?!0:!1},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.DRAGSTART_COMMAND,b=>{const [d]=F(b),e=k.$getSelection();if(d&&!k.$isRangeSelection(e))return!1;b.preventDefault();return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.DRAGOVER_COMMAND,b=>{const [d]=F(b),e=k.$getSelection();if(d&&!k.$isRangeSelection(e))return!1;b.preventDefault();
30
- return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.COPY_COMMAND,b=>{a.copyToClipboard__EXPERIMENTAL(c,b instanceof ClipboardEvent?b:null);return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.CUT_COMMAND,b=>{E(b,c);return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.PASTE_COMMAND,b=>{var [,d]=F(b);if(null!==d&&0<d.length)return c.dispatchCommand(v,d),!0;d=k.$getSelection();return k.$isRangeSelection(d)||k.DEPRECATED_$isGridSelection(d)?(D(b,c),!0):!1},k.COMMAND_PRIORITY_EDITOR))}
31
+ return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.COPY_COMMAND,b=>{a.copyToClipboard__EXPERIMENTAL(c,b instanceof ClipboardEvent?b:null);return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.CUT_COMMAND,b=>{E(b,c);return!0},k.COMMAND_PRIORITY_EDITOR),c.registerCommand(k.PASTE_COMMAND,b=>{const [,d,e]=F(b);if(0<d.length&&!e)return c.dispatchCommand(v,d),!0;const f=k.$getSelection();return k.$isRangeSelection(f)||k.DEPRECATED_$isGridSelection(f)?(D(b,c),!0):!1},k.COMMAND_PRIORITY_EDITOR))}
package/index.d.ts CHANGED
@@ -53,5 +53,5 @@ export declare class HeadingNode extends ElementNode {
53
53
  }
54
54
  export declare function $createHeadingNode(headingTag: HeadingTagType): HeadingNode;
55
55
  export declare function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode;
56
- export declare function eventFiles(event: DragEvent | PasteCommandType): [boolean, Array<File>];
56
+ export declare function eventFiles(event: DragEvent | PasteCommandType): [boolean, Array<File>, boolean];
57
57
  export declare function registerRichText(editor: LexicalEditor): () => void;
package/package.json CHANGED
@@ -7,13 +7,13 @@
7
7
  "rich-text"
8
8
  ],
9
9
  "license": "MIT",
10
- "version": "0.6.0",
10
+ "version": "0.6.2",
11
11
  "main": "LexicalRichText.js",
12
12
  "peerDependencies": {
13
- "lexical": "0.6.0",
14
- "@lexical/selection": "0.6.0",
15
- "@lexical/clipboard": "0.6.0",
16
- "@lexical/utils": "0.6.0"
13
+ "lexical": "0.6.2",
14
+ "@lexical/selection": "0.6.2",
15
+ "@lexical/clipboard": "0.6.2",
16
+ "@lexical/utils": "0.6.2"
17
17
  },
18
18
  "repository": {
19
19
  "type": "git",