UNPKG

@mdast2docx/list

Version:

Plugin to convert ordered and unordered lists from Markdown (MDAST) to DOCX. Supports nesting, custom bullets, and numbering styles.

2 lines (1 loc) 1.19 kB
import{AlignmentType as v,convertInchesToTwip as I,LevelFormat as e}from"docx";var y=[e.DECIMAL,e.DECIMAL,e.DECIMAL,e.DECIMAL,e.UPPER_LETTER,e.LOWER_LETTER,e.LOWER_ROMAN,e.UPPER_ROMAN],O=(f,s=.4,r=.25)=>f.map((o,t)=>({level:t,format:o,text:(o===e.DECIMAL?Array(t+1).fill(`%${t+1}`).join("."):`%${t+1}`)+".",alignment:v.START,style:{paragraph:{indent:{left:I(s+t*r)}}}})),E=O(y),b=["\u25CF","\u25CB","\u25A0","\u25C6","\u25B6","\u25C9","\u2B24","\u2666","\u25E6","\u25AA"],R={levels:E,bullets:b,defaultBullets:!1},P=f=>{let s=crypto.getRandomValues(new Uint32Array(1))[0].toString(16),r=`numbering-${s}`,o=`bullet-${s}`,{levels:t,bulletLevels:c,bullets:g,defaultBullets:m}={...R,...f};return{block:async(a,l,n,L)=>{var i,p;if(l.type!=="list")return[];let u=((p=(i=n.bullet)==null?void 0:i.level)!=null?p:-1)+1;return n.numbering=m?void 0:{level:u,reference:l.ordered?r:o},n.bullet={level:u},l.type="",await L(l,n)},root:a=>{var l,n;a.numbering={config:[...(n=(l=a.numbering)==null?void 0:l.config)!=null?n:[],{reference:r,levels:t},{reference:o,levels:c!=null?c:t.map((L,u)=>{var i;return{...L,text:(i=g[u])!=null?i:"\u2022",format:e.BULLET}})}]}}}};export{O as createLevels,P as listPlugin};