@lexical/code 0.4.1 → 0.5.0

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.
@@ -412,13 +412,15 @@ function $isCodeNode(node) {
412
412
 
413
413
  function convertPreElement(domNode) {
414
414
  return {
415
- node: $createCodeNode()
415
+ node: $createCodeNode(),
416
+ preformatted: true
416
417
  };
417
418
  }
418
419
 
419
420
  function convertDivElement(domNode) {
420
421
  // domNode is a <div> since we matched it by nodeName
421
422
  const div = domNode;
423
+ const isCode = isCodeElement(div);
422
424
  return {
423
425
  after: childLexicalNodes => {
424
426
  const domParent = domNode.parentNode;
@@ -429,13 +431,15 @@ function convertDivElement(domNode) {
429
431
 
430
432
  return childLexicalNodes;
431
433
  },
432
- node: isCodeElement(div) ? $createCodeNode() : null
434
+ node: isCode ? $createCodeNode() : null,
435
+ preformatted: isCode
433
436
  };
434
437
  }
435
438
 
436
439
  function convertTableElement() {
437
440
  return {
438
- node: $createCodeNode()
441
+ node: $createCodeNode(),
442
+ preformatted: true
439
443
  };
440
444
  }
441
445
 
@@ -678,17 +682,24 @@ function codeNodeTransform(node, editor) {
678
682
 
679
683
  if (node.getLanguage() === undefined) {
680
684
  node.setLanguage(DEFAULT_CODE_LANGUAGE);
681
- } // Using nested update call to pass `skipTransforms` since we don't want
685
+ }
686
+
687
+ const nodeKey = node.getKey(); // Using nested update call to pass `skipTransforms` since we don't want
682
688
  // each individual codehighlight node to be transformed again as it's already
683
689
  // in its final state
684
690
 
685
-
686
691
  editor.update(() => {
687
- updateAndRetainSelection(node, () => {
688
- const code = node.getTextContent();
689
- const tokens = Prism.tokenize(code, Prism.languages[node.getLanguage() || ''] || Prism.languages[DEFAULT_CODE_LANGUAGE]);
692
+ updateAndRetainSelection(nodeKey, () => {
693
+ const currentNode = lexical.$getNodeByKey(nodeKey);
694
+
695
+ if (!$isCodeNode(currentNode) || !currentNode.isAttached()) {
696
+ return false;
697
+ }
698
+
699
+ const code = currentNode.getTextContent();
700
+ const tokens = Prism.tokenize(code, Prism.languages[currentNode.getLanguage() || ''] || Prism.languages[DEFAULT_CODE_LANGUAGE]);
690
701
  const highlightNodes = getHighlightNodes(tokens);
691
- const diffRange = getDiffRange(node.getChildren(), highlightNodes);
702
+ const diffRange = getDiffRange(currentNode.getChildren(), highlightNodes);
692
703
  const {
693
704
  from,
694
705
  to,
@@ -746,7 +757,13 @@ function getHighlightNodes(tokens) {
746
757
  // position as before.
747
758
 
748
759
 
749
- function updateAndRetainSelection(node, updateFn) {
760
+ function updateAndRetainSelection(nodeKey, updateFn) {
761
+ const node = lexical.$getNodeByKey(nodeKey);
762
+
763
+ if (!$isCodeNode(node) || !node.isAttached()) {
764
+ return;
765
+ }
766
+
750
767
  const selection = lexical.$getSelection(); // If it's not range selection (or null selection) there's no need to change it,
751
768
  // but we can still run highlighting logic
752
769
 
@@ -5,28 +5,28 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  'use strict';var e=require("prismjs");require("prismjs/components/prism-clike");require("prismjs/components/prism-javascript");require("prismjs/components/prism-markup");require("prismjs/components/prism-markdown");require("prismjs/components/prism-c");require("prismjs/components/prism-css");require("prismjs/components/prism-objectivec");require("prismjs/components/prism-sql");require("prismjs/components/prism-python");require("prismjs/components/prism-rust");require("prismjs/components/prism-swift");
8
- var m=require("@lexical/utils"),r=require("lexical");let t={c:"C",clike:"C-like",css:"CSS",html:"HTML",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",xml:"XML"},u={javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain"};function v(a){return u[a]||a}
9
- class y extends r.TextNode{constructor(a,b,c){super(a,c);this.__highlightType=b}static getType(){return"code-highlight"}static clone(a){return new y(a.__text,a.__highlightType||void 0,a.__key)}getHighlightType(){return this.getLatest().__highlightType}createDOM(a){let b=super.createDOM(a);a=z(a.theme,this.__highlightType);m.addClassNamesToElement(b,a);return b}updateDOM(a,b,c){let d=super.updateDOM(a,b,c);a=z(c.theme,a.__highlightType);c=z(c.theme,this.__highlightType);a!==c&&(a&&m.removeClassNamesFromElement(b,
10
- a),c&&m.addClassNamesToElement(b,c));return d}static importJSON(a){let b=A(a.text,a.highlightType);b.setFormat(a.format);b.setDetail(a.detail);b.setMode(a.mode);b.setStyle(a.style);return b}exportJSON(){return{...super.exportJSON(),highlightType:this.getHighlightType(),type:"code-highlight",version:1}}setFormat(){return this}}function z(a,b){return b&&a&&a.codeHighlight&&a.codeHighlight[b]}function A(a,b){return new y(a,b)}function C(a){return a instanceof y}
11
- function D(a){let b=null,c=a.getPreviousSiblings();for(c.push(a);0<c.length&&(a=c.pop(),C(a)&&(b=a),!r.$isLineBreakNode(a)););return b}function E(a){let b=null,c=a.getNextSiblings();for(c.unshift(a);0<c.length&&(a=c.shift(),C(a)&&(b=a),!r.$isLineBreakNode(a)););return b}let F=a=>null!=a&&e.languages.hasOwnProperty(a)?a:void 0;
12
- class G extends r.ElementNode{static getType(){return"code"}static clone(a){return new G(a.__language,a.__key)}constructor(a,b){super(b);this.__language=F(a)}createDOM(a){let b=document.createElement("code");m.addClassNamesToElement(b,a.theme.code);b.setAttribute("spellcheck","false");(a=this.getLanguage())&&b.setAttribute("data-highlight-language",a);return b}updateDOM(a,b){let c=this.__language;a=a.__language;c?c!==a&&b.setAttribute("data-highlight-language",c):a&&b.removeAttribute("data-highlight-language");
8
+ var m=require("@lexical/utils"),t=require("lexical");let u={c:"C",clike:"C-like",css:"CSS",html:"HTML",js:"JavaScript",markdown:"Markdown",objc:"Objective-C",plain:"Plain Text",py:"Python",rust:"Rust",sql:"SQL",swift:"Swift",xml:"XML"},v={javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain"};function w(a){return v[a]||a}
9
+ class z extends t.TextNode{constructor(a,b,c){super(a,c);this.__highlightType=b}static getType(){return"code-highlight"}static clone(a){return new z(a.__text,a.__highlightType||void 0,a.__key)}getHighlightType(){return this.getLatest().__highlightType}createDOM(a){let b=super.createDOM(a);a=A(a.theme,this.__highlightType);m.addClassNamesToElement(b,a);return b}updateDOM(a,b,c){let d=super.updateDOM(a,b,c);a=A(c.theme,a.__highlightType);c=A(c.theme,this.__highlightType);a!==c&&(a&&m.removeClassNamesFromElement(b,
10
+ a),c&&m.addClassNamesToElement(b,c));return d}static importJSON(a){let b=B(a.text,a.highlightType);b.setFormat(a.format);b.setDetail(a.detail);b.setMode(a.mode);b.setStyle(a.style);return b}exportJSON(){return{...super.exportJSON(),highlightType:this.getHighlightType(),type:"code-highlight",version:1}}setFormat(){return this}}function A(a,b){return b&&a&&a.codeHighlight&&a.codeHighlight[b]}function B(a,b){return new z(a,b)}function C(a){return a instanceof z}
11
+ function D(a){let b=null,c=a.getPreviousSiblings();for(c.push(a);0<c.length&&(a=c.pop(),C(a)&&(b=a),!t.$isLineBreakNode(a)););return b}function E(a){let b=null,c=a.getNextSiblings();for(c.unshift(a);0<c.length&&(a=c.shift(),C(a)&&(b=a),!t.$isLineBreakNode(a)););return b}let F=a=>null!=a&&e.languages.hasOwnProperty(a)?a:void 0;
12
+ class G extends t.ElementNode{static getType(){return"code"}static clone(a){return new G(a.__language,a.__key)}constructor(a,b){super(b);this.__language=F(a)}createDOM(a){let b=document.createElement("code");m.addClassNamesToElement(b,a.theme.code);b.setAttribute("spellcheck","false");(a=this.getLanguage())&&b.setAttribute("data-highlight-language",a);return b}updateDOM(a,b){let c=this.__language;a=a.__language;c?c!==a&&b.setAttribute("data-highlight-language",c):a&&b.removeAttribute("data-highlight-language");
13
13
  return!1}static importDOM(){return{code:a=>null!=a.textContent&&/\r?\n/.test(a.textContent)?{conversion:H,priority:1}:null,div:()=>({conversion:I,priority:1}),pre:()=>({conversion:H,priority:0}),table:a=>J(a)?{conversion:aa,priority:4}:null,td:a=>{let b=a.closest("table");return a.classList.contains("js-file-line")?{conversion:ba,priority:4}:b&&J(b)?{conversion:K,priority:4}:null},tr:a=>(a=a.closest("table"))&&J(a)?{conversion:K,priority:4}:null}}static importJSON(a){let b=L(a.language);b.setFormat(a.format);
14
- b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{...super.exportJSON(),language:this.getLanguage(),type:"code",version:1}}insertNewAfter(a){var b=this.getChildren(),c=b.length;if(2<=c&&"\n"===b[c-1].getTextContent()&&"\n"===b[c-2].getTextContent()&&a.isCollapsed()&&a.anchor.key===this.__key&&a.anchor.offset===c)return b[c-1].remove(),b[c-2].remove(),a=r.$createParagraphNode(),this.insertAfter(a),a;b=a.anchor.getNode();var d=D(b);if(null!=d){c=0;for(d=d.getTextContent();c<
15
- d.length&&/[\t ]/.test(d[c]);)c+=1;if(0<c)return c=d.substring(0,c),c=A(c),b.insertAfter(c),a.insertNodes([r.$createLineBreakNode()]),c.select(),c}return null}canInsertTab(){let a=r.$getSelection();return r.$isRangeSelection(a)&&a.isCollapsed()?!0:!1}canIndent(){return!1}collapseAtStart(){let a=r.$createParagraphNode();this.getChildren().forEach(b=>a.append(b));this.replace(a);return!0}setLanguage(a){this.getWritable().__language=F(a)}getLanguage(){return this.getLatest().__language}}
16
- function L(a){return new G(a)}function M(a){return a instanceof G}function H(){return{node:L()}}function I(a){return{after:b=>{let c=a.parentNode;null!=c&&a!==c.lastChild&&b.push(r.$createLineBreakNode());return b},node:null!==a.style.fontFamily.match("monospace")?L():null}}function aa(){return{node:L()}}function K(){return{node:null}}function ba(a){return{after:b=>{a.parentNode&&a.parentNode.nextSibling&&b.push(r.$createLineBreakNode());return b},node:null}}
17
- function J(a){return a.classList.contains("js-file-line-container")}function N(a,b){var c=a.length;let d=-1;if(b)for(b=0;b<c;b++){let f=a[b];if(" "!==f&&"\t"!==f){d=b;break}}else for(--c;-1<c;c--)if(b=a[c]," "!==b&&"\t"!==b){d=c;break}return d}
18
- function O(a){let b=null,c=-1;var d=a.getPreviousSiblings();for(d.push(a);0<d.length;){var f=d.pop();if(C(f)){var g=f.getTextContent();g=N(g,!0);-1!==g&&(b=f,c=g)}if(r.$isLineBreakNode(f))break}if(null===b)for(a=a.getNextSiblings();0<a.length;){d=a.shift();if(C(d)&&(f=d.getTextContent(),f=N(f,!0),-1!==f)){b=d;c=f;break}if(r.$isLineBreakNode(d))break}return{node:b,offset:c}}
19
- function P(a){let b=null,c=-1;var d=a.getNextSiblings();for(d.unshift(a);0<d.length;){var f=d.shift();if(C(f)){var g=f.getTextContent();g=N(g,!1);-1!==g&&(b=f,c=g+1)}if(r.$isLineBreakNode(f))break}if(null===b)for(a=a.getPreviousSiblings();0<a.length;){d=a.pop();if(C(d)&&(f=d.getTextContent(),f=N(f,!1),-1!==f)){b=d;c=f+1;break}if(r.$isLineBreakNode(d))break}return{node:b,offset:c}}function Q(a,b){let c=a.getParent();M(c)?R(c,b):C(a)&&a.replace(r.$createTextNode(a.__text))}let S=!1;
20
- function R(a,b){S||(S=!0,void 0===a.getLanguage()&&a.setLanguage("javascript"),b.update(()=>{ca(a,()=>{var c=a.getTextContent();c=e.tokenize(c,e.languages[a.getLanguage()||""]||e.languages.javascript);c=T(c);var d=a.getChildren();let f=0;for(;f<d.length&&U(d[f],c[f]);)f++;var g=d.length;let l=c.length,h=Math.min(g,l)-f,k=0;for(;k<h;)if(k++,!U(d[g-k],c[l-k])){k--;break}d=f;g-=k;c=c.slice(f,l-k);let {from:n,to:p,nodesForReplacement:w}={from:d,nodesForReplacement:c,to:g};return n!==p||w.length?(a.splice(n,
21
- p-n,w),!0):!1})},{onUpdate:()=>{S=!1},skipTransforms:!0}))}function T(a){let b=[];a.forEach(c=>{if("string"===typeof c){c=c.split("\n");for(var d=0;d<c.length;d++){let f=c[d];f.length&&b.push(A(f));d<c.length-1&&b.push(r.$createLineBreakNode())}}else({content:d}=c),"string"===typeof d?b.push(A(d,c.type)):Array.isArray(d)&&1===d.length&&"string"===typeof d[0]?b.push(A(d[0],c.type)):Array.isArray(d)&&b.push(...T(d))});return b}
22
- function ca(a,b){var c=r.$getSelection();if(r.$isRangeSelection(c)){c=c.anchor;var d=c.offset,f="element"===c.type&&r.$isLineBreakNode(a.getChildAtIndex(c.offset-1)),g=0;if(!f){let l=c.getNode();g=d+l.getPreviousSiblings().reduce((h,k)=>h+(r.$isLineBreakNode(k)?0:k.getTextContentSize()),0)}b()&&(f?c.getNode().select(d,d):a.getChildren().some(l=>{if(r.$isTextNode(l)){let h=l.getTextContentSize();if(h>=g)return l.select(g,g),!0;g-=h}return!1}))}else b()}
23
- function U(a,b){return C(a)&&C(b)?a.__text===b.__text&&a.__highlightType===b.__highlightType:r.$isLineBreakNode(a)&&r.$isLineBreakNode(b)?!0:!1}function V(a){var b=r.$getSelection();if(!r.$isRangeSelection(b)||b.isCollapsed())return!1;b=b.getNodes();for(var c=0;c<b.length;c++){var d=b[c];if(!C(d)&&!r.$isLineBreakNode(d))return!1}c=D(b[0]);null!=c&&W(c,a);for(c=1;c<b.length;c++)d=b[c],r.$isLineBreakNode(b[c-1])&&C(d)&&W(d,a);return!0}
24
- function W(a,b){let c=a.getTextContent();b===r.INDENT_CONTENT_COMMAND?0<c.length&&/\s/.test(c[0])?a.setTextContent("\t"+c):(b=A("\t"),a.insertBefore(b)):0===c.indexOf("\t")&&(1===c.length?a.remove():a.setTextContent(c.substring(1)))}
25
- function Y(a,b){let c=r.$getSelection();if(!r.$isRangeSelection(c))return!1;let {anchor:d,focus:f}=c,g=d.offset,l=f.offset,h=d.getNode(),k=f.getNode();var n=a===r.KEY_ARROW_UP_COMMAND;if(!C(h)||!C(k))return!1;if(!b.altKey){if(c.isCollapsed())if(a=h.getParentOrThrow(),n&&0===g&&null===h.getPreviousSibling()){if(null===a.getPreviousSibling())return a.selectPrevious(),b.preventDefault(),!0}else if(!n&&g===h.getTextContentSize()&&null===h.getNextSibling()&&null===a.getNextSibling())return a.selectNext(),
26
- b.preventDefault(),!0;return!1}var p=D(h);let w=E(k);if(null==p||null==w)return!1;let B=p.getNodesBetween(w);for(let q=0;q<B.length;q++){let X=B[q];if(!C(X)&&!r.$isLineBreakNode(X))return!1}b.preventDefault();b.stopPropagation();b=n?p.getPreviousSibling():w.getNextSibling();if(!r.$isLineBreakNode(b))return!0;p=n?b.getPreviousSibling():b.getNextSibling();if(null==p)return!0;n=n?D(p):E(p);let x=null!=n?n:p;b.remove();B.forEach(q=>q.remove());a===r.KEY_ARROW_UP_COMMAND?(B.forEach(q=>x.insertBefore(q)),
27
- x.insertBefore(b)):(x.insertAfter(b),x=b,B.forEach(q=>{x.insertAfter(q);x=q}));c.setTextNodeRange(h,g,k,l);return!0}function Z(a,b){let c=r.$getSelection();if(!r.$isRangeSelection(c))return!1;let {anchor:d,focus:f}=c,g=d.getNode(),l=f.getNode();a=a===r.MOVE_TO_START;if(!C(g)||!C(l))return!1;let h,k;a?{node:h,offset:k}=O(l):{node:h,offset:k}=P(l);null!==h&&-1!==k&&c.setTextNodeRange(h,k,h,k);b.preventDefault();b.stopPropagation();return!0}exports.$createCodeHighlightNode=A;
28
- exports.$createCodeNode=L;exports.$isCodeHighlightNode=C;exports.$isCodeNode=M;exports.CODE_LANGUAGE_FRIENDLY_NAME_MAP=t;exports.CODE_LANGUAGE_MAP=u;exports.CodeHighlightNode=y;exports.CodeNode=G;exports.DEFAULT_CODE_LANGUAGE="javascript";exports.getCodeLanguages=()=>Object.keys(e.languages).filter(a=>"function"!==typeof e.languages[a]).sort();exports.getDefaultCodeLanguage=()=>"javascript";exports.getEndOfCodeInLine=P;exports.getFirstCodeHighlightNodeOfLine=D;
29
- exports.getLanguageFriendlyName=function(a){a=v(a);return t[a]||a};exports.getLastCodeHighlightNodeOfLine=E;exports.getStartOfCodeInLine=O;exports.normalizeCodeLang=v;
30
- exports.registerCodeHighlighting=function(a){if(!a.hasNodes([G,y]))throw Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");return m.mergeRegister(a.registerMutationListener(G,b=>{a.update(()=>{for(let [f,g]of b)if("destroyed"!==g){var c=r.$getNodeByKey(f);if(null!==c)a:{var d=c;c=a.getElementByKey(d.getKey());if(null===c)break a;d=d.getChildren();let l=d.length;if(l===c.__cachedChildrenLength)break a;c.__cachedChildrenLength=l;let h="1",k=1;for(let n=0;n<l;n++)r.$isLineBreakNode(d[n])&&
31
- (h+="\n"+ ++k);c.setAttribute("data-gutter",h)}}})}),a.registerNodeTransform(G,b=>R(b,a)),a.registerNodeTransform(r.TextNode,b=>Q(b,a)),a.registerNodeTransform(y,b=>Q(b,a)),a.registerCommand(r.INDENT_CONTENT_COMMAND,()=>V(r.INDENT_CONTENT_COMMAND),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.OUTDENT_CONTENT_COMMAND,()=>V(r.OUTDENT_CONTENT_COMMAND),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.KEY_ARROW_UP_COMMAND,b=>Y(r.KEY_ARROW_UP_COMMAND,b),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.KEY_ARROW_DOWN_COMMAND,
32
- b=>Y(r.KEY_ARROW_DOWN_COMMAND,b),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.MOVE_TO_END,b=>Z(r.MOVE_TO_END,b),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.MOVE_TO_START,b=>Z(r.MOVE_TO_START,b),r.COMMAND_PRIORITY_LOW))}
14
+ b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{...super.exportJSON(),language:this.getLanguage(),type:"code",version:1}}insertNewAfter(a){var b=this.getChildren(),c=b.length;if(2<=c&&"\n"===b[c-1].getTextContent()&&"\n"===b[c-2].getTextContent()&&a.isCollapsed()&&a.anchor.key===this.__key&&a.anchor.offset===c)return b[c-1].remove(),b[c-2].remove(),a=t.$createParagraphNode(),this.insertAfter(a),a;b=a.anchor.getNode();var d=D(b);if(null!=d){c=0;for(d=d.getTextContent();c<
15
+ d.length&&/[\t ]/.test(d[c]);)c+=1;if(0<c)return c=d.substring(0,c),c=B(c),b.insertAfter(c),a.insertNodes([t.$createLineBreakNode()]),c.select(),c}return null}canInsertTab(){let a=t.$getSelection();return t.$isRangeSelection(a)&&a.isCollapsed()?!0:!1}canIndent(){return!1}collapseAtStart(){let a=t.$createParagraphNode();this.getChildren().forEach(b=>a.append(b));this.replace(a);return!0}setLanguage(a){this.getWritable().__language=F(a)}getLanguage(){return this.getLatest().__language}}
16
+ function L(a){return new G(a)}function M(a){return a instanceof G}function H(){return{node:L(),preformatted:!0}}function I(a){let b=null!==a.style.fontFamily.match("monospace");return{after:c=>{let d=a.parentNode;null!=d&&a!==d.lastChild&&c.push(t.$createLineBreakNode());return c},node:b?L():null,preformatted:b}}function aa(){return{node:L(),preformatted:!0}}function K(){return{node:null}}
17
+ function ba(a){return{after:b=>{a.parentNode&&a.parentNode.nextSibling&&b.push(t.$createLineBreakNode());return b},node:null}}function J(a){return a.classList.contains("js-file-line-container")}function N(a,b){var c=a.length;let d=-1;if(b)for(b=0;b<c;b++){let f=a[b];if(" "!==f&&"\t"!==f){d=b;break}}else for(--c;-1<c;c--)if(b=a[c]," "!==b&&"\t"!==b){d=c;break}return d}
18
+ function O(a){let b=null,c=-1;var d=a.getPreviousSiblings();for(d.push(a);0<d.length;){var f=d.pop();if(C(f)){var g=f.getTextContent();g=N(g,!0);-1!==g&&(b=f,c=g)}if(t.$isLineBreakNode(f))break}if(null===b)for(a=a.getNextSiblings();0<a.length;){d=a.shift();if(C(d)&&(f=d.getTextContent(),f=N(f,!0),-1!==f)){b=d;c=f;break}if(t.$isLineBreakNode(d))break}return{node:b,offset:c}}
19
+ function P(a){let b=null,c=-1;var d=a.getNextSiblings();for(d.unshift(a);0<d.length;){var f=d.shift();if(C(f)){var g=f.getTextContent();g=N(g,!1);-1!==g&&(b=f,c=g+1)}if(t.$isLineBreakNode(f))break}if(null===b)for(a=a.getPreviousSiblings();0<a.length;){d=a.pop();if(C(d)&&(f=d.getTextContent(),f=N(f,!1),-1!==f)){b=d;c=f+1;break}if(t.$isLineBreakNode(d))break}return{node:b,offset:c}}function Q(a,b){let c=a.getParent();M(c)?R(c,b):C(a)&&a.replace(t.$createTextNode(a.__text))}let S=!1;
20
+ function R(a,b){if(!S){S=!0;void 0===a.getLanguage()&&a.setLanguage("javascript");var c=a.getKey();b.update(()=>{ca(c,()=>{var d=t.$getNodeByKey(c);if(!M(d)||!d.isAttached())return!1;var f=d.getTextContent();f=e.tokenize(f,e.languages[d.getLanguage()||""]||e.languages.javascript);f=T(f);var g=d.getChildren();for(d=0;d<g.length&&U(g[d],f[d]);)d++;var k=g.length;let h=f.length,n=Math.min(k,h)-d,l=0;for(;l<n;)if(l++,!U(g[k-l],f[h-l])){l--;break}g=d;k-=l;f=f.slice(d,h-l);let {from:p,to:x,nodesForReplacement:r}=
21
+ {from:g,nodesForReplacement:f,to:k};return p!==x||r.length?(a.splice(p,x-p,r),!0):!1})},{onUpdate:()=>{S=!1},skipTransforms:!0})}}function T(a){let b=[];a.forEach(c=>{if("string"===typeof c){c=c.split("\n");for(var d=0;d<c.length;d++){let f=c[d];f.length&&b.push(B(f));d<c.length-1&&b.push(t.$createLineBreakNode())}}else({content:d}=c),"string"===typeof d?b.push(B(d,c.type)):Array.isArray(d)&&1===d.length&&"string"===typeof d[0]?b.push(B(d[0],c.type)):Array.isArray(d)&&b.push(...T(d))});return b}
22
+ function ca(a,b){a=t.$getNodeByKey(a);if(M(a)&&a.isAttached()){var c=t.$getSelection();if(t.$isRangeSelection(c)){c=c.anchor;var d=c.offset,f="element"===c.type&&t.$isLineBreakNode(a.getChildAtIndex(c.offset-1)),g=0;if(!f){let k=c.getNode();g=d+k.getPreviousSiblings().reduce((h,n)=>h+(t.$isLineBreakNode(n)?0:n.getTextContentSize()),0)}b()&&(f?c.getNode().select(d,d):a.getChildren().some(k=>{if(t.$isTextNode(k)){let h=k.getTextContentSize();if(h>=g)return k.select(g,g),!0;g-=h}return!1}))}else b()}}
23
+ function U(a,b){return C(a)&&C(b)?a.__text===b.__text&&a.__highlightType===b.__highlightType:t.$isLineBreakNode(a)&&t.$isLineBreakNode(b)?!0:!1}function V(a){var b=t.$getSelection();if(!t.$isRangeSelection(b)||b.isCollapsed())return!1;b=b.getNodes();for(var c=0;c<b.length;c++){var d=b[c];if(!C(d)&&!t.$isLineBreakNode(d))return!1}c=D(b[0]);null!=c&&W(c,a);for(c=1;c<b.length;c++)d=b[c],t.$isLineBreakNode(b[c-1])&&C(d)&&W(d,a);return!0}
24
+ function W(a,b){let c=a.getTextContent();b===t.INDENT_CONTENT_COMMAND?0<c.length&&/\s/.test(c[0])?a.setTextContent("\t"+c):(b=B("\t"),a.insertBefore(b)):0===c.indexOf("\t")&&(1===c.length?a.remove():a.setTextContent(c.substring(1)))}
25
+ function Y(a,b){let c=t.$getSelection();if(!t.$isRangeSelection(c))return!1;let {anchor:d,focus:f}=c,g=d.offset,k=f.offset,h=d.getNode(),n=f.getNode();var l=a===t.KEY_ARROW_UP_COMMAND;if(!C(h)||!C(n))return!1;if(!b.altKey){if(c.isCollapsed())if(a=h.getParentOrThrow(),l&&0===g&&null===h.getPreviousSibling()){if(null===a.getPreviousSibling())return a.selectPrevious(),b.preventDefault(),!0}else if(!l&&g===h.getTextContentSize()&&null===h.getNextSibling()&&null===a.getNextSibling())return a.selectNext(),
26
+ b.preventDefault(),!0;return!1}var p=D(h);let x=E(n);if(null==p||null==x)return!1;let r=p.getNodesBetween(x);for(let q=0;q<r.length;q++){let X=r[q];if(!C(X)&&!t.$isLineBreakNode(X))return!1}b.preventDefault();b.stopPropagation();b=l?p.getPreviousSibling():x.getNextSibling();if(!t.$isLineBreakNode(b))return!0;p=l?b.getPreviousSibling():b.getNextSibling();if(null==p)return!0;l=l?D(p):E(p);let y=null!=l?l:p;b.remove();r.forEach(q=>q.remove());a===t.KEY_ARROW_UP_COMMAND?(r.forEach(q=>y.insertBefore(q)),
27
+ y.insertBefore(b)):(y.insertAfter(b),y=b,r.forEach(q=>{y.insertAfter(q);y=q}));c.setTextNodeRange(h,g,n,k);return!0}function Z(a,b){let c=t.$getSelection();if(!t.$isRangeSelection(c))return!1;let {anchor:d,focus:f}=c,g=d.getNode(),k=f.getNode();a=a===t.MOVE_TO_START;if(!C(g)||!C(k))return!1;let h,n;a?{node:h,offset:n}=O(k):{node:h,offset:n}=P(k);null!==h&&-1!==n&&c.setTextNodeRange(h,n,h,n);b.preventDefault();b.stopPropagation();return!0}exports.$createCodeHighlightNode=B;
28
+ exports.$createCodeNode=L;exports.$isCodeHighlightNode=C;exports.$isCodeNode=M;exports.CODE_LANGUAGE_FRIENDLY_NAME_MAP=u;exports.CODE_LANGUAGE_MAP=v;exports.CodeHighlightNode=z;exports.CodeNode=G;exports.DEFAULT_CODE_LANGUAGE="javascript";exports.getCodeLanguages=()=>Object.keys(e.languages).filter(a=>"function"!==typeof e.languages[a]).sort();exports.getDefaultCodeLanguage=()=>"javascript";exports.getEndOfCodeInLine=P;exports.getFirstCodeHighlightNodeOfLine=D;
29
+ exports.getLanguageFriendlyName=function(a){a=w(a);return u[a]||a};exports.getLastCodeHighlightNodeOfLine=E;exports.getStartOfCodeInLine=O;exports.normalizeCodeLang=w;
30
+ exports.registerCodeHighlighting=function(a){if(!a.hasNodes([G,z]))throw Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");return m.mergeRegister(a.registerMutationListener(G,b=>{a.update(()=>{for(let [f,g]of b)if("destroyed"!==g){var c=t.$getNodeByKey(f);if(null!==c)a:{var d=c;c=a.getElementByKey(d.getKey());if(null===c)break a;d=d.getChildren();let k=d.length;if(k===c.__cachedChildrenLength)break a;c.__cachedChildrenLength=k;let h="1",n=1;for(let l=0;l<k;l++)t.$isLineBreakNode(d[l])&&
31
+ (h+="\n"+ ++n);c.setAttribute("data-gutter",h)}}})}),a.registerNodeTransform(G,b=>R(b,a)),a.registerNodeTransform(t.TextNode,b=>Q(b,a)),a.registerNodeTransform(z,b=>Q(b,a)),a.registerCommand(t.INDENT_CONTENT_COMMAND,()=>V(t.INDENT_CONTENT_COMMAND),t.COMMAND_PRIORITY_LOW),a.registerCommand(t.OUTDENT_CONTENT_COMMAND,()=>V(t.OUTDENT_CONTENT_COMMAND),t.COMMAND_PRIORITY_LOW),a.registerCommand(t.KEY_ARROW_UP_COMMAND,b=>Y(t.KEY_ARROW_UP_COMMAND,b),t.COMMAND_PRIORITY_LOW),a.registerCommand(t.KEY_ARROW_DOWN_COMMAND,
32
+ b=>Y(t.KEY_ARROW_DOWN_COMMAND,b),t.COMMAND_PRIORITY_LOW),a.registerCommand(t.MOVE_TO_END,b=>Z(t.MOVE_TO_END,b),t.COMMAND_PRIORITY_LOW),a.registerCommand(t.MOVE_TO_START,b=>Z(t.MOVE_TO_START,b),t.COMMAND_PRIORITY_LOW))}
package/package.json CHANGED
@@ -8,13 +8,13 @@
8
8
  "code"
9
9
  ],
10
10
  "license": "MIT",
11
- "version": "0.4.1",
11
+ "version": "0.5.0",
12
12
  "main": "LexicalCode.js",
13
13
  "peerDependencies": {
14
- "lexical": "0.4.1"
14
+ "lexical": "0.5.0"
15
15
  },
16
16
  "dependencies": {
17
- "@lexical/utils": "0.4.1",
17
+ "@lexical/utils": "0.5.0",
18
18
  "prismjs": "^1.27.0"
19
19
  },
20
20
  "repository": {