UNPKG

@intenda/opus-ui-json-builder

Version:

Provides the `jsonBuilder` component type for use by Opus UI applications.

35 lines 1.26 kB
const getValueType = value => { if (Array.isArray(value)) return 'array';else if (!!value && typeof value === 'object') return 'object'; return 'leaf'; }; const getNodeText = (key, value, type, parentIsArray) => { if (parentIsArray) { if (type === 'leaf') return value;else if (type === 'array') return '['; return '{'; } if (type === 'leaf') return "".concat(key, ": ").concat(value);else if (type === 'array') return "".concat(key, ": ["); return "".concat(key, ": {"); }; const helper = function (json) { let parentNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; let depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; const nodes = Object.entries(json).map(_ref => { let [k, v] = _ref; const type = getValueType(v); const parentIsArray = (parentNode === null || parentNode === void 0 ? void 0 : parentNode.type) === 'array'; const text = getNodeText(k, v, type, parentIsArray); const node = { text, key: k, value: v, type, parentNode, depth, obj: json }; if (!!v && typeof v === 'object') node.children = helper(v, node, depth + 1); return node; }); return nodes; }; export default helper;