@lexical/code 0.3.7 → 0.3.10

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.
@@ -5,27 +5,32 @@
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=a=>null!=a&&e.languages.hasOwnProperty(a)?a:void 0;
9
- class u extends r.TextNode{constructor(a,b,c){super(a,c);this.__highlightType=b}static getType(){return"code-highlight"}static clone(a){return new u(a.__text,a.__highlightType||void 0,a.__key)}getHighlightType(){return this.getLatest().__highlightType}createDOM(a){let b=super.createDOM(a);a=v(a.theme,this.__highlightType);m.addClassNamesToElement(b,a);return b}updateDOM(a,b,c){let d=super.updateDOM(a,b,c);a=v(c.theme,a.__highlightType);c=v(c.theme,this.__highlightType);a!==c&&(a&&m.removeClassNamesFromElement(b,
10
- a),c&&m.addClassNamesToElement(b,c));return d}static importJSON(a){let b=y(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 v(a,b){return b&&a&&a.codeHighlight&&a.codeHighlight[b]}function y(a,b){return new u(a,b)}function z(a){return a instanceof u}
11
- class A extends r.ElementNode{static getType(){return"code"}static clone(a){return new A(a.__language,a.__key)}constructor(a,b){super(b);this.__language=t(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");
12
- return!1}static importDOM(){return{code:()=>({conversion:C,priority:0}),div:()=>({conversion:D,priority:1}),pre:()=>({conversion:C,priority:0}),table:a=>E(a)?{conversion:F,priority:4}:null,td:a=>{let b=a.closest("table");return a.classList.contains("js-file-line")?{conversion:G,priority:4}:b&&E(b)?{conversion:H,priority:4}:null},tr:a=>(a=a.closest("table"))&&E(a)?{conversion:H,priority:4}:null}}static importJSON(a){let b=I(a.language);b.setFormat(a.format);b.setIndent(a.indent);b.setDirection(a.direction);
13
- 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=J(b);if(null!=d){c=0;for(d=d.getTextContent();c<d.length&&/[\t ]/.test(d[c]);)c+=1;if(0<c)return c=
14
- d.substring(0,c),c=y(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=t(a)}getLanguage(){return this.getLatest().__language}}function I(a){return new A(a)}
15
- function K(a){return a instanceof A}function J(a){let b=null,c=a.getPreviousSiblings();for(c.push(a);0<c.length&&(a=c.pop(),z(a)&&(b=a),!r.$isLineBreakNode(a)););return b}function L(a){let b=null,c=a.getNextSiblings();for(c.unshift(a);0<c.length&&(a=c.shift(),z(a)&&(b=a),!r.$isLineBreakNode(a)););return b}function M(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}
16
- function N(a){let b=null,c=-1;var d=a.getPreviousSiblings();for(d.push(a);0<d.length;){var f=d.pop();if(z(f)){var g=f.getTextContent();g=M(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(z(d)&&(f=d.getTextContent(),f=M(f,!0),-1!==f)){b=d;c=f;break}if(r.$isLineBreakNode(d))break}return{node:b,offset:c}}
17
- function O(a){let b=null,c=-1;var d=a.getNextSiblings();for(d.unshift(a);0<d.length;){var f=d.shift();if(z(f)){var g=f.getTextContent();g=M(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(z(d)&&(f=d.getTextContent(),f=M(f,!1),-1!==f)){b=d;c=f+1;break}if(r.$isLineBreakNode(d))break}return{node:b,offset:c}}function C(){return{node:I()}}
18
- function D(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")?I():null}}function F(){return{node:I()}}function H(){return{node:null}}function G(a){return{after:b=>{a.parentNode&&a.parentNode.nextSibling&&b.push(r.$createLineBreakNode());return b},node:null}}function E(a){return a.classList.contains("js-file-line-container")}
19
- function P(a,b){let c=a.getParent();K(c)?Q(c,b):z(a)&&a.replace(r.$createTextNode(a.__text))}let R=!1;
20
- function Q(a,b){R||(R=!0,void 0===a.getLanguage()&&a.setLanguage("javascript"),b.update(()=>{S(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&&V(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++,!V(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:()=>{R=!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(y(f));d<c.length-1&&b.push(r.$createLineBreakNode())}}else({content:d}=c),"string"===typeof d?b.push(y(d,c.type)):Array.isArray(d)&&1===d.length&&"string"===typeof d[0]?b.push(y(d[0],c.type)):Array.isArray(d)&&b.push(...T(d))});return b}
22
- function S(a,b){var c=r.$getSelection();if(r.$isRangeSelection(c)&&c.anchor){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}))}}
23
- function V(a,b){return z(a)&&z(b)?a.__text===b.__text&&a.__highlightType===b.__highlightType:r.$isLineBreakNode(a)&&r.$isLineBreakNode(b)?!0:!1}function W(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(!z(d)&&!r.$isLineBreakNode(d))return!1}c=J(b[0]);null!=c&&X(c,a);for(c=1;c<b.length;c++)d=b[c],r.$isLineBreakNode(b[c-1])&&z(d)&&X(d,a);return!0}
24
- function X(a,b){let c=a.getTextContent();b===r.INDENT_CONTENT_COMMAND?0<c.length&&/\s/.test(c[0])?a.setTextContent("\t"+c):(b=y("\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(!z(h)||!z(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=J(h);let w=L(k);if(null==p||null==w)return!1;let B=p.getNodesBetween(w);for(let q=0;q<B.length;q++){let U=B[q];if(!z(U)&&!r.$isLineBreakNode(U))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?J(p):L(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(!z(g)||!z(l))return!1;let h,k;a?{node:h,offset:k}=N(l):{node:h,offset:k}=O(l);null!==h&&-1!==k&&c.setTextNodeRange(h,k,h,k);b.preventDefault();b.stopPropagation();return!0}exports.$createCodeHighlightNode=y;
28
- exports.$createCodeNode=I;exports.$isCodeHighlightNode=z;exports.$isCodeNode=K;exports.CodeHighlightNode=u;exports.CodeNode=A;exports.getCodeLanguages=()=>Object.keys(e.languages).filter(a=>"function"!==typeof e.languages[a]).sort();exports.getDefaultCodeLanguage=()=>"javascript";exports.getEndOfCodeInLine=O;exports.getFirstCodeHighlightNodeOfLine=J;exports.getLastCodeHighlightNodeOfLine=L;exports.getStartOfCodeInLine=N;
29
- exports.registerCodeHighlighting=function(a){if(!a.hasNodes([A,u]))throw Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");return m.mergeRegister(a.registerMutationListener(A,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])&&
30
- (h+="\n"+ ++k);c.setAttribute("data-gutter",h)}}})}),a.registerNodeTransform(A,b=>Q(b,a)),a.registerNodeTransform(r.TextNode,b=>P(b,a)),a.registerNodeTransform(u,b=>P(b,a)),a.registerCommand(r.INDENT_CONTENT_COMMAND,()=>W(r.INDENT_CONTENT_COMMAND),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.OUTDENT_CONTENT_COMMAND,()=>W(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,
31
- 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))}
8
+ var g=require("@lexical/utils"),r=require("lexical"),v=require("@lexical/code");function x(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}
9
+ function y(a){let b=null,c=-1;var d=a.getPreviousSiblings();for(d.push(a);0<d.length;){var f=d.pop();if(v.$isCodeHighlightNode(f)){var h=f.getTextContent();h=x(h,!0);-1!==h&&(b=f,c=h)}if(r.$isLineBreakNode(f))break}if(null===b)for(a=a.getNextSiblings();0<a.length;){d=a.shift();if(v.$isCodeHighlightNode(d)&&(f=d.getTextContent(),f=x(f,!0),-1!==f)){b=d;c=f;break}if(r.$isLineBreakNode(d))break}return{node:b,offset:c}}
10
+ function z(a){let b=null,c=-1;var d=a.getNextSiblings();for(d.unshift(a);0<d.length;){var f=d.shift();if(v.$isCodeHighlightNode(f)){var h=f.getTextContent();h=x(h,!1);-1!==h&&(b=f,c=h+1)}if(r.$isLineBreakNode(f))break}if(null===b)for(a=a.getPreviousSiblings();0<a.length;){d=a.pop();if(v.$isCodeHighlightNode(d)&&(f=d.getTextContent(),f=x(f,!1),-1!==f)){b=d;c=f+1;break}if(r.$isLineBreakNode(d))break}return{node:b,offset:c}}
11
+ function A(a,b){let c=a.getParent();v.$isCodeNode(c)?B(c,b):v.$isCodeHighlightNode(a)&&a.replace(r.$createTextNode(a.__text))}let C=!1;
12
+ function B(a,b){C||(C=!0,void 0===a.getLanguage()&&a.setLanguage(v.DEFAULT_CODE_LANGUAGE),b.update(()=>{D(a,()=>{var c=a.getTextContent();c=e.tokenize(c,e.languages[a.getLanguage()||""]||e.languages[v.DEFAULT_CODE_LANGUAGE]);c=E(c);var d=a.getChildren();let f=0;for(;f<d.length&&F(d[f],c[f]);)f++;var h=d.length;let m=c.length,k=Math.min(h,m)-f,l=0;for(;l<k;)if(l++,!F(d[h-l],c[m-l])){l--;break}d=f;h-=l;c=c.slice(f,m-l);let {from:n,to:p,nodesForReplacement:t}={from:d,nodesForReplacement:c,to:h};return n!==
13
+ p||t.length?(a.splice(n,p-n,t),!0):!1})},{onUpdate:()=>{C=!1},skipTransforms:!0}))}
14
+ function E(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(v.$createCodeHighlightNode(f));d<c.length-1&&b.push(r.$createLineBreakNode())}}else({content:d}=c),"string"===typeof d?b.push(v.$createCodeHighlightNode(d,c.type)):Array.isArray(d)&&1===d.length&&"string"===typeof d[0]?b.push(v.$createCodeHighlightNode(d[0],c.type)):Array.isArray(d)&&b.push(...E(d))});return b}
15
+ function D(a,b){var c=r.$getSelection();if(r.$isRangeSelection(c)&&c.anchor){c=c.anchor;var d=c.offset,f="element"===c.type&&r.$isLineBreakNode(a.getChildAtIndex(c.offset-1)),h=0;if(!f){let m=c.getNode();h=d+m.getPreviousSiblings().reduce((k,l)=>k+(r.$isLineBreakNode(l)?0:l.getTextContentSize()),0)}b()&&(f?c.getNode().select(d,d):a.getChildren().some(m=>{if(r.$isTextNode(m)){let k=m.getTextContentSize();if(k>=h)return m.select(h,h),!0;h-=k}return!1}))}}
16
+ function F(a,b){return v.$isCodeHighlightNode(a)&&v.$isCodeHighlightNode(b)?a.__text===b.__text&&a.__highlightType===b.__highlightType:r.$isLineBreakNode(a)&&r.$isLineBreakNode(b)?!0:!1}
17
+ function G(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(!v.$isCodeHighlightNode(d)&&!r.$isLineBreakNode(d))return!1}c=v.getFirstCodeHighlightNodeOfLine(b[0]);null!=c&&H(c,a);for(c=1;c<b.length;c++)d=b[c],r.$isLineBreakNode(b[c-1])&&v.$isCodeHighlightNode(d)&&H(d,a);return!0}
18
+ function H(a,b){let c=a.getTextContent();b===r.INDENT_CONTENT_COMMAND?0<c.length&&/\s/.test(c[0])?a.setTextContent("\t"+c):(b=v.$createCodeHighlightNode("\t"),a.insertBefore(b)):0===c.indexOf("\t")&&(1===c.length?a.remove():a.setTextContent(c.substring(1)))}
19
+ function I(a,b){let c=r.$getSelection();if(!r.$isRangeSelection(c))return!1;let {anchor:d,focus:f}=c,h=d.offset,m=f.offset,k=d.getNode(),l=f.getNode();var n=a===r.KEY_ARROW_UP_COMMAND;if(!v.$isCodeHighlightNode(k)||!v.$isCodeHighlightNode(l))return!1;if(!b.altKey){if(c.isCollapsed())if(a=k.getParentOrThrow(),n&&0===h&&null===k.getPreviousSibling()){if(null===a.getPreviousSibling())return a.selectPrevious(),b.preventDefault(),!0}else if(!n&&h===k.getTextContentSize()&&null===k.getNextSibling()&&null===
20
+ a.getNextSibling())return a.selectNext(),b.preventDefault(),!0;return!1}var p=v.getFirstCodeHighlightNodeOfLine(k);let t=v.getLastCodeHighlightNodeOfLine(l);if(null==p||null==t)return!1;let w=p.getNodesBetween(t);for(let q=0;q<w.length;q++){let P=w[q];if(!v.$isCodeHighlightNode(P)&&!r.$isLineBreakNode(P))return!1}b.preventDefault();b.stopPropagation();b=n?p.getPreviousSibling():t.getNextSibling();if(!r.$isLineBreakNode(b))return!0;p=n?b.getPreviousSibling():b.getNextSibling();if(null==p)return!0;
21
+ n=n?v.getFirstCodeHighlightNodeOfLine(p):v.getLastCodeHighlightNodeOfLine(p);let u=null!=n?n:p;b.remove();w.forEach(q=>q.remove());a===r.KEY_ARROW_UP_COMMAND?(w.forEach(q=>u.insertBefore(q)),u.insertBefore(b)):(u.insertAfter(b),u=b,w.forEach(q=>{u.insertAfter(q);u=q}));c.setTextNodeRange(k,h,l,m);return!0}
22
+ function J(a,b){let c=r.$getSelection();if(!r.$isRangeSelection(c))return!1;let {anchor:d,focus:f}=c,h=d.getNode(),m=f.getNode();a=a===r.MOVE_TO_START;if(!v.$isCodeHighlightNode(h)||!v.$isCodeHighlightNode(m))return!1;let k,l;a?{node:k,offset:l}=y(m):{node:k,offset:l}=z(m);null!==k&&-1!==l&&c.setTextNodeRange(k,l,k,l);b.preventDefault();b.stopPropagation();return!0}
23
+ let K={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"},L={javascript:"js",md:"markdown",plaintext:"plain",python:"py",text:"plain"};function M(a){return L[a]||a}
24
+ class N extends r.TextNode{constructor(a,b,c){super(a,c);this.__highlightType=b}static getType(){return"code-highlight"}static clone(a){return new N(a.__text,a.__highlightType||void 0,a.__key)}getHighlightType(){return this.getLatest().__highlightType}createDOM(a){let b=super.createDOM(a);a=O(a.theme,this.__highlightType);g.addClassNamesToElement(b,a);return b}updateDOM(a,b,c){let d=super.updateDOM(a,b,c);a=O(c.theme,a.__highlightType);c=O(c.theme,this.__highlightType);a!==c&&(a&&g.removeClassNamesFromElement(b,
25
+ a),c&&g.addClassNamesToElement(b,c));return d}static importJSON(a){let b=Q(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 O(a,b){return b&&a&&a.codeHighlight&&a.codeHighlight[b]}function Q(a,b){return new N(a,b)}function R(a){return a instanceof N}
26
+ function S(a){let b=null,c=a.getPreviousSiblings();for(c.push(a);0<c.length&&(a=c.pop(),R(a)&&(b=a),!r.$isLineBreakNode(a)););return b}let T=a=>null!=a&&e.languages.hasOwnProperty(a)?a:void 0;
27
+ class U extends r.ElementNode{static getType(){return"code"}static clone(a){return new U(a.__language,a.__key)}constructor(a,b){super(b);this.__language=T(a)}createDOM(a){let b=document.createElement("code");g.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");
28
+ return!1}static importDOM(){return{code:a=>null!=a.textContent&&/\r?\n/.test(a.textContent)?{conversion:V,priority:1}:null,div:()=>({conversion:W,priority:1}),pre:()=>({conversion:V,priority:0}),table:a=>X(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&&X(b)?{conversion:Y,priority:4}:null},tr:a=>(a=a.closest("table"))&&X(a)?{conversion:Y,priority:4}:null}}static importJSON(a){let b=Z(a.language);b.setFormat(a.format);
29
+ 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=S(b);if(null!=d){c=0;for(d=d.getTextContent();c<
30
+ d.length&&/[\t ]/.test(d[c]);)c+=1;if(0<c)return c=d.substring(0,c),c=Q(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=T(a)}getLanguage(){return this.getLatest().__language}}
31
+ function Z(a){return new U(a)}function V(){return{node:Z()}}function W(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")?Z():null}}function aa(){return{node:Z()}}function Y(){return{node:null}}function ba(a){return{after:b=>{a.parentNode&&a.parentNode.nextSibling&&b.push(r.$createLineBreakNode());return b},node:null}}function X(a){return a.classList.contains("js-file-line-container")}
32
+ exports.$createCodeHighlightNode=Q;exports.$createCodeNode=Z;exports.$isCodeHighlightNode=R;exports.$isCodeNode=function(a){return a instanceof U};exports.CODE_LANGUAGE_FRIENDLY_NAME_MAP=K;exports.CODE_LANGUAGE_MAP=L;exports.CodeHighlightNode=N;exports.CodeNode=U;exports.DEFAULT_CODE_LANGUAGE="javascript";exports.getCodeLanguages=()=>Object.keys(e.languages).filter(a=>"function"!==typeof e.languages[a]).sort();exports.getDefaultCodeLanguage=()=>"javascript";exports.getEndOfCodeInLine=z;
33
+ exports.getFirstCodeHighlightNodeOfLine=S;exports.getLanguageFriendlyName=function(a){a=M(a);return K[a]||a};exports.getLastCodeHighlightNodeOfLine=function(a){let b=null,c=a.getNextSiblings();for(c.unshift(a);0<c.length&&(a=c.shift(),R(a)&&(b=a),!r.$isLineBreakNode(a)););return b};exports.getStartOfCodeInLine=y;exports.normalizeCodeLang=M;
34
+ exports.registerCodeHighlighting=function(a){if(!a.hasNodes([v.CodeNode,v.CodeHighlightNode]))throw Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");return g.mergeRegister(a.registerMutationListener(v.CodeNode,b=>{a.update(()=>{for(let [f,h]of b)if("destroyed"!==h){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 m=d.length;if(m===c.__cachedChildrenLength)break a;c.__cachedChildrenLength=m;
35
+ let k="1",l=1;for(let n=0;n<m;n++)r.$isLineBreakNode(d[n])&&(k+="\n"+ ++l);c.setAttribute("data-gutter",k)}}})}),a.registerNodeTransform(v.CodeNode,b=>B(b,a)),a.registerNodeTransform(r.TextNode,b=>A(b,a)),a.registerNodeTransform(v.CodeHighlightNode,b=>A(b,a)),a.registerCommand(r.INDENT_CONTENT_COMMAND,()=>G(r.INDENT_CONTENT_COMMAND),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.OUTDENT_CONTENT_COMMAND,()=>G(r.OUTDENT_CONTENT_COMMAND),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.KEY_ARROW_UP_COMMAND,
36
+ b=>I(r.KEY_ARROW_UP_COMMAND,b),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.KEY_ARROW_DOWN_COMMAND,b=>I(r.KEY_ARROW_DOWN_COMMAND,b),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.MOVE_TO_END,b=>J(r.MOVE_TO_END,b),r.COMMAND_PRIORITY_LOW),a.registerCommand(r.MOVE_TO_START,b=>J(r.MOVE_TO_START,b),r.COMMAND_PRIORITY_LOW))}
package/index.d.ts CHANGED
@@ -5,73 +5,6 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- import type { DOMConversionMap, EditorConfig, LexicalEditor, LexicalNode, NodeKey, ParagraphNode, RangeSelection, SerializedElementNode, SerializedTextNode, Spread } from 'lexical';
9
- import 'prismjs/components/prism-clike';
10
- import 'prismjs/components/prism-javascript';
11
- import 'prismjs/components/prism-markup';
12
- import 'prismjs/components/prism-markdown';
13
- import 'prismjs/components/prism-c';
14
- import 'prismjs/components/prism-css';
15
- import 'prismjs/components/prism-objectivec';
16
- import 'prismjs/components/prism-sql';
17
- import 'prismjs/components/prism-python';
18
- import 'prismjs/components/prism-rust';
19
- import 'prismjs/components/prism-swift';
20
- import { ElementNode, TextNode } from 'lexical';
21
- declare type SerializedCodeNode = Spread<{
22
- language: string | null | undefined;
23
- type: 'code';
24
- version: 1;
25
- }, SerializedElementNode>;
26
- declare type SerializedCodeHighlightNode = Spread<{
27
- highlightType: string | null | undefined;
28
- type: 'code-highlight';
29
- version: 1;
30
- }, SerializedTextNode>;
31
- export declare const getDefaultCodeLanguage: () => string;
32
- export declare const getCodeLanguages: () => Array<string>;
33
- export declare class CodeHighlightNode extends TextNode {
34
- __highlightType: string | null | undefined;
35
- constructor(text: string, highlightType?: string | null | undefined, key?: NodeKey);
36
- static getType(): string;
37
- static clone(node: CodeHighlightNode): CodeHighlightNode;
38
- getHighlightType(): string | null | undefined;
39
- createDOM(config: EditorConfig): HTMLElement;
40
- updateDOM(prevNode: CodeHighlightNode, dom: HTMLElement, config: EditorConfig): boolean;
41
- static importJSON(serializedNode: SerializedCodeHighlightNode): CodeHighlightNode;
42
- exportJSON(): SerializedCodeHighlightNode;
43
- setFormat(format: number): this;
44
- }
45
- export declare function $createCodeHighlightNode(text: string, highlightType?: string | null | undefined): CodeHighlightNode;
46
- export declare function $isCodeHighlightNode(node: LexicalNode | CodeHighlightNode | null | undefined): node is CodeHighlightNode;
47
- export declare class CodeNode extends ElementNode {
48
- __language: string | null | undefined;
49
- static getType(): string;
50
- static clone(node: CodeNode): CodeNode;
51
- constructor(language?: string | null | undefined, key?: NodeKey);
52
- createDOM(config: EditorConfig): HTMLElement;
53
- updateDOM(prevNode: CodeNode, dom: HTMLElement): boolean;
54
- static importDOM(): DOMConversionMap | null;
55
- static importJSON(serializedNode: SerializedCodeNode): CodeNode;
56
- exportJSON(): SerializedCodeNode;
57
- insertNewAfter(selection: RangeSelection): null | ParagraphNode | CodeHighlightNode;
58
- canInsertTab(): boolean;
59
- canIndent(): false;
60
- collapseAtStart(): true;
61
- setLanguage(language: string): void;
62
- getLanguage(): string | null | undefined;
63
- }
64
- export declare function $createCodeNode(language?: string | null | undefined): CodeNode;
65
- export declare function $isCodeNode(node: LexicalNode | null | undefined): node is CodeNode;
66
- export declare function getFirstCodeHighlightNodeOfLine(anchor: LexicalNode): CodeHighlightNode | null | undefined;
67
- export declare function getLastCodeHighlightNodeOfLine(anchor: LexicalNode): CodeHighlightNode | null | undefined;
68
- export declare function getStartOfCodeInLine(anchor: LexicalNode): {
69
- node: TextNode | null;
70
- offset: number;
71
- };
72
- export declare function getEndOfCodeInLine(anchor: LexicalNode): {
73
- node: TextNode | null;
74
- offset: number;
75
- };
76
- export declare function registerCodeHighlighting(editor: LexicalEditor): () => void;
77
- export {};
8
+ export { getEndOfCodeInLine, getStartOfCodeInLine, registerCodeHighlighting, } from './CodeHighlighter';
9
+ export { $createCodeHighlightNode, $isCodeHighlightNode, CODE_LANGUAGE_FRIENDLY_NAME_MAP, CODE_LANGUAGE_MAP, CodeHighlightNode, DEFAULT_CODE_LANGUAGE, getCodeLanguages, getDefaultCodeLanguage, getFirstCodeHighlightNodeOfLine, getLanguageFriendlyName, getLastCodeHighlightNodeOfLine, normalizeCodeLang, } from './CodeHighlightNode';
10
+ export { $createCodeNode, $isCodeNode, CodeNode } from './CodeNode';
package/package.json CHANGED
@@ -8,13 +8,13 @@
8
8
  "code"
9
9
  ],
10
10
  "license": "MIT",
11
- "version": "0.3.7",
11
+ "version": "0.3.10",
12
12
  "main": "LexicalCode.js",
13
13
  "peerDependencies": {
14
- "lexical": "0.3.7"
14
+ "lexical": "0.3.10"
15
15
  },
16
16
  "dependencies": {
17
- "@lexical/utils": "0.3.7",
17
+ "@lexical/utils": "0.3.10",
18
18
  "prismjs": "^1.27.0"
19
19
  },
20
20
  "repository": {