| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * @import {Element, Properties} from 'hast'
- * @import {List} from 'mdast'
- * @import {State} from '../state.js'
- */
- /**
- * Turn an mdast `list` node into hast.
- *
- * @param {State} state
- * Info passed around.
- * @param {List} node
- * mdast node.
- * @returns {Element}
- * hast node.
- */
- export function list(state, node) {
- /** @type {Properties} */
- const properties = {}
- const results = state.all(node)
- let index = -1
- if (typeof node.start === 'number' && node.start !== 1) {
- properties.start = node.start
- }
- // Like GitHub, add a class for custom styling.
- while (++index < results.length) {
- const child = results[index]
- if (
- child.type === 'element' &&
- child.tagName === 'li' &&
- child.properties &&
- Array.isArray(child.properties.className) &&
- child.properties.className.includes('task-list-item')
- ) {
- properties.className = ['contains-task-list']
- break
- }
- }
- /** @type {Element} */
- const result = {
- type: 'element',
- tagName: node.ordered ? 'ol' : 'ul',
- properties,
- children: state.wrap(results, true)
- }
- state.patch(node, result)
- return state.applyData(node, result)
- }
|