@lexical/code 0.1.19 → 0.2.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.
- package/LexicalCode.dev.js +90 -1270
- package/LexicalCode.js.flow +3 -0
- package/LexicalCode.prod.js +20 -38
- package/package.json +4 -4
package/LexicalCode.js.flow
CHANGED
|
@@ -14,6 +14,7 @@ import type {
|
|
|
14
14
|
ParagraphNode,
|
|
15
15
|
RangeSelection,
|
|
16
16
|
EditorThemeClasses,
|
|
17
|
+
LexicalEditor,
|
|
17
18
|
} from 'lexical';
|
|
18
19
|
|
|
19
20
|
import {ElementNode} from 'lexical';
|
|
@@ -72,3 +73,5 @@ declare export function $createCodeHighlightNode(
|
|
|
72
73
|
declare export function $isCodeHighlightNode(
|
|
73
74
|
node: ?LexicalNode,
|
|
74
75
|
): boolean %checks(node instanceof CodeHighlightNode);
|
|
76
|
+
|
|
77
|
+
declare export function registerCodeHighlighting(editor: LexicalEditor): () => void;
|
package/LexicalCode.prod.js
CHANGED
|
@@ -4,41 +4,23 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
(function(a){
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
(g.manual=!0);if(!g.manual){var H=document.readyState;"loading"===H||"interactive"===H&&z&&z.defer?document.addEventListener("DOMContentLoaded",y):window.requestAnimationFrame?window.requestAnimationFrame(y):window.setTimeout(y,16)}return g}("undefined"!==typeof window?window:"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});a.exports&&(a.exports=c);"undefined"!==typeof aa&&(aa.Prism=c)})(ba);var N=ba.exports;
|
|
28
|
-
class O extends L.TextNode{constructor(a,c,b){super(a,b);this.__highlightType=c}static getType(){return"code-highlight"}static clone(a){return new O(a.__text,a.__highlightType||void 0,a.__key)}createDOM(a){const c=super.createDOM(a);a=P(a.theme,this.__highlightType);n.addClassNamesToElement(c,a);return c}updateDOM(a,c,b){const k=super.updateDOM(a,c,b);a=P(b.theme,a.__highlightType);b=P(b.theme,this.__highlightType);a!==b&&(a&&n.removeClassNamesFromElement(c,a),b&&n.addClassNamesToElement(c,b));return k}setFormat(){return this.getWritable()}}
|
|
29
|
-
function P(a,c){return c&&a&&a.codeHighlight&&a.codeHighlight[c]}function Q(a,c){return new O(a,c)}function S(a){return a instanceof O}
|
|
30
|
-
class T extends L.ElementNode{static getType(){return"code"}static clone(a){return new T(a.__language,a.__key)}constructor(a,c){super(c);this.__language=a}createDOM(a){const c=document.createElement("code");n.addClassNamesToElement(c,a.theme.code);c.setAttribute("spellcheck","false");return c}updateDOM(){return!1}static convertDOM(){return{div:()=>({conversion:ca,priority:1}),pre:()=>({conversion:da,priority:0}),table:a=>V(a)?{conversion:ea,priority:4}:null,td:a=>{const c=a.closest("table");return a.classList.contains("js-file-line")?
|
|
31
|
-
{conversion:fa,priority:4}:c&&V(c)?{conversion:ha,priority:4}:null},tr:a=>(a=a.closest("table"))&&V(a)?{conversion:ha,priority:4}:null}}insertNewAfter(a){var c=this.getChildren(),b=c.length;if(2<=b&&"\n"===c[b-1].getTextContent()&&"\n"===c[b-2].getTextContent()&&a.isCollapsed()&&a.anchor.key===this.__key&&a.anchor.offset===b)return c[b-1].remove(),c[b-2].remove(),a=L.$createParagraphNode(),this.insertAfter(a),a;c=a.anchor.getNode();var k=Y(c);if(null!=k){b=0;for(k=k.getTextContent();b<k.length&&/[\t ]/.test(k[b]);)b+=
|
|
32
|
-
1;if(0<b)return b=k.substring(0,b),b=Q(b),c.insertAfter(b),a.insertNodes([L.$createLineBreakNode()]),b.select(),b}return null}canInsertTab(){return!0}collapseAtStart(){const a=L.$createParagraphNode();this.getChildren().forEach(c=>a.append(c));this.replace(a);return!0}setLanguage(a){this.getWritable().__language=a}getLanguage(){return this.getLatest().__language}}function Z(a){return new T(a)}function ia(a){return a instanceof T}
|
|
33
|
-
function Y(a){let c=null;const b=a.getPreviousSiblings();for(b.push(a);0<b.length&&(a=b.pop(),S(a)&&(c=a),!L.$isLineBreakNode(a)););return c}function ja(a){let c=null;const b=a.getNextSiblings();for(b.unshift(a);0<b.length&&(a=b.shift(),S(a)&&(c=a),!L.$isLineBreakNode(a)););return c}function da(){return{node:Z()}}function ca(a){return{after:c=>{const b=a.parentNode;null!=b&&a!==b.lastChild&&c.push(L.$createLineBreakNode());return c},node:null!==a.style.fontFamily.match("monospace")?Z():null}}
|
|
34
|
-
function ea(){return{node:Z()}}function ha(){return{node:null}}function fa(a){return{after:c=>{a.parentNode&&a.parentNode.nextSibling&&c.push(L.$createLineBreakNode());return c},node:null}}function V(a){return a.classList.contains("js-file-line-container")}function ka(a,c){const b=a.getParent();ia(b)?la(b,c):S(a)&&a.replace(L.$createTextNode(a.__text))}let ma=!1;
|
|
35
|
-
function la(a,c){ma||(ma=!0,c.update(()=>{void 0===a.getLanguage()&&a.setLanguage("javascript");na(a,()=>{var b=a.getTextContent();b=N.tokenize(b,N.languages[a.getLanguage()||""]||N.languages.javascript);b=pa(b);var k=a.getChildren();let x=0;for(;x<k.length&&qa(k[x],b[x]);)x++;var B=k.length;const F=b.length,D=Math.min(B,F)-x;let y=0;for(;y<D;)if(y++,!qa(k[B-y],b[F-y])){y--;break}k=x;B-=y;b=b.slice(x,F-y);const {from:w,to:G,nodesForReplacement:z}={from:k,nodesForReplacement:b,to:B};return w!==G||
|
|
36
|
-
z.length?(a.splice(w,G-w,z),!0):!1})},{onUpdate:()=>{ma=!1},skipTransforms:!0}))}function pa(a){const c=[];a.forEach(b=>{if("string"===typeof b){b=b.split("\n");for(var k=0;k<b.length;k++){const x=b[k];x.length&&c.push(Q(x));k<b.length-1&&c.push(L.$createLineBreakNode())}}else({content:k}=b),"string"===typeof k?c.push(Q(k,b.type)):1===k.length&&"string"===typeof k[0]?c.push(Q(k[0],b.type)):c.push(...pa(k))});return c}
|
|
37
|
-
function na(a,c){var b=L.$getSelection();if(L.$isRangeSelection(b)&&b.anchor){b=b.anchor;var k=b.offset,x="element"===b.type&&L.$isLineBreakNode(a.getChildAtIndex(b.offset-1)),B=0;if(!x){const F=b.getNode();B=k+F.getPreviousSiblings().reduce((D,y)=>D+(L.$isLineBreakNode(y)?0:y.getTextContentSize()),0)}c()&&(x?b.getNode().select(k,k):a.getChildren().some(F=>{if(L.$isTextNode(F)){const D=F.getTextContentSize();if(D>=B)return F.select(B,B),!0;B-=D}return!1}))}}
|
|
38
|
-
function qa(a,c){return S(a)&&S(c)?a.__text===c.__text&&a.__highlightType===c.__highlightType:L.$isLineBreakNode(a)&&L.$isLineBreakNode(c)?!0:!1}function ra(a){var c=L.$getSelection();if(!L.$isRangeSelection(c)||c.isCollapsed())return!1;c=c.getNodes();for(var b=0;b<c.length;b++){var k=c[b];if(!S(k)&&!L.$isLineBreakNode(k))return!1}b=Y(c[0]);null!=b&&sa(b,a);for(b=1;b<c.length;b++)k=c[b],L.$isLineBreakNode(c[b-1])&&S(k)&&sa(k,a);return!0}
|
|
39
|
-
function sa(a,c){const b=a.getTextContent();c===L.INDENT_CONTENT_COMMAND?0<b.length&&/\s/.test(b[0])?a.setTextContent("\t"+b):(c=Q("\t"),a.insertBefore(c)):0===b.indexOf("\t")&&(1===b.length?a.remove():a.setTextContent(b.substring(1)))}
|
|
40
|
-
function ta(a,c){const b=L.$getSelection();if(!c.altKey||!L.$isRangeSelection(b))return!1;const {anchor:k,focus:x}=b,B=k.offset,F=x.offset,D=k.getNode(),y=x.getNode();if(!S(D)||!S(y))return!1;var w=Y(D),G=ja(y);if(null==w||null==G)return!1;const z=w.getNodesBetween(G);for(let H=0;H<z.length;H++){const u=z[H];if(!S(u)&&!L.$isLineBreakNode(u))return!1}c.preventDefault();c.stopPropagation();w=(c=a===L.KEY_ARROW_UP_COMMAND)?w.getPreviousSibling():G.getNextSibling();if(!L.$isLineBreakNode(w))return!0;
|
|
41
|
-
G=c?w.getPreviousSibling():w.getNextSibling();if(null==G)return!0;c=c?Y(G):ja(G);let g=null!=c?c:G;w.remove();z.forEach(H=>H.remove());a===L.KEY_ARROW_UP_COMMAND?(z.forEach(H=>g.insertBefore(H)),g.insertBefore(w)):(g.insertAfter(w),g=w,z.forEach(H=>{g.insertAfter(H);g=H}));b.setTextNodeRange(D,B,y,F);return!0}exports.$createCodeHighlightNode=Q;exports.$createCodeNode=Z;exports.$isCodeHighlightNode=S;exports.$isCodeNode=ia;exports.CodeHighlightNode=O;exports.CodeNode=T;
|
|
42
|
-
exports.getCodeLanguages=()=>Object.keys(N.languages).filter(a=>"function"!==typeof N.languages[a]).sort();exports.getDefaultCodeLanguage=()=>"javascript";exports.getFirstCodeHighlightNodeOfLine=Y;exports.getLastCodeHighlightNodeOfLine=ja;
|
|
43
|
-
exports.registerCodeHighlighting=function(a){if(!a.hasNodes([T,O]))throw Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");return n.mergeRegister(a.registerNodeTransform(T,c=>la(c,a)),a.registerNodeTransform(L.TextNode,c=>ka(c,a)),a.registerNodeTransform(O,c=>ka(c,a)),a.registerCommand(L.INDENT_CONTENT_COMMAND,()=>ra(L.INDENT_CONTENT_COMMAND),1),a.registerCommand(L.OUTDENT_CONTENT_COMMAND,()=>ra(L.OUTDENT_CONTENT_COMMAND),1),a.registerCommand(L.KEY_ARROW_UP_COMMAND,
|
|
44
|
-
c=>ta(L.KEY_ARROW_UP_COMMAND,c),1),a.registerCommand(L.KEY_ARROW_DOWN_COMMAND,c=>ta(L.KEY_ARROW_DOWN_COMMAND,c),1))};
|
|
7
|
+
var e=require("prismjs/components/prism-core");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 n=require("@lexical/utils"),r=require("lexical");
|
|
9
|
+
class t extends r.TextNode{constructor(a,b,c){super(a,c);this.__highlightType=b}static getType(){return"code-highlight"}static clone(a){return new t(a.__text,a.__highlightType||void 0,a.__key)}createDOM(a){const b=super.createDOM(a);a=u(a.theme,this.__highlightType);n.addClassNamesToElement(b,a);return b}updateDOM(a,b,c){const d=super.updateDOM(a,b,c);a=u(c.theme,a.__highlightType);c=u(c.theme,this.__highlightType);a!==c&&(a&&n.removeClassNamesFromElement(b,a),c&&n.addClassNamesToElement(b,c));return d}setFormat(){return this.getWritable()}}
|
|
10
|
+
function u(a,b){return b&&a&&a.codeHighlight&&a.codeHighlight[b]}function w(a,b){return new t(a,b)}function x(a){return a instanceof t}
|
|
11
|
+
class y extends r.ElementNode{static getType(){return"code"}static clone(a){return new y(a.__language,a.__key)}constructor(a,b){super(b);this.__language=a}createDOM(a){const b=document.createElement("code");n.addClassNamesToElement(b,a.theme.code);b.setAttribute("spellcheck","false");(a=this.getLanguage())&&b.setAttribute("data-highlight-language",a);return b}updateDOM(a,b){const 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{div:()=>({conversion:A,priority:1}),pre:()=>({conversion:B,priority:0}),table:a=>C(a)?{conversion:D,priority:4}:null,td:a=>{const b=a.closest("table");return a.classList.contains("js-file-line")?{conversion:E,priority:4}:b&&C(b)?{conversion:F,priority:4}:null},tr:a=>(a=a.closest("table"))&&C(a)?{conversion:F,priority:4}:null}}insertNewAfter(a){var b=this.getChildren(),c=b.length;if(2<=c&&"\n"===b[c-1].getTextContent()&&"\n"===b[c-2].getTextContent()&&a.isCollapsed()&&
|
|
13
|
+
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=G(b);if(null!=d){c=0;for(d=d.getTextContent();c<d.length&&/[\t ]/.test(d[c]);)c+=1;if(0<c)return c=d.substring(0,c),c=w(c),b.insertAfter(c),a.insertNodes([r.$createLineBreakNode()]),c.select(),c}return null}canInsertTab(){return!0}collapseAtStart(){const a=r.$createParagraphNode();this.getChildren().forEach(b=>a.append(b));this.replace(a);
|
|
14
|
+
return!0}setLanguage(a){this.getWritable().__language=a}getLanguage(){return this.getLatest().__language}}function H(a){return new y(a)}function I(a){return a instanceof y}function G(a){let b=null;const c=a.getPreviousSiblings();for(c.push(a);0<c.length&&(a=c.pop(),x(a)&&(b=a),!r.$isLineBreakNode(a)););return b}function J(a){let b=null;const c=a.getNextSiblings();for(c.unshift(a);0<c.length&&(a=c.shift(),x(a)&&(b=a),!r.$isLineBreakNode(a)););return b}function B(){return{node:H()}}
|
|
15
|
+
function A(a){return{after:b=>{const c=a.parentNode;null!=c&&a!==c.lastChild&&b.push(r.$createLineBreakNode());return b},node:null!==a.style.fontFamily.match("monospace")?H():null}}function D(){return{node:H()}}function F(){return{node:null}}function E(a){return{after:b=>{a.parentNode&&a.parentNode.nextSibling&&b.push(r.$createLineBreakNode());return b},node:null}}function C(a){return a.classList.contains("js-file-line-container")}
|
|
16
|
+
function K(a){const b=a.getParent();I(b)?L(b):x(a)&&a.replace(r.$createTextNode(a.__text))}
|
|
17
|
+
function L(a){void 0===a.getLanguage()&&a.setLanguage("javascript");M(a,()=>{var b=a.getTextContent();b=e.tokenize(b,e.languages[a.getLanguage()||""]||e.languages.javascript);b=O(b);var c=a.getChildren();let d=0;for(;d<c.length&&P(c[d],b[d]);)d++;var h=c.length;const k=b.length,l=Math.min(h,k)-d;let f=0;for(;f<l;)if(f++,!P(c[h-f],b[k-f])){f--;break}c=d;h-=f;b=b.slice(d,k-f);const {from:m,to:g,nodesForReplacement:p}={from:c,nodesForReplacement:b,to:h};return m!==g||p.length?(a.splice(m,g-m,p),!0):
|
|
18
|
+
!1})}function O(a){const b=[];a.forEach(c=>{if("string"===typeof c){c=c.split("\n");for(var d=0;d<c.length;d++){const h=c[d];h.length&&b.push(w(h));d<c.length-1&&b.push(r.$createLineBreakNode())}}else({content:d}=c),"string"===typeof d?b.push(w(d,c.type)):1===d.length&&"string"===typeof d[0]?b.push(w(d[0],c.type)):b.push(...O(d))});return b}
|
|
19
|
+
function M(a,b){var c=r.$getSelection();if(r.$isRangeSelection(c)&&c.anchor){c=c.anchor;var d=c.offset,h="element"===c.type&&r.$isLineBreakNode(a.getChildAtIndex(c.offset-1)),k=0;if(!h){const l=c.getNode();k=d+l.getPreviousSiblings().reduce((f,m)=>f+(r.$isLineBreakNode(m)?0:m.getTextContentSize()),0)}b()&&(h?c.getNode().select(d,d):a.getChildren().some(l=>{if(r.$isTextNode(l)){const f=l.getTextContentSize();if(f>=k)return l.select(k,k),!0;k-=f}return!1}))}}
|
|
20
|
+
function P(a,b){return x(a)&&x(b)?a.__text===b.__text&&a.__highlightType===b.__highlightType:r.$isLineBreakNode(a)&&r.$isLineBreakNode(b)?!0:!1}function Q(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(!x(d)&&!r.$isLineBreakNode(d))return!1}c=G(b[0]);null!=c&&R(c,a);for(c=1;c<b.length;c++)d=b[c],r.$isLineBreakNode(b[c-1])&&x(d)&&R(d,a);return!0}
|
|
21
|
+
function R(a,b){const c=a.getTextContent();b===r.INDENT_CONTENT_COMMAND?0<c.length&&/\s/.test(c[0])?a.setTextContent("\t"+c):(b=w("\t"),a.insertBefore(b)):0===c.indexOf("\t")&&(1===c.length?a.remove():a.setTextContent(c.substring(1)))}
|
|
22
|
+
function S(a,b){const c=r.$getSelection();if(!b.altKey||!r.$isRangeSelection(c))return!1;const {anchor:d,focus:h}=c,k=d.offset,l=h.offset,f=d.getNode(),m=h.getNode();if(!x(f)||!x(m))return!1;var g=G(f),p=J(m);if(null==g||null==p)return!1;const z=g.getNodesBetween(p);for(let q=0;q<z.length;q++){const N=z[q];if(!x(N)&&!r.$isLineBreakNode(N))return!1}b.preventDefault();b.stopPropagation();g=(b=a===r.KEY_ARROW_UP_COMMAND)?g.getPreviousSibling():p.getNextSibling();if(!r.$isLineBreakNode(g))return!0;p=
|
|
23
|
+
b?g.getPreviousSibling():g.getNextSibling();if(null==p)return!0;b=b?G(p):J(p);let v=null!=b?b:p;g.remove();z.forEach(q=>q.remove());a===r.KEY_ARROW_UP_COMMAND?(z.forEach(q=>v.insertBefore(q)),v.insertBefore(g)):(v.insertAfter(g),v=g,z.forEach(q=>{v.insertAfter(q);v=q}));c.setTextNodeRange(f,k,m,l);return!0}exports.$createCodeHighlightNode=w;exports.$createCodeNode=H;exports.$isCodeHighlightNode=x;exports.$isCodeNode=I;exports.CodeHighlightNode=t;exports.CodeNode=y;
|
|
24
|
+
exports.getCodeLanguages=()=>Object.keys(e.languages).filter(a=>"function"!==typeof e.languages[a]).sort();exports.getDefaultCodeLanguage=()=>"javascript";exports.getFirstCodeHighlightNodeOfLine=G;exports.getLastCodeHighlightNodeOfLine=J;
|
|
25
|
+
exports.registerCodeHighlighting=function(a){if(!a.hasNodes([y,t]))throw Error("CodeHighlightPlugin: CodeNode or CodeHighlightNode not registered on editor");return n.mergeRegister(a.registerMutationListener(y,b=>{a.update(()=>{for(const [h,k]of b)if("destroyed"!==k){var c=r.$getNodeByKey(h);if(null!==c)a:{var d=c;c=a.getElementByKey(d.getKey());if(null===c)break a;d=d.getChildren();const l=d.length;if(l===c.__cachedChildrenLength)break a;c.__cachedChildrenLength=l;let f="1",m=1;for(let g=0;g<l;g++)r.$isLineBreakNode(d[g])&&
|
|
26
|
+
(f+="\n"+ ++m);c.setAttribute("data-gutter",f)}}})}),a.registerNodeTransform(y,b=>L(b)),a.registerNodeTransform(r.TextNode,b=>K(b)),a.registerNodeTransform(t,b=>K(b)),a.registerCommand(r.INDENT_CONTENT_COMMAND,()=>Q(r.INDENT_CONTENT_COMMAND),1),a.registerCommand(r.OUTDENT_CONTENT_COMMAND,()=>Q(r.OUTDENT_CONTENT_COMMAND),1),a.registerCommand(r.KEY_ARROW_UP_COMMAND,b=>S(r.KEY_ARROW_UP_COMMAND,b),1),a.registerCommand(r.KEY_ARROW_DOWN_COMMAND,b=>S(r.KEY_ARROW_DOWN_COMMAND,b),1))};
|
package/package.json
CHANGED
|
@@ -8,18 +8,18 @@
|
|
|
8
8
|
"code"
|
|
9
9
|
],
|
|
10
10
|
"license": "MIT",
|
|
11
|
-
"version": "0.
|
|
11
|
+
"version": "0.2.0",
|
|
12
12
|
"main": "LexicalCode.js",
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"lexical": "0.
|
|
14
|
+
"lexical": "0.2.0"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@lexical/utils": "0.
|
|
17
|
+
"@lexical/utils": "0.2.0",
|
|
18
18
|
"prismjs": "^1.25.0"
|
|
19
19
|
},
|
|
20
20
|
"repository": {
|
|
21
21
|
"type": "git",
|
|
22
22
|
"url": "https://github.com/facebook/lexical",
|
|
23
|
-
"directory": "packages/lexical-
|
|
23
|
+
"directory": "packages/lexical-code"
|
|
24
24
|
}
|
|
25
25
|
}
|