schyma
Version:
JSON Schemas Visualizer React component
39 lines • 1.82 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importStar(require("react"));
const Panel_1 = tslib_1.__importDefault(require("./Panel"));
const react_2 = require("react");
const Nodes_1 = tslib_1.__importDefault(require("./Nodes"));
const ajv_1 = tslib_1.__importDefault(require("ajv"));
const reusables_1 = require("../utils/reusables");
function Schyma({ title, description, schema }) {
const ajv = new ajv_1.default();
const [currentNode, setCurrentNode] = (0, react_2.useState)();
const [nNodes, setnNodes] = (0, react_2.useState)({});
const [render, setRender] = (0, react_2.useState)(false);
const position = { x: 0, y: 0 };
const properties = (0, reusables_1.propMerge)(schema, "");
const initialNode = {
id: '1',
data: {
label: title,
description,
properties: properties,
relations: {},
},
position,
};
const validate = ajv.validateSchema(schema);
(0, react_1.useEffect)(() => {
if (validate) {
setRender(true);
}
}, [validate]);
return (react_1.default.createElement("div", null, render ? react_1.default.createElement("div", { className: "body-wrapper" },
react_1.default.createElement("div", { className: "node-container" },
react_1.default.createElement(Nodes_1.default, { setnNodes: setnNodes, setCurrentNode: setCurrentNode, nNodes: nNodes, initialNode: initialNode, schema: schema })),
react_1.default.createElement(Panel_1.default, { title: title, description: description, node: currentNode, nodes: nNodes })) : react_1.default.createElement("div", null, "loading")));
}
exports.default = Schyma;
//# sourceMappingURL=App.js.map