import Nast from 'notajs-types/nast'
import { NAST_BLOCK_TYPES } from '../constants'
import { renderChildren, renderBlock, renderTitle } from '../render-utils'
function renderList(
node: Nast.Block,
renderNext: Function
): string {
if (node.type === NAST_BLOCK_TYPES.bulletedList)
return renderBulletedList(node, renderNext)
else (node.type === NAST_BLOCK_TYPES.numberedList)
return renderNumberedList(node, renderNext)
}
function renderBulletedList(
node: Nast.Block,
renderNext: Function
): string {
let listItemsHTML = node.children.map(listItem => {
return renderListItem(listItem as Nast.BulletedListItem, renderNext)
})
let html = `\
${listItemsHTML.join('')}
`
return html
}
function renderNumberedList(
node: Nast.Block,
renderNext: Function
): string {
let listItemsHTML = node.children.map(listItem => {
return renderListItem(listItem as Nast.NumberedListItem, renderNext)
})
let html = `\
${listItemsHTML.join('')}
`
return html
}
function renderListItem(
node: Nast.BulletedListItem | Nast.NumberedListItem,
renderNext: Function
): string {
let content = renderTitle(node.text, false, '')
/**
* Without ul, some content become out of container.
* But ul has its own indent padding, so we don't need the indent class.
*/
let html = `\
${renderBlock(node, content)}
${renderChildren(node.children, renderNext)}
`
return html
}
export default renderList