/* * TipTap format for checkboxes (TaskItem / Checkbox extension output): *
…
${innerContent}
`; }); }); return doc.body.innerHTML; } export function checkboxHtmlFromTiptap(html: string): string { const parser = new DOMParser(); const doc = parser.parseFromString(html, 'text/html'); doc.querySelectorAll('ul[data-type="checkboxList"]').forEach((ul) => { ul.setAttribute('data-type', 'checkbox'); ul.querySelectorAll('li[data-type="checkboxItem"]').forEach((li) => { if (li.getAttribute('data-checked') === 'true') { li.setAttribute('checked', ''); } li.removeAttribute('data-type'); li.removeAttribute('data-checked'); const pTag = li.querySelector('div > p'); li.innerHTML = pTag ? pTag.innerHTML : ''; }); }); return doc.body.innerHTML.replace(/checked=""/g, 'checked'); }