@itwin/presentation-common
Version:
Common pieces for iModel.js presentation packages
49 lines • 2.14 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Content
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.CategoryDescription = void 0;
/** @public */
var CategoryDescription;
(function (CategoryDescription) {
/** Serialize given category to JSON */
function toJSON(category) {
const { parent, ...rest } = category;
return {
...rest,
...(parent ? { parent: parent.name } : undefined),
};
}
CategoryDescription.toJSON = toJSON;
/**
* Deserialize [[CategoryDescription]] from JSON. The `parent` is not assigned - use [[CategoryDescription.listFromJSON]]
* to deserialize the whole categories list and set parents.
*/
function fromJSON(json) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { parent, ...rest } = json;
return rest;
}
CategoryDescription.fromJSON = fromJSON;
function createCategoriesHierarchy(json, categoriesMap) {
const category = categoriesMap.get(json.name);
if (json.parent) {
// note: mutating categories in the `categoriesMap`
category.parent = categoriesMap.get(json.parent);
}
return category;
}
/** Deserialize a list of [[CategoryDescription]] from JSON. */
function listFromJSON(json) {
const categoriesMap = new Map();
json.forEach((categoryJson) => categoriesMap.set(categoryJson.name, CategoryDescription.fromJSON(categoryJson)));
return json.map((categoryJson) => createCategoriesHierarchy(categoryJson, categoriesMap));
}
CategoryDescription.listFromJSON = listFromJSON;
})(CategoryDescription || (exports.CategoryDescription = CategoryDescription = {}));
//# sourceMappingURL=Category.js.map