text: '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 props = {}
    var single = false
    var result
    var container
  
    if (
      (!parent || !parent.loose) &&
      children.length === 1 &&
      head.type === 'paragraph'
    ) {
      single = true
    }
  
    result = all(h, single ? head : node)
  
    if (typeof node.checked === 'boolean') {
      if (!single && (!head || head.type !== 'paragraph')) {
        result.unshift(h(null, 'p', []))
      }
  
      container = single ? result : result[0].children
  
      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 (!single && result.length !== 0) {
      result = wrap(result, true)
    }
  
    return h(node, 'li', props, result)
  }
  