@bookbox/core
Version:
Bookbox — e-book format
34 lines (33 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getElementsByKeys = exports.getStore = void 0;
function getStore({ builder, schema, externalBuilder, getBuild, }) {
const result = {
dataByKeys: {},
elementsByKeys: getElementsByKeys(schema),
};
for (const [key, elem] of Object.entries(result.elementsByKeys)) {
// FIXME: поздние ключи могут использовать более ранние, но не наоборот
result.dataByKeys[key] = builder({
schema: [elem],
store: result,
externalBuilder,
build: getBuild(result),
});
}
return result;
}
exports.getStore = getStore;
function getElementsByKeys(schema) {
let result = {};
for (const item of schema) {
if (typeof item === 'string') {
continue;
}
result[item.props.key] = item;
const childrenRecord = getElementsByKeys(item.children);
result = Object.assign(Object.assign({}, result), childrenRecord);
}
return result;
}
exports.getElementsByKeys = getElementsByKeys;