export default class DxfSettingsPanel { viewer; parentContainer; panel; // settings panel closeBtn; colorInputs; /* eslint-disable no-undef */ constructor(viewer, parentContainer = document.body) { this.init(viewer, parentContainer); } init(viewer, parentContainer) { this.viewer = viewer; this.parentContainer = parentContainer; this.buildPage(); this.addEventHandlers(); } show() { if (this.panel?.classList.contains("panel-hide")) { this.panel.classList.remove("panel-hide"); } } hide() { if (!this.panel?.classList.contains("panel-hide")) { this.panel?.classList.add("panel-hide"); // when click the close button, trigger the layers button's click event const layersBtn = document.querySelector("#Settings"); if (layersBtn.classList.contains("active")) { layersBtn.click(); } } } destroy() { this.closeBtn?.removeEventListener("click", this.hide); this.checkboxes?.forEach((checkbox, i) => { checkbox.removeEventListener("change", () => { this.checkboxHandler(checkbox, i); }); }); document.body.removeChild(this.panel); } buildPage() { this.panel = document.createElement("div"); this.panel.classList.add("panel-container", "panel-hide"); const header = document.createElement("div"); header.innerText = "设置"; header.classList.add("panel-header"); this.panel.appendChild(header); this.closeBtn = document.createElement("span"); this.closeBtn.classList.add("panel-close-btn"); this.closeBtn.innerHTML = "X"; header.appendChild(this.closeBtn); const bgColors = [ { name: "默认", rgb: [0.082, 0.11, 0.117], color: "#212830" }, { name: "黑色", rgb: [0, 0, 0], color: "#000000" }, { name: "白色", rgb: [1, 1, 1], color: "#ffffff" }, { name: "灰色", rgb: [0.6, 0.6, 0.6], color: "#888888" }, ]; let colorHtml = ""; bgColors.forEach((item) => { colorHtml += `
背景色 | ${colorHtml} |