@itwin/presentation-hierarchies 2.0.0-alpha.5 → 2.0.0-alpha.7
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 +62 -0
- package/README.md +3 -3
- package/lib/cjs/hierarchies/HierarchyMerge.d.ts +19 -0
- package/lib/cjs/hierarchies/HierarchyMerge.d.ts.map +1 -0
- package/lib/cjs/hierarchies/HierarchyMerge.js +43 -0
- package/lib/cjs/hierarchies/HierarchyMerge.js.map +1 -0
- package/lib/cjs/hierarchies/HierarchyNode.d.ts +14 -24
- package/lib/cjs/hierarchies/HierarchyNode.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNode.js +1 -21
- package/lib/cjs/hierarchies/HierarchyNode.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyNodeKey.js +8 -8
- package/lib/cjs/hierarchies/HierarchyNodeKey.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts +11 -29
- package/lib/cjs/hierarchies/HierarchyProvider.d.ts.map +1 -1
- package/lib/cjs/hierarchies/HierarchyProvider.js +0 -37
- package/lib/cjs/hierarchies/HierarchyProvider.js.map +1 -1
- package/lib/cjs/hierarchies/HierarchySearch.d.ts +167 -0
- package/lib/cjs/hierarchies/HierarchySearch.d.ts.map +1 -0
- package/lib/cjs/hierarchies/HierarchySearch.js +261 -0
- package/lib/cjs/hierarchies/HierarchySearch.js.map +1 -0
- package/lib/cjs/hierarchies/imodel/HierarchyCache.js +3 -3
- package/lib/cjs/hierarchies/imodel/HierarchyCache.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts +46 -11
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js +155 -64
- package/lib/cjs/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
- package/lib/cjs/hierarchies/imodel/{FilteringHierarchyDefinition.d.ts → SearchHierarchyDefinition.d.ts} +12 -10
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -0
- package/lib/cjs/hierarchies/imodel/{FilteringHierarchyDefinition.js → SearchHierarchyDefinition.js} +88 -73
- package/lib/cjs/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -0
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js +8 -1
- package/lib/cjs/hierarchies/imodel/TreeNodesReader.js.map +1 -1
- package/lib/cjs/hierarchies/internal/Common.d.ts +3 -0
- package/lib/cjs/hierarchies/internal/Common.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/Common.js +12 -1
- package/lib/cjs/hierarchies/internal/Common.js.map +1 -1
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js +2 -1
- package/lib/cjs/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
- package/lib/cjs/presentation-hierarchies.d.ts +4 -3
- package/lib/cjs/presentation-hierarchies.d.ts.map +1 -1
- package/lib/cjs/presentation-hierarchies.js +7 -7
- package/lib/cjs/presentation-hierarchies.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyMerge.d.ts +19 -0
- package/lib/esm/hierarchies/HierarchyMerge.d.ts.map +1 -0
- package/lib/esm/hierarchies/HierarchyMerge.js +40 -0
- package/lib/esm/hierarchies/HierarchyMerge.js.map +1 -0
- package/lib/esm/hierarchies/HierarchyNode.d.ts +14 -24
- package/lib/esm/hierarchies/HierarchyNode.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNode.js +0 -20
- package/lib/esm/hierarchies/HierarchyNode.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyNodeKey.js +9 -9
- package/lib/esm/hierarchies/HierarchyNodeKey.js.map +1 -1
- package/lib/esm/hierarchies/HierarchyProvider.d.ts +11 -29
- package/lib/esm/hierarchies/HierarchyProvider.d.ts.map +1 -1
- package/lib/esm/hierarchies/HierarchyProvider.js +1 -36
- package/lib/esm/hierarchies/HierarchyProvider.js.map +1 -1
- package/lib/esm/hierarchies/HierarchySearch.d.ts +167 -0
- package/lib/esm/hierarchies/HierarchySearch.d.ts.map +1 -0
- package/lib/esm/hierarchies/HierarchySearch.js +256 -0
- package/lib/esm/hierarchies/HierarchySearch.js.map +1 -0
- package/lib/esm/hierarchies/imodel/HierarchyCache.js +3 -3
- package/lib/esm/hierarchies/imodel/HierarchyCache.js.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts +46 -11
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js +157 -67
- package/lib/esm/hierarchies/imodel/IModelHierarchyProvider.js.map +1 -1
- package/lib/esm/hierarchies/imodel/{FilteringHierarchyDefinition.d.ts → SearchHierarchyDefinition.d.ts} +12 -10
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.d.ts.map +1 -0
- package/lib/esm/hierarchies/imodel/{FilteringHierarchyDefinition.js → SearchHierarchyDefinition.js} +86 -71
- package/lib/esm/hierarchies/imodel/SearchHierarchyDefinition.js.map +1 -0
- package/lib/esm/hierarchies/imodel/TreeNodesReader.d.ts.map +1 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js +8 -1
- package/lib/esm/hierarchies/imodel/TreeNodesReader.js.map +1 -1
- package/lib/esm/hierarchies/internal/Common.d.ts +3 -0
- package/lib/esm/hierarchies/internal/Common.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/Common.js +11 -1
- package/lib/esm/hierarchies/internal/Common.js.map +1 -1
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.d.ts.map +1 -1
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js +3 -2
- package/lib/esm/hierarchies/internal/RxjsHierarchyDefinition.js.map +1 -1
- package/lib/esm/presentation-hierarchies.d.ts +4 -3
- package/lib/esm/presentation-hierarchies.d.ts.map +1 -1
- package/lib/esm/presentation-hierarchies.js +3 -3
- package/lib/esm/presentation-hierarchies.js.map +1 -1
- package/package.json +7 -7
- package/lib/cjs/hierarchies/HierarchyFiltering.d.ts +0 -136
- package/lib/cjs/hierarchies/HierarchyFiltering.d.ts.map +0 -1
- package/lib/cjs/hierarchies/HierarchyFiltering.js +0 -249
- package/lib/cjs/hierarchies/HierarchyFiltering.js.map +0 -1
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +0 -1
- package/lib/cjs/hierarchies/imodel/FilteringHierarchyDefinition.js.map +0 -1
- package/lib/esm/hierarchies/HierarchyFiltering.d.ts +0 -136
- package/lib/esm/hierarchies/HierarchyFiltering.d.ts.map +0 -1
- package/lib/esm/hierarchies/HierarchyFiltering.js +0 -244
- package/lib/esm/hierarchies/HierarchyFiltering.js.map +0 -1
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.d.ts.map +0 -1
- package/lib/esm/hierarchies/imodel/FilteringHierarchyDefinition.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# @itwin/presentation-hierarchies
|
|
2
2
|
|
|
3
|
+
## 2.0.0-alpha.7
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1011](https://github.com/iTwin/presentation/pull/1011): Rename full‑hierarchy "filtering" to "search" across the package.
|
|
8
|
+
|
|
9
|
+
Properties and APIs were renamed accordingly to clarify the distinction and avoid confusion between hierarchy‑wide search and per-hierarchy‑level filtering.
|
|
10
|
+
|
|
11
|
+
**Breaking changes:**
|
|
12
|
+
- Removed deprecated `extractFilteringProps`.
|
|
13
|
+
- Removed deprecated `HierarchyNodeFilteringProps.create`.
|
|
14
|
+
- Renamed `createHierarchyFilteringHelper` to `createHierarchySearchHelper`. It's return type was also adjusted for the rename:
|
|
15
|
+
- `hasFilter` renamed to `hasSearch`,
|
|
16
|
+
- `hasFilterTargetAncestor` renamed to `hasSearchTargetAncestor`,
|
|
17
|
+
- `getChildNodeFilteringIdentifiers` renamed to `getChildNodeSearchIdentifiers`.
|
|
18
|
+
- Renamed `HierarchyChangedEventArgs.filterChange` to `searchChange`.
|
|
19
|
+
- Renamed `HierarchyProvider.setHierarchyFilter` to `setHierarchySearch`.
|
|
20
|
+
- Renamed `createMergedIModelHierarchyProvider` prop `filtering` to `search.
|
|
21
|
+
- Renamed `HierarchyFilteringPath` to `HierarchySearchPath`.
|
|
22
|
+
- Renamed `HierarchyFilteringPathOptions` to `HierarchySearchPathOptions`.
|
|
23
|
+
- Renamed `NonGroupingHierarchyNode.filtering` to `search`. It's type was also adjusted for the rename:
|
|
24
|
+
- `hasFilterTargetAncestor` renamed to `hasSearchTargetAncestor`,
|
|
25
|
+
- `filteredChildrenIdentifierPaths` renamed to `childrenTargetPaths`,
|
|
26
|
+
- `isFilterTarget` renamed to `isSearchTarget`,
|
|
27
|
+
- `filterTargetOptions` renamed to `searchTargetOptions`.
|
|
28
|
+
|
|
29
|
+
## 2.0.0-alpha.6
|
|
30
|
+
|
|
31
|
+
### Major Changes
|
|
32
|
+
|
|
33
|
+
- 6a00754233e6d1b8956a5fc7680829562156d659: Fixed a bug causing `HierarchyNode.autoExpand` flag to be set on non-grouping nodes, when `HierarchyFilteringPathOptions.autoExpand.depthInHierarchy` points to a grouping node whose child non-grouping node is not a filter target.
|
|
34
|
+
|
|
35
|
+
**Breaking changes:**
|
|
36
|
+
- `GroupingHierarchyNode` no longer contains `filtering` attribute. This was always the case, but now the types have been updated to match it.
|
|
37
|
+
- Changed return type of `createHierarchyFilteringHelper`:
|
|
38
|
+
- Removed `createChildNodePropsAsync` - it became an overload of `createChildNodeProps`, whose path matching is done through `asyncPathMatcher` callback.
|
|
39
|
+
- `createChildNodeProps` now has multiple overloads and returns different types based on provided props. `autoExpand` flag is only returned when `parentKeys` are provided.
|
|
40
|
+
- Renamed `HierarchyFilteringPathOptions.autoExpand` -> `HierarchyFilteringPathOptions.reveal` to match intent.
|
|
41
|
+
- Changed `HierarchyFilteringPathOptions.reveal.depthInHierarchy` and `depthInPath` to use 0-based indexing instead of 1-based indexing.
|
|
42
|
+
- Changed `HierarchyFilteringPathOptions.reveal.depthInHierarchy` to not set `autoExpand` flag on the node that is at the `depthInHierarchy` position.
|
|
43
|
+
|
|
44
|
+
- e9ef80880c776522ce3b2632c8c3c461e62d6444: The hierarchy provider returned by `mergeProviders` doesn't have the deprecated `dispose` method anymore. Use `[Symbol.dispose]` instead.
|
|
45
|
+
|
|
46
|
+
### Minor Changes
|
|
47
|
+
|
|
48
|
+
- e9e42c3a513cb7d594351ee2244c7efe67cc4385: Added `HierarchyFilteringPathOptions.autoExpand` option to enable auto-expanding of filter target nodes.
|
|
49
|
+
- e9ef80880c776522ce3b2632c8c3c461e62d6444: Add an experimental (`@alpha`) function `createMergedIModelHierarchyProvider` for creating a hierarchy from multiple versions of the same iModel.
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- e9ef80880c776522ce3b2632c8c3c461e62d6444: Fix `HierarchyNodeKey` methods `equals` and `compare` not handling different schema-class separators and casing.
|
|
54
|
+
- Updated dependencies:
|
|
55
|
+
- @itwin/presentation-shared@2.0.0-alpha.4
|
|
56
|
+
|
|
3
57
|
## 2.0.0-alpha.5
|
|
4
58
|
|
|
5
59
|
### Patch Changes
|
|
@@ -59,6 +113,14 @@
|
|
|
59
113
|
- Updated dependencies:
|
|
60
114
|
- @itwin/presentation-shared@2.0.0-alpha.0
|
|
61
115
|
|
|
116
|
+
## 1.7.5
|
|
117
|
+
|
|
118
|
+
### Patch Changes
|
|
119
|
+
|
|
120
|
+
- [#1124](https://github.com/iTwin/presentation/pull/1124): Bump dependencies.
|
|
121
|
+
- Updated dependencies:
|
|
122
|
+
- @itwin/presentation-shared@1.2.4
|
|
123
|
+
|
|
62
124
|
## 1.7.4
|
|
63
125
|
|
|
64
126
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -50,15 +50,15 @@ Below is a list of learning material related to building hierarchies:
|
|
|
50
50
|
- General topics:
|
|
51
51
|
- [Formatting](./learning/Formatting.md)
|
|
52
52
|
- [Logging](./learning/Logging.md)
|
|
53
|
-
- [Hierarchy
|
|
54
|
-
- [Hierarchy level filtering](./learning/
|
|
53
|
+
- [Hierarchy search](./learning/HierarchySearch.md)
|
|
54
|
+
- [Hierarchy level filtering](./learning/HierarchyLevelFiltering.md)
|
|
55
55
|
- [Merged hierarchies](./learning/MergedHierarchies.md)
|
|
56
56
|
- [Custom hierarchy providers](./learning/CustomHierarchyProviders.md)
|
|
57
57
|
- iModel-based hierarchies:
|
|
58
58
|
- [Hierarchy provider](./learning/imodel/HierarchyProvider.md)
|
|
59
59
|
- [Hierarchy definition](./learning/imodel/HierarchyDefinition.md)
|
|
60
60
|
- [Hierarchy node labels](./learning/imodel/HierarchyNodeLabels.md)
|
|
61
|
-
- [Hierarchy
|
|
61
|
+
- [Hierarchy search](./learning/imodel/HierarchySearch.md)
|
|
62
62
|
- [Hierarchy level filtering](./learning/imodel/HierarchyLevelFiltering.md)
|
|
63
63
|
- [Grouping](./learning/imodel/Grouping.md)
|
|
64
64
|
- [Localization](./learning/imodel/Localization.md)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import "./internal/DisposePolyfill.js";
|
|
2
|
+
import { HierarchyProvider } from "./HierarchyProvider.js";
|
|
3
|
+
/**
|
|
4
|
+
* Props for `mergeProviders` function.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
interface MergeHierarchyProvidersProps {
|
|
8
|
+
/** List of providers to merge. */
|
|
9
|
+
providers: HierarchyProvider[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates a single, merged, hierarchy provider from multiple given providers.
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export declare function mergeProviders({ providers }: MergeHierarchyProvidersProps): HierarchyProvider & {
|
|
16
|
+
[Symbol.dispose]: () => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=HierarchyMerge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HierarchyMerge.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyMerge.ts"],"names":[],"mappings":"AAKA,OAAO,+BAA+B,CAAC;AAIvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D;;;GAGG;AACH,UAAU,4BAA4B;IACpC,kCAAkC;IAClC,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE,4BAA4B,GAAG,iBAAiB,GAAG;IAC/F,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B,CAyCA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.mergeProviders = mergeProviders;
|
|
8
|
+
require("./internal/DisposePolyfill.js");
|
|
9
|
+
const rxjs_1 = require("rxjs");
|
|
10
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
11
|
+
const Common_js_1 = require("./internal/Common.js");
|
|
12
|
+
const EachValueFrom_js_1 = require("./internal/EachValueFrom.js");
|
|
13
|
+
const Sorting_js_1 = require("./internal/operators/Sorting.js");
|
|
14
|
+
/**
|
|
15
|
+
* Creates a single, merged, hierarchy provider from multiple given providers.
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
function mergeProviders({ providers }) {
|
|
19
|
+
const hierarchyChanged = new core_bentley_1.BeEvent();
|
|
20
|
+
providers.forEach((p) => {
|
|
21
|
+
p.hierarchyChanged.addListener(() => hierarchyChanged.raiseEvent());
|
|
22
|
+
});
|
|
23
|
+
const dispose = () => {
|
|
24
|
+
hierarchyChanged.clear();
|
|
25
|
+
providers.forEach((p) => (0, Common_js_1.safeDispose)(p));
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
hierarchyChanged,
|
|
29
|
+
getNodes: (props) => (0, EachValueFrom_js_1.eachValueFrom)((0, rxjs_1.from)(providers).pipe((0, rxjs_1.mergeMap)((provider) => (0, rxjs_1.from)(provider.getNodes(props)).pipe((0, rxjs_1.mergeMap)((node) => {
|
|
30
|
+
if (node.children) {
|
|
31
|
+
return (0, rxjs_1.of)(node);
|
|
32
|
+
}
|
|
33
|
+
// each provider only considers its own data when determining node's children - in case it says
|
|
34
|
+
// the node has no children, we have to check against the other providers too
|
|
35
|
+
return (0, rxjs_1.from)(providers).pipe((0, rxjs_1.filter)((p) => p !== provider), (0, rxjs_1.mergeMap)((p) => p.getNodes({ parentNode: node })), (0, rxjs_1.map)(() => true), (0, rxjs_1.first)(undefined, false), (0, rxjs_1.map)((hasChildren) => ({ ...node, children: hasChildren })));
|
|
36
|
+
}))), Sorting_js_1.sortNodesByLabelOperator)),
|
|
37
|
+
getNodeInstanceKeys: (props) => (0, EachValueFrom_js_1.eachValueFrom)((0, rxjs_1.from)(providers).pipe((0, rxjs_1.mergeMap)((p) => p.getNodeInstanceKeys(props)))),
|
|
38
|
+
setFormatter: (formatter) => providers.forEach((p) => p.setFormatter(formatter)),
|
|
39
|
+
setHierarchySearch: (props) => providers.forEach((p) => p.setHierarchySearch(props)),
|
|
40
|
+
[Symbol.dispose]: dispose,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=HierarchyMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HierarchyMerge.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyMerge.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;AAwBhG,wCA2CC;AAjED,yCAAuC;AAEvC,+BAA8D;AAC9D,sDAA8C;AAE9C,oDAAmD;AACnD,kEAA4D;AAC5D,gEAA2E;AAW3E;;;GAGG;AACH,SAAgB,cAAc,CAAC,EAAE,SAAS,EAAgC;IAGxE,MAAM,gBAAgB,GAAG,IAAI,sBAAO,EAAc,CAAC;IACnD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAW,EAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,IAAA,gCAAa,EACX,IAAA,WAAI,EAAC,SAAS,CAAC,CAAC,IAAI,CAClB,IAAA,eAAQ,EAAC,CAAC,QAAQ,EAAE,EAAE,CACpB,IAAA,WAAI,EAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACjC,IAAA,eAAQ,EAAC,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,+FAA+F;YAC/F,6EAA6E;YAC7E,OAAO,IAAA,WAAI,EAAC,SAAS,CAAC,CAAC,IAAI,CACzB,IAAA,aAAM,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,EAC7B,IAAA,eAAQ,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EACjD,IAAA,UAAG,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EACf,IAAA,YAAK,EAAC,SAAS,EAAE,KAAK,CAAC,EACvB,IAAA,UAAG,EAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAC3D,CAAC;QACJ,CAAC,CAAC,CACH,CACF,EACD,qCAAwB,CACzB,CACF;QACH,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gCAAa,EAAC,IAAA,WAAI,EAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAA,eAAQ,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClH,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAChF,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACpF,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO;KAC1B,CAAC;AACJ,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 \"./internal/DisposePolyfill.js\";\n\nimport { filter, first, from, map, mergeMap, of } from \"rxjs\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { HierarchyProvider } from \"./HierarchyProvider.js\";\nimport { safeDispose } from \"./internal/Common.js\";\nimport { eachValueFrom } from \"./internal/EachValueFrom.js\";\nimport { sortNodesByLabelOperator } from \"./internal/operators/Sorting.js\";\n\n/**\n * Props for `mergeProviders` function.\n * @public\n */\ninterface MergeHierarchyProvidersProps {\n /** List of providers to merge. */\n providers: HierarchyProvider[];\n}\n\n/**\n * Creates a single, merged, hierarchy provider from multiple given providers.\n * @public\n */\nexport function mergeProviders({ providers }: MergeHierarchyProvidersProps): HierarchyProvider & {\n [Symbol.dispose]: () => void;\n} {\n const hierarchyChanged = new BeEvent<() => void>();\n providers.forEach((p) => {\n p.hierarchyChanged.addListener(() => hierarchyChanged.raiseEvent());\n });\n const dispose = () => {\n hierarchyChanged.clear();\n providers.forEach((p) => safeDispose(p));\n };\n\n return {\n hierarchyChanged,\n getNodes: (props) =>\n eachValueFrom(\n from(providers).pipe(\n mergeMap((provider) =>\n from(provider.getNodes(props)).pipe(\n mergeMap((node) => {\n if (node.children) {\n return of(node);\n }\n // each provider only considers its own data when determining node's children - in case it says\n // the node has no children, we have to check against the other providers too\n return from(providers).pipe(\n filter((p) => p !== provider),\n mergeMap((p) => p.getNodes({ parentNode: node })),\n map(() => true),\n first(undefined, false),\n map((hasChildren) => ({ ...node, children: hasChildren })),\n );\n }),\n ),\n ),\n sortNodesByLabelOperator,\n ),\n ),\n getNodeInstanceKeys: (props) => eachValueFrom(from(providers).pipe(mergeMap((p) => p.getNodeInstanceKeys(props)))),\n setFormatter: (formatter) => providers.forEach((p) => p.setFormatter(formatter)),\n setHierarchySearch: (props) => providers.forEach((p) => p.setHierarchySearch(props)),\n [Symbol.dispose]: dispose,\n };\n}\n"]}
|
|
@@ -1,31 +1,21 @@
|
|
|
1
1
|
import { OmitOverUnion } from "@itwin/presentation-shared";
|
|
2
|
-
import { HierarchyFilteringPath, HierarchyFilteringPathOptions } from "./HierarchyFiltering.js";
|
|
3
2
|
import { ClassGroupingNodeKey, GenericNodeKey, GroupingNodeKey, HierarchyNodeKey, IModelHierarchyNodeKey, IModelInstanceKey, InstancesNodeKey, LabelGroupingNodeKey, PropertyGroupingNodeKey, PropertyOtherValuesGroupingNodeKey, PropertyValueGroupingNodeKey, PropertyValueRangeGroupingNodeKey } from "./HierarchyNodeKey.js";
|
|
3
|
+
import { HierarchySearchPath, HierarchySearchPathOptions } from "./HierarchySearch.js";
|
|
4
4
|
/** @public */
|
|
5
|
-
export type
|
|
6
|
-
/** If set to true, then one of the ancestor nodes in the hierarchy is the
|
|
7
|
-
|
|
8
|
-
/** Paths to node's children that are
|
|
9
|
-
|
|
5
|
+
export type HierarchyNodeSearchProps = {
|
|
6
|
+
/** If set to true, then one of the ancestor nodes in the hierarchy is the search target. */
|
|
7
|
+
hasSearchTargetAncestor?: boolean;
|
|
8
|
+
/** Paths to node's children that are search targets. */
|
|
9
|
+
childrenTargetPaths?: HierarchySearchPath[];
|
|
10
10
|
} & ({
|
|
11
|
-
/** Whether or not this node is a
|
|
12
|
-
|
|
11
|
+
/** Whether or not this node is a search target. */
|
|
12
|
+
isSearchTarget?: false;
|
|
13
13
|
} | {
|
|
14
|
-
/** Whether or not this node is a
|
|
15
|
-
|
|
16
|
-
/** Options that were used to
|
|
17
|
-
|
|
14
|
+
/** Whether or not this node is a search target. */
|
|
15
|
+
isSearchTarget: true;
|
|
16
|
+
/** Options that were used to search the node. */
|
|
17
|
+
searchTargetOptions?: HierarchySearchPathOptions;
|
|
18
18
|
});
|
|
19
|
-
/** @public */
|
|
20
|
-
export declare namespace HierarchyNodeFilteringProps {
|
|
21
|
-
/** @deprecated in 1.3. Use `createHierarchyFilteringHelper` and its `createChildNodeProps` function to create filtering props for nodes. */
|
|
22
|
-
function create(props: {
|
|
23
|
-
hasFilterTargetAncestor?: boolean;
|
|
24
|
-
filteredChildrenIdentifierPaths?: HierarchyFilteringPath[];
|
|
25
|
-
isFilterTarget?: boolean;
|
|
26
|
-
filterTargetOptions?: HierarchyFilteringPathOptions;
|
|
27
|
-
}): HierarchyNodeFilteringProps | undefined;
|
|
28
|
-
}
|
|
29
19
|
/**
|
|
30
20
|
* A data structure that defines attributes that are common to all types of hierarchy nodes.
|
|
31
21
|
* @public
|
|
@@ -43,8 +33,6 @@ interface BaseHierarchyNode {
|
|
|
43
33
|
extendedData?: {
|
|
44
34
|
[key: string]: any;
|
|
45
35
|
};
|
|
46
|
-
/** Data that may be assigned to the node if filtering is enabled */
|
|
47
|
-
filtering?: HierarchyNodeFilteringProps;
|
|
48
36
|
}
|
|
49
37
|
/**
|
|
50
38
|
* A data structure that represents a single non-grouping hierarchy node.
|
|
@@ -58,6 +46,8 @@ export interface NonGroupingHierarchyNode extends BaseHierarchyNode {
|
|
|
58
46
|
* filter when requesting child hierarchy level will have no effect.
|
|
59
47
|
*/
|
|
60
48
|
supportsFiltering?: boolean;
|
|
49
|
+
/** Data that is assigned to the node if hierarchy search is enabled */
|
|
50
|
+
search?: HierarchyNodeSearchProps;
|
|
61
51
|
}
|
|
62
52
|
/**
|
|
63
53
|
* A data structure that represents a grouping node that groups other nodes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyNode.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"HierarchyNode.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,30 +4,10 @@
|
|
|
4
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.HierarchyNode =
|
|
7
|
+
exports.HierarchyNode = void 0;
|
|
8
8
|
const HierarchyNodeKey_js_1 = require("./HierarchyNodeKey.js");
|
|
9
9
|
/** @public */
|
|
10
10
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
11
|
-
var HierarchyNodeFilteringProps;
|
|
12
|
-
(function (HierarchyNodeFilteringProps) {
|
|
13
|
-
/** @deprecated in 1.3. Use `createHierarchyFilteringHelper` and its `createChildNodeProps` function to create filtering props for nodes. */
|
|
14
|
-
/* c8 ignore start */
|
|
15
|
-
function create(props) {
|
|
16
|
-
const { hasFilterTargetAncestor, filteredChildrenIdentifierPaths, isFilterTarget, filterTargetOptions } = props;
|
|
17
|
-
if (isFilterTarget || hasFilterTargetAncestor || filteredChildrenIdentifierPaths?.length) {
|
|
18
|
-
return {
|
|
19
|
-
...(isFilterTarget ? { isFilterTarget, filterTargetOptions } : undefined),
|
|
20
|
-
...(hasFilterTargetAncestor ? { hasFilterTargetAncestor } : undefined),
|
|
21
|
-
...(!!filteredChildrenIdentifierPaths?.length ? { filteredChildrenIdentifierPaths } : undefined),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
HierarchyNodeFilteringProps.create = create;
|
|
27
|
-
/* c8 ignore end */
|
|
28
|
-
})(HierarchyNodeFilteringProps || (exports.HierarchyNodeFilteringProps = HierarchyNodeFilteringProps = {}));
|
|
29
|
-
/** @public */
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
31
11
|
var HierarchyNode;
|
|
32
12
|
(function (HierarchyNode) {
|
|
33
13
|
/** Checks whether the given node is a generic node */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyNode.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNode.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 { OmitOverUnion } from \"@itwin/presentation-shared\";\nimport { HierarchyFilteringPath, HierarchyFilteringPathOptions } from \"./HierarchyFiltering.js\";\nimport {\n ClassGroupingNodeKey,\n GenericNodeKey,\n GroupingNodeKey,\n HierarchyNodeKey,\n IModelHierarchyNodeKey,\n IModelInstanceKey,\n InstancesNodeKey,\n LabelGroupingNodeKey,\n PropertyGroupingNodeKey,\n PropertyOtherValuesGroupingNodeKey,\n PropertyValueGroupingNodeKey,\n PropertyValueRangeGroupingNodeKey,\n} from \"./HierarchyNodeKey.js\";\n\n/** @public */\nexport type HierarchyNodeFilteringProps = {\n /** If set to true, then one of the ancestor nodes in the hierarchy is the filter target. */\n hasFilterTargetAncestor?: boolean;\n /** Paths to node's children that are filter targets. */\n filteredChildrenIdentifierPaths?: HierarchyFilteringPath[];\n} & (\n | {\n /** Whether or not this node is a filter target. */\n isFilterTarget?: false;\n }\n | {\n /** Whether or not this node is a filter target. */\n isFilterTarget: true;\n /** Options that were used to filter the node. */\n filterTargetOptions?: HierarchyFilteringPathOptions;\n }\n);\n/** @public */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace HierarchyNodeFilteringProps {\n /** @deprecated in 1.3. Use `createHierarchyFilteringHelper` and its `createChildNodeProps` function to create filtering props for nodes. */\n /* c8 ignore start */\n export function create(props: {\n hasFilterTargetAncestor?: boolean;\n filteredChildrenIdentifierPaths?: HierarchyFilteringPath[];\n isFilterTarget?: boolean;\n filterTargetOptions?: HierarchyFilteringPathOptions;\n }): HierarchyNodeFilteringProps | undefined {\n const { hasFilterTargetAncestor, filteredChildrenIdentifierPaths, isFilterTarget, filterTargetOptions } = props;\n if (isFilterTarget || hasFilterTargetAncestor || filteredChildrenIdentifierPaths?.length) {\n return {\n ...(isFilterTarget ? { isFilterTarget, filterTargetOptions } : undefined),\n ...(hasFilterTargetAncestor ? { hasFilterTargetAncestor } : undefined),\n ...(!!filteredChildrenIdentifierPaths?.length ? { filteredChildrenIdentifierPaths } : undefined),\n };\n }\n return undefined;\n }\n /* c8 ignore end */\n}\n\n/**\n * A data structure that defines attributes that are common to all types of hierarchy nodes.\n * @public\n */\ninterface BaseHierarchyNode {\n /** Identifiers of all node ancestors. Can be used to identify a node in the hierarchy. */\n parentKeys: HierarchyNodeKey[];\n /** Node's display label. */\n label: string;\n /** A flag indicating whether the node has children or not. */\n children: boolean;\n /** A flag indicating whether this node should be auto-expanded in the UI. */\n autoExpand?: boolean;\n /** Additional data that may be assigned to this node. */\n extendedData?: { [key: string]: any };\n /** Data that may be assigned to the node if filtering is enabled */\n filtering?: HierarchyNodeFilteringProps;\n}\n\n/**\n * A data structure that represents a single non-grouping hierarchy node.\n * @public\n */\nexport interface NonGroupingHierarchyNode extends BaseHierarchyNode {\n /** An identifier to identify the node in its hierarchy level. */\n key: GenericNodeKey | InstancesNodeKey;\n /**\n * Identifies whether the hierarchy level below this node supports filtering. If not, supplying an instance\n * filter when requesting child hierarchy level will have no effect.\n */\n supportsFiltering?: boolean;\n}\n\n/**\n * A data structure that represents a grouping node that groups other nodes.\n * @public\n */\nexport interface GroupingHierarchyNode extends BaseHierarchyNode {\n /** An identifier to identify this grouping node in its hierarchy level. */\n key: GroupingNodeKey;\n\n /**\n * Keys of all instances grouped by this node, including deeply nested under\n * other grouping nodes.\n */\n groupedInstanceKeys: IModelInstanceKey[];\n\n /** The closest ancestor node that is not a grouping node. May be `undefined` if the grouping node grouped root level nodes. */\n nonGroupingAncestor?: ParentHierarchyNode<NonGroupingHierarchyNode>;\n}\n\n/**\n * A data structure that represents a single hierarchy node.\n * @public\n */\nexport type HierarchyNode = NonGroupingHierarchyNode | GroupingHierarchyNode;\n\n/** @public */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace HierarchyNode {\n /** Checks whether the given node is a generic node */\n export function isGeneric<TNode extends { key: HierarchyNodeKey }>(node: TNode): node is TNode & NonGroupingHierarchyNode & { key: GenericNodeKey } {\n return HierarchyNodeKey.isGeneric(node.key);\n }\n /** Checks whether the given node is a standard (iModel content based) node */\n export function isIModelNode<TNode extends { key: HierarchyNodeKey }>(node: TNode): node is TNode & { key: IModelHierarchyNodeKey } {\n return HierarchyNodeKey.isIModelNodeKey(node.key);\n }\n /** Checks whether the given node is an ECInstances-based node */\n export function isInstancesNode<TNode extends { key: HierarchyNodeKey }>(node: TNode): node is TNode & NonGroupingHierarchyNode & { key: InstancesNodeKey } {\n return HierarchyNodeKey.isInstances(node.key);\n }\n /** Checks whether the given node is a grouping node */\n export function isGroupingNode<TNode extends { key: HierarchyNodeKey }>(node: TNode): node is TNode & GroupingHierarchyNode {\n return HierarchyNodeKey.isGrouping(node.key);\n }\n /** Checks whether the given node is a class grouping node */\n export function isClassGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: ClassGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isClassGrouping(node.key);\n }\n /** Checks whether the given node is a label grouping node */\n export function isLabelGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: LabelGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isLabelGrouping(node.key);\n }\n /** Checks whether the given node is property grouping node for other values */\n export function isPropertyOtherValuesGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: PropertyOtherValuesGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isPropertyOtherValuesGrouping(node.key);\n }\n /** Checks whether the given node is a property value grouping node */\n export function isPropertyValueGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: PropertyValueGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isPropertyValueGrouping(node.key);\n }\n /** Checks whether the given node is a property value range grouping node */\n export function isPropertyValueRangeGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: PropertyValueRangeGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isPropertyValueRangeGrouping(node.key);\n }\n /** Checks whether the given node is a property grouping node */\n export function isPropertyGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: PropertyGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isPropertyGrouping(node.key);\n }\n}\n\n/**\n * A type of `HierarchyNode` that doesn't know about its children and is an input when requesting\n * them using `HierarchyProvider.getNodes`.\n * @public\n */\nexport type ParentHierarchyNode<TBase = HierarchyNode> = OmitOverUnion<TBase, \"children\">;\n"]}
|
|
1
|
+
{"version":3,"file":"HierarchyNode.js","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNode.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAGhG,+DAa+B;AA+E/B,cAAc;AACd,2DAA2D;AAC3D,IAAiB,aAAa,CAqD7B;AArDD,WAAiB,aAAa;IAC5B,sDAAsD;IACtD,SAAgB,SAAS,CAA0C,IAAW;QAC5E,OAAO,sCAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAFe,uBAAS,YAExB,CAAA;IACD,8EAA8E;IAC9E,SAAgB,YAAY,CAA0C,IAAW;QAC/E,OAAO,sCAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAFe,0BAAY,eAE3B,CAAA;IACD,iEAAiE;IACjE,SAAgB,eAAe,CAA0C,IAAW;QAClF,OAAO,sCAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAFe,6BAAe,kBAE9B,CAAA;IACD,uDAAuD;IACvD,SAAgB,cAAc,CAA0C,IAAW;QACjF,OAAO,sCAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAFe,4BAAc,iBAE7B,CAAA;IACD,6DAA6D;IAC7D,SAAgB,mBAAmB,CACjC,IAAW;QAEX,OAAO,sCAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAJe,iCAAmB,sBAIlC,CAAA;IACD,6DAA6D;IAC7D,SAAgB,mBAAmB,CACjC,IAAW;QAEX,OAAO,sCAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAJe,iCAAmB,sBAIlC,CAAA;IACD,gFAAgF;IAChF,SAAgB,iCAAiC,CAC/C,IAAW;QAEX,OAAO,sCAAgB,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAJe,+CAAiC,oCAIhD,CAAA;IACD,sEAAsE;IACtE,SAAgB,2BAA2B,CACzC,IAAW;QAEX,OAAO,sCAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAJe,yCAA2B,8BAI1C,CAAA;IACD,4EAA4E;IAC5E,SAAgB,gCAAgC,CAC9C,IAAW;QAEX,OAAO,sCAAgB,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAJe,8CAAgC,mCAI/C,CAAA;IACD,gEAAgE;IAChE,SAAgB,sBAAsB,CACpC,IAAW;QAEX,OAAO,sCAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAJe,oCAAsB,yBAIrC,CAAA;AACH,CAAC,EArDgB,aAAa,6BAAb,aAAa,QAqD7B","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 { OmitOverUnion } from \"@itwin/presentation-shared\";\nimport {\n ClassGroupingNodeKey,\n GenericNodeKey,\n GroupingNodeKey,\n HierarchyNodeKey,\n IModelHierarchyNodeKey,\n IModelInstanceKey,\n InstancesNodeKey,\n LabelGroupingNodeKey,\n PropertyGroupingNodeKey,\n PropertyOtherValuesGroupingNodeKey,\n PropertyValueGroupingNodeKey,\n PropertyValueRangeGroupingNodeKey,\n} from \"./HierarchyNodeKey.js\";\nimport { HierarchySearchPath, HierarchySearchPathOptions } from \"./HierarchySearch.js\";\n\n/** @public */\nexport type HierarchyNodeSearchProps = {\n /** If set to true, then one of the ancestor nodes in the hierarchy is the search target. */\n hasSearchTargetAncestor?: boolean;\n /** Paths to node's children that are search targets. */\n childrenTargetPaths?: HierarchySearchPath[];\n} & (\n | {\n /** Whether or not this node is a search target. */\n isSearchTarget?: false;\n }\n | {\n /** Whether or not this node is a search target. */\n isSearchTarget: true;\n /** Options that were used to search the node. */\n searchTargetOptions?: HierarchySearchPathOptions;\n }\n);\n\n/**\n * A data structure that defines attributes that are common to all types of hierarchy nodes.\n * @public\n */\ninterface BaseHierarchyNode {\n /** Identifiers of all node ancestors. Can be used to identify a node in the hierarchy. */\n parentKeys: HierarchyNodeKey[];\n /** Node's display label. */\n label: string;\n /** A flag indicating whether the node has children or not. */\n children: boolean;\n /** A flag indicating whether this node should be auto-expanded in the UI. */\n autoExpand?: boolean;\n /** Additional data that may be assigned to this node. */\n extendedData?: { [key: string]: any };\n}\n\n/**\n * A data structure that represents a single non-grouping hierarchy node.\n * @public\n */\nexport interface NonGroupingHierarchyNode extends BaseHierarchyNode {\n /** An identifier to identify the node in its hierarchy level. */\n key: GenericNodeKey | InstancesNodeKey;\n /**\n * Identifies whether the hierarchy level below this node supports filtering. If not, supplying an instance\n * filter when requesting child hierarchy level will have no effect.\n */\n supportsFiltering?: boolean;\n /** Data that is assigned to the node if hierarchy search is enabled */\n search?: HierarchyNodeSearchProps;\n}\n\n/**\n * A data structure that represents a grouping node that groups other nodes.\n * @public\n */\nexport interface GroupingHierarchyNode extends BaseHierarchyNode {\n /** An identifier to identify this grouping node in its hierarchy level. */\n key: GroupingNodeKey;\n\n /**\n * Keys of all instances grouped by this node, including deeply nested under\n * other grouping nodes.\n */\n groupedInstanceKeys: IModelInstanceKey[];\n\n /** The closest ancestor node that is not a grouping node. May be `undefined` if the grouping node grouped root level nodes. */\n nonGroupingAncestor?: ParentHierarchyNode<NonGroupingHierarchyNode>;\n}\n\n/**\n * A data structure that represents a single hierarchy node.\n * @public\n */\nexport type HierarchyNode = NonGroupingHierarchyNode | GroupingHierarchyNode;\n\n/** @public */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace HierarchyNode {\n /** Checks whether the given node is a generic node */\n export function isGeneric<TNode extends { key: HierarchyNodeKey }>(node: TNode): node is TNode & NonGroupingHierarchyNode & { key: GenericNodeKey } {\n return HierarchyNodeKey.isGeneric(node.key);\n }\n /** Checks whether the given node is a standard (iModel content based) node */\n export function isIModelNode<TNode extends { key: HierarchyNodeKey }>(node: TNode): node is TNode & { key: IModelHierarchyNodeKey } {\n return HierarchyNodeKey.isIModelNodeKey(node.key);\n }\n /** Checks whether the given node is an ECInstances-based node */\n export function isInstancesNode<TNode extends { key: HierarchyNodeKey }>(node: TNode): node is TNode & NonGroupingHierarchyNode & { key: InstancesNodeKey } {\n return HierarchyNodeKey.isInstances(node.key);\n }\n /** Checks whether the given node is a grouping node */\n export function isGroupingNode<TNode extends { key: HierarchyNodeKey }>(node: TNode): node is TNode & GroupingHierarchyNode {\n return HierarchyNodeKey.isGrouping(node.key);\n }\n /** Checks whether the given node is a class grouping node */\n export function isClassGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: ClassGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isClassGrouping(node.key);\n }\n /** Checks whether the given node is a label grouping node */\n export function isLabelGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: LabelGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isLabelGrouping(node.key);\n }\n /** Checks whether the given node is property grouping node for other values */\n export function isPropertyOtherValuesGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: PropertyOtherValuesGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isPropertyOtherValuesGrouping(node.key);\n }\n /** Checks whether the given node is a property value grouping node */\n export function isPropertyValueGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: PropertyValueGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isPropertyValueGrouping(node.key);\n }\n /** Checks whether the given node is a property value range grouping node */\n export function isPropertyValueRangeGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: PropertyValueRangeGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isPropertyValueRangeGrouping(node.key);\n }\n /** Checks whether the given node is a property grouping node */\n export function isPropertyGroupingNode<TNode extends { key: HierarchyNodeKey }>(\n node: TNode,\n ): node is TNode & { key: PropertyGroupingNodeKey; supportsFiltering?: undefined } & GroupingHierarchyNode {\n return HierarchyNodeKey.isPropertyGrouping(node.key);\n }\n}\n\n/**\n * A type of `HierarchyNode` that doesn't know about its children and is an input when requesting\n * them using `HierarchyProvider.getNodes`.\n * @public\n */\nexport type ParentHierarchyNode<TBase = HierarchyNode> = OmitOverUnion<TBase, \"children\">;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyNodeKey.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNodeKey.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"HierarchyNodeKey.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyNodeKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,7 +91,7 @@ var HierarchyNodeKey;
|
|
|
91
91
|
if (instanceKeyCompareResult !== 0) {
|
|
92
92
|
return instanceKeyCompareResult;
|
|
93
93
|
}
|
|
94
|
-
const imodelKeyCompareResult = (0, core_bentley_1.compareStringsOrUndefined)(lhs.instanceKeys[
|
|
94
|
+
const imodelKeyCompareResult = (0, core_bentley_1.compareStringsOrUndefined)(lhs.instanceKeys[i].imodelKey, rhs.instanceKeys[i].imodelKey);
|
|
95
95
|
if (imodelKeyCompareResult !== 0) {
|
|
96
96
|
return imodelKeyCompareResult;
|
|
97
97
|
}
|
|
@@ -100,7 +100,7 @@ var HierarchyNodeKey;
|
|
|
100
100
|
}
|
|
101
101
|
case "class-grouping": {
|
|
102
102
|
(0, core_bentley_1.assert)(rhs.type === "class-grouping");
|
|
103
|
-
return (0, core_bentley_1.compareStrings)(lhs.className, rhs.className);
|
|
103
|
+
return (0, core_bentley_1.compareStrings)((0, presentation_shared_1.normalizeFullClassName)(lhs.className).toLocaleLowerCase(), (0, presentation_shared_1.normalizeFullClassName)(rhs.className).toLocaleLowerCase());
|
|
104
104
|
}
|
|
105
105
|
case "label-grouping": {
|
|
106
106
|
(0, core_bentley_1.assert)(rhs.type === "label-grouping");
|
|
@@ -116,11 +116,11 @@ var HierarchyNodeKey;
|
|
|
116
116
|
return lhs.properties.length - rhs.properties.length;
|
|
117
117
|
}
|
|
118
118
|
for (let i = 0; i < lhs.properties.length; ++i) {
|
|
119
|
-
const classCompareResult = (0, core_bentley_1.compareStrings)(lhs.properties[i].className, rhs.properties[i].className);
|
|
119
|
+
const classCompareResult = (0, core_bentley_1.compareStrings)((0, presentation_shared_1.normalizeFullClassName)(lhs.properties[i].className).toLocaleLowerCase(), (0, presentation_shared_1.normalizeFullClassName)(rhs.properties[i].className).toLocaleLowerCase());
|
|
120
120
|
if (classCompareResult !== 0) {
|
|
121
121
|
return classCompareResult;
|
|
122
122
|
}
|
|
123
|
-
const nameCompareResult = (0, core_bentley_1.compareStrings)(lhs.properties[i].propertyName, rhs.properties[i].propertyName);
|
|
123
|
+
const nameCompareResult = (0, core_bentley_1.compareStrings)(lhs.properties[i].propertyName.toLocaleLowerCase(), rhs.properties[i].propertyName.toLocaleLowerCase());
|
|
124
124
|
if (nameCompareResult !== 0) {
|
|
125
125
|
return nameCompareResult;
|
|
126
126
|
}
|
|
@@ -129,11 +129,11 @@ var HierarchyNodeKey;
|
|
|
129
129
|
}
|
|
130
130
|
case "property-grouping:value": {
|
|
131
131
|
(0, core_bentley_1.assert)(rhs.type === "property-grouping:value");
|
|
132
|
-
const propertyClassNameCompareResult = (0, core_bentley_1.compareStrings)(lhs.propertyClassName, rhs.propertyClassName);
|
|
132
|
+
const propertyClassNameCompareResult = (0, core_bentley_1.compareStrings)((0, presentation_shared_1.normalizeFullClassName)(lhs.propertyClassName).toLocaleLowerCase(), (0, presentation_shared_1.normalizeFullClassName)(rhs.propertyClassName).toLocaleLowerCase());
|
|
133
133
|
if (propertyClassNameCompareResult !== 0) {
|
|
134
134
|
return propertyClassNameCompareResult;
|
|
135
135
|
}
|
|
136
|
-
const propertyNameCompareResult = (0, core_bentley_1.compareStrings)(lhs.propertyName, rhs.propertyName);
|
|
136
|
+
const propertyNameCompareResult = (0, core_bentley_1.compareStrings)(lhs.propertyName.toLocaleLowerCase(), rhs.propertyName.toLocaleLowerCase());
|
|
137
137
|
if (propertyNameCompareResult !== 0) {
|
|
138
138
|
return propertyNameCompareResult;
|
|
139
139
|
}
|
|
@@ -141,11 +141,11 @@ var HierarchyNodeKey;
|
|
|
141
141
|
}
|
|
142
142
|
case "property-grouping:range": {
|
|
143
143
|
(0, core_bentley_1.assert)(rhs.type === "property-grouping:range");
|
|
144
|
-
const propertyClassNameCompareResult = (0, core_bentley_1.compareStrings)(lhs.propertyClassName, rhs.propertyClassName);
|
|
144
|
+
const propertyClassNameCompareResult = (0, core_bentley_1.compareStrings)((0, presentation_shared_1.normalizeFullClassName)(lhs.propertyClassName).toLocaleLowerCase(), (0, presentation_shared_1.normalizeFullClassName)(rhs.propertyClassName).toLocaleLowerCase());
|
|
145
145
|
if (propertyClassNameCompareResult !== 0) {
|
|
146
146
|
return propertyClassNameCompareResult;
|
|
147
147
|
}
|
|
148
|
-
const propertyNameCompareResult = (0, core_bentley_1.compareStrings)(lhs.propertyName, rhs.propertyName);
|
|
148
|
+
const propertyNameCompareResult = (0, core_bentley_1.compareStrings)(lhs.propertyName.toLocaleLowerCase(), rhs.propertyName.toLocaleLowerCase());
|
|
149
149
|
if (propertyNameCompareResult !== 0) {
|
|
150
150
|
return propertyNameCompareResult;
|
|
151
151
|
}
|
|
@@ -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 } 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[0].imodelKey, rhs.instanceKeys[0].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(lhs.className, rhs.className);\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(lhs.properties[i].className, rhs.properties[i].className);\n if (classCompareResult !== 0) {\n return classCompareResult;\n }\n const nameCompareResult = compareStrings(lhs.properties[i].propertyName, rhs.properties[i].propertyName);\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(lhs.propertyClassName, rhs.propertyClassName);\n if (propertyClassNameCompareResult !== 0) {\n return propertyClassNameCompareResult;\n }\n const propertyNameCompareResult = compareStrings(lhs.propertyName, rhs.propertyName);\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(lhs.propertyClassName, rhs.propertyClassName);\n if (propertyClassNameCompareResult !== 0) {\n return propertyClassNameCompareResult;\n }\n const propertyNameCompareResult = compareStrings(lhs.propertyName, rhs.propertyName);\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\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,8 +1,7 @@
|
|
|
1
|
-
import "./internal/DisposePolyfill.js";
|
|
2
1
|
import { GenericInstanceFilter } from "@itwin/core-common";
|
|
3
2
|
import { Event, InstanceKey, IPrimitiveValueFormatter, Props } from "@itwin/presentation-shared";
|
|
4
|
-
import { HierarchyFilteringPath } from "./HierarchyFiltering.js";
|
|
5
3
|
import { HierarchyNode, ParentHierarchyNode } from "./HierarchyNode.js";
|
|
4
|
+
import { HierarchySearchPath } from "./HierarchySearch.js";
|
|
6
5
|
/**
|
|
7
6
|
* Props for the `HierarchyProvider.getNodes` call.
|
|
8
7
|
* @public
|
|
@@ -32,9 +31,9 @@ interface HierarchyChangedEventArgs {
|
|
|
32
31
|
formatterChange?: {
|
|
33
32
|
newFormatter: IPrimitiveValueFormatter | undefined;
|
|
34
33
|
};
|
|
35
|
-
/** Set when the hierarchy change was caused by a hierarchy
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
/** Set when the hierarchy change was caused by a hierarchy search change. */
|
|
35
|
+
searchChange?: {
|
|
36
|
+
newSearch: Props<HierarchyProvider["setHierarchySearch"]>;
|
|
38
37
|
};
|
|
39
38
|
}
|
|
40
39
|
/**
|
|
@@ -74,36 +73,19 @@ export interface HierarchyProvider {
|
|
|
74
73
|
*/
|
|
75
74
|
setFormatter(formatter: IPrimitiveValueFormatter | undefined): void;
|
|
76
75
|
/**
|
|
77
|
-
* Sets the hierarchy
|
|
78
|
-
* removes the
|
|
76
|
+
* Sets the hierarchy search used by this hierarchy provider. Setting to `undefined`
|
|
77
|
+
* removes the search.
|
|
79
78
|
*
|
|
80
|
-
* @note There's a difference between `undefined`
|
|
81
|
-
* former means no
|
|
79
|
+
* @note There's a difference between `undefined` search and search with empty paths list. The
|
|
80
|
+
* former means no search is applied, while the latter means the search is applied and it filters-out
|
|
82
81
|
* all hierarchy.
|
|
83
82
|
*
|
|
84
|
-
* @note Changing
|
|
83
|
+
* @note Changing search is expected to trigger the `hierarchyChanged` event with `searchChange` arg.
|
|
85
84
|
*/
|
|
86
|
-
|
|
85
|
+
setHierarchySearch(props: {
|
|
87
86
|
/** A list of node identifiers from root to target node. */
|
|
88
|
-
paths:
|
|
87
|
+
paths: HierarchySearchPath[];
|
|
89
88
|
} | undefined): void;
|
|
90
89
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Props for `mergeProviders` function.
|
|
93
|
-
* @public
|
|
94
|
-
*/
|
|
95
|
-
interface MergeHierarchyProvidersProps {
|
|
96
|
-
/** List of providers to merge. */
|
|
97
|
-
providers: HierarchyProvider[];
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Creates a single, merged, hierarchy provider from multiple given providers.
|
|
101
|
-
* @public
|
|
102
|
-
*/
|
|
103
|
-
export declare function mergeProviders({ providers }: MergeHierarchyProvidersProps): HierarchyProvider & {
|
|
104
|
-
/** @deprecated in 1.4. Use `[Symbol.dispose]` instead. */
|
|
105
|
-
dispose: () => void;
|
|
106
|
-
[Symbol.dispose]: () => void;
|
|
107
|
-
};
|
|
108
90
|
export {};
|
|
109
91
|
//# sourceMappingURL=HierarchyProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchyProvider.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyProvider.ts"],"names":[],"mappings":"AAKA,OAAO
|
|
1
|
+
{"version":3,"file":"HierarchyProvider.d.ts","sourceRoot":"","sources":["../../../src/hierarchies/HierarchyProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;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;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CAAC,CAAC;IAE7E;;;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,2DAA2D;QAC3D,KAAK,EAAE,mBAAmB,EAAE,CAAC;KAC9B,GACD,SAAS,GACZ,IAAI,CAAC;CACT"}
|