const e=new Map([`blockquote`,`code_block`,`code`,`bold`,`italic`,`strikethrough`,`spoiler`].map((e,t)=>[e,t]));function t(t){return[...t].toSorted((t,n)=>t.start===n.start?t.end===n.end?(e.get(t.style)??0)-(e.get(n.style)??0):n.end-t.end:t.start-n.start)}function n(n,r){let i=n.text??``;if(!i)return``;let a=r.styleMarkers,o=t(n.styles.filter(e=>!!a[e.style])),s=new Set;s.add(0),s.add(i.length);let c=new Map;for(let e of o){if(e.start===e.end)continue;s.add(e.start),s.add(e.end);let t=c.get(e.start);t?t.push(e):c.set(e.start,[e])}for(let t of c.values())t.sort((t,n)=>t.end===n.end?(e.get(t.style)??0)-(e.get(n.style)??0):n.end-t.end);let l=new Map;if(r.buildLink)for(let e of n.links){if(e.start===e.end)continue;let t=r.buildLink(e,i);if(!t)continue;s.add(t.start),s.add(t.end);let n=l.get(t.start);n?n.push(t):l.set(t.start,[t])}let u=[...s].toSorted((e,t)=>e-t),d=[],f=``;for(let t=0;t<u.length;t+=1){let n=u[t];for(;d.length&&d[d.length-1]?.end===n;){let e=d.pop();e&&(f+=e.close)}let o=[],s=l.get(n);if(s&&s.length>0)for(let[e,t]of s.entries())o.push({end:t.end,open:t.open,close:t.close,kind:`link`,index:e});let p=c.get(n);if(p)for(let[e,t]of p.entries()){let n=a[t.style];n&&o.push({end:t.end,open:n.open,close:n.close,kind:`style`,style:t.style,index:e})}if(o.length>0){o.sort((t,n)=>t.end===n.end?t.kind===n.kind?t.kind===`style`&&n.kind===`style`?(e.get(t.style)??0)-(e.get(n.style)??0):t.index-n.index:t.kind===`link`?-1:1:n.end-t.end);for(let e of o)f+=e.open,d.push({close:e.close,end:e.end})}let m=u[t+1];if(m===void 0)break;m>n&&(f+=r.escapeText(i.slice(n,m)))}return f}export{n as t};
