rich-editor-to-markdown-parser
Version:
Rich Editor response convert to markdown.
11 lines (10 loc) • 5.19 kB
JavaScript
;var d=Object.create;var y=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var F=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty;var K=(e,r)=>{for(var t in r)y(e,t,{get:r[t],enumerable:!0})},N=(e,r,t,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of j(r))!G.call(e,n)&&n!==t&&y(e,n,{get:()=>r[n],enumerable:!(a=A(r,n))||a.enumerable});return e};var X=(e,r,t)=>(t=e!=null?d(F(e)):{},N(r||!e||!e.__esModule?y(t,"default",{value:e,enumerable:!0}):t,e)),Z=e=>N(y({},"__esModule",{value:!0}),e);var me={};K(me,{parser:()=>ie});module.exports=Z(me);var B=X(require("html-dom-parser"));var L=({tagName:e,marks:r,markStyle:t})=>{switch(e){case"p":return r;case"h1":return`# ${r}`;case"h2":return`## ${r}`;case"h3":return`### ${r}`;case"h4":return`#### ${r}`;case"h5":return`##### ${r}`;case"strong":return t.strong+r+t.strong;case"em":return t.em+r+t.em;case"s":return`~~${r}~~`;case"u":return`<u>${r}</u>`;case"blockquote":return`> ${r}`;case"br":return`
`;default:return""}},x=(e,r)=>e+r.hr,b=({src:e,alt:r})=>``,C=(e,r)=>`[${e}](${r})`,O=({marks:e,markStyle:r,language:t,fileName:a})=>{let n=a?`:${a}`:"";return`${r.pre}${t}${n}
${e}
${r.pre}`},I=e=>`\`${e}\``,_=(e,r)=>`<span class="${r}">${e}</span>`;var J=["p","h1","h2","h3","h4","h5","strong","em","s","br","u","blockquote"],Q=["hr"],V=["a"],W=["img","figure","figcaption"],Y=["div","pre","code"],ee=["table","tbody","tr","th","td"],re=["ul","ol","li"],te=["span"],v=e=>p(J,e.name),w=e=>p(Q,e.name),z=e=>p(V,e.name),R=e=>p(W,e.name),q=e=>p(Y,e.name),D=e=>p(ee,e.name),T=e=>p(re,e.name),H=e=>e.attribs.class&&p(te,e.name),p=(e,r)=>e.some(t=>t===r);var h=({nodes:e,image:r,markStyle:t})=>{let a=[];for(let n of e)n.type==="text"&&a.push(ne(n)),n.type==="tag"&&(a.push(ae(n,r,t)),n.children.length!==0&&h({nodes:n.children,image:r,markStyle:t}));return a.join(`
`)},ne=e=>e.data,ae=(e,r,t)=>{var a,n,m,u,o,f,g,E,M;if(v(e)){let s=i(e,r,t);return L({tagName:e.name,marks:s,markStyle:t})}if(w(e)){let s=i(e,r,t);return x(s,t)}if(z(e)){let{href:s}=e.attribs,c=i(e,r,t);return C(c,s)}if(R(e)){if(e.name==="figure")return i(e,r,t);let{alt:s}=e.attribs,c=ce(e,r);return b({src:c,alt:s})}if(q(e)){if(e.name==="div")return i(e,r,t);if(e.name==="pre"){let s=i(e,r,t),c=se(e).join("").replace("language-",""),l=((a=e.parentNode)==null?void 0:a.type)==="tag"?e.parentNode.attribs["data-filename"]:void 0;return O({marks:s,markStyle:t,language:c,fileName:l})}if(e.name==="code"){let s=i(e,r,t);return((n=e.parentNode)==null?void 0:n.type)==="tag"&&((m=e.parentNode)==null?void 0:m.name)==="pre"?s:I(s)}}if(T(e)){if(e.name==="ul"||e.name==="ol"){let k=i(e,r,t);return((u=e.parentNode)==null?void 0:u.type)==="tag"&&((o=e.parentNode)==null?void 0:o.name)==="li",k}let s=i(e,r,t),c=((f=e.parent)==null?void 0:f.type)==="tag"&&e.parent.prev&&(e.parent.name==="ul"||e.parent.name==="ol")?" ".repeat(P(e)-1):"",l=((g=e.parent)==null?void 0:g.type)==="tag"&&!e.prev&&e.parent.prev?`
`:"",$=e.next?`
`:"";if(((E=e.parentNode)==null?void 0:E.type)==="tag"&&((M=e.parentNode)==null?void 0:M.name)==="ol"){let k=Array.from(e.parentNode.children).indexOf(e)+1;return`${l}${c}${k} ${s}${$}`}return`${l}${c}- ${s}${$}`}if(D(e)){if(e.name==="table"||e.name==="tbody")return i(e,r,t);if(e.name==="tr"){let s=i(e,r,t),c=e.prev?"":`${"| --- ".repeat(e.children.length)}|
`;return s+c}if(e.name==="th"||e.name==="td"){let s=i(e,r,t),c=e.next?" ":" |",l=e.next?"":`
`;return`| ${s}${c}${l}`}}if(H(e)){let s=i(e,r,t),{class:c}=e.attribs;return _(s,c)}return e.children.length!==0&&h({nodes:e.children,image:r,markStyle:t}),""},i=(e,r,t)=>e.childNodes.map(a=>{let n=a.type==="tag"||a.type==="text"?a:null;return n===null?"":h({nodes:[n],image:r,markStyle:t})}).join(""),se=e=>e.children.map(r=>r.type==="tag"?r.attribs.class:void 0).filter(Boolean),ce=(e,r)=>{var u,o;let{src:t,width:a,height:n}=e.attribs,m=new URL(t);return r.size&&(m.searchParams.set("w",(u=a==null?void 0:a.toString())!=null?u:""),m.searchParams.set("h",(o=n==null?void 0:n.toString())!=null?o:"")),r.query&&new URLSearchParams(r.query).forEach((g,E)=>{m.searchParams.set(E,g)}),m.href},P=(e,r=0)=>{var a;let t=r;return((a=e.parent)==null?void 0:a.type)==="tag"&&T(e.parent)?P(e.parent,t+1):t};var S=e=>{var r,t,a,n,m,u,o,f,g,E,M,s,c,l;return{image:{size:(t=(r=e==null?void 0:e.image)==null?void 0:r.size)!=null?t:!0,query:(n=(a=e==null?void 0:e.image)==null?void 0:a.query)!=null?n:""},markStyle:{strong:(u=(m=e==null?void 0:e.markStyle)==null?void 0:m.strong)!=null?u:"**",em:(f=(o=e==null?void 0:e.markStyle)==null?void 0:o.em)!=null?f:"*",li:(E=(g=e==null?void 0:e.markStyle)==null?void 0:g.li)!=null?E:"-",hr:(s=(M=e==null?void 0:e.markStyle)==null?void 0:M.hr)!=null?s:"---",pre:(l=(c=e==null?void 0:e.markStyle)==null?void 0:c.pre)!=null?l:"```"}}};var U=(e,r)=>{let{image:t,markStyle:a}=S(r),n=(0,B.default)(e);return n?h({nodes:n,image:t,markStyle:a}):(console.error("Failed to parse HTML string."),"")};var ie=(e,r)=>{if(typeof e!="string")throw new TypeError("First argument must be a string");return e?U(e,r):""};0&&(module.exports={parser});
//# sourceMappingURL=rich-editor-to-markdown-parser.js.map