import appContext from "../../services/app_context.js";
import BasicWidget from "../basic_widget.js";
import utils from "../../services/utils.js";
const TPL = `
`;
export default class NoteSourceDialog extends BasicWidget {
doRender() {
this.$widget = $(TPL);
this.$noteSource = this.$widget.find(".note-source");
}
async refresh() {
const noteCompletement = await appContext.tabManager.getActiveContext().getNoteComplement();
this.$noteSource.text(this.formatHtml(noteCompletement.content));
}
formatHtml(str) {
const div = document.createElement('div');
div.innerHTML = str.trim();
return this.formatNode(div, 0).innerHTML.trim();
}
formatNode(node, level) {
const indentBefore = new Array(level++ + 1).join(' ');
const indentAfter = new Array(level - 1).join(' ');
let textNode;
for (let i = 0; i < node.children.length; i++) {
textNode = document.createTextNode('\n' + indentBefore);
node.insertBefore(textNode, node.children[i]);
this.formatNode(node.children[i], level);
if (node.lastElementChild === node.children[i]) {
textNode = document.createTextNode('\n' + indentAfter);
node.appendChild(textNode);
}
}
return node;
}
async openNoteSourceDialogEvent() {
await this.refresh();
utils.openDialog(this.$widget);
}
}