UNPKG

schyma

Version:

JSON Schemas Visualizer React component

120 lines 4.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.arrayToProps = exports.getCompositionType = void 0; exports.resolveRef = resolveRef; exports.nameFromRef = nameFromRef; exports.propMerge = propMerge; exports.removeElementsByParent = removeElementsByParent; exports.removeEdgesByParent = removeEdgesByParent; exports.retrieveObj = retrieveObj; const tslib_1 = require("tslib"); const reference_resolver_1 = tslib_1.__importDefault(require("@json-schema-tools/reference-resolver")); const conditions_1 = require("../helpers/conditions"); const compositions_1 = require("./compositions"); // Re-export for backwards compatibility var compositions_2 = require("./compositions"); Object.defineProperty(exports, "getCompositionType", { enumerable: true, get: function () { return compositions_2.getCompositionType; } }); Object.defineProperty(exports, "arrayToProps", { enumerable: true, get: function () { return compositions_2.arrayToProps; } }); const memoizedNameFromRef = {}; function resolveRef(ref, schema) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const resolver = yield reference_resolver_1.default.resolve(ref, schema); return resolver; }); } function nameFromRef(ref) { if (memoizedNameFromRef[ref]) { return memoizedNameFromRef[ref]; } const match = ref.match(/[^/]+$/); const name = match ? match[0].split('.')[0] : ''; memoizedNameFromRef[ref] = name; return name; } function propMerge(schema, label) { let mergedProps = {}; const { properties, patternProperties, additionalProperties, items, oneOf, allOf, anyOf, not, if: ifSchema } = schema; const compositions = oneOf || anyOf || not || allOf; const conditions = ifSchema; if (conditions) { (0, conditions_1.handleConditions)(schema, mergedProps); } if (patternProperties) { Object.assign(mergedProps, patternProperties); } if (properties) { Object.assign(mergedProps, properties); } if (items) { const itemsComposition = (0, compositions_1.getCompositionType)(items); const itemsProps = propMerge(items, label); Object.assign(mergedProps, itemsProps); // Propagate composition type from items to parent if (itemsComposition) { mergedProps._nestedComposition = itemsComposition; } } if (additionalProperties && typeof additionalProperties === 'object') { const additionalComposition = (0, compositions_1.getCompositionType)(additionalProperties); const additionalProps = propMerge(additionalProperties, label); Object.assign(mergedProps, additionalProps); // Propagate composition type from additionalProperties to parent if (additionalComposition && !mergedProps._nestedComposition) { mergedProps._nestedComposition = additionalComposition; } } if (compositions) { (0, compositions_1.handleCompositions)(schema, mergedProps, label); } return mergedProps; } function removeElementsByParent(nodes, id) { const result = nodes.filter((node) => { const relations = node.data.relations; if (relations) { if (relations.hasOwnProperty(id)) { return; } else { return node; } } return node; }); return result; } function removeEdgesByParent(edges, id) { const result = edges.filter((edge) => { if (edge.source === id) { return false; } return true; }); return result; } function retrieveObj(theObject, key) { var result = null; if (theObject instanceof Array) { for (var i = 0; i < theObject.length; i++) { result = retrieveObj(theObject[i], key); if (result) { break; } } } else { for (var prop in theObject) { if (prop == key) { return theObject[prop]; } if (theObject[prop] instanceof Object || theObject[prop] instanceof Array) { result = retrieveObj(theObject[prop], key); if (result) { break; } } } } return result; } //# sourceMappingURL=reusables.js.map