UNPKG

@itwin/presentation-common

Version:

Common pieces for iModel.js presentation packages

49 lines 2.14 kB
"use strict"; /*--------------------------------------------------------------------------------------------- * 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