UNPKG

@itwin/presentation-hierarchies-react

Version:

React components based on `@itwin/presentation-hierarchies`

64 lines 2.28 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. *--------------------------------------------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); exports.MAX_LIMIT_OVERRIDE = void 0; exports.createNodeId = createNodeId; exports.sameNodes = sameNodes; exports.safeDispose = safeDispose; require("./DisposePolyfill.js"); const presentation_hierarchies_1 = require("@itwin/presentation-hierarchies"); /** @internal */ function createNodeId(node) { return [...node.parentKeys.map(serializeNodeKey), serializeNodeKey(node.key)].join(";"); } function serializeNodeKey(key) { return convertObjectValuesToString(key); } function convertObjectValuesToString(obj) { return Object.entries(obj) .map(([, value]) => { if (typeof value === "object") { return convertObjectValuesToString(value); } return String(value); }) .join(","); } /** @internal */ function sameNodes(lhs, rhs) { if (presentation_hierarchies_1.HierarchyNodeKey.compare(lhs.key, rhs.key) !== 0) { return false; } if (lhs.parentKeys.length !== rhs.parentKeys.length) { return false; } for (let i = lhs.parentKeys.length - 1; i >= 0; --i) { if (presentation_hierarchies_1.HierarchyNodeKey.compare(lhs.parentKeys[i], rhs.parentKeys[i]) !== 0) { return false; } } return true; } /** @internal */ exports.MAX_LIMIT_OVERRIDE = 10000; /** * A helper that disposes the given object, if it's disposable. * * The first option is to dispose using the deprecated `dispose` method if it exists on the object. * If not, we use the new `Symbol.dispose` method. If that doesn't exist either, the object is * considered as non-disposable and nothing is done with it. * * @internal */ function safeDispose(disposable) { if ("dispose" in disposable) { disposable.dispose(); } else if (Symbol.dispose in disposable) { disposable[Symbol.dispose](); } } //# sourceMappingURL=Utils.js.map