This commit is contained in:
89
node_modules/mdast-util-to-hast/lib/handlers/list-item.js
generated
vendored
Normal file
89
node_modules/mdast-util-to-hast/lib/handlers/list-item.js
generated
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
'use strict'
|
||||
|
||||
module.exports = listItem
|
||||
|
||||
var u = require('unist-builder')
|
||||
var wrap = require('../wrap')
|
||||
var all = require('../all')
|
||||
|
||||
function listItem(h, node, parent) {
|
||||
var children = node.children
|
||||
var head = children[0]
|
||||
var raw = all(h, node)
|
||||
var loose = parent ? listLoose(parent) : listItemLoose(node)
|
||||
var props = {}
|
||||
var result
|
||||
var container
|
||||
var index
|
||||
var length
|
||||
var child
|
||||
|
||||
/* Tight lists should not render 'paragraph' nodes as 'p' tags */
|
||||
if (loose) {
|
||||
result = raw
|
||||
} else {
|
||||
result = []
|
||||
length = raw.length
|
||||
index = -1
|
||||
|
||||
while (++index < length) {
|
||||
child = raw[index]
|
||||
|
||||
if (child.tagName === 'p') {
|
||||
result = result.concat(child.children)
|
||||
} else {
|
||||
result.push(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof node.checked === 'boolean') {
|
||||
if (loose && (!head || head.type !== 'paragraph')) {
|
||||
result.unshift(h(null, 'p', []))
|
||||
}
|
||||
|
||||
container = loose ? result[0].children : result
|
||||
|
||||
if (container.length !== 0) {
|
||||
container.unshift(u('text', ' '))
|
||||
}
|
||||
|
||||
container.unshift(
|
||||
h(null, 'input', {
|
||||
type: 'checkbox',
|
||||
checked: node.checked,
|
||||
disabled: true
|
||||
})
|
||||
)
|
||||
|
||||
// According to github-markdown-css, this class hides bullet.
|
||||
props.className = ['task-list-item']
|
||||
}
|
||||
|
||||
if (loose && result.length !== 0) {
|
||||
result = wrap(result, true)
|
||||
}
|
||||
|
||||
return h(node, 'li', props, result)
|
||||
}
|
||||
|
||||
function listLoose(node) {
|
||||
var loose = node.spread
|
||||
var children = node.children
|
||||
var length = children.length
|
||||
var index = -1
|
||||
|
||||
while (!loose && ++index < length) {
|
||||
loose = listItemLoose(children[index])
|
||||
}
|
||||
|
||||
return loose
|
||||
}
|
||||
|
||||
function listItemLoose(node) {
|
||||
var spread = node.spread
|
||||
|
||||
return spread === undefined || spread === null
|
||||
? node.children.length > 1
|
||||
: spread
|
||||
}
|
||||
Reference in New Issue
Block a user