reblock
Version:
Build interactive Slack surfaces with React
19 lines (16 loc) • 528 B
text/typescript
import { createContainer, render, Root } from '../renderer'
import { jsxToBlocks } from '../jsx/blocks'
import type React from 'react'
import type Slack from '@slack/bolt'
class OneTimeRoot extends Root {
publish() {}
}
export function blocks(element: React.ReactNode): Slack.types.KnownBlock[] {
const root = new OneTimeRoot()
const container = createContainer(root)
render(element, container)
const children = root.getChildren()
const [blocks] = jsxToBlocks(children)
render(null, container)
return blocks
}