@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
68 lines (67 loc) • 3.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ComponentsManager = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const LoaderSpinner_1 = require("./LoaderSpinner");
const client_1 = require("react-dom/client");
const SelectButtonManager_1 = require("./SelectButtonManager");
class ComponentsManager {
static buildSelectButton(elementId, options, config) {
var _a;
ComponentsManager.selectButtonMap.set(elementId, new SelectButtonManager_1.SelectButtonManager(elementId));
(_a = ComponentsManager.selectButtonMap.get(elementId)) === null || _a === void 0 ? void 0 : _a.createButton(options, config);
}
static addSelectButton(elementId, options, config) {
var _a;
(_a = ComponentsManager.selectButtonMap.get(elementId)) === null || _a === void 0 ? void 0 : _a.addButton(options, config);
}
static clearSelectButton(elementId) {
var _a;
if (ComponentsManager.selectButtonMap.has(elementId)) {
(_a = ComponentsManager.selectButtonMap.get(elementId)) === null || _a === void 0 ? void 0 : _a.unmountButton();
ComponentsManager.selectButtonMap.delete(elementId);
}
}
static clearAdditionalSelectButton(elementId) {
var _a;
(_a = ComponentsManager.selectButtonMap.get(elementId)) === null || _a === void 0 ? void 0 : _a.unmountAdditionalButton();
}
static buildLoaderSpinner(elementId) {
var _a, _b;
const id = elementId + ComponentsManager.loaderSpinner;
if (!ComponentsManager.nodeMap.has(id)) {
ComponentsManager.hideElement(elementId);
const div = document.createElement("div");
div.setAttribute("id", id);
(_a = document.getElementById(elementId)) === null || _a === void 0 ? void 0 : _a.prepend(div);
ComponentsManager.nodeMap.set(id, { reactRoot: (0, client_1.createRoot)(div), htmlElement: div });
(_b = ComponentsManager.nodeMap.get(id)) === null || _b === void 0 ? void 0 : _b.reactRoot.render((0, jsx_runtime_1.jsx)(LoaderSpinner_1.LoaderSpinner, {}));
}
}
static unmountLoaderSpinner(elementId) {
var _a, _b;
const id = elementId + ComponentsManager.loaderSpinner;
if (ComponentsManager.nodeMap.has(id)) {
(_a = ComponentsManager.nodeMap.get(id)) === null || _a === void 0 ? void 0 : _a.reactRoot.unmount();
(_b = ComponentsManager.nodeMap.get(id)) === null || _b === void 0 ? void 0 : _b.htmlElement.remove();
ComponentsManager.nodeMap.delete(id);
ComponentsManager.showElement(elementId);
}
}
static hideElement(elementId) {
var _a, _b, _c;
for (let i = 0; i < ((_b = (_a = document.getElementById(elementId)) === null || _a === void 0 ? void 0 : _a.children.length) !== null && _b !== void 0 ? _b : 0); i++) {
((_c = document.getElementById(elementId)) === null || _c === void 0 ? void 0 : _c.children.item(i)).style.visibility = "hidden";
}
}
static showElement(elementId) {
var _a, _b, _c;
for (let i = 0; i < ((_b = (_a = document.getElementById(elementId)) === null || _a === void 0 ? void 0 : _a.children.length) !== null && _b !== void 0 ? _b : 0); i++) {
((_c = document.getElementById(elementId)) === null || _c === void 0 ? void 0 : _c.children.item(i)).style.visibility = "visible";
}
}
}
exports.ComponentsManager = ComponentsManager;
ComponentsManager.loaderSpinner = "_loaderSpinner";
ComponentsManager.selectButtonMap = new Map();
ComponentsManager.nodeMap = new Map();