@itwin/presentation-hierarchies
Version:
A package for creating hierarchies based on data in iTwin.js iModels.
80 lines • 3.36 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = exports.LOGGING_NAMESPACE_INTERNAL = exports.LOGGING_NAMESPACE_PERFORMANCE = exports.LOGGING_NAMESPACE = void 0;
exports.createOperatorLoggingNamespace = createOperatorLoggingNamespace;
exports.createNodeIdentifierForLogging = createNodeIdentifierForLogging;
exports.hasChildren = hasChildren;
exports.compareNodesByLabel = compareNodesByLabel;
exports.safeDispose = safeDispose;
require("./DisposePolyfill.js");
const natural_compare_lite_1 = __importDefault(require("natural-compare-lite"));
/**
* This is a logging namespace for public log messages that may be interesting to consumers.
* @internal
*/
exports.LOGGING_NAMESPACE = "Presentation.Hierarchies";
/**
* This is a logging namespace for public performance-related log messages that may be interesting to consumers.
* @internal
*/
exports.LOGGING_NAMESPACE_PERFORMANCE = `${exports.LOGGING_NAMESPACE}.Performance`;
/**
* This is a logging namespace for internal log messages that are only interesting to package contributors,
* but not the consumers.
* @internal
*/
exports.LOGGING_NAMESPACE_INTERNAL = "Presentation.HierarchiesInternal";
/**
* This is a logging namespace for internal performance-related log messages that are only interesting
* to package contributors, but not the consumers.
* @internal
*/
exports.LOGGING_NAMESPACE_PERFORMANCE_INTERNAL = `${exports.LOGGING_NAMESPACE_INTERNAL}.Performance`;
/** @internal */
function createOperatorLoggingNamespace(operatorName, baseCategory) {
return `${baseCategory}.Operators.${operatorName}`;
}
/** @internal */
/* c8 ignore start */
function createNodeIdentifierForLogging(node) {
if (!node) {
return "<root>";
}
const { label, key } = node;
const parentKeys = "parentKeys" in node ? node.parentKeys : "<unknown>";
return JSON.stringify({ label, key, parentKeys });
}
/* c8 ignore end */
/** @internal */
function hasChildren(node) {
return node.children === true || (Array.isArray(node.children) && node.children.length > 0);
}
/** @internal */
function compareNodesByLabel(lhs, rhs) {
return (0, natural_compare_lite_1.default)(lhs.label.toLocaleLowerCase(), rhs.label.toLocaleLowerCase());
}
/**
* 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=Common.js.map