@lexical/markdown
Advanced tools
Comparing version 0.9.0 to 0.9.1
@@ -10,2 +10,3 @@ /** @module @lexical/markdown */ | ||
import type { ElementTransformer, TextFormatTransformer, TextMatchTransformer, Transformer } from './MarkdownTransformers'; | ||
import type { ElementNode } from 'lexical'; | ||
import { registerMarkdownShortcuts } from './MarkdownShortcuts'; | ||
@@ -17,4 +18,4 @@ import { BOLD_ITALIC_STAR, BOLD_ITALIC_UNDERSCORE, BOLD_STAR, BOLD_UNDERSCORE, CHECK_LIST, CODE, HEADING, HIGHLIGHT, INLINE_CODE, ITALIC_STAR, ITALIC_UNDERSCORE, LINK, ORDERED_LIST, QUOTE, STRIKETHROUGH, UNORDERED_LIST } from './MarkdownTransformers'; | ||
declare const TRANSFORMERS: Array<Transformer>; | ||
declare function $convertFromMarkdownString(markdown: string, transformers?: Array<Transformer>): void; | ||
declare function $convertToMarkdownString(transformers?: Array<Transformer>): string; | ||
declare function $convertFromMarkdownString(markdown: string, transformers?: Array<Transformer>, node?: ElementNode): void; | ||
declare function $convertToMarkdownString(transformers?: Array<Transformer>, node?: ElementNode): string; | ||
export { $convertFromMarkdownString, $convertToMarkdownString, BOLD_ITALIC_STAR, BOLD_ITALIC_UNDERSCORE, BOLD_STAR, BOLD_UNDERSCORE, CHECK_LIST, CODE, ELEMENT_TRANSFORMERS, ElementTransformer, HEADING, HIGHLIGHT, INLINE_CODE, ITALIC_STAR, ITALIC_UNDERSCORE, LINK, ORDERED_LIST, QUOTE, registerMarkdownShortcuts, STRIKETHROUGH, TEXT_FORMAT_TRANSFORMERS, TEXT_MATCH_TRANSFORMERS, TextFormatTransformer, TextMatchTransformer, Transformer, TRANSFORMERS, UNORDERED_LIST, }; |
@@ -61,5 +61,5 @@ /** | ||
const textFormatTransformers = byType.textFormat.filter(transformer => transformer.format.length === 1); | ||
return () => { | ||
return node => { | ||
const output = []; | ||
const children = lexical.$getRoot().getChildren(); | ||
const children = (node || lexical.$getRoot()).getChildren(); | ||
@@ -244,6 +244,6 @@ for (const child of children) { | ||
const textFormatTransformersIndex = createTextFormatTransformersIndex(byType.textFormat); | ||
return markdownString => { | ||
return (markdownString, node) => { | ||
const lines = markdownString.split('\n'); | ||
const linesLength = lines.length; | ||
const root = lexical.$getRoot(); | ||
const root = node || lexical.$getRoot(); | ||
root.clear(); | ||
@@ -276,4 +276,2 @@ | ||
} | ||
root.selectEnd(); | ||
}; | ||
@@ -1102,10 +1100,10 @@ } | ||
function $convertFromMarkdownString(markdown, transformers = TRANSFORMERS) { | ||
function $convertFromMarkdownString(markdown, transformers = TRANSFORMERS, node) { | ||
const importMarkdown = createMarkdownImport(transformers); | ||
return importMarkdown(markdown); | ||
return importMarkdown(markdown, node); | ||
} | ||
function $convertToMarkdownString(transformers = TRANSFORMERS) { | ||
function $convertToMarkdownString(transformers = TRANSFORMERS, node) { | ||
const exportMarkdown = createMarkdownExport(transformers); | ||
return exportMarkdown(); | ||
return exportMarkdown(node); | ||
} | ||
@@ -1112,0 +1110,0 @@ |
@@ -8,3 +8,3 @@ /** | ||
'use strict';var h=require("lexical"),t=require("@lexical/code"),A=require("@lexical/list"),B=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]/; | ||
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):h.$isDecoratorNode(a)?a.getTextContent():null} | ||
function ba(a){let b=I(a),c=b.textFormat.filter(d=>1===d.format.length);return d=>{let e=[];d=(d||h.$getRoot()).getChildren();for(let f of d)d=ca(f,b.element,c,b.textMatch),null!=d&&e.push(d);return e.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):h.$isDecoratorNode(a)?a.getTextContent():null} | ||
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,l=>K(l,b,c),(l,k)=>L(l,k,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)):h.$isDecoratorNode(e)&&d.push(e.getTextContent())}return d.join("")} | ||
@@ -15,5 +15,5 @@ function L(a,b,c){let d=b.trim(),e=d,f=new Set;for(let k of c){c=k.format[0];let p=k.tag;if(M(a,c)&&!f.has(c)){f.add(c);var l=N(a,!0);M(l,c)||(e=p+e);l=N(a,!1);M(l,c)||(e+=p)}}return b.replace(d,e)} | ||
let P=O&&/Version\/[\d.]+.*Safari/.test(navigator.userAgent),Q=O&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,ea=O&&/^(?=.*Chrome).*/i.test(navigator.userAgent),R=O&&/AppleWebKit\/[\d.]+/.test(navigator.userAgent)&&!ea,fa=/^\s{0,3}$/,S=/^```(\w{1,10})?\s?$/; | ||
function ha(a){let b=I(a),c=ia(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 l=e[g];a:{var k=e,p=g;var r=d;var y=k[p].match(S);if(y)for(var q=p,m=k.length;++q<m;)if(k[q].match(S)){y=t.$createCodeNode(y[1]);k=h.$createTextNode(k.slice(p+1,q).join("\n"));y.append(k);r.append(y);r=[y,q];break a}r=[null,p]}let [n,v]=r;if(null!=n)g=v;else{r=l;m=d;var w=b.element;q=c;k=b.textMatch;p=r.trim();y=h.$createTextNode(p);l=h.$createParagraphNode();l.append(y); | ||
m.append(l);for(let {regExp:x,replace:u}of w)if(m=r.match(x)){y.setTextContent(r.slice(m[0].length));u(l,[y],m,!0);break}T(y,q,k);l.isAttached()&&0<p.length&&(r=l.getPreviousSibling(),h.$isParagraphNode(r)||B.$isQuoteNode(r)||A.$isListNode(r))&&(q=r,A.$isListNode(r)&&(r=r.getLastDescendant(),q=null==r?null:aa.$findMatchingParent(r,A.$isListItemNode)),null!=q&&0<q.getTextContentSize()&&(q.splice(q.getChildrenSize(),0,[h.$createLineBreakNode(),...l.getChildren()]),l.remove()))}}e=d.getChildren();for(let g of e)e= | ||
g,h.$isParagraphNode(e)?(f=e.getFirstChild(),e=null==f||1===e.getChildrenSize()&&h.$isTextNode(f)&&fa.test(f.getTextContent())):e=!1,e&&g.remove();d.selectEnd()}} | ||
function ha(a){let b=I(a),c=ia(b.textFormat);return(d,e)=>{d=d.split("\n");var f=d.length;e=e||h.$getRoot();e.clear();for(let g=0;g<f;g++){var l=d[g];a:{var k=d,p=g;var r=e;var y=k[p].match(S);if(y)for(var q=p,m=k.length;++q<m;)if(k[q].match(S)){y=t.$createCodeNode(y[1]);k=h.$createTextNode(k.slice(p+1,q).join("\n"));y.append(k);r.append(y);r=[y,q];break a}r=[null,p]}let [n,v]=r;if(null!=n)g=v;else{r=l;m=e;var w=b.element;q=c;k=b.textMatch;p=r.trim();y=h.$createTextNode(p);l=h.$createParagraphNode(); | ||
l.append(y);m.append(l);for(let {regExp:x,replace:u}of w)if(m=r.match(x)){y.setTextContent(r.slice(m[0].length));u(l,[y],m,!0);break}T(y,q,k);l.isAttached()&&0<p.length&&(r=l.getPreviousSibling(),h.$isParagraphNode(r)||B.$isQuoteNode(r)||A.$isListNode(r))&&(q=r,A.$isListNode(r)&&(r=r.getLastDescendant(),q=null==r?null:aa.$findMatchingParent(r,A.$isListItemNode)),null!=q&&0<q.getTextContentSize()&&(q.splice(q.getChildrenSize(),0,[h.$createLineBreakNode(),...l.getChildren()]),l.remove()))}}d=e.getChildren(); | ||
for(let g of d)d=g,h.$isParagraphNode(d)?(f=d.getFirstChild(),d=null==f||1===d.getChildrenSize()&&h.$isTextNode(f)&&fa.test(f.getTextContent())):d=!1,d&&g.remove()}} | ||
function T(a,b,c){var d=a.getTextContent();let e=ja(d,b);if(e){var f,l;if(e[0]===d)var k=a;else{d=e.index||0;let p=d+e[0].length;0===d?[k,f]=a.splitText(p):[l,k,f]=a.splitText(d,p)}k.setTextContent(e[2]);if(a=b.transformersByTag[e[1]])for(let p of a.format)k.hasFormat(p)||k.toggleFormat(p);k.hasFormat("code")||T(k,b,c);l&&T(l,b,c);f&&T(f,b,c)}else U(a,c)} | ||
@@ -30,3 +30,3 @@ function U(a,b){a:for(;a;){for(let c of b){let d=a.getTextContent().match(c.importRegExp);if(!d)continue;let e=d.index||0,f=e+d[0].length,l,k,p;0===e?[l,a]=a.splitText(f):[k,l,p]=a.splitText(e,f);k&&U(k,b);p&&(a=p);c.replace(l,d);continue a}break}} | ||
za={format:["italic"],tag:"*",type:"text-format"},Aa={format:["italic"],intraword:!1,tag:"_",type:"text-format"},Ba={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"},Ca=[la,ma,na,oa,qa],Da=[ra,ta,va,wa,xa,sa,za,Aa,ya],Ea=[Ba],Z=[...Ca,...Da,...Ea];exports.$convertFromMarkdownString=function(a,b=Z){return ha(b)(a)};exports.$convertToMarkdownString=function(a=Z){return ba(a)()};exports.BOLD_ITALIC_STAR=ta;exports.BOLD_ITALIC_UNDERSCORE=va;exports.BOLD_STAR=wa;exports.BOLD_UNDERSCORE=xa;exports.CHECK_LIST=pa;exports.CODE=na;exports.ELEMENT_TRANSFORMERS=Ca;exports.HEADING=la;exports.HIGHLIGHT=sa; | ||
b.append(e);a.replace(b)},trigger:")",type:"text-match"},Ca=[la,ma,na,oa,qa],Da=[ra,ta,va,wa,xa,sa,za,Aa,ya],Ea=[Ba],Z=[...Ca,...Da,...Ea];exports.$convertFromMarkdownString=function(a,b=Z,c){return ha(b)(a,c)};exports.$convertToMarkdownString=function(a=Z,b){return ba(a)(b)};exports.BOLD_ITALIC_STAR=ta;exports.BOLD_ITALIC_UNDERSCORE=va;exports.BOLD_STAR=wa;exports.BOLD_UNDERSCORE=xa;exports.CHECK_LIST=pa;exports.CODE=na;exports.ELEMENT_TRANSFORMERS=Ca;exports.HEADING=la;exports.HIGHLIGHT=sa; | ||
exports.INLINE_CODE=ra;exports.ITALIC_STAR=za;exports.ITALIC_UNDERSCORE=Aa;exports.LINK=Ba;exports.ORDERED_LIST=qa;exports.QUOTE=ma;exports.STRIKETHROUGH=ya;exports.TEXT_FORMAT_TRANSFORMERS=Da;exports.TEXT_MATCH_TRANSFORMERS=Ea;exports.TRANSFORMERS=Z;exports.UNORDERED_LIST=oa; | ||
@@ -33,0 +33,0 @@ 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:l,editorState:k,prevEditorState:p})=> |
@@ -9,2 +9,3 @@ /** | ||
import type { Transformer } from '@lexical/markdown'; | ||
export declare function createMarkdownExport(transformers: Array<Transformer>): () => string; | ||
import type { ElementNode } from 'lexical'; | ||
export declare function createMarkdownExport(transformers: Array<Transformer>): (node?: ElementNode) => string; |
@@ -9,2 +9,3 @@ /** | ||
import type { Transformer } from '@lexical/markdown'; | ||
export declare function createMarkdownImport(transformers: Array<Transformer>): (markdownString: string) => void; | ||
import { ElementNode } from 'lexical'; | ||
export declare function createMarkdownImport(transformers: Array<Transformer>): (markdownString: string, node?: ElementNode) => void; |
@@ -11,14 +11,14 @@ { | ||
"license": "MIT", | ||
"version": "0.9.0", | ||
"version": "0.9.1", | ||
"main": "LexicalMarkdown.js", | ||
"peerDependencies": { | ||
"lexical": "0.9.0" | ||
"lexical": "0.9.1" | ||
}, | ||
"dependencies": { | ||
"@lexical/utils": "0.9.0", | ||
"@lexical/code": "0.9.0", | ||
"@lexical/text": "0.9.0", | ||
"@lexical/rich-text": "0.9.0", | ||
"@lexical/list": "0.9.0", | ||
"@lexical/link": "0.9.0" | ||
"@lexical/utils": "0.9.1", | ||
"@lexical/code": "0.9.1", | ||
"@lexical/text": "0.9.1", | ||
"@lexical/rich-text": "0.9.1", | ||
"@lexical/list": "0.9.1", | ||
"@lexical/link": "0.9.1" | ||
}, | ||
@@ -25,0 +25,0 @@ "repository": { |
62765
13
1116
+ Added@lexical/clipboard@0.9.1(transitive)
+ Added@lexical/code@0.9.1(transitive)
+ Added@lexical/html@0.9.1(transitive)
+ Added@lexical/link@0.9.1(transitive)
+ Added@lexical/list@0.9.1(transitive)
+ Added@lexical/rich-text@0.9.1(transitive)
+ Added@lexical/selection@0.9.1(transitive)
+ Added@lexical/table@0.9.1(transitive)
+ Added@lexical/text@0.9.1(transitive)
+ Added@lexical/utils@0.9.1(transitive)
+ Addedlexical@0.9.1(transitive)
- Removed@lexical/clipboard@0.9.0(transitive)
- Removed@lexical/code@0.9.0(transitive)
- Removed@lexical/html@0.9.0(transitive)
- Removed@lexical/link@0.9.0(transitive)
- Removed@lexical/list@0.9.0(transitive)
- Removed@lexical/rich-text@0.9.0(transitive)
- Removed@lexical/selection@0.9.0(transitive)
- Removed@lexical/table@0.9.0(transitive)
- Removed@lexical/text@0.9.0(transitive)
- Removed@lexical/utils@0.9.0(transitive)
- Removedlexical@0.9.0(transitive)
Updated@lexical/code@0.9.1
Updated@lexical/link@0.9.1
Updated@lexical/list@0.9.1
Updated@lexical/rich-text@0.9.1
Updated@lexical/text@0.9.1
Updated@lexical/utils@0.9.1