43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
/*************
|
|
* Preview JS *
|
|
**************/
|
|
|
|
async function initPreview(view) {
|
|
const btnUndock = document.getElementById("btn-undock");
|
|
const btnDock = document.getElementById("btn-dock");
|
|
const editorContainer = document.getElementById("editor-main-container");
|
|
const previewContainer = document.getElementById("previewer-main-container");
|
|
|
|
function hidePreview() {
|
|
setVisibility(btnUndock, false);
|
|
// if not opened via button and therefore a popup, `window.close` won't work
|
|
setVisibility(btnDock, window.opener);
|
|
if (editorContainer) editorContainer.style.width = "100%";
|
|
if (previewContainer) setVisibility(previewContainer, false);
|
|
}
|
|
function showPreview() {
|
|
setVisibility(btnUndock, true);
|
|
setVisibility(btnDock, false);
|
|
if (editorContainer) editorContainer.style.removeProperty("width");
|
|
if (previewContainer) setVisibility(previewContainer, true);
|
|
}
|
|
function undock() {
|
|
const url = new URL(window.location.href);
|
|
url.searchParams.set("view", "previewer");
|
|
const previewer = window.open(url, "PlantUML Diagram Previewer", "popup");
|
|
if (previewer) {
|
|
previewer.onbeforeunload = showPreview;
|
|
hidePreview();
|
|
}
|
|
}
|
|
// add listener
|
|
btnUndock.addEventListener("click", undock);
|
|
// init preview components
|
|
await initializeDiagram();
|
|
initializePaginator()
|
|
// check preview visibility
|
|
if (["previewer", "editor"].includes(view)) {
|
|
hidePreview();
|
|
}
|
|
}
|