@lexical/markdown 0.3.11 → 0.4.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/LexicalMarkdown.dev.js +22 -7
- package/LexicalMarkdown.js.flow +2 -0
- package/LexicalMarkdown.prod.js +17 -16
- package/MarkdownTransformers.d.ts +3 -1
- package/index.d.ts +1 -0
- package/package.json +8 -8
package/LexicalMarkdown.dev.js
CHANGED
|
@@ -715,6 +715,20 @@ function registerMarkdownShortcuts(editor, transformers = TRANSFORMERS) {
|
|
|
715
715
|
trigger
|
|
716
716
|
}) => trigger);
|
|
717
717
|
|
|
718
|
+
for (const transformer of transformers) {
|
|
719
|
+
const type = transformer.type;
|
|
720
|
+
|
|
721
|
+
if (type === 'element' || type === 'text-match') {
|
|
722
|
+
const dependencies = transformer.dependencies;
|
|
723
|
+
|
|
724
|
+
if (!editor.hasNodes(dependencies)) {
|
|
725
|
+
{
|
|
726
|
+
throw Error(`MarkdownShortcuts: missing dependency for transformer. Ensure node dependency is included in editor initial config.`);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
|
|
718
732
|
const transform = (parentNode, anchorNode, anchorOffset) => {
|
|
719
733
|
if (runElementTransformers(parentNode, anchorNode, anchorOffset, byType.element)) {
|
|
720
734
|
return;
|
|
@@ -844,6 +858,7 @@ const listExport = (listNode, exportChildren, depth) => {
|
|
|
844
858
|
};
|
|
845
859
|
|
|
846
860
|
const HEADING = {
|
|
861
|
+
dependencies: [richText.HeadingNode],
|
|
847
862
|
export: (node, exportChildren) => {
|
|
848
863
|
if (!richText.$isHeadingNode(node)) {
|
|
849
864
|
return null;
|
|
@@ -860,6 +875,7 @@ const HEADING = {
|
|
|
860
875
|
type: 'element'
|
|
861
876
|
};
|
|
862
877
|
const QUOTE = {
|
|
878
|
+
dependencies: [richText.QuoteNode],
|
|
863
879
|
export: (node, exportChildren) => {
|
|
864
880
|
if (!richText.$isQuoteNode(node)) {
|
|
865
881
|
return null;
|
|
@@ -895,6 +911,7 @@ const QUOTE = {
|
|
|
895
911
|
type: 'element'
|
|
896
912
|
};
|
|
897
913
|
const CODE = {
|
|
914
|
+
dependencies: [code.CodeNode],
|
|
898
915
|
export: node => {
|
|
899
916
|
if (!code.$isCodeNode(node)) {
|
|
900
917
|
return null;
|
|
@@ -910,6 +927,7 @@ const CODE = {
|
|
|
910
927
|
type: 'element'
|
|
911
928
|
};
|
|
912
929
|
const UNORDERED_LIST = {
|
|
930
|
+
dependencies: [list.ListNode, list.ListItemNode],
|
|
913
931
|
export: (node, exportChildren) => {
|
|
914
932
|
return list.$isListNode(node) ? listExport(node, exportChildren, 0) : null;
|
|
915
933
|
},
|
|
@@ -918,6 +936,7 @@ const UNORDERED_LIST = {
|
|
|
918
936
|
type: 'element'
|
|
919
937
|
};
|
|
920
938
|
const CHECK_LIST = {
|
|
939
|
+
dependencies: [list.ListNode, list.ListItemNode],
|
|
921
940
|
export: (node, exportChildren) => {
|
|
922
941
|
return list.$isListNode(node) ? listExport(node, exportChildren, 0) : null;
|
|
923
942
|
},
|
|
@@ -926,6 +945,7 @@ const CHECK_LIST = {
|
|
|
926
945
|
type: 'element'
|
|
927
946
|
};
|
|
928
947
|
const ORDERED_LIST = {
|
|
948
|
+
dependencies: [list.ListNode, list.ListItemNode],
|
|
929
949
|
export: (node, exportChildren) => {
|
|
930
950
|
return list.$isListNode(node) ? listExport(node, exportChildren, 0) : null;
|
|
931
951
|
},
|
|
@@ -981,6 +1001,7 @@ const ITALIC_UNDERSCORE = {
|
|
|
981
1001
|
// - then longer tags match (e.g. ** or __ should go before * or _)
|
|
982
1002
|
|
|
983
1003
|
const LINK = {
|
|
1004
|
+
dependencies: [link.LinkNode],
|
|
984
1005
|
export: (node, exportChildren, exportFormat) => {
|
|
985
1006
|
if (!link.$isLinkNode(node)) {
|
|
986
1007
|
return null;
|
|
@@ -1010,13 +1031,7 @@ const LINK = {
|
|
|
1010
1031
|
type: 'text-match'
|
|
1011
1032
|
};
|
|
1012
1033
|
|
|
1013
|
-
/**
|
|
1014
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
1015
|
-
*
|
|
1016
|
-
* This source code is licensed under the MIT license found in the
|
|
1017
|
-
* LICENSE file in the root directory of this source tree.
|
|
1018
|
-
*
|
|
1019
|
-
*/
|
|
1034
|
+
/** @module @lexical/markdown */
|
|
1020
1035
|
const ELEMENT_TRANSFORMERS = [HEADING, QUOTE, CODE, UNORDERED_LIST, ORDERED_LIST]; // Order of text format transformers matters:
|
|
1021
1036
|
//
|
|
1022
1037
|
// - code should go first as it prevents any transformations inside
|
package/LexicalMarkdown.js.flow
CHANGED
|
@@ -21,6 +21,7 @@ export type Transformer =
|
|
|
21
21
|
| TextMatchTransformer;
|
|
22
22
|
|
|
23
23
|
export type ElementTransformer = {
|
|
24
|
+
dependencies: Array<Class<LexicalNode>>,
|
|
24
25
|
export: (
|
|
25
26
|
node: LexicalNode,
|
|
26
27
|
traverseChildren: (node: ElementNode) => string,
|
|
@@ -43,6 +44,7 @@ export type TextFormatTransformer = $ReadOnly<{
|
|
|
43
44
|
}>;
|
|
44
45
|
|
|
45
46
|
export type TextMatchTransformer = $ReadOnly<{
|
|
47
|
+
dependencies: Array<Class<LexicalNode>>,
|
|
46
48
|
export: (
|
|
47
49
|
node: LexicalNode,
|
|
48
50
|
exportChildren: (node: ElementNode) => string,
|
package/LexicalMarkdown.prod.js
CHANGED
|
@@ -4,25 +4,26 @@
|
|
|
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
|
-
'use strict';var h=require("lexical"),
|
|
7
|
+
'use strict';var h=require("lexical"),t=require("@lexical/code"),A=require("@lexical/list"),F=require("@lexical/rich-text"),aa=require("@lexical/utils"),G=require("@lexical/link");function H(a,b){let c={};for(let d of a)a=b(d),c[a]?c[a].push(d):c[a]=[d];return c}function I(a){a=H(a,b=>b.type);return{element:a.element||[],textFormat:a["text-format"]||[],textMatch:a["text-match"]||[]}}let J=/[!-/:-@[-`{-~\s]/;
|
|
8
8
|
function ba(a){let b=I(a),c=b.textFormat.filter(d=>1===d.format.length);return()=>{let d=[];var e=h.$getRoot().getChildren();for(let f of e)e=ca(f,b.element,c,b.textMatch),null!=e&&d.push(e);return d.join("\n\n")}}function ca(a,b,c,d){for(let e of b)if(b=e.export(a,f=>K(f,c,d)),null!=b)return b;return h.$isElementNode(a)?K(a,c,d):null}
|
|
9
9
|
function K(a,b,c){let d=[];a=a.getChildren();a:for(let e of a){for(let f of c)if(a=f.export(e,k=>K(k,b,c),(k,p)=>L(k,p,b)),null!=a){d.push(a);continue a}h.$isLineBreakNode(e)?d.push("\n"):h.$isTextNode(e)?d.push(L(e,e.getTextContent(),b)):h.$isElementNode(e)&&d.push(K(e,b,c))}return d.join("")}function L(a,b,c){let d=b.trim(),e=d,f=new Set;for(let p of c){c=p.format[0];let r=p.tag;if(M(a,c)&&!f.has(c)){f.add(c);var k=N(a,!0);M(k,c)||(e=r+e);k=N(a,!1);M(k,c)||(e+=r)}}return b.replace(d,e)}
|
|
10
10
|
function N(a,b){let c=b?a.getPreviousSibling():a.getNextSibling();c||(a=a.getParentOrThrow(),a.isInline()&&(c=b?a.getPreviousSibling():a.getNextSibling()));for(;c;){if(h.$isElementNode(c)){if(!c.isInline())break;a=b?c.getLastDescendant():c.getFirstDescendant();if(h.$isTextNode(a))return a;c=b?c.getPreviousSibling():c.getNextSibling()}if(h.$isTextNode(c))return c;if(!h.$isElementNode(c))break}return null}function M(a,b){return h.$isTextNode(a)&&a.hasFormat(b)}let da=/^\s{0,3}$/,O=/^```(\w{1,10})?\s?$/;
|
|
11
|
-
function ea(a){let b=I(a),c=fa(b.textFormat);return d=>{var e=d.split("\n"),f=e.length;d=h.$getRoot();d.clear();for(let g=0;g<f;g++){var k=e[g];a:{var p=e,r=g;var n=d;var
|
|
12
|
-
l.append(k);for(let {regExp:
|
|
11
|
+
function ea(a){let b=I(a),c=fa(b.textFormat);return d=>{var e=d.split("\n"),f=e.length;d=h.$getRoot();d.clear();for(let g=0;g<f;g++){var k=e[g];a:{var p=e,r=g;var n=d;var u=p[r].match(O);if(u)for(var q=r,l=p.length;++q<l;)if(p[q].match(O)){u=t.$createCodeNode(u[1]);p=h.$createTextNode(p.slice(r+1,q).join("\n"));u.append(p);n.append(u);n=[u,q];break a}n=[null,r]}let [m,w]=n;if(null!=m)g=w;else{n=k;l=d;var x=b.element;q=c;p=b.textMatch;r=n.trim();u=h.$createTextNode(r);k=h.$createParagraphNode();k.append(u);
|
|
12
|
+
l.append(k);for(let {regExp:y,replace:v}of x)if(l=n.match(y)){u.setTextContent(n.slice(l[0].length));v(k,[u],l,!0);break}P(u,q,p);k.isAttached()&&0<r.length&&(n=k.getPreviousSibling(),h.$isParagraphNode(n)||F.$isQuoteNode(n)||A.$isListNode(n))&&(q=n,A.$isListNode(n)&&(n=n.getLastDescendant(),q=null==n?null:aa.$findMatchingParent(n,A.$isListItemNode)),null!=q&&0<q.getTextContentSize()&&(q.splice(q.getChildrenSize(),0,[h.$createLineBreakNode(),...k.getChildren()]),k.remove()))}}e=d.getChildren();for(let g of e)e=
|
|
13
13
|
g,h.$isParagraphNode(e)?(f=e.getFirstChild(),e=null==f||1===e.getChildrenSize()&&h.$isTextNode(f)&&da.test(f.getTextContent())):e=!1,e&&g.remove();d.selectEnd()}}
|
|
14
|
-
function P(a,b,c){let d=a.getTextContent(),e=ha(d,b);if(e){if(e[0]===d)var f=a;else{var k=e.index||0,p=k+e[0].length;0===k?[f,r]=a.splitText(p):[n,f,r]=a.splitText(k,p)}f.setTextContent(e[2]);if(k=b.transformersByTag[e[1]])for(let
|
|
14
|
+
function P(a,b,c){let d=a.getTextContent(),e=ha(d,b);if(e){if(e[0]===d)var f=a;else{var k=e.index||0,p=k+e[0].length;0===k?[f,r]=a.splitText(p):[n,f,r]=a.splitText(k,p)}f.setTextContent(e[2]);if(k=b.transformersByTag[e[1]])for(let u of k.format)f.hasFormat(u)||f.toggleFormat(u);f.hasFormat("code")||P(f,b,c);n&&P(n,b,c);r&&P(r,b,c)}else a:for(b=a;b;){for(k of c)if(f=b.getTextContent().match(k.importRegExp)){var r=f.index||0;var n=r+f[0].length;0===r?[p,b]=b.splitText(n):[,p,b]=b.splitText(r,n);k.replace(p,
|
|
15
15
|
f);continue a}break}}function ha(a,b){var c=a.match(b.openTagsRegExp);if(null==c)return null;for(let f of c){var d=f.replace(/^\s/,"");c=b.fullMatchRegExpByTag[d];if(null!=c&&(c=a.match(c),d=b.transformersByTag[d],null!=c&&null!=d)){if(!1!==d.intraword)return c;var {index:e=0}=c;d=a[e-1];e=a[e+c[0].length];if(!(d&&!J.test(d)||e&&!J.test(e)))return c}}return null}
|
|
16
16
|
function fa(a){let b={},c={},d=[];for(let e of a){({tag:a}=e);b[a]=e;let f=a.replace(/(\*|\^)/g,"\\$1");d.push(f);c[a]=new RegExp(`(${f})(?![${f}\\s])(.*?[^${f}\\s])${f}(?!${f})`)}return{fullMatchRegExpByTag:c,openTagsRegExp:new RegExp("("+d.join("|")+")","g"),transformersByTag:b}}function Q(a,b,c){let d=c.length;for(;b>=d;b--){let e=b-d;if(R(a,e,c,0,d)&&" "!==a[e+d])return e}return-1}function R(a,b,c,d,e){for(let f=0;f<e;f++)if(a[b+f]!==c[d+f])return!1;return!0}
|
|
17
|
-
let S=a=>(b,c,d)=>{d=a(d);d.append(...c);b.replace(d);d.select(0,0)},T=a=>(b,c,d)=>{var e=b.getPreviousSibling();const f=
|
|
18
|
-
(e=p.getFirstChild(),
|
|
19
|
-
b=[];for(const c of a)b.push("> "+c);return b.join("\n")},regExp:/^>\s/,replace:(a,b,c,d)=>{if(d&&(c=a.getPreviousSibling(),F.$isQuoteNode(c))){c.splice(c.getChildrenSize(),0,[h.$createLineBreakNode(),...b]);c.select(0,0);a.remove();return}c=F.$createQuoteNode();c.append(...b);a.replace(c);c.select(0,0)},type:"element"},X={export:a=>{if(!
|
|
20
|
-
a[1]:void 0)),type:"element"},Y={export:(a,b)=>
|
|
21
|
-
"
|
|
22
|
-
c(d,b):b},importRegExp:/(?:\[([^[]+)\])(?:\(([^(]+)\))/,regExp:/(?:\[([^[]+)\])(?:\(([^(]+)\))$/,replace:(a,b)=>{const [,c,d]=b;b=G.$createLinkNode(d);const e=h.$createTextNode(c);e.setFormat(a.getFormat());b.append(e);a.replace(b)},trigger:")",type:"text-match"},
|
|
23
|
-
exports.BOLD_ITALIC_UNDERSCORE=ma;exports.BOLD_STAR=na;exports.BOLD_UNDERSCORE=pa;exports.CHECK_LIST=ia;exports.CODE=X;exports.ELEMENT_TRANSFORMERS=ua;exports.HEADING=V;exports.INLINE_CODE=ka;exports.ITALIC_STAR=ra;exports.ITALIC_UNDERSCORE=sa;exports.LINK=ta;
|
|
24
|
-
exports.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
g
|
|
28
|
-
|
|
17
|
+
let S=a=>(b,c,d)=>{d=a(d);d.append(...c);b.replace(d);d.select(0,0)},T=a=>(b,c,d)=>{var e=b.getPreviousSibling();const f=A.$createListItemNode("check"===a?"x"===d[3]:void 0);A.$isListNode(e)&&e.getListType()===a?(e.append(f),b.remove()):(e=A.$createListNode(a,"number"===a?Number(d[2]):void 0),e.append(f),b.replace(e));f.append(...c);f.select(0,0);(b=Math.floor(d[1].length/4))&&f.setIndent(b)},U=(a,b,c)=>{const d=[];var e=a.getChildren();let f=0;for(const p of e)if(A.$isListItemNode(p)){if(1===p.getChildrenSize()&&
|
|
18
|
+
(e=p.getFirstChild(),A.$isListNode(e))){d.push(U(e,b,c+1));continue}e=" ".repeat(4*c);var k=a.getListType();k="number"===k?`${a.getStart()+f}. `:"check"===k?`- [${p.getChecked()?"x":" "}] `:"- ";d.push(e+k+b(p));f++}return d.join("\n")},V={dependencies:[F.HeadingNode],export:(a,b)=>{if(!F.$isHeadingNode(a))return null;const c=Number(a.getTag().slice(1));return"#".repeat(c)+" "+b(a)},regExp:/^(#{1,6})\s/,replace:S(a=>F.$createHeadingNode("h"+a[1].length)),type:"element"},W={dependencies:[F.QuoteNode],
|
|
19
|
+
export:(a,b)=>{if(!F.$isQuoteNode(a))return null;a=b(a).split("\n");b=[];for(const c of a)b.push("> "+c);return b.join("\n")},regExp:/^>\s/,replace:(a,b,c,d)=>{if(d&&(c=a.getPreviousSibling(),F.$isQuoteNode(c))){c.splice(c.getChildrenSize(),0,[h.$createLineBreakNode(),...b]);c.select(0,0);a.remove();return}c=F.$createQuoteNode();c.append(...b);a.replace(c);c.select(0,0)},type:"element"},X={dependencies:[t.CodeNode],export:a=>{if(!t.$isCodeNode(a))return null;const b=a.getTextContent();return"```"+
|
|
20
|
+
(a.getLanguage()||"")+(b?"\n"+b:"")+"\n```"},regExp:/^```(\w{1,10})?\s/,replace:S(a=>t.$createCodeNode(a?a[1]:void 0)),type:"element"},Y={dependencies:[A.ListNode,A.ListItemNode],export:(a,b)=>A.$isListNode(a)?U(a,b,0):null,regExp:/^(\s*)[-*+]\s/,replace:T("bullet"),type:"element"},ia={dependencies:[A.ListNode,A.ListItemNode],export:(a,b)=>A.$isListNode(a)?U(a,b,0):null,regExp:/^(\s*)(?:-\s)?\s?(\[(\s|x)?\])\s/i,replace:T("check"),type:"element"},ja={dependencies:[A.ListNode,A.ListItemNode],export:(a,
|
|
21
|
+
b)=>A.$isListNode(a)?U(a,b,0):null,regExp:/^(\s*)(\d{1,})\.\s/,replace:T("number"),type:"element"},ka={format:["code"],tag:"`",type:"text-format"},la={format:["bold","italic"],tag:"***",type:"text-format"},ma={format:["bold","italic"],intraword:!1,tag:"___",type:"text-format"},na={format:["bold"],tag:"**",type:"text-format"},pa={format:["bold"],intraword:!1,tag:"__",type:"text-format"},qa={format:["strikethrough"],tag:"~~",type:"text-format"},ra={format:["italic"],tag:"*",type:"text-format"},sa={format:["italic"],
|
|
22
|
+
intraword:!1,tag:"_",type:"text-format"},ta={dependencies:[G.LinkNode],export:(a,b,c)=>{if(!G.$isLinkNode(a))return null;b=`[${a.getTextContent()}](${a.getURL()})`;const d=a.getFirstChild();return 1===a.getChildrenSize()&&h.$isTextNode(d)?c(d,b):b},importRegExp:/(?:\[([^[]+)\])(?:\(([^(]+)\))/,regExp:/(?:\[([^[]+)\])(?:\(([^(]+)\))$/,replace:(a,b)=>{const [,c,d]=b;b=G.$createLinkNode(d);const e=h.$createTextNode(c);e.setFormat(a.getFormat());b.append(e);a.replace(b)},trigger:")",type:"text-match"},
|
|
23
|
+
ua=[V,W,X,Y,ja],va=[ka,la,ma,na,pa,ra,sa,qa],wa=[ta],Z=[...ua,...va,...wa];exports.$convertFromMarkdownString=function(a,b=Z){return ea(b)(a)};exports.$convertToMarkdownString=function(a=Z){return ba(a)()};exports.BOLD_ITALIC_STAR=la;exports.BOLD_ITALIC_UNDERSCORE=ma;exports.BOLD_STAR=na;exports.BOLD_UNDERSCORE=pa;exports.CHECK_LIST=ia;exports.CODE=X;exports.ELEMENT_TRANSFORMERS=ua;exports.HEADING=V;exports.INLINE_CODE=ka;exports.ITALIC_STAR=ra;exports.ITALIC_UNDERSCORE=sa;exports.LINK=ta;
|
|
24
|
+
exports.ORDERED_LIST=ja;exports.QUOTE=W;exports.STRIKETHROUGH=qa;exports.TEXT_FORMAT_TRANSFORMERS=va;exports.TEXT_MATCH_TRANSFORMERS=wa;exports.TRANSFORMERS=Z;exports.UNORDERED_LIST=Y;
|
|
25
|
+
exports.registerMarkdownShortcuts=function(a,b=Z){let c=I(b),d=H(c.textFormat,({tag:f})=>f[f.length-1]),e=H(c.textMatch,({trigger:f})=>f);for(let f of b)if(b=f.type,("element"===b||"text-match"===b)&&!a.hasNodes(f.dependencies))throw Error("Minified Lexical error #79; visit https://lexical.dev/docs/error?code=79 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.");return a.registerUpdateListener(({tags:f,dirtyLeaves:k,editorState:p,prevEditorState:r})=>
|
|
26
|
+
{if(!f.has("historic")){var n=p.read(h.$getSelection);f=r.read(h.$getSelection);if(h.$isRangeSelection(f)&&h.$isRangeSelection(n)&&n.isCollapsed()){r=n.anchor.key;var u=n.anchor.offset,q=p._nodeMap.get(r);h.$isTextNode(q)&&k.has(r)&&(1===u||u===f.anchor.offset+1)&&a.update(()=>{if(!q.hasFormat("code")){var l=q.getParent();if(null!==l&&!t.$isCodeNode(l)){var x=n.anchor.offset;b:{var g=c.element,m=l.getParent();if(h.$isRootNode(m)&&l.getFirstChild()===q&&(m=q.getTextContent()," "===m[x-1]))for(let {regExp:C,
|
|
27
|
+
replace:D}of g)if((g=m.match(C))&&g[0].length===x){m=q.getNextSiblings();let [E,oa]=q.splitText(x);E.remove();m=oa?[oa,...m]:m;D(l,m,g,!1);l=!0;break b}l=!1}if(!l){b:{g=q.getTextContent();l=e[g[x-1]];if(null!=l){x<g.length&&(g=g.slice(0,x));for(y of l)if(l=g.match(y.regExp),null!==l){g=l.index||0;m=g+l[0].length;var w=void 0;0===g?[w]=q.splitText(m):[,w]=q.splitText(g,m);w.selectNext(0,0);y.replace(w,l);var y=!0;break b}}y=!1}if(!y)b:{m=q.getTextContent();--x;var v=m[x];if(y=d[v])for(let C of y){var {tag:B}=
|
|
28
|
+
C;y=B.length;let D=x-y+1;if(!(1<y&&!R(m,D,B,0,y)||" "===m[D-1])&&(w=m[x+1],!1!==C.intraword||!w||J.test(w))){l=w=q;g=Q(m,D,B);for(var z=l;0>g&&(z=z.getPreviousSibling())&&!h.$isLineBreakNode(z);)h.$isTextNode(z)&&(g=z.getTextContent(),l=z,g=Q(g,g.length,B));if(!(0>g||l===w&&g+y===D||(B=l.getTextContent(),0<g&&B[g-1]===v||(z=B[g-1],!1===C.intraword&&z&&!J.test(z))))){m=w.getTextContent();m=m.slice(0,D)+m.slice(x+1);w.setTextContent(m);m=l===w?m:B;l.setTextContent(m.slice(0,g)+m.slice(g+y));m=h.$getSelection();
|
|
29
|
+
v=h.$createRangeSelection();h.$setSelection(v);x=x-y*(l===w?2:1)+1;v.anchor.set(l.__key,g,"text");v.focus.set(w.__key,x,"text");for(let E of C.format)v.hasFormat(E)||v.formatText(E);v.anchor.set(v.focus.key,v.focus.offset,v.focus.type);for(let E of C.format)v.hasFormat(E)&&v.toggleFormat(E);h.$isRangeSelection(m)&&(v.format=m.format);break b}}}}}}}})}}})}
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
|
-
import type { ElementNode, LexicalNode, TextFormatType, TextNode } from 'lexical';
|
|
8
|
+
import type { ElementNode, Klass, LexicalNode, TextFormatType, TextNode } from 'lexical';
|
|
9
9
|
export declare type Transformer = ElementTransformer | TextFormatTransformer | TextMatchTransformer;
|
|
10
10
|
export declare type ElementTransformer = {
|
|
11
|
+
dependencies: Array<Klass<LexicalNode>>;
|
|
11
12
|
export: (node: LexicalNode, traverseChildren: (node: ElementNode) => string) => string | null;
|
|
12
13
|
regExp: RegExp;
|
|
13
14
|
replace: (parentNode: ElementNode, children: Array<LexicalNode>, match: Array<string>, isImport: boolean) => void;
|
|
@@ -20,6 +21,7 @@ export declare type TextFormatTransformer = Readonly<{
|
|
|
20
21
|
type: 'text-format';
|
|
21
22
|
}>;
|
|
22
23
|
export declare type TextMatchTransformer = Readonly<{
|
|
24
|
+
dependencies: Array<Klass<LexicalNode>>;
|
|
23
25
|
export: (node: LexicalNode, exportChildren: (node: ElementNode) => string, exportFormat: (node: TextNode, textContent: string) => string) => string | null;
|
|
24
26
|
importRegExp: RegExp;
|
|
25
27
|
regExp: RegExp;
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -8,18 +8,18 @@
|
|
|
8
8
|
"markdown"
|
|
9
9
|
],
|
|
10
10
|
"license": "MIT",
|
|
11
|
-
"version": "0.
|
|
11
|
+
"version": "0.4.0",
|
|
12
12
|
"main": "LexicalMarkdown.js",
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"lexical": "0.
|
|
14
|
+
"lexical": "0.4.0"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@lexical/utils": "0.
|
|
18
|
-
"@lexical/code": "0.
|
|
19
|
-
"@lexical/text": "0.
|
|
20
|
-
"@lexical/rich-text": "0.
|
|
21
|
-
"@lexical/list": "0.
|
|
22
|
-
"@lexical/link": "0.
|
|
17
|
+
"@lexical/utils": "0.4.0",
|
|
18
|
+
"@lexical/code": "0.4.0",
|
|
19
|
+
"@lexical/text": "0.4.0",
|
|
20
|
+
"@lexical/rich-text": "0.4.0",
|
|
21
|
+
"@lexical/list": "0.4.0",
|
|
22
|
+
"@lexical/link": "0.4.0"
|
|
23
23
|
},
|
|
24
24
|
"repository": {
|
|
25
25
|
"type": "git",
|