import { renderMachineSessionControlView, } from "./control-view-renderer.js"; const panelFrameNode = document.getElementById("panel-frame"); const statusNode = document.getElementById("control-page-status"); const viewNode = document.getElementById("control-page-view"); let refreshTimer = null; function getPanelWindow() { return panelFrameNode?.contentWindow ?? null; } function getPanelApi() { return getPanelWindow()?.linuxCncIniPanelApi ?? null; } function getControlView() { return getPanelApi()?.getMachineSessionControlView?.() ?? null; } function renderControlPage() { const view = getControlView(); if (!view) { statusNode.textContent = "waiting for panel"; viewNode.textContent = ""; return null; } statusNode.textContent = [ view.status.lastAction ?? "-", view.status.runStatus ?? "-", view.status.error ?? "-", ].join(" | "); return renderMachineSessionControlView(viewNode, view); } function startPolling() { if (!refreshTimer) { refreshTimer = setInterval(renderControlPage, 200); } } panelFrameNode.addEventListener("load", () => { renderControlPage(); startPolling(); }); panelFrameNode.src = "./index.html"; renderControlPage(); startPolling(); window.linuxCncIniPanelControlPageApi = { getControlView, getPanelApi, renderControlPage, };