jsx-slack
Version:
Build JSON object for Slack Block Kit surfaces from JSX
2 lines (1 loc) • 950 B
JavaScript
import{JSXSlack as c}from"../../jsx.mjs";import{createComponent as h,isValidElementFromComponent as m,createElementInternal as k,cleanMeta as x}from"../../jsx-internals.mjs";import{mrkdwn as j}from"../../mrkdwn/index.mjs";import{plainText as w}from"./utils.mjs";const $={verbatim:!0},n=h("Mrkdwn",r=>({type:"mrkdwn",text:r.raw?w(r.children).text:j(r.children),verbatim:r.verbatim})),o=(r,l=$,i=!1)=>{const[e]=c.Children.toArray(r);return m(e,n)?i?k(n,{...e.$$jsxslack.props||{},children:e.$$jsxslack.children}):e:x(k(n,{...l,children:r}))},f=(r,l=$)=>{let i,e;const s=c.Children.toArray(r),a=s;m(s[0],n)&&a.unshift(...s[0].$$jsxslack.children);const t=a.find(d=>c.isValidElement(d)&&d.$$jsxslack.type==="small");try{t&&(e=t.$$jsxslack.children,t.$$jsxslack.children=[]),i=o(r,l,!0)}finally{t&&e&&(t.$$jsxslack.children=e)}const p=t?o(t.$$jsxslack.children,l):void 0;return{text:i,description:p}};export{n as Mrkdwn,o as mrkdwn,f as mrkdwnForOption};