diff --git a/src/ast-to-react.js b/src/ast-to-react.js index 64d0bbc8..db8cacf1 100644 --- a/src/ast-to-react.js +++ b/src/ast-to-react.js @@ -80,7 +80,7 @@ function getNodeProps(node, key, opts, renderer, parent, index) { props.tight = !node.loose props.ordered = node.ordered props.index = node.index - props.children = (props.tight ? unwrapParagraphs(node) : node.children).map((childNode, i) => { + props.children = getListItemChildren(node, parent).map((childNode, i) => { return astToReact(childNode, opts, {node: node, props: props}, i) }) break @@ -200,6 +200,18 @@ function flattenPosition(pos) { .join('') } +function getListItemChildren(node, parent) { + if (node.loose) { + return node.children; + } + + if (parent.node && node.index > 0 && parent.node.children[node.index - 1].loose) { + return node.children; + } + + return unwrapParagraphs(node); +} + function unwrapParagraphs(node) { return node.children.reduce((array, child) => { return array.concat(child.type === 'paragraph' ? child.children || [] : [child]) diff --git a/test/__snapshots__/react-markdown.test.js.snap b/test/__snapshots__/react-markdown.test.js.snap index 790851ff..2d54f825 100644 --- a/test/__snapshots__/react-markdown.test.js.snap +++ b/test/__snapshots__/react-markdown.test.js.snap @@ -186,7 +186,9 @@ Array [

  • - bar +

    + bar +

  • ,

    @@ -657,7 +659,9 @@ Array [

  • - bar +

    + bar +

  • ,

    @@ -1618,7 +1622,9 @@ exports[`should handle loose, unordered lists 1`] = `

  • - bar +

    + bar +

  • `;