import type { CustomHTMLRenderer } from '@toast-ui/editor'; import type { OpenTagToken } from '@toast-ui/toastmark'; import { MergedTableCellMdNode, MergedTableRowMdNode } from '@t/index'; export const toHTMLRenderers: CustomHTMLRenderer = { // @ts-ignore tableRow(node: MergedTableRowMdNode, { entering, origin }) { if (entering) { return origin!(); } const result = []; if (node.lastChild) { const columnLen = node.parent.parent.columns.length; const lastColIdx = node.lastChild.endIdx; for (let i = lastColIdx + 1; i < columnLen; i += 1) { if (!node.prev || !node.prev.rowspanMap[i] || node.prev.rowspanMap[i] <= 1) { result.push( { type: 'openTag', tagName: 'td', outerNewLine: true, }, { type: 'closeTag', tagName: 'td', outerNewLine: true, } ); } } } result.push({ type: 'closeTag', tagName: 'tr', outerNewLine: true, }); return result; }, // @ts-ignore tableCell(node: MergedTableCellMdNode, { entering, origin }) { const result = origin!(); if (node.ignored) { return result; } if (entering) { const attributes: Record = { ...node.attrs }; (result as OpenTagToken).attributes = { ...(result as OpenTagToken).attributes, ...attributes, }; } return result; }, };