const shaca = require("./shaca/shaca"); const shacaLoader = require("./shaca/shaca_loader"); const shareRoot = require("./share_root"); const {JSDOM} = require("jsdom"); function getSubRoot(note) { if (note.noteId === shareRoot.SHARE_ROOT_NOTE_ID) { return null; } const parentNote = note.getParentNotes()[0]; if (parentNote.noteId === shareRoot.SHARE_ROOT_NOTE_ID) { return note; } return getSubRoot(parentNote); } const NO_CONTENT = '
This note has no content.
'; function getChildrenList(note) { if (note.hasChildren()) { const document = new JSDOM().window.document; const ulEl = document.createElement("ul"); for (const childNote of note.getChildNotes()) { const li = document.createElement("li"); const link = document.createElement("a"); link.appendChild(document.createTextNode(childNote.title)); link.setAttribute("href", childNote.noteId); li.appendChild(link); ulEl.appendChild(li); } return 'Child notes:
' + ulEl.outerHTML; } else { return ''; } } function getContent(note) { let content = note.getContent(); if (note.type === 'text') { const document = new JSDOM(content || "").window.document; const isEmpty = document.body.textContent.trim().length === 0 && document.querySelectorAll("img").length === 0; if (isEmpty) { content = NO_CONTENT + getChildrenList(note); } else { for (const linkEl of document.querySelectorAll("a")) { const href = linkEl.getAttribute("href"); if (href?.startsWith("#")) { const notePathSegments = href.split("/"); linkEl.setAttribute("href", notePathSegments[notePathSegments.length - 1]); } } content = document.body.innerHTML; } } else if (note.type === 'code') { if (!content?.trim()) { content = NO_CONTENT + getChildrenList(note); } else { const document = new JSDOM().window.document; const preEl = document.createElement('pre'); preEl.appendChild(document.createTextNode(content)); content = preEl.outerHTML; } } else if (note.type === 'image') { content = `This note type cannot be displayed.
' + getChildrenList(note); } return `