UNPKG

@atlaskit/editor-wikimarkup-transformer

Version:

Wiki markup transformer for JIRA and Confluence

65 lines 1.95 kB
import { encode } from '..'; import { paragraph } from './paragraph'; import { unknown } from './unknown'; import { codeBlock } from './code-block'; import { mediaGroup } from './media-group'; import { mediaInline } from './media-inline'; export var listItem = function listItem(node, prefix, context) { var result = []; var contentBuffer = []; node.forEach(function (n) { switch (n.type.name) { case 'paragraph': { contentBuffer.push(paragraph(n, { context: context })); break; } case 'bulletList': case 'orderedList': case 'taskList': { if (contentBuffer.length) { result.push("".concat(prefix, " ").concat(contentBuffer.join('\n'))); contentBuffer = []; } // eslint-disable-next-line @atlassian/perf-linting/no-expensive-split-replace -- Ignored via go/ees017 (to be fixed) var nestedList = encode(n, context).split('\n').map(function (line) { if (['#', '*'].indexOf(line.substr(0, 1)) !== -1) { return "".concat(prefix).concat(line); } return line; }).join('\n'); result.push(nestedList); break; } case 'codeBlock': { contentBuffer.push(codeBlock(n)); break; } case 'mediaInline': { contentBuffer.push(mediaInline(n, { context: context })); break; } case 'mediaSingle': { // mediaSingle and mediaGroup are holding the same conversion logic contentBuffer.push(mediaGroup(n, { context: context })); break; } default: contentBuffer.push(unknown(n)); } }); if (contentBuffer.length) { result.push("".concat(prefix, " ").concat(contentBuffer.join('\n'))); } return result.join('\n'); };