UNPKG

jsx-slack

Version:

Build JSON object for Slack Block Kit surfaces from JSX

2 lines (1 loc) 1.76 kB
import{hastUtilToMdast as u,hastUtilToMdastRoot as y,hastUtilToMdastTextarea as c,hastUtilToMdastListItem as h}from"../../vendor/hastUtilToMdast.ts.mjs";import{decodeEntity as v}from"./escape.mjs";import{parseJSX as x}from"./jsx.mjs";import f from"./parser.mjs";import I from"./stringifier.mjs";import{visit as p}from"../../vendor/unist-util-visit/lib/index.mjs";const m=(o,e)=>{var t,r;const a=e.tagName==="ol",l=a?(t=e.properties.type)!=null?t:"1":null,s=a?Number.parseInt((r=e.properties.start)!=null?r:1,10):null;let i=o.handlers.span(o,e,void 0);i&&(i=[].concat(i).map(n=>n.type!=="listItem"?{type:"listItem",data:{implied:!0},children:[n]}:n));const d={type:"list",ordered:a,orderedType:l,start:s,children:i};return o.patch(e,d),d},N=(...o)=>{const e=u(...o);return p(e,t=>{t.type.startsWith("text-jsxslack-")&&(t.type="text")}),e},T=o=>I(N(f(o),{document:!1,nodeHandlers:{root:(e,t)=>{p(t,s=>{s.type==="text"&&(s.value=v(s.value))});const r=y(e,t),a=r?Array.isArray(r)?{type:"root",children:r}:r:{type:"root",children:[]};let l=0;return p(a,"text",s=>{s.type="text-jsxslack-"+l,l+=1}),r}},handlers:{code:(e,t,r)=>({...t,type:"inlineCode",children:e.handlers.span(e,t,r)}),pre:(e,t,r)=>({...t,type:"inlineCode",children:e.handlers.span(e,t,r),data:{codeBlock:!0}}),time:(e,t)=>{var r,a;return{...c(e,t),data:{time:{datetime:(r=t.properties)==null?void 0:r.datetime,fallback:(a=t.properties)==null?void 0:a["data-fallback"]}}}},ul:m,ol:m,li:(e,t)=>{var r;const a=h(e,t),l=Number.parseInt((r=t.properties)==null?void 0:r.value,10);return!Number.isNaN(l)&&a&&(a.data={value:l}),a},span:(e,t)=>{var r;return(r=t.properties)!=null&&r["data-escape"]?{...c(e,t),data:{escape:t.properties["data-escape"]}}:e.all(t)}}})),k=o=>T(x(o,[]).join(""));export{k as mrkdwn};