@itwin/presentation-hierarchies 2.0.0-alpha.11 → 2.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +284 -16
- package/README.md +2 -2
- package/lib/cjs/hierarchies/HierarchyNode.d.ts +13 -11
- package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNode.js +18 -0
- package/lib/cjs/hierarchies/HierarchyNode.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts +2 -0
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js +23 -6
- package/lib/cjs/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts +5 -4
- package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts +3 -3
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchySearch.d.ts +184 -78
- package/lib/cjs/hierarchies/HierarchySearch.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchySearch.js +305 -113
- package/lib/cjs/hierarchies/HierarchySearch.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts +3 -3
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts +9 -4
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +25 -16
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts +4 -4
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js +12 -9
- package/lib/cjs/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +3 -3
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js +31 -55
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts +2 -2
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +1 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js +4 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts +2 -2
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/operators/Sorting.js.map +1 -1
- package/lib/cjs/presentation-hierarchies.d.ts +1 -1
- package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
- package/lib/cjs/presentation-hierarchies.js +2 -1
- package/lib/cjs/presentation-hierarchies.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNode.d.ts +13 -11
- package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNode.js +18 -0
- package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts +2 -0
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.js +23 -6
- package/lib/esm/hierarchies/HierarchyNodeIdentifier.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.d.ts +5 -4
- package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyProvider.d.ts +3 -3
- package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
- package/lib/esm/hierarchies/HierarchySearch.d.ts +184 -78
- package/lib/esm/hierarchies/HierarchySearch.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchySearch.js +304 -111
- package/lib/esm/hierarchies/HierarchySearch.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts +3 -3
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyNode.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +9 -4
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +26 -17
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts +4 -4
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js +13 -10
- package/lib/esm/hierarchies/imodel/NodeSelectQueryFactory.js.map +1 -1
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts +3 -3
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/PredicateBasedHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js +32 -56
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts +2 -2
- package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js +2 -2
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/BaseClassGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js +4 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/ClassGrouping.js.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/operators/grouping/PropertiesGrouping.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts +2 -2
- package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/operators/ReduceToMergeMap.js.map +1 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/operators/Sorting.js.map +1 -1
- package/lib/esm/presentation-hierarchies.d.ts +1 -1
- package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
- package/lib/esm/presentation-hierarchies.js +1 -1
- package/lib/esm/presentation-hierarchies.js.map +1 -1
- package/package.json +9 -9
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.HierarchyNodeIdentifier = void 0;
|
|
8
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
8
9
|
const presentation_shared_1 = require("@itwin/presentation-shared");
|
|
9
10
|
/** @public */
|
|
10
11
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
@@ -22,14 +23,30 @@ var HierarchyNodeIdentifier;
|
|
|
22
23
|
HierarchyNodeIdentifier.isGenericNodeIdentifier = isGenericNodeIdentifier;
|
|
23
24
|
/** Checks two identifiers for equality */
|
|
24
25
|
function equal(lhs, rhs) {
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
return compare(lhs, rhs) === 0;
|
|
27
|
+
}
|
|
28
|
+
HierarchyNodeIdentifier.equal = equal;
|
|
29
|
+
/** Compares two identifiers */
|
|
30
|
+
function compare(lhs, rhs) {
|
|
31
|
+
if (HierarchyNodeIdentifier.isGenericNodeIdentifier(lhs)) {
|
|
32
|
+
if (HierarchyNodeIdentifier.isGenericNodeIdentifier(rhs)) {
|
|
33
|
+
const sourceCompareResult = (0, core_bentley_1.compareStringsOrUndefined)(lhs.source, rhs.source);
|
|
34
|
+
if (sourceCompareResult !== 0) {
|
|
35
|
+
return sourceCompareResult;
|
|
36
|
+
}
|
|
37
|
+
return (0, core_bentley_1.compareStrings)(lhs.id, rhs.id);
|
|
38
|
+
}
|
|
39
|
+
return -1;
|
|
27
40
|
}
|
|
28
|
-
if (
|
|
29
|
-
|
|
41
|
+
if (HierarchyNodeIdentifier.isInstanceNodeIdentifier(rhs)) {
|
|
42
|
+
const imodelKeyCompareResult = (0, core_bentley_1.compareStringsOrUndefined)(lhs.imodelKey, rhs.imodelKey);
|
|
43
|
+
if (imodelKeyCompareResult !== 0) {
|
|
44
|
+
return imodelKeyCompareResult;
|
|
45
|
+
}
|
|
46
|
+
return presentation_shared_1.InstanceKey.compare(lhs, rhs);
|
|
30
47
|
}
|
|
31
|
-
return
|
|
48
|
+
return 1;
|
|
32
49
|
}
|
|
33
|
-
HierarchyNodeIdentifier.
|
|
50
|
+
HierarchyNodeIdentifier.compare = compare;
|
|
34
51
|
})(HierarchyNodeIdentifier || (exports.HierarchyNodeIdentifier = HierarchyNodeIdentifier = {}));
|
|
35
52
|
//# sourceMappingURL=HierarchyNodeIdentifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyNodeIdentifier.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNodeIdentifier.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,oEAAyD;AAgBzD,cAAc;AACd,2DAA2D;AAC3D,IAAiB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"HierarchyNodeIdentifier.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNodeIdentifier.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,sDAAgF;AAChF,oEAAyD;AAgBzD,cAAc;AACd,2DAA2D;AAC3D,IAAiB,uBAAuB,CAqCvC;AArCD,WAAiB,uBAAuB;IACtC,yEAAyE;IACzE,SAAgB,wBAAwB,CAAC,EAA2B;QAClE,OAAO,WAAW,IAAI,EAAE,CAAC;IAC3B,CAAC;IAFe,gDAAwB,2BAEvC,CAAA;IAED,uEAAuE;IACvE,SAAgB,uBAAuB,CAAC,EAA2B;QACjE,OAAO,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAFe,+CAAuB,0BAEtC,CAAA;IAED,0CAA0C;IAC1C,SAAgB,KAAK,CAAC,GAA4B,EAAE,GAA4B;QAC9E,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAFe,6BAAK,QAEpB,CAAA;IAED,+BAA+B;IAC/B,SAAgB,OAAO,CAAC,GAA4B,EAAE,GAA4B;QAChF,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,mBAAmB,GAAG,IAAA,wCAAyB,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC9E,IAAI,mBAAmB,KAAK,CAAC,EAAE,CAAC;oBAC9B,OAAO,mBAAmB,CAAC;gBAC7B,CAAC;gBACD,OAAO,IAAA,6BAAc,EAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,uBAAuB,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1D,MAAM,sBAAsB,GAAG,IAAA,wCAAyB,EAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACvF,IAAI,sBAAsB,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,sBAAsB,CAAC;YAChC,CAAC;YACD,OAAO,iCAAW,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAnBe,+BAAO,UAmBtB,CAAA;AACH,CAAC,EArCgB,uBAAuB,uCAAvB,uBAAuB,QAqCvC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { compareStrings, compareStringsOrUndefined } from \"@itwin/core-bentley\";\nimport { InstanceKey } from \"@itwin/presentation-shared\";\n\nimport type { GenericNodeKey, IModelInstanceKey } from \"./HierarchyNodeKey.js\";\n\n/**\n * An identifier that can be used to identify either an ECInstance or a generic node.\n *\n * This is different from `HierarchyNodeKey` - the key can represent more types of nodes and,\n * in case of `InstancesNodeKey`, contains information about all instances the node represents.\n * `HierarchyNodeIdentifier`, on the other hand, is used for matching a node, so it only needs\n * to contain information about a single instance.\n *\n * @public\n */\nexport type HierarchyNodeIdentifier = IModelInstanceKey | GenericNodeKey;\n\n/** @public */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace HierarchyNodeIdentifier {\n /** Checks whether the given identifier is an instance node identifier */\n export function isInstanceNodeIdentifier(id: HierarchyNodeIdentifier): id is IModelInstanceKey {\n return \"className\" in id;\n }\n\n /** Checks whether the given identifier is a generic node identifier */\n export function isGenericNodeIdentifier(id: HierarchyNodeIdentifier): id is GenericNodeKey {\n return !isInstanceNodeIdentifier(id);\n }\n\n /** Checks two identifiers for equality */\n export function equal(lhs: HierarchyNodeIdentifier, rhs: HierarchyNodeIdentifier) {\n return compare(lhs, rhs) === 0;\n }\n\n /** Compares two identifiers */\n export function compare(lhs: HierarchyNodeIdentifier, rhs: HierarchyNodeIdentifier): number {\n if (HierarchyNodeIdentifier.isGenericNodeIdentifier(lhs)) {\n if (HierarchyNodeIdentifier.isGenericNodeIdentifier(rhs)) {\n const sourceCompareResult = compareStringsOrUndefined(lhs.source, rhs.source);\n if (sourceCompareResult !== 0) {\n return sourceCompareResult;\n }\n return compareStrings(lhs.id, rhs.id);\n }\n return -1;\n }\n if (HierarchyNodeIdentifier.isInstanceNodeIdentifier(rhs)) {\n const imodelKeyCompareResult = compareStringsOrUndefined(lhs.imodelKey, rhs.imodelKey);\n if (imodelKeyCompareResult !== 0) {\n return imodelKeyCompareResult;\n }\n return InstanceKey.compare(lhs, rhs);\n }\n return 1;\n }\n}\n\n/**\n * A path of hierarchy node identifiers, typically used to describe a path from root down\n * to specific node deep in the hierarchy.\n *\n * @public\n */\nexport type HierarchyNodeIdentifiersPath = HierarchyNodeIdentifier[];\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InstanceKey } from "@itwin/presentation-shared";
|
|
2
|
+
import type { EC } from "@itwin/presentation-shared";
|
|
2
3
|
/**
|
|
3
4
|
* An instance key that may be associated with specific iModel.
|
|
4
5
|
* @public
|
|
@@ -45,7 +46,7 @@ export interface ClassGroupingNodeKey {
|
|
|
45
46
|
/** Type of the node */
|
|
46
47
|
type: "class-grouping";
|
|
47
48
|
/** Full name of the ECClass that this grouping node is grouping by. */
|
|
48
|
-
className:
|
|
49
|
+
className: EC.FullClassName;
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
51
52
|
* A key for a label-grouping node.
|
|
@@ -72,7 +73,7 @@ export interface PropertyOtherValuesGroupingNodeKey {
|
|
|
72
73
|
type: "property-grouping:other";
|
|
73
74
|
/** Identifiers of properties whose values are grouped under this node. */
|
|
74
75
|
properties: Array<{
|
|
75
|
-
className:
|
|
76
|
+
className: EC.FullClassName;
|
|
76
77
|
propertyName: string;
|
|
77
78
|
}>;
|
|
78
79
|
}
|
|
@@ -86,7 +87,7 @@ export interface PropertyValueGroupingNodeKey {
|
|
|
86
87
|
/** Name of the property that is used for grouping nodes. */
|
|
87
88
|
propertyName: string;
|
|
88
89
|
/** Full name of the ECClass containing the property. */
|
|
89
|
-
propertyClassName:
|
|
90
|
+
propertyClassName: EC.FullClassName;
|
|
90
91
|
/** Formatted property value that this node is grouping by. */
|
|
91
92
|
formattedPropertyValue: string;
|
|
92
93
|
}
|
|
@@ -100,7 +101,7 @@ export interface PropertyValueRangeGroupingNodeKey {
|
|
|
100
101
|
/** Name of the property that is used for grouping nodes. */
|
|
101
102
|
propertyName: string;
|
|
102
103
|
/** Full name of the ECClass containing the property. */
|
|
103
|
-
propertyClassName:
|
|
104
|
+
propertyClassName: EC.FullClassName;
|
|
104
105
|
/** Defines the start of the values' range that this node is grouping by. */
|
|
105
106
|
fromValue: number;
|
|
106
107
|
/** Defines the end of the values' range that this node is grouping by. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyNodeKey.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNodeKey.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAA0B,MAAM,4BAA4B,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,IAAI,EAAE,SAAS,CAAC;IAEhB;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,IAAI,EAAE,WAAW,CAAC;IAElB;;;OAGG;IACH,YAAY,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,IAAI,EAAE,gBAAgB,CAAC;IAEvB,uEAAuE;IACvE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"HierarchyNodeKey.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNodeKey.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAA0B,MAAM,4BAA4B,CAAC;AAEjF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,IAAI,EAAE,SAAS,CAAC;IAEhB;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,IAAI,EAAE,WAAW,CAAC;IAElB;;;OAGG;IACH,YAAY,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,IAAI,EAAE,gBAAgB,CAAC;IAEvB,uEAAuE;IACvE,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,IAAI,EAAE,gBAAgB,CAAC;IAEvB,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,kCAAkC;IACjD,uBAAuB;IACvB,IAAI,EAAE,yBAAyB,CAAC;IAChC,0EAA0E;IAC1E,UAAU,EAAE,KAAK,CAAC;QAChB,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,uBAAuB;IACvB,IAAI,EAAE,yBAAyB,CAAC;IAEhC,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IAErB,wDAAwD;IACxD,iBAAiB,EAAE,EAAE,CAAC,aAAa,CAAC;IAEpC,8DAA8D;IAC9D,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAiC;IAChD,uBAAuB;IACvB,IAAI,EAAE,yBAAyB,CAAC;IAEhC,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IAErB,wDAAwD;IACxD,iBAAiB,EAAE,EAAE,CAAC,aAAa,CAAC;IAEpC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAElB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,GAAG,4BAA4B,GAAG,kCAAkC,CAAC;AAE5I;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAEpG;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAExE;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,cAAc,CAAC;AAEvE,cAAc;AAEd,yBAAiB,gBAAgB,CAAC;IAChC,+DAA+D;IAC/D,SAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,cAAc,CAEtE;IAED,yEAAyE;IACzE,SAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,sBAAsB,CAEpF;IAED,kEAAkE;IAClE,SAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,gBAAgB,CAE1E;IAED,gEAAgE;IAChE,SAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,eAAe,CAExE;IAED,qEAAqE;IACrE,SAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,oBAAoB,CAElF;IAED,qEAAqE;IACrE,SAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,oBAAoB,CAElF;IAED,mFAAmF;IACnF,SAAgB,6BAA6B,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,kCAAkC,CAE9G;IAED,kFAAkF;IAClF,SAAgB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,iCAAiC,CAE5G;IAED,6EAA6E;IAC7E,SAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,4BAA4B,CAElG;IAED,wEAAwE;IACxE,SAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,GAAG,GAAG,IAAI,uBAAuB,CAExF;IAED;;;;;OAKG;IACH,SAAgB,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAiG5E;IAED,mDAAmD;IACnD,SAAgB,MAAM,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAE5E;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyNodeKey.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNodeKey.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { assert, compareStrings, compareStringsOrUndefined } from \"@itwin/core-bentley\";\nimport { InstanceKey, normalizeFullClassName } from \"@itwin/presentation-shared\";\n\n/**\n * An instance key that may be associated with specific iModel.\n * @public\n */\nexport interface IModelInstanceKey extends InstanceKey {\n imodelKey?: string;\n}\n\n/**\n * A key for a generic node.\n * @public\n */\nexport interface GenericNodeKey {\n /** Type of the node */\n type: \"generic\";\n\n /**\n * Node key identifier, which uniquely identifies the node within the hierarchy level the node is used.\n * The format of the identifier is not specified and is up to the data source.\n */\n id: string;\n\n /**\n * Optional data source identifier. Useful when a hierarchy is built using multiple hierarchy providers - in that\n * case each provider can assign a unique source identifier to its nodes.\n */\n source?: string;\n}\n\n/**\n * A key for a node that represents one or more ECInstances.\n * @public\n */\nexport interface InstancesNodeKey {\n /** Type of the node */\n type: \"instances\";\n\n /**\n * Keys of ECInstances that are represented by the node. Generally, one node represents a single\n * ECInstance, but in some cases (e.g. node merging) there could be more.\n */\n instanceKeys: IModelInstanceKey[];\n}\n\n/**\n * A key for a class-grouping node.\n * @public\n */\nexport interface ClassGroupingNodeKey {\n /** Type of the node */\n type: \"class-grouping\";\n\n /** Full name of the ECClass that this grouping node is grouping by. */\n className: string;\n}\n\n/**\n * A key for a label-grouping node.\n * @public\n */\nexport interface LabelGroupingNodeKey {\n /** Type of the node */\n type: \"label-grouping\";\n\n /** Node label that this grouping node is grouping by. */\n label: string;\n\n /**\n * Optional group identifier that is assigned to the node key when multiple nodes\n * with the same label shouldn't be grouped together.\n */\n groupId?: string;\n}\n\n/**\n * A key property grouping node that groups nodes whose values don't fall into any other\n * property group in the hierarchy level.\n * @public\n */\nexport interface PropertyOtherValuesGroupingNodeKey {\n /** Type of the node */\n type: \"property-grouping:other\";\n /** Identifiers of properties whose values are grouped under this node. */\n properties: Array<{\n className: string;\n propertyName: string;\n }>;\n}\n\n/**\n * A key for a property grouping node that groups nodes by formatted property value.\n * @public\n */\nexport interface PropertyValueGroupingNodeKey {\n /** Type of the node */\n type: \"property-grouping:value\";\n\n /** Name of the property that is used for grouping nodes. */\n propertyName: string;\n\n /** Full name of the ECClass containing the property. */\n propertyClassName: string;\n\n /** Formatted property value that this node is grouping by. */\n formattedPropertyValue: string;\n}\n\n/**\n * A key for a property grouping node that groups nodes by a range of property values.\n * @public\n */\nexport interface PropertyValueRangeGroupingNodeKey {\n /** Type of the node */\n type: \"property-grouping:range\";\n\n /** Name of the property that is used for grouping nodes. */\n propertyName: string;\n\n /** Full name of the ECClass containing the property. */\n propertyClassName: string;\n\n /** Defines the start of the values' range that this node is grouping by. */\n fromValue: number;\n\n /** Defines the end of the values' range that this node is grouping by. */\n toValue: number;\n}\n\n/**\n * A key for a property grouping node.\n * @public\n */\nexport type PropertyGroupingNodeKey = PropertyValueRangeGroupingNodeKey | PropertyValueGroupingNodeKey | PropertyOtherValuesGroupingNodeKey;\n\n/**\n * A key for one of the instance grouping nodes.\n * @public\n */\nexport type GroupingNodeKey = ClassGroupingNodeKey | LabelGroupingNodeKey | PropertyGroupingNodeKey;\n\n/**\n * A key for either an instance node or one of the instance grouping nodes.\n * @public\n */\nexport type IModelHierarchyNodeKey = InstancesNodeKey | GroupingNodeKey;\n\n/**\n * A key that uniquely identifies a node in a hierarchy level.\n * @public\n */\nexport type HierarchyNodeKey = IModelHierarchyNodeKey | GenericNodeKey;\n\n/** @public */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace HierarchyNodeKey {\n /** Checks whether the given node key is a generic node key. */\n export function isGeneric(key: HierarchyNodeKey): key is GenericNodeKey {\n return key.type === \"generic\";\n }\n\n /** Checks whether the given node key is a `StandardHierarchyNodeKey`. */\n export function isIModelNodeKey(key: HierarchyNodeKey): key is IModelHierarchyNodeKey {\n return !isGeneric(key);\n }\n\n /** Checks whether the given node key is an `InstancesNodeKey`. */\n export function isInstances(key: HierarchyNodeKey): key is InstancesNodeKey {\n return key.type === \"instances\";\n }\n\n /** Checks whether the given node key is a `GroupingNodeKey`. */\n export function isGrouping(key: HierarchyNodeKey): key is GroupingNodeKey {\n return !isGeneric(key) && !isInstances(key);\n }\n\n /** Checks whether the given node key is a `ClassGroupingNodeKey`. */\n export function isClassGrouping(key: HierarchyNodeKey): key is ClassGroupingNodeKey {\n return key.type === \"class-grouping\";\n }\n\n /** Checks whether the given node key is a `LabelGroupingNodeKey`. */\n export function isLabelGrouping(key: HierarchyNodeKey): key is LabelGroupingNodeKey {\n return key.type === \"label-grouping\";\n }\n\n /** Checks whether the given node key is a `PropertyOtherValuesGroupingNodeKey`. */\n export function isPropertyOtherValuesGrouping(key: HierarchyNodeKey): key is PropertyOtherValuesGroupingNodeKey {\n return key.type === \"property-grouping:other\";\n }\n\n /** Checks whether the given node key is a `PropertyValueRangeGroupingNodeKey`. */\n export function isPropertyValueRangeGrouping(key: HierarchyNodeKey): key is PropertyValueRangeGroupingNodeKey {\n return key.type === \"property-grouping:range\";\n }\n\n /** Checks whether the given node key is a `PropertyValueGroupingNodeKey`. */\n export function isPropertyValueGrouping(key: HierarchyNodeKey): key is PropertyValueGroupingNodeKey {\n return key.type === \"property-grouping:value\";\n }\n\n /** Checks whether the given node key is a `PropertyGroupingNodeKey`. */\n export function isPropertyGrouping(key: HierarchyNodeKey): key is PropertyGroupingNodeKey {\n return isPropertyOtherValuesGrouping(key) || isPropertyValueRangeGrouping(key) || isPropertyValueGrouping(key);\n }\n\n /**\n * Compares two given keys. Returns:\n * - `0` if they are equal,\n * - `negative value` if lhs key is less than rhs key,\n * - `positive value` if lhs key is more than rhs key.\n */\n export function compare(lhs: HierarchyNodeKey, rhs: HierarchyNodeKey): number {\n const typeCompareResult = compareStrings(lhs.type, rhs.type);\n if (typeCompareResult !== 0) {\n return typeCompareResult;\n }\n switch (lhs.type) {\n case \"generic\": {\n assert(rhs.type === \"generic\");\n const idCompareResult = compareStrings(lhs.id, rhs.id);\n if (idCompareResult !== 0) {\n return idCompareResult;\n }\n return compareStringsOrUndefined(lhs.source, rhs.source);\n }\n case \"instances\": {\n assert(rhs.type === \"instances\");\n if (lhs.instanceKeys.length !== rhs.instanceKeys.length) {\n return lhs.instanceKeys.length > rhs.instanceKeys.length ? 1 : -1;\n }\n for (let i = 0; i < lhs.instanceKeys.length; ++i) {\n const instanceKeyCompareResult = InstanceKey.compare(lhs.instanceKeys[i], rhs.instanceKeys[i]);\n if (instanceKeyCompareResult !== 0) {\n return instanceKeyCompareResult;\n }\n const imodelKeyCompareResult = compareStringsOrUndefined(lhs.instanceKeys[i].imodelKey, rhs.instanceKeys[i].imodelKey);\n if (imodelKeyCompareResult !== 0) {\n return imodelKeyCompareResult;\n }\n }\n return 0;\n }\n case \"class-grouping\": {\n assert(rhs.type === \"class-grouping\");\n return compareStrings(normalizeFullClassName(lhs.className).toLocaleLowerCase(), normalizeFullClassName(rhs.className).toLocaleLowerCase());\n }\n case \"label-grouping\": {\n assert(rhs.type === \"label-grouping\");\n const labelCompareResult = compareStrings(lhs.label, rhs.label);\n if (labelCompareResult !== 0) {\n return labelCompareResult;\n }\n return compareStringsOrUndefined(lhs.groupId, rhs.groupId);\n }\n case \"property-grouping:other\": {\n assert(rhs.type === \"property-grouping:other\");\n if (lhs.properties.length !== rhs.properties.length) {\n return lhs.properties.length - rhs.properties.length;\n }\n for (let i = 0; i < lhs.properties.length; ++i) {\n const classCompareResult = compareStrings(\n normalizeFullClassName(lhs.properties[i].className).toLocaleLowerCase(),\n normalizeFullClassName(rhs.properties[i].className).toLocaleLowerCase(),\n );\n if (classCompareResult !== 0) {\n return classCompareResult;\n }\n const nameCompareResult = compareStrings(lhs.properties[i].propertyName.toLocaleLowerCase(), rhs.properties[i].propertyName.toLocaleLowerCase());\n if (nameCompareResult !== 0) {\n return nameCompareResult;\n }\n }\n return 0;\n }\n case \"property-grouping:value\": {\n assert(rhs.type === \"property-grouping:value\");\n const propertyClassNameCompareResult = compareStrings(\n normalizeFullClassName(lhs.propertyClassName).toLocaleLowerCase(),\n normalizeFullClassName(rhs.propertyClassName).toLocaleLowerCase(),\n );\n if (propertyClassNameCompareResult !== 0) {\n return propertyClassNameCompareResult;\n }\n const propertyNameCompareResult = compareStrings(lhs.propertyName.toLocaleLowerCase(), rhs.propertyName.toLocaleLowerCase());\n if (propertyNameCompareResult !== 0) {\n return propertyNameCompareResult;\n }\n return compareStrings(lhs.formattedPropertyValue, rhs.formattedPropertyValue);\n }\n case \"property-grouping:range\": {\n assert(rhs.type === \"property-grouping:range\");\n const propertyClassNameCompareResult = compareStrings(\n normalizeFullClassName(lhs.propertyClassName).toLocaleLowerCase(),\n normalizeFullClassName(rhs.propertyClassName).toLocaleLowerCase(),\n );\n if (propertyClassNameCompareResult !== 0) {\n return propertyClassNameCompareResult;\n }\n const propertyNameCompareResult = compareStrings(lhs.propertyName.toLocaleLowerCase(), rhs.propertyName.toLocaleLowerCase());\n if (propertyNameCompareResult !== 0) {\n return propertyNameCompareResult;\n }\n if (lhs.fromValue !== rhs.fromValue) {\n return lhs.fromValue > rhs.fromValue ? 1 : -1;\n }\n return lhs.toValue > rhs.toValue ? 1 : lhs.toValue < rhs.toValue ? -1 : 0;\n }\n }\n }\n\n /** Checks whether the two given keys are equal. */\n export function equals(lhs: HierarchyNodeKey, rhs: HierarchyNodeKey): boolean {\n return compare(lhs, rhs) === 0;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HierarchyNodeKey.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNodeKey.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { assert, compareStrings, compareStringsOrUndefined } from \"@itwin/core-bentley\";\nimport { InstanceKey, normalizeFullClassName } from \"@itwin/presentation-shared\";\n\nimport type { EC } from \"@itwin/presentation-shared\";\n\n/**\n * An instance key that may be associated with specific iModel.\n * @public\n */\nexport interface IModelInstanceKey extends InstanceKey {\n imodelKey?: string;\n}\n\n/**\n * A key for a generic node.\n * @public\n */\nexport interface GenericNodeKey {\n /** Type of the node */\n type: \"generic\";\n\n /**\n * Node key identifier, which uniquely identifies the node within the hierarchy level the node is used.\n * The format of the identifier is not specified and is up to the data source.\n */\n id: string;\n\n /**\n * Optional data source identifier. Useful when a hierarchy is built using multiple hierarchy providers - in that\n * case each provider can assign a unique source identifier to its nodes.\n */\n source?: string;\n}\n\n/**\n * A key for a node that represents one or more ECInstances.\n * @public\n */\nexport interface InstancesNodeKey {\n /** Type of the node */\n type: \"instances\";\n\n /**\n * Keys of ECInstances that are represented by the node. Generally, one node represents a single\n * ECInstance, but in some cases (e.g. node merging) there could be more.\n */\n instanceKeys: IModelInstanceKey[];\n}\n\n/**\n * A key for a class-grouping node.\n * @public\n */\nexport interface ClassGroupingNodeKey {\n /** Type of the node */\n type: \"class-grouping\";\n\n /** Full name of the ECClass that this grouping node is grouping by. */\n className: EC.FullClassName;\n}\n\n/**\n * A key for a label-grouping node.\n * @public\n */\nexport interface LabelGroupingNodeKey {\n /** Type of the node */\n type: \"label-grouping\";\n\n /** Node label that this grouping node is grouping by. */\n label: string;\n\n /**\n * Optional group identifier that is assigned to the node key when multiple nodes\n * with the same label shouldn't be grouped together.\n */\n groupId?: string;\n}\n\n/**\n * A key property grouping node that groups nodes whose values don't fall into any other\n * property group in the hierarchy level.\n * @public\n */\nexport interface PropertyOtherValuesGroupingNodeKey {\n /** Type of the node */\n type: \"property-grouping:other\";\n /** Identifiers of properties whose values are grouped under this node. */\n properties: Array<{\n className: EC.FullClassName;\n propertyName: string;\n }>;\n}\n\n/**\n * A key for a property grouping node that groups nodes by formatted property value.\n * @public\n */\nexport interface PropertyValueGroupingNodeKey {\n /** Type of the node */\n type: \"property-grouping:value\";\n\n /** Name of the property that is used for grouping nodes. */\n propertyName: string;\n\n /** Full name of the ECClass containing the property. */\n propertyClassName: EC.FullClassName;\n\n /** Formatted property value that this node is grouping by. */\n formattedPropertyValue: string;\n}\n\n/**\n * A key for a property grouping node that groups nodes by a range of property values.\n * @public\n */\nexport interface PropertyValueRangeGroupingNodeKey {\n /** Type of the node */\n type: \"property-grouping:range\";\n\n /** Name of the property that is used for grouping nodes. */\n propertyName: string;\n\n /** Full name of the ECClass containing the property. */\n propertyClassName: EC.FullClassName;\n\n /** Defines the start of the values' range that this node is grouping by. */\n fromValue: number;\n\n /** Defines the end of the values' range that this node is grouping by. */\n toValue: number;\n}\n\n/**\n * A key for a property grouping node.\n * @public\n */\nexport type PropertyGroupingNodeKey = PropertyValueRangeGroupingNodeKey | PropertyValueGroupingNodeKey | PropertyOtherValuesGroupingNodeKey;\n\n/**\n * A key for one of the instance grouping nodes.\n * @public\n */\nexport type GroupingNodeKey = ClassGroupingNodeKey | LabelGroupingNodeKey | PropertyGroupingNodeKey;\n\n/**\n * A key for either an instance node or one of the instance grouping nodes.\n * @public\n */\nexport type IModelHierarchyNodeKey = InstancesNodeKey | GroupingNodeKey;\n\n/**\n * A key that uniquely identifies a node in a hierarchy level.\n * @public\n */\nexport type HierarchyNodeKey = IModelHierarchyNodeKey | GenericNodeKey;\n\n/** @public */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace HierarchyNodeKey {\n /** Checks whether the given node key is a generic node key. */\n export function isGeneric(key: HierarchyNodeKey): key is GenericNodeKey {\n return key.type === \"generic\";\n }\n\n /** Checks whether the given node key is a `StandardHierarchyNodeKey`. */\n export function isIModelNodeKey(key: HierarchyNodeKey): key is IModelHierarchyNodeKey {\n return !isGeneric(key);\n }\n\n /** Checks whether the given node key is an `InstancesNodeKey`. */\n export function isInstances(key: HierarchyNodeKey): key is InstancesNodeKey {\n return key.type === \"instances\";\n }\n\n /** Checks whether the given node key is a `GroupingNodeKey`. */\n export function isGrouping(key: HierarchyNodeKey): key is GroupingNodeKey {\n return !isGeneric(key) && !isInstances(key);\n }\n\n /** Checks whether the given node key is a `ClassGroupingNodeKey`. */\n export function isClassGrouping(key: HierarchyNodeKey): key is ClassGroupingNodeKey {\n return key.type === \"class-grouping\";\n }\n\n /** Checks whether the given node key is a `LabelGroupingNodeKey`. */\n export function isLabelGrouping(key: HierarchyNodeKey): key is LabelGroupingNodeKey {\n return key.type === \"label-grouping\";\n }\n\n /** Checks whether the given node key is a `PropertyOtherValuesGroupingNodeKey`. */\n export function isPropertyOtherValuesGrouping(key: HierarchyNodeKey): key is PropertyOtherValuesGroupingNodeKey {\n return key.type === \"property-grouping:other\";\n }\n\n /** Checks whether the given node key is a `PropertyValueRangeGroupingNodeKey`. */\n export function isPropertyValueRangeGrouping(key: HierarchyNodeKey): key is PropertyValueRangeGroupingNodeKey {\n return key.type === \"property-grouping:range\";\n }\n\n /** Checks whether the given node key is a `PropertyValueGroupingNodeKey`. */\n export function isPropertyValueGrouping(key: HierarchyNodeKey): key is PropertyValueGroupingNodeKey {\n return key.type === \"property-grouping:value\";\n }\n\n /** Checks whether the given node key is a `PropertyGroupingNodeKey`. */\n export function isPropertyGrouping(key: HierarchyNodeKey): key is PropertyGroupingNodeKey {\n return isPropertyOtherValuesGrouping(key) || isPropertyValueRangeGrouping(key) || isPropertyValueGrouping(key);\n }\n\n /**\n * Compares two given keys. Returns:\n * - `0` if they are equal,\n * - `negative value` if lhs key is less than rhs key,\n * - `positive value` if lhs key is more than rhs key.\n */\n export function compare(lhs: HierarchyNodeKey, rhs: HierarchyNodeKey): number {\n const typeCompareResult = compareStrings(lhs.type, rhs.type);\n if (typeCompareResult !== 0) {\n return typeCompareResult;\n }\n switch (lhs.type) {\n case \"generic\": {\n assert(rhs.type === \"generic\");\n const idCompareResult = compareStrings(lhs.id, rhs.id);\n if (idCompareResult !== 0) {\n return idCompareResult;\n }\n return compareStringsOrUndefined(lhs.source, rhs.source);\n }\n case \"instances\": {\n assert(rhs.type === \"instances\");\n if (lhs.instanceKeys.length !== rhs.instanceKeys.length) {\n return lhs.instanceKeys.length > rhs.instanceKeys.length ? 1 : -1;\n }\n for (let i = 0; i < lhs.instanceKeys.length; ++i) {\n const instanceKeyCompareResult = InstanceKey.compare(lhs.instanceKeys[i], rhs.instanceKeys[i]);\n if (instanceKeyCompareResult !== 0) {\n return instanceKeyCompareResult;\n }\n const imodelKeyCompareResult = compareStringsOrUndefined(lhs.instanceKeys[i].imodelKey, rhs.instanceKeys[i].imodelKey);\n if (imodelKeyCompareResult !== 0) {\n return imodelKeyCompareResult;\n }\n }\n return 0;\n }\n case \"class-grouping\": {\n assert(rhs.type === \"class-grouping\");\n return compareStrings(normalizeFullClassName(lhs.className).toLocaleLowerCase(), normalizeFullClassName(rhs.className).toLocaleLowerCase());\n }\n case \"label-grouping\": {\n assert(rhs.type === \"label-grouping\");\n const labelCompareResult = compareStrings(lhs.label, rhs.label);\n if (labelCompareResult !== 0) {\n return labelCompareResult;\n }\n return compareStringsOrUndefined(lhs.groupId, rhs.groupId);\n }\n case \"property-grouping:other\": {\n assert(rhs.type === \"property-grouping:other\");\n if (lhs.properties.length !== rhs.properties.length) {\n return lhs.properties.length - rhs.properties.length;\n }\n for (let i = 0; i < lhs.properties.length; ++i) {\n const classCompareResult = compareStrings(\n normalizeFullClassName(lhs.properties[i].className).toLocaleLowerCase(),\n normalizeFullClassName(rhs.properties[i].className).toLocaleLowerCase(),\n );\n if (classCompareResult !== 0) {\n return classCompareResult;\n }\n const nameCompareResult = compareStrings(lhs.properties[i].propertyName.toLocaleLowerCase(), rhs.properties[i].propertyName.toLocaleLowerCase());\n if (nameCompareResult !== 0) {\n return nameCompareResult;\n }\n }\n return 0;\n }\n case \"property-grouping:value\": {\n assert(rhs.type === \"property-grouping:value\");\n const propertyClassNameCompareResult = compareStrings(\n normalizeFullClassName(lhs.propertyClassName).toLocaleLowerCase(),\n normalizeFullClassName(rhs.propertyClassName).toLocaleLowerCase(),\n );\n if (propertyClassNameCompareResult !== 0) {\n return propertyClassNameCompareResult;\n }\n const propertyNameCompareResult = compareStrings(lhs.propertyName.toLocaleLowerCase(), rhs.propertyName.toLocaleLowerCase());\n if (propertyNameCompareResult !== 0) {\n return propertyNameCompareResult;\n }\n return compareStrings(lhs.formattedPropertyValue, rhs.formattedPropertyValue);\n }\n case \"property-grouping:range\": {\n assert(rhs.type === \"property-grouping:range\");\n const propertyClassNameCompareResult = compareStrings(\n normalizeFullClassName(lhs.propertyClassName).toLocaleLowerCase(),\n normalizeFullClassName(rhs.propertyClassName).toLocaleLowerCase(),\n );\n if (propertyClassNameCompareResult !== 0) {\n return propertyClassNameCompareResult;\n }\n const propertyNameCompareResult = compareStrings(lhs.propertyName.toLocaleLowerCase(), rhs.propertyName.toLocaleLowerCase());\n if (propertyNameCompareResult !== 0) {\n return propertyNameCompareResult;\n }\n if (lhs.fromValue !== rhs.fromValue) {\n return lhs.fromValue > rhs.fromValue ? 1 : -1;\n }\n return lhs.toValue > rhs.toValue ? 1 : lhs.toValue < rhs.toValue ? -1 : 0;\n }\n }\n }\n\n /** Checks whether the two given keys are equal. */\n export function equals(lhs: HierarchyNodeKey, rhs: HierarchyNodeKey): boolean {\n return compare(lhs, rhs) === 0;\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { GenericInstanceFilter } from "@itwin/core-common";
|
|
2
2
|
import type { Event, EventListener, InstanceKey, IPrimitiveValueFormatter, Props, RaisableEvent } from "@itwin/presentation-shared";
|
|
3
3
|
import type { HierarchyNode, ParentHierarchyNode } from "./HierarchyNode.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { HierarchySearchTree } from "./HierarchySearch.js";
|
|
5
5
|
/**
|
|
6
6
|
* Props for the `HierarchyProvider.getNodes` call.
|
|
7
7
|
* @public
|
|
@@ -82,8 +82,8 @@ export interface HierarchyProvider {
|
|
|
82
82
|
* @note Changing search is expected to trigger the `hierarchyChanged` event with `searchChange` arg.
|
|
83
83
|
*/
|
|
84
84
|
setHierarchySearch(props: {
|
|
85
|
-
/** A list of
|
|
86
|
-
paths:
|
|
85
|
+
/** A list of search trees that define paths from root to search target nodes. */
|
|
86
|
+
paths: HierarchySearchTree[];
|
|
87
87
|
} | undefined): void;
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyProvider.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyProvider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpI,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAE5C,0FAA0F;IAC1F,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAEvC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAE/C,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,UAAU,yBAAyB;IACjC,sEAAsE;IACtE,eAAe,CAAC,EAAE;QAChB,YAAY,EAAE,wBAAwB,GAAG,SAAS,CAAC;KACpD,CAAC;IAEF,6EAA6E;IAC7E,YAAY,CAAC,EAAE;QACb,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC;KAC3D,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAE9E;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAE5G;;;;;;;OAOG;IACH,YAAY,CAAC,SAAS,EAAE,wBAAwB,GAAG,SAAS,GAAG,IAAI,CAAC;IAEpE;;;;;;;;;OASG;IACH,kBAAkB,CAChB,KAAK,EACD;QACE,
|
|
1
|
+
{"version":3,"file":"HierarchyProvider.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyProvider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,wBAAwB,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpI,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAE5C,0FAA0F;IAC1F,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAEvC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAE/C,wEAAwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,UAAU,yBAAyB;IACjC,sEAAsE;IACtE,eAAe,CAAC,EAAE;QAChB,YAAY,EAAE,wBAAwB,GAAG,SAAS,CAAC;KACpD,CAAC;IAEF,6EAA6E;IAC7E,YAAY,CAAC,EAAE;QACb,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC;KAC3D,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAE9E;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAE5G;;;;;;;OAOG;IACH,YAAY,CAAC,SAAS,EAAE,wBAAwB,GAAG,SAAS,GAAG,IAAI,CAAC;IAEpE;;;;;;;;;OASG;IACH,kBAAkB,CAChB,KAAK,EACD;QACE,iFAAiF;QACjF,KAAK,EAAE,mBAAmB,EAAE,CAAC;KAC9B,GACD,SAAS,GACZ,IAAI,CAAC;CACT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,uBAAuB,CAAC,gBAAgB,SAAS,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EACzJ,cAAc,EAAE,CAAC,KAAK,EAAE;IAAE,gBAAgB,EAAE,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAA;CAAE,KAAK,gBAAgB,GACrI,gBAAgB,GAAG,iBAAiB,CAStC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyProvider.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyProvider.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAqJhG,0DAWC;AA9JD,sDAA8C;AA0G9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,SAAgB,uBAAuB,CACrC,cAAsI;IAEtI,MAAM,gBAAgB,GAAqD,IAAI,sBAAO,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QACzB,gBAAgB;QAChB,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,mBAAmB,KAAI,CAAC,EAAE,CAAC;QAC5I,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,YAAY,KAAI,CAAC,EAAE,CAAC;QACzG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,kBAAkB,KAAI,CAAC,EAAE,CAAC;KAClI,CAAC,CAAC;AACL,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { BeEvent } from \"@itwin/core-bentley\";\n\nimport type { GenericInstanceFilter } from \"@itwin/core-common\";\nimport type { Event, EventListener, InstanceKey, IPrimitiveValueFormatter, Props, RaisableEvent } from \"@itwin/presentation-shared\";\nimport type { HierarchyNode, ParentHierarchyNode } from \"./HierarchyNode.js\";\nimport type {
|
|
1
|
+
{"version":3,"file":"HierarchyProvider.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyProvider.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAqJhG,0DAWC;AA9JD,sDAA8C;AA0G9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,SAAgB,uBAAuB,CACrC,cAAsI;IAEtI,MAAM,gBAAgB,GAAqD,IAAI,sBAAO,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QACzB,gBAAgB;QAChB,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,mBAAmB,KAAI,CAAC,EAAE,CAAC;QAC5I,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,YAAY,KAAI,CAAC,EAAE,CAAC;QACzG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,kBAAkB,KAAI,CAAC,EAAE,CAAC;KAClI,CAAC,CAAC;AACL,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { BeEvent } from \"@itwin/core-bentley\";\n\nimport type { GenericInstanceFilter } from \"@itwin/core-common\";\nimport type { Event, EventListener, InstanceKey, IPrimitiveValueFormatter, Props, RaisableEvent } from \"@itwin/presentation-shared\";\nimport type { HierarchyNode, ParentHierarchyNode } from \"./HierarchyNode.js\";\nimport type { HierarchySearchTree } from \"./HierarchySearch.js\";\n\n/**\n * Props for the `HierarchyProvider.getNodes` call.\n * @public\n */\nexport interface GetHierarchyNodesProps {\n /** Parent node to get children for. Pass `undefined` to get root nodes. */\n parentNode: ParentHierarchyNode | undefined;\n\n /** Optional hierarchy level filter. Has no effect if `parentNode` is a `GroupingNode`. */\n instanceFilter?: GenericInstanceFilter;\n\n /**\n * Optional hierarchy level size limit override. This value is passed to `LimitingECSqlQueryExecutor` used\n * by this provider to override query rows limit per hierarchy level. If not provided, defaults to whatever\n * is used by the limiting query executor.\n *\n * Has no effect if `parentNode` is a `GroupingNode`.\n */\n hierarchyLevelSizeLimit?: number | \"unbounded\";\n\n /** When set to `true` ignores the cache and fetches the nodes again. */\n ignoreCache?: boolean;\n}\n\n/**\n * Event arguments for `HierarchyProvider.hierarchyChanged` event.\n * @public\n */\ninterface HierarchyChangedEventArgs {\n /** Set when the hierarchy change was caused by a formatter change. */\n formatterChange?: {\n newFormatter: IPrimitiveValueFormatter | undefined;\n };\n\n /** Set when the hierarchy change was caused by a hierarchy search change. */\n searchChange?: {\n newSearch: Props<HierarchyProvider[\"setHierarchySearch\"]>;\n };\n}\n\n/**\n * An interface for a hierarchy provider that knows how to create child nodes for a given parent node.\n * @public\n */\nexport interface HierarchyProvider {\n /**\n * An event that provider raises due to a hierarchy change that requires a reload.\n *\n * Consumers are expected to subscribe to this event and reload the hierarchy when it's raised.\n * Implementations may provide additional details on what caused the change through the\n * event arguments.\n */\n readonly hierarchyChanged: Event<(args: HierarchyChangedEventArgs) => void>;\n\n /**\n * Gets nodes for the specified parent node. This is **the method to implement**, otherwise\n * the provider doesn't return any nodes.\n */\n getNodes(props: GetHierarchyNodesProps): AsyncIterableIterator<HierarchyNode>;\n\n /**\n * Gets instance keys for the specified parent node.\n *\n * The result of this method may be used to determine instances whose nodes would be displayed as children\n * of the specified parent node. For such use cases calling this method should be more efficient compared\n * to calling `getNodes`.\n */\n getNodeInstanceKeys(props: Omit<GetHierarchyNodesProps, \"ignoreCache\">): AsyncIterableIterator<InstanceKey>;\n\n /**\n * Overrides the property value formatter used by the hierarchy provider. Setting to `undefined`\n * resets the formatter, but what that means depends on the provider implementation - it could just\n * use unformatted values, or use some default formatter, e.g. the on created by `createDefaultValueFormatter`\n * from `@itwin/presentation-shared` package.\n *\n * @note Changing formatter is expected to trigger the `hierarchyChanged` event with `formatterChange` arg.\n */\n setFormatter(formatter: IPrimitiveValueFormatter | undefined): void;\n\n /**\n * Sets the hierarchy search used by this hierarchy provider. Setting to `undefined`\n * removes the search.\n *\n * @note There's a difference between `undefined` search and search with empty paths list. The\n * former means no search is applied, while the latter means the search is applied and it filters-out\n * all hierarchy.\n *\n * @note Changing search is expected to trigger the `hierarchyChanged` event with `searchChange` arg.\n */\n setHierarchySearch(\n props:\n | {\n /** A list of search trees that define paths from root to search target nodes. */\n paths: HierarchySearchTree[];\n }\n | undefined,\n ): void;\n}\n\n/**\n * An utility to create a `HierarchyProvider` from a partial implementation.\n *\n * Creating a `HierarchyProvider` directly requires implementing all its methods:\n * ```ts\n * {\n * hierarchyChanged: new BeEvent(),\n * async *getNodes({ parentNode }) {\n * // yield nodes...\n * },\n * async *getNodeInstanceKeys() {},\n * setFormatter() {},\n * setHierarchySearch() {},\n * }\n * ```\n *\n * However, in many cases you may only need to implement the `getNodes` method and\n * can rely on default implementations for other methods.\n *\n * With this utility you can implement only part of it, e.g. just the `getNodes` method:\n * ```ts\n * // provide implementation as a javascript object\n * createHierarchyProvider(({ hierarchyChanged }) => ({\n * async *getNodes({ parentNode }) {\n * // yield nodes...\n * },\n * }));\n *\n * // or, provide implementation as a class instance:\n * createHierarchyProvider(\n * ({ hierarchyChanged }) =>\n * new (class implements Pick<HierarchyProvider, \"getNodes\"> {\n * public async *getNodes({ parentNode }): ReturnType<HierarchyProvider[\"getNodes\"]> {\n * // yield nodes...\n * }\n * })(),\n * );\n * ```\n *\n * @public\n */\nexport function createHierarchyProvider<TPartialProvider extends Partial<Omit<HierarchyProvider, \"hierarchyChanged\">> & Pick<HierarchyProvider, \"getNodes\">>(\n partialFactory: (props: { hierarchyChanged: RaisableEvent<EventListener<HierarchyProvider[\"hierarchyChanged\"]>> }) => TPartialProvider,\n): TPartialProvider & HierarchyProvider {\n const hierarchyChanged: Props<typeof partialFactory>[\"hierarchyChanged\"] = new BeEvent();\n const impl = partialFactory({ hierarchyChanged });\n return Object.assign(impl, {\n hierarchyChanged,\n ...(impl.getNodeInstanceKeys ? { getNodeInstanceKeys: impl.getNodeInstanceKeys } : { /* c8 ignore next */ async *getNodeInstanceKeys() {} }),\n ...(impl.setFormatter ? { setFormatter: impl.setFormatter } : { /* c8 ignore next */ setFormatter() {} }),\n ...(impl.setHierarchySearch ? { setHierarchySearch: impl.setHierarchySearch } : { /* c8 ignore next */ setHierarchySearch() {} }),\n });\n}\n"]}
|
|
@@ -1,70 +1,52 @@
|
|
|
1
1
|
import { HierarchyNodeIdentifier } from "./HierarchyNodeIdentifier.js";
|
|
2
|
-
import { HierarchyNodeKey } from "./HierarchyNodeKey.js";
|
|
3
2
|
import type { NonGroupingHierarchyNode } from "./HierarchyNode.js";
|
|
4
3
|
import type { HierarchyNodeIdentifiersPath } from "./HierarchyNodeIdentifier.js";
|
|
5
4
|
import type { GenericNodeKey, InstancesNodeKey } from "./HierarchyNodeKey.js";
|
|
6
5
|
/** @public */
|
|
7
|
-
export interface SearchPathRevealDepthInPath {
|
|
8
|
-
/**
|
|
9
|
-
* Index of the node in search path should be revealed in hierarchy by auto-expanding its ancestors.
|
|
10
|
-
*
|
|
11
|
-
* Use when you want to expand up to specific instance node and don't care about grouping nodes.
|
|
12
|
-
*
|
|
13
|
-
* **Use case example:**
|
|
14
|
-
*
|
|
15
|
-
* All nodes up to `Element1` should be expanded in the following hierarchy:
|
|
16
|
-
* - Node1
|
|
17
|
-
* - GroupingNode1
|
|
18
|
-
* - GroupingNode2
|
|
19
|
-
* - Element1
|
|
20
|
-
* - Element2
|
|
21
|
-
*
|
|
22
|
-
* Provide `{ path: [Node1, Element1], reveal: { depthInPath: 1 } }`
|
|
23
|
-
*
|
|
24
|
-
* **NOTE**: All nodes that are up to `depthInPath` will be expanded **except** search targets.
|
|
25
|
-
*/
|
|
26
|
-
depthInPath: number;
|
|
27
|
-
}
|
|
28
|
-
/** @public */
|
|
29
|
-
export interface SearchPathRevealDepthInHierarchy {
|
|
30
|
-
/**
|
|
31
|
-
* Considering the list of nodes from root to the target node, this is an index in that list, identifying the node that should be revealed in hierarchy by auto-expanding its ancestors.
|
|
32
|
-
*
|
|
33
|
-
* This should take into account the number of grouping nodes in hierarchy.
|
|
34
|
-
*
|
|
35
|
-
* **Use case example:**
|
|
36
|
-
*
|
|
37
|
-
* Only `Node1` and `GroupingNode1` should have `autoExpand` flag in the following hierarchy:
|
|
38
|
-
* - Node1
|
|
39
|
-
* - GroupingNode1
|
|
40
|
-
* - GroupingNode2
|
|
41
|
-
* - Element1
|
|
42
|
-
* - Element2
|
|
43
|
-
*
|
|
44
|
-
* Provide `{ path: [Node1, Element1], reveal: { depthInHierarchy: 2 } }`
|
|
45
|
-
*
|
|
46
|
-
* To get the correct depth use `HierarchyNode.parentKeys.length`.
|
|
47
|
-
*
|
|
48
|
-
* **NOTE**: All nodes that are up to `depthInHierarchy` will be expanded **except** search targets.
|
|
49
|
-
*/
|
|
50
|
-
depthInHierarchy: number;
|
|
51
|
-
}
|
|
52
|
-
/** @public */
|
|
53
6
|
export interface HierarchySearchPathOptions {
|
|
54
7
|
/**
|
|
55
8
|
* This option specifies the way `autoExpand` flag should be assigned to nodes in the searched hierarchy.
|
|
56
9
|
* - If it's `false` or `undefined`, nodes have no 'autoExpand' flag.
|
|
57
10
|
* - If it's `true`, then all nodes up to the search target will have `autoExpand` flag.
|
|
58
|
-
* - If it's
|
|
59
|
-
*
|
|
11
|
+
* - If it's a object with `groupingLevel` then `groupingLevel` determines the number of grouping levels to expand for
|
|
12
|
+
* the search target.
|
|
60
13
|
*/
|
|
61
|
-
reveal?: boolean |
|
|
14
|
+
reveal?: boolean | {
|
|
15
|
+
/**
|
|
16
|
+
* Index of the node in search path should be revealed in hierarchy by auto-expanding its ancestors.
|
|
17
|
+
*
|
|
18
|
+
* Use when you want to expand up to specific instance node and don't care about grouping nodes.
|
|
19
|
+
*
|
|
20
|
+
* **Use case example:**
|
|
21
|
+
*
|
|
22
|
+
* All nodes up to `Element1` should be expanded in the following hierarchy:
|
|
23
|
+
* - Node1
|
|
24
|
+
* - GroupingNode1
|
|
25
|
+
* - GroupingNode2
|
|
26
|
+
* - Element1
|
|
27
|
+
* - Element2
|
|
28
|
+
*
|
|
29
|
+
* Provide `{ path: [Node1, Element1], reveal: { depthInPath: 1 } }`
|
|
30
|
+
*
|
|
31
|
+
* **NOTE**: All nodes that are up to `depthInPath` will be expanded **except** search targets.
|
|
32
|
+
*/
|
|
33
|
+
depthInPath: number;
|
|
34
|
+
} | {
|
|
35
|
+
/**
|
|
36
|
+
* The number of grouping levels to expand for the search target. For example, if `groupingLevel` is set to `2`, then all grouping nodes up to the second level
|
|
37
|
+
* will have the `autoExpand` flag.
|
|
38
|
+
*
|
|
39
|
+
* **Note:** if search target has less grouping levels than specified by this attribute, then all grouping nodes up to the search target will have
|
|
40
|
+
* the `autoExpand` flag, but the search target itself won't have the `autoExpand` flag.
|
|
41
|
+
*/
|
|
42
|
+
groupingLevel: number;
|
|
43
|
+
};
|
|
62
44
|
/**
|
|
63
45
|
* This option specifies whether or not search target should be expanded.
|
|
64
46
|
* - If it's `false` or `undefined`, search target won't have 'autoExpand' flag.
|
|
65
47
|
* - If it's `true`, search target will have `autoExpand` flag.
|
|
66
48
|
*
|
|
67
|
-
* **
|
|
49
|
+
* **Note:** this attribute does not set `autoExpand` flag on nodes up to the search target. For that use `reveal`.
|
|
68
50
|
*/
|
|
69
51
|
autoExpand?: boolean;
|
|
70
52
|
}
|
|
@@ -91,20 +73,164 @@ export declare namespace HierarchySearchPath {
|
|
|
91
73
|
* - else if only one of the inputs is an object, return it,
|
|
92
74
|
* - else if both inputs are falsy, return `false` or `undefined`,
|
|
93
75
|
* - else:
|
|
94
|
-
* - if only one of the inputs has `
|
|
95
|
-
* - else
|
|
76
|
+
* - if only one of the inputs has `groupingLevel` set, return that one,
|
|
77
|
+
* - else compare by matching reveal type (`groupingLevel` or `depthInPath`) and return the deeper one.
|
|
96
78
|
*
|
|
97
79
|
* @public
|
|
98
80
|
*/
|
|
99
81
|
function mergeOptions(lhs: HierarchySearchPathOptions | undefined, rhs: HierarchySearchPathOptions | undefined): HierarchySearchPathOptions | undefined;
|
|
100
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* A tree structure representing hierarchy search paths. Each node in the tree corresponds
|
|
85
|
+
* to a hierarchy node identifier and may have children that represent deeper levels in the
|
|
86
|
+
* hierarchy.
|
|
87
|
+
*
|
|
88
|
+
* The `HierarchySearchTree.createBuilder` or `HierarchySearchTree.createFromPathsList` are
|
|
89
|
+
* typically used create this tree from a flat list of search paths.
|
|
90
|
+
*
|
|
91
|
+
* @public
|
|
92
|
+
*/
|
|
93
|
+
export interface HierarchySearchTree {
|
|
94
|
+
/** Identifier of the hierarchy node this tree entry represents. */
|
|
95
|
+
identifier: HierarchyNodeIdentifier;
|
|
96
|
+
/**
|
|
97
|
+
* When `true`, indicates that this node is a search target.
|
|
98
|
+
*
|
|
99
|
+
* Note: A `HierarchySearchTree` node is considered a search target if it has no children, even if `isTarget` is not explicitly set to `true`. This
|
|
100
|
+
* is because a node with no children represents the end of a search path.
|
|
101
|
+
*/
|
|
102
|
+
isTarget?: boolean;
|
|
103
|
+
/** Provides options for handling this search tree entry, such as auto-expansion behavior. */
|
|
104
|
+
options?: {
|
|
105
|
+
/**
|
|
106
|
+
* - `true` to expand the node and its grouping nodes,
|
|
107
|
+
* - `{ groupingLevel: number }` to expand ancestor grouping nodes, e.g. for the following hierarchy:
|
|
108
|
+
* ```
|
|
109
|
+
* - Grouping node A
|
|
110
|
+
* - Instance node A
|
|
111
|
+
* - Grouping node B1
|
|
112
|
+
* - Grouping node B2
|
|
113
|
+
* - ...
|
|
114
|
+
* - Grouping node Bn
|
|
115
|
+
* - Instance node B
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* For "Instance node B" search tree entry:
|
|
119
|
+
* - `{ groupingLevel: 1 }` expands its first grouping node "Grouping node B1",
|
|
120
|
+
* - `{ groupingLevel: 2 }` expands two levels to "Grouping node B2".
|
|
121
|
+
* - `{ groupingLevel: Number.MAX_SAFE_INTEGER }` expands all grouping nodes of that instance node.
|
|
122
|
+
*
|
|
123
|
+
* Note that there's a slight difference between `HierarchySearchTree.options.autoExpand` and
|
|
124
|
+
* `HierarchySearchPath.options.reveal`. The latter option reveals the search target node by expanding its ancestors,
|
|
125
|
+
* while the `HierarchySearchTree.options.autoExpand` also expands the target node itself.
|
|
126
|
+
*/
|
|
127
|
+
autoExpand?: boolean | {
|
|
128
|
+
groupingLevel: number;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
/** Child search tree entries representing the next level(s) in the hierarchy search paths. */
|
|
132
|
+
children?: HierarchySearchTree[];
|
|
133
|
+
}
|
|
134
|
+
/** @public */
|
|
135
|
+
export declare namespace HierarchySearchTree {
|
|
136
|
+
/** @public */
|
|
137
|
+
type HierarchySearchTreeBuilderAcceptHandlerTreeEntry<TExtras extends Record<string, unknown>> = Readonly<Pick<HierarchySearchTree, "identifier" | "options"> & {
|
|
138
|
+
extras: TExtras;
|
|
139
|
+
}> & Pick<HierarchySearchTree, "isTarget">;
|
|
140
|
+
/** @public */
|
|
141
|
+
type HierarchySearchTreeBuilderAcceptHandlerTreeInput = Readonly<Pick<HierarchySearchTree, "identifier" | "isTarget" | "options"> & {
|
|
142
|
+
hasChildren: boolean;
|
|
143
|
+
}>;
|
|
144
|
+
/** @public */
|
|
145
|
+
interface HierarchySearchTreeBuilderAcceptHandler<TExtras extends Record<string, unknown>> {
|
|
146
|
+
/**
|
|
147
|
+
* Called when a new entry is added to the tree. Return `true` to accept the entry, `false` to reject it and all its children, if any.
|
|
148
|
+
*/
|
|
149
|
+
onNewEntry?: (props: {
|
|
150
|
+
/** The parent entries of the new entry being added, from root to immediate parent. It's allowed to mutate these entries. */
|
|
151
|
+
parentEntries: Array<HierarchySearchTreeBuilderAcceptHandlerTreeEntry<TExtras>>;
|
|
152
|
+
/** The new entry being added to the tree. */
|
|
153
|
+
inputEntry: HierarchySearchTreeBuilderAcceptHandlerTreeInput;
|
|
154
|
+
}) => boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Called when a new entry is added to the tree and accepted (either it's a new entry or it merges with an existing entry). This can be used to perform
|
|
157
|
+
* side effects such as assigning extra information to the tree entry.
|
|
158
|
+
*/
|
|
159
|
+
onEntryHandled?: (props: {
|
|
160
|
+
/** The parent entries of the new entry being added, from root to immediate parent. It's allowed to mutate these entries. */
|
|
161
|
+
parentEntries: Array<HierarchySearchTreeBuilderAcceptHandlerTreeEntry<TExtras>>;
|
|
162
|
+
/** The tree entry that has been handled. It's allowed to mutate this entry. */
|
|
163
|
+
treeEntry: HierarchySearchTreeBuilderAcceptHandlerTreeEntry<TExtras>;
|
|
164
|
+
/** The input entry being added to the tree. */
|
|
165
|
+
inputEntry: HierarchySearchTreeBuilderAcceptHandlerTreeInput;
|
|
166
|
+
}) => void;
|
|
167
|
+
}
|
|
168
|
+
/** @public */
|
|
169
|
+
type HierarchySearchTreeBuilderAcceptProps<TAcceptHandlerExtras extends Record<string, unknown>> = ({
|
|
170
|
+
path: HierarchySearchPath;
|
|
171
|
+
} | {
|
|
172
|
+
tree: HierarchySearchTree;
|
|
173
|
+
}) & {
|
|
174
|
+
/** An optional handler for customizing the behavior of the builder when accepting new entries. */
|
|
175
|
+
handler?: HierarchySearchTreeBuilderAcceptHandler<TAcceptHandlerExtras>;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* An utility that accepts hierarchy search paths or search trees one by one and builds a `HierarchySearchTree` structure based on them.
|
|
179
|
+
* @public
|
|
180
|
+
*/
|
|
181
|
+
interface HierarchySearchTreeBuilder<TAcceptHandlerExtras extends Record<string, unknown>> {
|
|
182
|
+
/**
|
|
183
|
+
* Accepts a hierarchy search path or paths' tree and adds it to the builder's internal tree structure. Use `getTree()` to create
|
|
184
|
+
* a `HierarchySearchTree[]` from the added paths.
|
|
185
|
+
*/
|
|
186
|
+
accept(props: HierarchySearchTreeBuilderAcceptProps<TAcceptHandlerExtras>): HierarchySearchTreeBuilder<TAcceptHandlerExtras>;
|
|
187
|
+
/**
|
|
188
|
+
* Create `HierarchySearchTree[]` from currently added search paths.
|
|
189
|
+
*/
|
|
190
|
+
getTree(): HierarchySearchTree[];
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Create a `HierarchySearchTree` builder utility that accepts hierarchy search paths or search trees one by one and builds
|
|
194
|
+
* a `HierarchySearchTree` structure based on them.
|
|
195
|
+
*
|
|
196
|
+
* Usage example:
|
|
197
|
+
*
|
|
198
|
+
* ```ts
|
|
199
|
+
* const builder = HierarchySearchTree.createBuilder();
|
|
200
|
+
* for (const path of searchPaths) {
|
|
201
|
+
* builder.accept({ path });
|
|
202
|
+
* }
|
|
203
|
+
* const searchTree = builder.getTree();
|
|
204
|
+
* ```
|
|
205
|
+
*
|
|
206
|
+
* @public
|
|
207
|
+
*/
|
|
208
|
+
export function createBuilder<TAcceptHandlerExtras extends Record<string, unknown> = Record<string, unknown>>(): HierarchySearchTreeBuilder<TAcceptHandlerExtras>;
|
|
209
|
+
/**
|
|
210
|
+
* Builds a list of `HierarchySearchTree` nodes from an iterable of search paths. Shared
|
|
211
|
+
* path prefixes are merged so that each unique hierarchy node identifier appears only once
|
|
212
|
+
* per level. The resulting trees carry `isTarget`, `options`, and `children` attributes
|
|
213
|
+
* derived from the paths and their options (`autoExpand`, `reveal`).
|
|
214
|
+
*
|
|
215
|
+
* @public
|
|
216
|
+
*/
|
|
217
|
+
export function createFromPathsList(paths: Iterable<HierarchySearchPath>): Promise<HierarchySearchTree[]>;
|
|
218
|
+
/**
|
|
219
|
+
* Merges two `HierarchySearchTree` option objects. For the `autoExpand` attribute,
|
|
220
|
+
* `true` takes precedence over `{ groupingLevel }`, and when both sides are
|
|
221
|
+
* `{ groupingLevel }` objects the larger value wins.
|
|
222
|
+
* @public
|
|
223
|
+
*/
|
|
224
|
+
export function mergeOptions(lhs: HierarchySearchTree["options"] | undefined, rhs: HierarchySearchTree["options"] | undefined): HierarchySearchTree["options"] | undefined;
|
|
225
|
+
export {};
|
|
226
|
+
}
|
|
101
227
|
/**
|
|
102
228
|
* Creates a set of utilities for making it easier to search the given hierarchy
|
|
103
229
|
* level.
|
|
104
230
|
*
|
|
105
231
|
* @public
|
|
106
232
|
*/
|
|
107
|
-
export declare function createHierarchySearchHelper(rootLevelSearchProps:
|
|
233
|
+
export declare function createHierarchySearchHelper(rootLevelSearchProps: HierarchySearchTree[] | undefined, parentNode: Pick<NonGroupingHierarchyNode, "search"> | undefined): {
|
|
108
234
|
/** Returns a flag indicating if the hierarchy level is filtered. */
|
|
109
235
|
hasSearch: boolean;
|
|
110
236
|
/**
|
|
@@ -129,41 +255,21 @@ export declare function createHierarchySearchHelper(rootLevelSearchProps: Hierar
|
|
|
129
255
|
* `nodeKey` prop can be used to check the whole identifier.
|
|
130
256
|
*
|
|
131
257
|
* There are multiple overloads of `createChildNodeProps`: depending on props type it returns different values:
|
|
132
|
-
* - `
|
|
133
|
-
* - `
|
|
134
|
-
* - props have `asyncPathMatcher` - returns either Promise or the regular return value based on whether or not `asyncPathMatcher` returns a promise.
|
|
258
|
+
* - `asyncPathMatcher` is provided - returns either Promise or the regular return value based on whether or not `asyncPathMatcher` returns a `Promise`.
|
|
259
|
+
* - `pathMatcher` or only `nodeKey` is provided - returns undefined **or** `search` and `autoExpand` prop from `HierarchyNode`;
|
|
135
260
|
*/
|
|
136
261
|
createChildNodeProps: {
|
|
137
262
|
(props: {
|
|
138
|
-
parentKeys?: undefined;
|
|
139
|
-
nodeKey: InstancesNodeKey | GenericNodeKey;
|
|
140
|
-
}): Pick<NonGroupingHierarchyNode, "search"> | undefined;
|
|
141
|
-
(props: {
|
|
142
|
-
parentKeys?: undefined;
|
|
143
|
-
pathMatcher: (identifier: HierarchyNodeIdentifier) => boolean;
|
|
144
|
-
}): Pick<NonGroupingHierarchyNode, "search"> | undefined;
|
|
145
|
-
(props: {
|
|
146
|
-
parentKeys?: undefined;
|
|
147
|
-
asyncPathMatcher: (identifier: HierarchyNodeIdentifier) => boolean | Promise<boolean>;
|
|
148
|
-
}): Promise<Pick<NonGroupingHierarchyNode, "search"> | undefined> | Pick<NonGroupingHierarchyNode, "search"> | undefined;
|
|
149
|
-
(props: {
|
|
150
|
-
parentKeys: HierarchyNodeKey[];
|
|
151
263
|
nodeKey: InstancesNodeKey | GenericNodeKey;
|
|
152
264
|
}): Pick<NonGroupingHierarchyNode, "search" | "autoExpand"> | undefined;
|
|
153
265
|
(props: {
|
|
154
|
-
|
|
266
|
+
nodeKey: InstancesNodeKey | GenericNodeKey;
|
|
155
267
|
pathMatcher: (identifier: HierarchyNodeIdentifier) => boolean;
|
|
156
268
|
}): Pick<NonGroupingHierarchyNode, "search" | "autoExpand"> | undefined;
|
|
157
269
|
(props: {
|
|
158
|
-
|
|
270
|
+
nodeKey: InstancesNodeKey | GenericNodeKey;
|
|
159
271
|
asyncPathMatcher: (identifier: HierarchyNodeIdentifier) => boolean | Promise<boolean>;
|
|
160
272
|
}): Promise<Pick<NonGroupingHierarchyNode, "search" | "autoExpand"> | undefined> | Pick<NonGroupingHierarchyNode, "search" | "autoExpand"> | undefined;
|
|
161
273
|
};
|
|
162
274
|
};
|
|
163
|
-
/** @internal */
|
|
164
|
-
export declare function shouldAutoExpandBasedOnReveal({ reveal, nodePositionInPath, nodePositionInHierarchy, }: {
|
|
165
|
-
reveal: HierarchySearchPathOptions["reveal"];
|
|
166
|
-
nodePositionInPath: number;
|
|
167
|
-
nodePositionInHierarchy: number;
|
|
168
|
-
}): boolean;
|
|
169
275
|
//# sourceMappingURL=HierarchySearch.d.ts.map
|