@itwin/presentation-frontend 5.0.0-dev.10 → 5.0.0-dev.102
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 +58 -1
- package/lib/cjs/package.json +1 -0
- package/lib/cjs/presentation-frontend/ConnectivityInformationProvider.d.ts +3 -3
- package/lib/cjs/presentation-frontend/ConnectivityInformationProvider.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/ConnectivityInformationProvider.js +11 -9
- package/lib/cjs/presentation-frontend/ConnectivityInformationProvider.js.map +1 -1
- package/lib/cjs/presentation-frontend/IModelConnectionInitialization.d.ts +13 -0
- package/lib/cjs/presentation-frontend/IModelConnectionInitialization.d.ts.map +1 -0
- package/lib/cjs/presentation-frontend/IModelConnectionInitialization.js +22 -0
- package/lib/cjs/presentation-frontend/IModelConnectionInitialization.js.map +1 -0
- package/lib/cjs/presentation-frontend/InternalSymbols.d.ts +6 -0
- package/lib/cjs/presentation-frontend/InternalSymbols.d.ts.map +1 -0
- package/lib/cjs/presentation-frontend/InternalSymbols.js +17 -0
- package/lib/cjs/presentation-frontend/InternalSymbols.js.map +1 -0
- package/lib/cjs/presentation-frontend/IpcRequestsHandler.d.ts +12 -3
- package/lib/cjs/presentation-frontend/IpcRequestsHandler.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/IpcRequestsHandler.js +7 -7
- package/lib/cjs/presentation-frontend/IpcRequestsHandler.js.map +1 -1
- package/lib/cjs/presentation-frontend/LocalizationHelper.d.ts +1 -1
- package/lib/cjs/presentation-frontend/LocalizationHelper.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/LocalizationHelper.js +7 -6
- package/lib/cjs/presentation-frontend/LocalizationHelper.js.map +1 -1
- package/lib/cjs/presentation-frontend/Presentation.d.ts +15 -14
- package/lib/cjs/presentation-frontend/Presentation.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/Presentation.js +31 -45
- package/lib/cjs/presentation-frontend/Presentation.js.map +1 -1
- package/lib/cjs/presentation-frontend/PresentationManager.d.ts +12 -23
- package/lib/cjs/presentation-frontend/PresentationManager.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/PresentationManager.js +77 -74
- package/lib/cjs/presentation-frontend/PresentationManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/RulesetManager.js +2 -4
- package/lib/cjs/presentation-frontend/RulesetManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/RulesetVariablesManager.d.ts +2 -4
- package/lib/cjs/presentation-frontend/RulesetVariablesManager.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/RulesetVariablesManager.js +6 -4
- package/lib/cjs/presentation-frontend/RulesetVariablesManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/StreamedResponseGenerator.d.ts +1 -1
- package/lib/cjs/presentation-frontend/StreamedResponseGenerator.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/StreamedResponseGenerator.js +1 -0
- package/lib/cjs/presentation-frontend/StreamedResponseGenerator.js.map +1 -1
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesManager.d.ts +9 -19
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesManager.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesManager.js +163 -153
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesStorage.d.ts +4 -5
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesStorage.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesStorage.js +27 -29
- package/lib/cjs/presentation-frontend/favorite-properties/FavoritePropertiesStorage.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/HiliteSetProvider.d.ts +3 -0
- package/lib/cjs/presentation-frontend/selection/HiliteSetProvider.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/selection/HiliteSetProvider.js +8 -2
- package/lib/cjs/presentation-frontend/selection/HiliteSetProvider.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/ISelectionProvider.d.ts +2 -1
- package/lib/cjs/presentation-frontend/selection/ISelectionProvider.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/selection/ISelectionProvider.js +1 -0
- package/lib/cjs/presentation-frontend/selection/ISelectionProvider.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.d.ts +5 -1
- package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.js +3 -0
- package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionHandler.d.ts +8 -5
- package/lib/cjs/presentation-frontend/selection/SelectionHandler.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionHandler.js +35 -13
- package/lib/cjs/presentation-frontend/selection/SelectionHandler.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionHelper.d.ts +2 -0
- package/lib/cjs/presentation-frontend/selection/SelectionHelper.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionHelper.js +3 -1
- package/lib/cjs/presentation-frontend/selection/SelectionHelper.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionManager.d.ts +31 -13
- package/lib/cjs/presentation-frontend/selection/SelectionManager.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionManager.js +216 -116
- package/lib/cjs/presentation-frontend/selection/SelectionManager.js.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.d.ts +11 -9
- package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.js +6 -11
- package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.js.map +1 -1
- package/lib/cjs/presentation-frontend.d.ts +15 -15
- package/lib/cjs/presentation-frontend.d.ts.map +1 -1
- package/lib/cjs/presentation-frontend.js +30 -29
- package/lib/cjs/presentation-frontend.js.map +1 -1
- package/lib/esm/presentation-frontend/ConnectivityInformationProvider.d.ts +3 -3
- package/lib/esm/presentation-frontend/ConnectivityInformationProvider.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/ConnectivityInformationProvider.js +11 -9
- package/lib/esm/presentation-frontend/ConnectivityInformationProvider.js.map +1 -1
- package/lib/esm/presentation-frontend/IModelConnectionInitialization.d.ts +13 -0
- package/lib/esm/presentation-frontend/IModelConnectionInitialization.d.ts.map +1 -0
- package/lib/esm/presentation-frontend/IModelConnectionInitialization.js +17 -0
- package/lib/esm/presentation-frontend/IModelConnectionInitialization.js.map +1 -0
- package/lib/esm/presentation-frontend/InternalSymbols.d.ts +6 -0
- package/lib/esm/presentation-frontend/InternalSymbols.d.ts.map +1 -0
- package/lib/esm/presentation-frontend/InternalSymbols.js +14 -0
- package/lib/esm/presentation-frontend/InternalSymbols.js.map +1 -0
- package/lib/esm/presentation-frontend/IpcRequestsHandler.d.ts +12 -3
- package/lib/esm/presentation-frontend/IpcRequestsHandler.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/IpcRequestsHandler.js +8 -8
- package/lib/esm/presentation-frontend/IpcRequestsHandler.js.map +1 -1
- package/lib/esm/presentation-frontend/LocalizationHelper.d.ts +1 -1
- package/lib/esm/presentation-frontend/LocalizationHelper.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/LocalizationHelper.js +3 -2
- package/lib/esm/presentation-frontend/LocalizationHelper.js.map +1 -1
- package/lib/esm/presentation-frontend/Presentation.d.ts +15 -14
- package/lib/esm/presentation-frontend/Presentation.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/Presentation.js +24 -38
- package/lib/esm/presentation-frontend/Presentation.js.map +1 -1
- package/lib/esm/presentation-frontend/PresentationManager.d.ts +12 -23
- package/lib/esm/presentation-frontend/PresentationManager.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/PresentationManager.js +66 -63
- package/lib/esm/presentation-frontend/PresentationManager.js.map +1 -1
- package/lib/esm/presentation-frontend/RulesetManager.js +2 -4
- package/lib/esm/presentation-frontend/RulesetManager.js.map +1 -1
- package/lib/esm/presentation-frontend/RulesetVariablesManager.d.ts +2 -4
- package/lib/esm/presentation-frontend/RulesetVariablesManager.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/RulesetVariablesManager.js +6 -4
- package/lib/esm/presentation-frontend/RulesetVariablesManager.js.map +1 -1
- package/lib/esm/presentation-frontend/StreamedResponseGenerator.d.ts +1 -1
- package/lib/esm/presentation-frontend/StreamedResponseGenerator.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/StreamedResponseGenerator.js +1 -0
- package/lib/esm/presentation-frontend/StreamedResponseGenerator.js.map +1 -1
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesManager.d.ts +9 -19
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesManager.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesManager.js +164 -154
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesManager.js.map +1 -1
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesStorage.d.ts +4 -5
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesStorage.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesStorage.js +27 -29
- package/lib/esm/presentation-frontend/favorite-properties/FavoritePropertiesStorage.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/HiliteSetProvider.d.ts +3 -0
- package/lib/esm/presentation-frontend/selection/HiliteSetProvider.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/selection/HiliteSetProvider.js +8 -2
- package/lib/esm/presentation-frontend/selection/HiliteSetProvider.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/ISelectionProvider.d.ts +2 -1
- package/lib/esm/presentation-frontend/selection/ISelectionProvider.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/selection/ISelectionProvider.js +1 -0
- package/lib/esm/presentation-frontend/selection/ISelectionProvider.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.d.ts +5 -1
- package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.js +3 -0
- package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionHandler.d.ts +8 -5
- package/lib/esm/presentation-frontend/selection/SelectionHandler.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionHandler.js +35 -13
- package/lib/esm/presentation-frontend/selection/SelectionHandler.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionHelper.d.ts +2 -0
- package/lib/esm/presentation-frontend/selection/SelectionHelper.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionHelper.js +3 -1
- package/lib/esm/presentation-frontend/selection/SelectionHelper.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionManager.d.ts +31 -13
- package/lib/esm/presentation-frontend/selection/SelectionManager.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionManager.js +202 -102
- package/lib/esm/presentation-frontend/selection/SelectionManager.js.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionScopesManager.d.ts +11 -9
- package/lib/esm/presentation-frontend/selection/SelectionScopesManager.d.ts.map +1 -1
- package/lib/esm/presentation-frontend/selection/SelectionScopesManager.js +7 -11
- package/lib/esm/presentation-frontend/selection/SelectionScopesManager.js.map +1 -1
- package/lib/esm/presentation-frontend.d.ts +15 -15
- package/lib/esm/presentation-frontend.d.ts.map +1 -1
- package/lib/esm/presentation-frontend.js +12 -15
- package/lib/esm/presentation-frontend.js.map +1 -1
- package/package.json +42 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationManager.d.ts","sourceRoot":"","sources":["../../../src/presentation-frontend/PresentationManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"PresentationManager.d.ts","sourceRoot":"","sources":["../../../src/presentation-frontend/PresentationManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,16 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { BeEvent, CompressedId64Set, OrderedId64Iterable } from "@itwin/core-bentley";
|
|
9
9
|
import { IModelApp, IpcApp } from "@itwin/core-frontend";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { FrontendLocalizationHelper } from "./LocalizationHelper";
|
|
13
|
-
import { RulesetManagerImpl } from "./RulesetManager";
|
|
14
|
-
import { RulesetVariablesManagerImpl } from "./RulesetVariablesManager";
|
|
15
|
-
import { StreamedResponseGenerator } from "./StreamedResponseGenerator";
|
|
10
|
+
import { Content, ContentFlags, DefaultContentDisplayTypes, Descriptor, Item, Key, KeySet, KoqPropertyValueFormatter, RulesetVariable, SelectClassInfo, VariableValueTypes, } from "@itwin/presentation-common";
|
|
11
|
+
import { buildElementProperties, ContentFormatter, ContentPropertyValueFormatter, PresentationIpcEvents, RpcRequestsHandler, } from "@itwin/presentation-common/internal";
|
|
16
12
|
import { TRANSIENT_ELEMENT_CLASSNAME } from "@itwin/unified-selection";
|
|
13
|
+
import { IpcRequestsHandler } from "./IpcRequestsHandler.js";
|
|
14
|
+
import { FrontendLocalizationHelper } from "./LocalizationHelper.js";
|
|
15
|
+
import { RulesetManagerImpl } from "./RulesetManager.js";
|
|
16
|
+
import { RulesetVariablesManagerImpl } from "./RulesetVariablesManager.js";
|
|
17
|
+
import { StreamedResponseGenerator } from "./StreamedResponseGenerator.js";
|
|
18
|
+
import { ensureIModelInitialized, startIModelInitialization } from "./IModelConnectionInitialization.js";
|
|
19
|
+
import { _presentation_manager_ipcRequestsHandler, _presentation_manager_rpcRequestsHandler } from "./InternalSymbols.js";
|
|
17
20
|
/**
|
|
18
21
|
* Frontend Presentation manager which basically just forwards all calls to
|
|
19
22
|
* the backend implementation.
|
|
@@ -21,6 +24,23 @@ import { TRANSIENT_ELEMENT_CLASSNAME } from "@itwin/unified-selection";
|
|
|
21
24
|
* @public
|
|
22
25
|
*/
|
|
23
26
|
export class PresentationManager {
|
|
27
|
+
_requestsHandler;
|
|
28
|
+
_rulesets;
|
|
29
|
+
_localizationHelper;
|
|
30
|
+
_explicitActiveUnitSystem;
|
|
31
|
+
_rulesetVars;
|
|
32
|
+
_clearEventListener;
|
|
33
|
+
_schemaContextProvider;
|
|
34
|
+
_defaultFormats;
|
|
35
|
+
_ipcRequestsHandler;
|
|
36
|
+
/**
|
|
37
|
+
* An event raised when hierarchies created using specific ruleset change
|
|
38
|
+
*/
|
|
39
|
+
onIModelHierarchyChanged = new BeEvent();
|
|
40
|
+
/**
|
|
41
|
+
* An event raised when content created using specific ruleset changes
|
|
42
|
+
*/
|
|
43
|
+
onIModelContentChanged = new BeEvent();
|
|
24
44
|
/**
|
|
25
45
|
* Get / set active unit system used to format property values with units.
|
|
26
46
|
*
|
|
@@ -35,24 +55,13 @@ export class PresentationManager {
|
|
|
35
55
|
this._explicitActiveUnitSystem = value;
|
|
36
56
|
}
|
|
37
57
|
constructor(props) {
|
|
38
|
-
/**
|
|
39
|
-
* An event raised when hierarchies created using specific ruleset change
|
|
40
|
-
*/
|
|
41
|
-
this.onIModelHierarchyChanged = new BeEvent();
|
|
42
|
-
/**
|
|
43
|
-
* An event raised when content created using specific ruleset changes
|
|
44
|
-
*/
|
|
45
|
-
this.onIModelContentChanged = new BeEvent();
|
|
46
|
-
this.onUpdate = (_evt, report) => {
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
48
|
-
this.handleUpdateAsync(report);
|
|
49
|
-
};
|
|
50
58
|
if (props) {
|
|
51
59
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
52
60
|
this._explicitActiveUnitSystem = props.activeUnitSystem;
|
|
53
61
|
}
|
|
54
62
|
this._requestsHandler =
|
|
55
|
-
props?.rpcRequestsHandler ??
|
|
63
|
+
props?.rpcRequestsHandler ??
|
|
64
|
+
new RpcRequestsHandler(props ? { clientId: props.clientId, timeout: props.requestTimeout } : undefined);
|
|
56
65
|
this._rulesetVars = new Map();
|
|
57
66
|
this._rulesets = RulesetManagerImpl.create();
|
|
58
67
|
this._localizationHelper = new FrontendLocalizationHelper(props?.activeLocale);
|
|
@@ -71,22 +80,31 @@ export class PresentationManager {
|
|
|
71
80
|
set activeLocale(locale) {
|
|
72
81
|
this._localizationHelper.locale = locale;
|
|
73
82
|
}
|
|
74
|
-
dispose() {
|
|
83
|
+
[Symbol.dispose]() {
|
|
75
84
|
if (this._clearEventListener) {
|
|
76
85
|
this._clearEventListener();
|
|
77
86
|
this._clearEventListener = undefined;
|
|
78
87
|
}
|
|
79
88
|
}
|
|
89
|
+
/** @deprecated in 5.0 Use [Symbol.dispose] instead. */
|
|
90
|
+
/* c8 ignore next 3 */
|
|
91
|
+
dispose() {
|
|
92
|
+
this[Symbol.dispose]();
|
|
93
|
+
}
|
|
94
|
+
onUpdate = (_evt, report) => {
|
|
95
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
96
|
+
this.handleUpdateAsync(report);
|
|
97
|
+
};
|
|
80
98
|
/** @note This is only called in native apps after changes in iModels */
|
|
81
99
|
async handleUpdateAsync(report) {
|
|
82
100
|
for (const imodelKey in report) {
|
|
83
|
-
|
|
101
|
+
/* c8 ignore next 3 */
|
|
84
102
|
if (!report.hasOwnProperty(imodelKey)) {
|
|
85
103
|
continue;
|
|
86
104
|
}
|
|
87
105
|
const imodelReport = report[imodelKey];
|
|
88
106
|
for (const rulesetId in imodelReport) {
|
|
89
|
-
|
|
107
|
+
/* c8 ignore next 3 */
|
|
90
108
|
if (!imodelReport.hasOwnProperty(rulesetId)) {
|
|
91
109
|
continue;
|
|
92
110
|
}
|
|
@@ -100,17 +118,6 @@ export class PresentationManager {
|
|
|
100
118
|
}
|
|
101
119
|
}
|
|
102
120
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Function that is called when a new IModelConnection is used to retrieve data.
|
|
105
|
-
* @internal
|
|
106
|
-
*/
|
|
107
|
-
startIModelInitialization(_) { }
|
|
108
|
-
/**
|
|
109
|
-
* Function that should be called to finish initialization that was started at [[PresentationManager.startIModelInitialization]].
|
|
110
|
-
* Can be removed when [[FavoritePropertiesManager.has]] and [[FavoritePropertiesManager.sortFields]] are removed.
|
|
111
|
-
* @internal
|
|
112
|
-
*/
|
|
113
|
-
async ensureIModelInitialized(_) { }
|
|
114
121
|
/**
|
|
115
122
|
* Create a new PresentationManager instance
|
|
116
123
|
* @param props Optional properties used to configure the manager
|
|
@@ -119,11 +126,11 @@ export class PresentationManager {
|
|
|
119
126
|
return new PresentationManager(props);
|
|
120
127
|
}
|
|
121
128
|
/** @internal */
|
|
122
|
-
get
|
|
129
|
+
get [_presentation_manager_rpcRequestsHandler]() {
|
|
123
130
|
return this._requestsHandler;
|
|
124
131
|
}
|
|
125
132
|
/** @internal */
|
|
126
|
-
get
|
|
133
|
+
get [_presentation_manager_ipcRequestsHandler]() {
|
|
127
134
|
return this._ipcRequestsHandler;
|
|
128
135
|
}
|
|
129
136
|
/**
|
|
@@ -189,7 +196,7 @@ export class PresentationManager {
|
|
|
189
196
|
}
|
|
190
197
|
/** Returns an iterator that polls nodes asynchronously. */
|
|
191
198
|
async getNodesIterator(requestOptions) {
|
|
192
|
-
|
|
199
|
+
startIModelInitialization(requestOptions.imodel);
|
|
193
200
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
194
201
|
const rpcOptions = this.toRpcTokenOptions({ ...options });
|
|
195
202
|
const generator = new StreamedResponseGenerator({
|
|
@@ -198,8 +205,7 @@ export class PresentationManager {
|
|
|
198
205
|
const result = await this._requestsHandler.getPagedNodes({ ...rpcOptions, paging });
|
|
199
206
|
return {
|
|
200
207
|
total: result.total,
|
|
201
|
-
|
|
202
|
-
items: this._localizationHelper.getLocalizedNodes(result.items.map(Node.fromJSON)),
|
|
208
|
+
items: this._localizationHelper.getLocalizedNodes(result.items),
|
|
203
209
|
};
|
|
204
210
|
},
|
|
205
211
|
});
|
|
@@ -215,7 +221,7 @@ export class PresentationManager {
|
|
|
215
221
|
}
|
|
216
222
|
/** Retrieves nodes count. */
|
|
217
223
|
async getNodesCount(requestOptions) {
|
|
218
|
-
|
|
224
|
+
startIModelInitialization(requestOptions.imodel);
|
|
219
225
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
220
226
|
const rpcOptions = this.toRpcTokenOptions({ ...options });
|
|
221
227
|
return this._requestsHandler.getNodesCount(rpcOptions);
|
|
@@ -236,7 +242,7 @@ export class PresentationManager {
|
|
|
236
242
|
* @public
|
|
237
243
|
*/
|
|
238
244
|
async getNodesDescriptor(requestOptions) {
|
|
239
|
-
|
|
245
|
+
startIModelInitialization(requestOptions.imodel);
|
|
240
246
|
try {
|
|
241
247
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
242
248
|
const rpcOptions = this.toRpcTokenOptions({ ...options });
|
|
@@ -245,25 +251,23 @@ export class PresentationManager {
|
|
|
245
251
|
return descriptor ? this._localizationHelper.getLocalizedContentDescriptor(descriptor) : undefined;
|
|
246
252
|
}
|
|
247
253
|
finally {
|
|
248
|
-
await
|
|
254
|
+
await ensureIModelInitialized(requestOptions.imodel);
|
|
249
255
|
}
|
|
250
256
|
}
|
|
251
257
|
/** Retrieves paths from root nodes to children nodes according to specified keys. Intersecting paths will be merged. */
|
|
252
258
|
async getNodePaths(requestOptions) {
|
|
253
|
-
|
|
259
|
+
startIModelInitialization(requestOptions.imodel);
|
|
254
260
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
255
261
|
const rpcOptions = this.toRpcTokenOptions({ ...options });
|
|
256
262
|
const result = await this._requestsHandler.getNodePaths(rpcOptions);
|
|
257
|
-
|
|
258
|
-
return result.map(NodePathElement.fromJSON).map((npe) => this._localizationHelper.getLocalizedNodePathElement(npe));
|
|
263
|
+
return result.map((npe) => this._localizationHelper.getLocalizedNodePathElement(npe));
|
|
259
264
|
}
|
|
260
265
|
/** Retrieves paths from root nodes to nodes containing filter text in their label. */
|
|
261
266
|
async getFilteredNodePaths(requestOptions) {
|
|
262
|
-
|
|
267
|
+
startIModelInitialization(requestOptions.imodel);
|
|
263
268
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
264
269
|
const result = await this._requestsHandler.getFilteredNodePaths(this.toRpcTokenOptions(options));
|
|
265
|
-
|
|
266
|
-
return result.map(NodePathElement.fromJSON).map((npe) => this._localizationHelper.getLocalizedNodePathElement(npe));
|
|
270
|
+
return result.map((npe) => this._localizationHelper.getLocalizedNodePathElement(npe));
|
|
267
271
|
}
|
|
268
272
|
/**
|
|
269
273
|
* Get information about the sources of content when building it for specific ECClasses. Sources involve classes of the primary select instance,
|
|
@@ -271,14 +275,14 @@ export class PresentationManager {
|
|
|
271
275
|
* @public
|
|
272
276
|
*/
|
|
273
277
|
async getContentSources(requestOptions) {
|
|
274
|
-
|
|
278
|
+
startIModelInitialization(requestOptions.imodel);
|
|
275
279
|
const rpcOptions = this.toRpcTokenOptions(requestOptions);
|
|
276
280
|
const result = await this._requestsHandler.getContentSources(rpcOptions);
|
|
277
|
-
return SelectClassInfo.
|
|
281
|
+
return result.sources.map((sourceJson) => SelectClassInfo.fromCompressedJSON(sourceJson, result.classesMap));
|
|
278
282
|
}
|
|
279
283
|
/** Retrieves the content descriptor which describes the content and can be used to customize it. */
|
|
280
284
|
async getContentDescriptor(requestOptions) {
|
|
281
|
-
|
|
285
|
+
startIModelInitialization(requestOptions.imodel);
|
|
282
286
|
try {
|
|
283
287
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
284
288
|
const rpcOptions = this.toRpcTokenOptions({
|
|
@@ -290,12 +294,12 @@ export class PresentationManager {
|
|
|
290
294
|
return descriptor ? this._localizationHelper.getLocalizedContentDescriptor(descriptor) : undefined;
|
|
291
295
|
}
|
|
292
296
|
finally {
|
|
293
|
-
await
|
|
297
|
+
await ensureIModelInitialized(requestOptions.imodel);
|
|
294
298
|
}
|
|
295
299
|
}
|
|
296
300
|
/** Retrieves overall content set size. */
|
|
297
301
|
async getContentSetSize(requestOptions) {
|
|
298
|
-
|
|
302
|
+
startIModelInitialization(requestOptions.imodel);
|
|
299
303
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
300
304
|
const rpcOptions = this.toRpcTokenOptions({
|
|
301
305
|
...options,
|
|
@@ -329,7 +333,7 @@ export class PresentationManager {
|
|
|
329
333
|
descriptor = Descriptor.fromJSON(firstPageResponse?.descriptor);
|
|
330
334
|
firstPage = firstPageResponse?.contentSet;
|
|
331
335
|
}
|
|
332
|
-
|
|
336
|
+
/* c8 ignore next 3 */
|
|
333
337
|
if (!descriptor) {
|
|
334
338
|
return undefined;
|
|
335
339
|
}
|
|
@@ -358,12 +362,12 @@ export class PresentationManager {
|
|
|
358
362
|
}
|
|
359
363
|
/** Retrieves a content descriptor, item count and async generator for the items themselves. */
|
|
360
364
|
async getContentIterator(requestOptions) {
|
|
361
|
-
|
|
365
|
+
startIModelInitialization(requestOptions.imodel);
|
|
362
366
|
const response = await this.getContentIteratorInternal(requestOptions);
|
|
363
367
|
if (!response) {
|
|
364
368
|
return undefined;
|
|
365
369
|
}
|
|
366
|
-
await
|
|
370
|
+
await ensureIModelInitialized(requestOptions.imodel);
|
|
367
371
|
return response;
|
|
368
372
|
}
|
|
369
373
|
/**
|
|
@@ -392,7 +396,7 @@ export class PresentationManager {
|
|
|
392
396
|
}
|
|
393
397
|
/** Returns an iterator that asynchronously polls distinct values of specific field from the content. */
|
|
394
398
|
async getDistinctValuesIterator(requestOptions) {
|
|
395
|
-
|
|
399
|
+
startIModelInitialization(requestOptions.imodel);
|
|
396
400
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
397
401
|
const rpcOptions = {
|
|
398
402
|
...this.toRpcTokenOptions(options),
|
|
@@ -405,8 +409,7 @@ export class PresentationManager {
|
|
|
405
409
|
const response = await this._requestsHandler.getPagedDistinctValues({ ...rpcOptions, paging });
|
|
406
410
|
return {
|
|
407
411
|
total: response.total,
|
|
408
|
-
|
|
409
|
-
items: response.items.map((x) => this._localizationHelper.getLocalizedDisplayValueGroup(DisplayValueGroup.fromJSON(x))),
|
|
412
|
+
items: response.items.map((x) => this._localizationHelper.getLocalizedDisplayValueGroup(x)),
|
|
410
413
|
};
|
|
411
414
|
},
|
|
412
415
|
});
|
|
@@ -428,7 +431,7 @@ export class PresentationManager {
|
|
|
428
431
|
* @public
|
|
429
432
|
*/
|
|
430
433
|
async getElementProperties(requestOptions) {
|
|
431
|
-
|
|
434
|
+
startIModelInitialization(requestOptions.imodel);
|
|
432
435
|
const { elementId, contentParser, ...optionsNoElementId } = requestOptions;
|
|
433
436
|
const parser = contentParser ?? buildElementProperties;
|
|
434
437
|
const iter = await this.getContentIterator({
|
|
@@ -450,7 +453,7 @@ export class PresentationManager {
|
|
|
450
453
|
* @public
|
|
451
454
|
*/
|
|
452
455
|
async getContentInstanceKeys(requestOptions) {
|
|
453
|
-
|
|
456
|
+
startIModelInitialization(requestOptions.imodel);
|
|
454
457
|
const options = await this.addRulesetAndVariablesToOptions(requestOptions);
|
|
455
458
|
const rpcOptions = {
|
|
456
459
|
...this.toRpcTokenOptions(options),
|
|
@@ -481,14 +484,14 @@ export class PresentationManager {
|
|
|
481
484
|
}
|
|
482
485
|
/** Retrieves display label definition of specific item. */
|
|
483
486
|
async getDisplayLabelDefinition(requestOptions) {
|
|
484
|
-
|
|
487
|
+
startIModelInitialization(requestOptions.imodel);
|
|
485
488
|
const rpcOptions = this.toRpcTokenOptions({ ...requestOptions });
|
|
486
489
|
const result = await this._requestsHandler.getDisplayLabelDefinition(rpcOptions);
|
|
487
490
|
return this._localizationHelper.getLocalizedLabelDefinition(result);
|
|
488
491
|
}
|
|
489
492
|
/** Retrieves display label definition of specific items. */
|
|
490
493
|
async getDisplayLabelDefinitionsIterator(requestOptions) {
|
|
491
|
-
|
|
494
|
+
startIModelInitialization(requestOptions.imodel);
|
|
492
495
|
const rpcOptions = this.toRpcTokenOptions({ ...requestOptions });
|
|
493
496
|
const generator = new StreamedResponseGenerator({
|
|
494
497
|
...requestOptions,
|
|
@@ -524,7 +527,7 @@ const stripTransientElementKeys = (keys) => {
|
|
|
524
527
|
copy.add(keys, (key) => {
|
|
525
528
|
// the callback is not going to be called with EntityProps as KeySet converts them
|
|
526
529
|
// to InstanceKeys, but we want to keep the EntityProps case for correctness
|
|
527
|
-
|
|
530
|
+
/* c8 ignore next 3 */
|
|
528
531
|
const isTransient = (Key.isInstanceKey(key) && key.className === TRANSIENT_ELEMENT_CLASSNAME) ||
|
|
529
532
|
(Key.isEntityProps(key) && key.classFullName === TRANSIENT_ELEMENT_CLASSNAME);
|
|
530
533
|
return !isTransient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationManager.js","sourceRoot":"","sources":["../../../src/presentation-frontend/PresentationManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { BeEvent, CompressedId64Set, IDisposable, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\nimport { IModelApp, IModelConnection, IpcApp } from \"@itwin/core-frontend\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport { SchemaContext } from \"@itwin/ecschema-metadata\";\r\nimport {\r\n buildElementProperties,\r\n ClientDiagnosticsAttribute,\r\n Content,\r\n ContentDescriptorRequestOptions,\r\n ContentFlags,\r\n ContentFormatter,\r\n ContentInstanceKeysRequestOptions,\r\n ContentPropertyValueFormatter,\r\n ContentRequestOptions,\r\n ContentSourcesRequestOptions,\r\n ContentUpdateInfo,\r\n DefaultContentDisplayTypes,\r\n Descriptor,\r\n DescriptorOverrides,\r\n DisplayLabelRequestOptions,\r\n DisplayLabelsRequestOptions,\r\n DisplayValueGroup,\r\n DistinctValuesRequestOptions,\r\n ElementProperties,\r\n FilterByInstancePathsHierarchyRequestOptions,\r\n FilterByTextHierarchyRequestOptions,\r\n FormatsMap,\r\n HierarchyLevelDescriptorRequestOptions,\r\n HierarchyRequestOptions,\r\n HierarchyUpdateInfo,\r\n InstanceKey,\r\n Item,\r\n ItemJSON,\r\n Key,\r\n KeySet,\r\n KoqPropertyValueFormatter,\r\n LabelDefinition,\r\n Node,\r\n NodeKey,\r\n NodePathElement,\r\n Paged,\r\n PagedResponse,\r\n PageOptions,\r\n PresentationIpcEvents,\r\n RpcRequestsHandler,\r\n Ruleset,\r\n RulesetVariable,\r\n SelectClassInfo,\r\n SingleElementPropertiesRequestOptions,\r\n UpdateInfo,\r\n VariableValueTypes,\r\n} from \"@itwin/presentation-common\";\r\nimport { IpcRequestsHandler } from \"./IpcRequestsHandler\";\r\nimport { FrontendLocalizationHelper } from \"./LocalizationHelper\";\r\nimport { RulesetManager, RulesetManagerImpl } from \"./RulesetManager\";\r\nimport { RulesetVariablesManager, RulesetVariablesManagerImpl } from \"./RulesetVariablesManager\";\r\nimport { StreamedResponseGenerator } from \"./StreamedResponseGenerator\";\r\nimport { TRANSIENT_ELEMENT_CLASSNAME } from \"@itwin/unified-selection\";\r\n\r\n/**\r\n * Data structure that describes IModel hierarchy change event arguments.\r\n * @public\r\n */\r\nexport interface IModelHierarchyChangeEventArgs {\r\n /** Id of ruleset that was used to create hierarchy. */\r\n rulesetId: string;\r\n /** Hierarchy changes info. */\r\n updateInfo: HierarchyUpdateInfo;\r\n /** Key of iModel that was used to create hierarchy. It matches [[IModelConnection.key]] property. */\r\n imodelKey: string;\r\n}\r\n\r\n/**\r\n * Data structure that describes iModel content change event arguments.\r\n * @public\r\n */\r\nexport interface IModelContentChangeEventArgs {\r\n /** Id of ruleset that was used to create content. */\r\n rulesetId: string;\r\n /** Content changes info. */\r\n updateInfo: ContentUpdateInfo;\r\n /** Key of iModel that was used to create content. It matches [[IModelConnection.key]] property. */\r\n imodelKey: string;\r\n}\r\n\r\n/**\r\n * Options for requests that can return multiple pages of items concurrently.\r\n * @public\r\n */\r\nexport type MultipleValuesRequestOptions = Paged<{\r\n /**\r\n * Max number of requests that should be made to the backend to fulfill the whole request.\r\n * `undefined` means no limit, so in that case all requests are sent at once.\r\n */\r\n maxParallelRequests?: number;\r\n\r\n /**\r\n * Size of a single batch when fetching data through multiple requests. If not set,\r\n * the fall back is requested page size. If the page size is not set, the backend\r\n * decides how many items to return.\r\n */\r\n batchSize?: number;\r\n}>;\r\n\r\n/**\r\n * Options for requests that retrieve nodes.\r\n * @public\r\n */\r\nexport type GetNodesRequestOptions = HierarchyRequestOptions<IModelConnection, NodeKey, RulesetVariable> & ClientDiagnosticsAttribute;\r\n\r\n/**\r\n * Options for requests that retrieve content.\r\n * @public\r\n */\r\nexport type GetContentRequestOptions = ContentRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable> &\r\n ClientDiagnosticsAttribute;\r\n\r\n/**\r\n * Options for requests that retrieve distinct values.\r\n * @public\r\n */\r\nexport type GetDistinctValuesRequestOptions = DistinctValuesRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable> &\r\n ClientDiagnosticsAttribute;\r\n\r\n/**\r\n * Properties used to configure [[PresentationManager]]\r\n * @public\r\n */\r\nexport interface PresentationManagerProps {\r\n /**\r\n * Sets the active locale to use when localizing presentation-related\r\n * strings. It can later be changed through [[PresentationManager]].\r\n */\r\n activeLocale?: string;\r\n\r\n /**\r\n * Sets the active unit system to use for formatting property values with\r\n * units. The value can later be changed through [[PresentationManager.activeUnitSystem]] setter or\r\n * overriden for each request through request parameters. If not set, `IModelApp.quantityFormatter.activeUnitSystem`\r\n * is used by default.\r\n *\r\n * @deprecated in 4.0. Use [IModelApp.quantityFormatter]($core-frontend) to set the active unit system.\r\n */\r\n activeUnitSystem?: UnitSystemKey;\r\n\r\n /**\r\n * ID used to identify client that requests data. Generally, clients should\r\n * store this ID in their local storage so the ID can be reused across\r\n * sessions - this allows reusing some caches.\r\n *\r\n * Defaults to a unique GUID as a client id.\r\n */\r\n clientId?: string;\r\n\r\n /**\r\n * Timeout (in milliseconds) for how long we're going to wait for RPC request to be fulfilled before throwing\r\n * a timeout error.\r\n *\r\n * Defaults to 10 minutes.\r\n */\r\n requestTimeout?: number;\r\n\r\n /**\r\n * Callback that provides [SchemaContext]($ecschema-metadata) for supplied [IModelConnection]($core-frontend).\r\n * [SchemaContext]($ecschema-metadata) is used for getting metadata required for values formatting.\r\n */\r\n schemaContextProvider?: (imodel: IModelConnection) => SchemaContext;\r\n\r\n /**\r\n * A map of default unit formats to use for formatting properties that don't have a presentation format\r\n * in requested unit system.\r\n *\r\n * @note Only has effect when frontend value formatting is enabled by supplying the `schemaContextProvider` prop.\r\n */\r\n defaultFormats?: FormatsMap;\r\n\r\n /** @internal */\r\n rpcRequestsHandler?: RpcRequestsHandler;\r\n\r\n /** @internal */\r\n ipcRequestsHandler?: IpcRequestsHandler;\r\n}\r\n\r\n/**\r\n * Frontend Presentation manager which basically just forwards all calls to\r\n * the backend implementation.\r\n *\r\n * @public\r\n */\r\nexport class PresentationManager implements IDisposable {\r\n private _requestsHandler: RpcRequestsHandler;\r\n private _rulesets: RulesetManager;\r\n private _localizationHelper: FrontendLocalizationHelper;\r\n private _explicitActiveUnitSystem: UnitSystemKey | undefined;\r\n private _rulesetVars: Map<string, RulesetVariablesManager>;\r\n private _clearEventListener?: () => void;\r\n private _schemaContextProvider?: (imodel: IModelConnection) => SchemaContext;\r\n private _defaultFormats?: FormatsMap;\r\n private _ipcRequestsHandler?: IpcRequestsHandler;\r\n\r\n /**\r\n * An event raised when hierarchies created using specific ruleset change\r\n */\r\n public onIModelHierarchyChanged = new BeEvent<(args: IModelHierarchyChangeEventArgs) => void>();\r\n\r\n /**\r\n * An event raised when content created using specific ruleset changes\r\n */\r\n public onIModelContentChanged = new BeEvent<(args: IModelContentChangeEventArgs) => void>();\r\n\r\n /**\r\n * Get / set active unit system used to format property values with units.\r\n *\r\n * @deprecated in 4.0. `IModelApp.quantityFormatter` should be used to get/set the active unit system. At the moment\r\n * [[PresentationManager]] allows overriding it, but returns `IModelApp.quantityFormatter.activeUnitSystem` if override\r\n * is not set.\r\n */\r\n public get activeUnitSystem(): UnitSystemKey {\r\n return this._explicitActiveUnitSystem ?? IModelApp.quantityFormatter.activeUnitSystem;\r\n }\r\n public set activeUnitSystem(value: UnitSystemKey | undefined) {\r\n this._explicitActiveUnitSystem = value;\r\n }\r\n\r\n private constructor(props?: PresentationManagerProps) {\r\n if (props) {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n this._explicitActiveUnitSystem = props.activeUnitSystem;\r\n }\r\n\r\n this._requestsHandler =\r\n props?.rpcRequestsHandler ?? new RpcRequestsHandler(props ? { clientId: props.clientId, timeout: props.requestTimeout } : undefined);\r\n this._rulesetVars = new Map<string, RulesetVariablesManager>();\r\n this._rulesets = RulesetManagerImpl.create();\r\n this._localizationHelper = new FrontendLocalizationHelper(props?.activeLocale);\r\n this._schemaContextProvider = props?.schemaContextProvider;\r\n this._defaultFormats = props?.defaultFormats;\r\n\r\n if (IpcApp.isValid) {\r\n // Ipc only works in ipc apps, so the `onUpdate` callback will only be called there.\r\n this._clearEventListener = IpcApp.addListener(PresentationIpcEvents.Update, this.onUpdate);\r\n this._ipcRequestsHandler = props?.ipcRequestsHandler ?? new IpcRequestsHandler(this._requestsHandler.clientId);\r\n }\r\n }\r\n\r\n /** Get / set active locale used for localizing presentation data */\r\n public get activeLocale(): string | undefined {\r\n return this._localizationHelper.locale;\r\n }\r\n public set activeLocale(locale: string | undefined) {\r\n this._localizationHelper.locale = locale;\r\n }\r\n\r\n public dispose() {\r\n if (this._clearEventListener) {\r\n this._clearEventListener();\r\n this._clearEventListener = undefined;\r\n }\r\n }\r\n\r\n private onUpdate = (_evt: Event, report: UpdateInfo) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.handleUpdateAsync(report);\r\n };\r\n\r\n /** @note This is only called in native apps after changes in iModels */\r\n private async handleUpdateAsync(report: UpdateInfo) {\r\n for (const imodelKey in report) {\r\n // istanbul ignore if\r\n if (!report.hasOwnProperty(imodelKey)) {\r\n continue;\r\n }\r\n\r\n const imodelReport = report[imodelKey];\r\n for (const rulesetId in imodelReport) {\r\n // istanbul ignore if\r\n if (!imodelReport.hasOwnProperty(rulesetId)) {\r\n continue;\r\n }\r\n\r\n const updateInfo = imodelReport[rulesetId];\r\n if (updateInfo.content) {\r\n this.onIModelContentChanged.raiseEvent({ rulesetId, updateInfo: updateInfo.content, imodelKey });\r\n }\r\n if (updateInfo.hierarchy) {\r\n this.onIModelHierarchyChanged.raiseEvent({ rulesetId, updateInfo: updateInfo.hierarchy, imodelKey });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function that is called when a new IModelConnection is used to retrieve data.\r\n * @internal\r\n */\r\n public startIModelInitialization(_: IModelConnection) {}\r\n\r\n /**\r\n * Function that should be called to finish initialization that was started at [[PresentationManager.startIModelInitialization]].\r\n * Can be removed when [[FavoritePropertiesManager.has]] and [[FavoritePropertiesManager.sortFields]] are removed.\r\n * @internal\r\n */\r\n public async ensureIModelInitialized(_: IModelConnection) {}\r\n\r\n /**\r\n * Create a new PresentationManager instance\r\n * @param props Optional properties used to configure the manager\r\n */\r\n public static create(props?: PresentationManagerProps) {\r\n return new PresentationManager(props);\r\n }\r\n\r\n /** @internal */\r\n public get rpcRequestsHandler() {\r\n return this._requestsHandler;\r\n }\r\n\r\n /** @internal */\r\n public get ipcRequestsHandler() {\r\n return this._ipcRequestsHandler;\r\n }\r\n\r\n /**\r\n * Get rulesets manager\r\n */\r\n public rulesets() {\r\n return this._rulesets;\r\n }\r\n\r\n /**\r\n * Get ruleset variables manager for specific ruleset\r\n * @param rulesetId Id of the ruleset to get the vars manager for\r\n */\r\n public vars(rulesetId: string) {\r\n if (!this._rulesetVars.has(rulesetId)) {\r\n const varsManager = new RulesetVariablesManagerImpl(rulesetId, this._ipcRequestsHandler);\r\n this._rulesetVars.set(rulesetId, varsManager);\r\n }\r\n return this._rulesetVars.get(rulesetId)!;\r\n }\r\n\r\n private toRpcTokenOptions<TOptions extends { imodel: IModelConnection; locale?: string; unitSystem?: UnitSystemKey; rulesetVariables?: RulesetVariable[] }>(\r\n requestOptions: TOptions,\r\n ) {\r\n // 1. put default `locale` and `unitSystem`\r\n // 2. put all `requestOptions` members (if `locale` or `unitSystem` are set, they'll override the defaults put at #1)\r\n // 3. put `imodel` of type `IModelRpcProps` which overwrites the `imodel` from `requestOptions` put at #2\r\n const defaultOptions: Pick<TOptions, \"locale\" | \"unitSystem\"> = {};\r\n if (this.activeLocale) {\r\n defaultOptions.locale = this.activeLocale;\r\n }\r\n defaultOptions.unitSystem = this.activeUnitSystem; // eslint-disable-line @typescript-eslint/no-deprecated\r\n\r\n const { imodel, rulesetVariables, ...rpcRequestOptions } = requestOptions;\r\n return {\r\n ...defaultOptions,\r\n ...rpcRequestOptions,\r\n ...(rulesetVariables ? { rulesetVariables: rulesetVariables.map(RulesetVariable.toJSON) } : {}),\r\n imodel: imodel.getRpcProps(),\r\n };\r\n }\r\n\r\n private async addRulesetAndVariablesToOptions<TOptions extends { rulesetOrId: Ruleset | string; rulesetVariables?: RulesetVariable[] }>(options: TOptions) {\r\n const { rulesetOrId, rulesetVariables } = options;\r\n let foundRulesetOrId: Ruleset | string;\r\n if (typeof rulesetOrId === \"object\") {\r\n foundRulesetOrId = rulesetOrId;\r\n } else {\r\n const foundRuleset = await this._rulesets.get(rulesetOrId);\r\n foundRulesetOrId = foundRuleset ? foundRuleset.toJSON() : rulesetOrId;\r\n }\r\n const rulesetId = typeof foundRulesetOrId === \"object\" ? foundRulesetOrId.id : foundRulesetOrId;\r\n\r\n // All Id64Array variable values must be sorted for serialization to JSON to work. RulesetVariablesManager\r\n // sorts them before storing, so that part is taken care of, but we need to ensure that variables coming from\r\n // request options are also sorted.\r\n const variables = (rulesetVariables ?? []).map((variable) => {\r\n if (variable.type === VariableValueTypes.Id64Array) {\r\n return { ...variable, value: OrderedId64Iterable.sortArray(variable.value) };\r\n }\r\n return variable;\r\n });\r\n if (!this._ipcRequestsHandler) {\r\n // only need to add variables from variables manager if there's no IPC\r\n // handler - if there is one, the variables are already known by the backend\r\n variables.push(...this.vars(rulesetId).getAllVariables());\r\n }\r\n\r\n return { ...options, rulesetOrId: foundRulesetOrId, rulesetVariables: variables };\r\n }\r\n\r\n /** Returns an iterator that polls nodes asynchronously. */\r\n public async getNodesIterator(\r\n requestOptions: GetNodesRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ total: number; items: AsyncIterableIterator<Node> }> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options });\r\n\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: async (paging) => {\r\n const result = await this._requestsHandler.getPagedNodes({ ...rpcOptions, paging });\r\n return {\r\n total: result.total,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n items: this._localizationHelper.getLocalizedNodes(result.items.map(Node.fromJSON)),\r\n };\r\n },\r\n });\r\n\r\n return generator.createAsyncIteratorResponse();\r\n }\r\n\r\n /**\r\n * Retrieves nodes\r\n * @deprecated in 4.5. Use [[getNodesIterator]] instead.\r\n */\r\n public async getNodes(requestOptions: GetNodesRequestOptions & MultipleValuesRequestOptions): Promise<Node[]> {\r\n const result = await this.getNodesIterator(requestOptions);\r\n return collect(result.items);\r\n }\r\n\r\n /** Retrieves nodes count. */\r\n public async getNodesCount(requestOptions: GetNodesRequestOptions): Promise<number> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options });\r\n return this._requestsHandler.getNodesCount(rpcOptions);\r\n }\r\n\r\n /**\r\n * Retrieves total nodes count and a single page of nodes.\r\n * @deprecated in 4.5. Use [[getNodesIterator]] instead.\r\n */\r\n public async getNodesAndCount(requestOptions: GetNodesRequestOptions & MultipleValuesRequestOptions): Promise<{ count: number; nodes: Node[] }> {\r\n const result = await this.getNodesIterator(requestOptions);\r\n return {\r\n count: result.total,\r\n nodes: await collect(result.items),\r\n };\r\n }\r\n\r\n /**\r\n * Retrieves hierarchy level descriptor.\r\n * @public\r\n */\r\n public async getNodesDescriptor(\r\n requestOptions: HierarchyLevelDescriptorRequestOptions<IModelConnection, NodeKey, RulesetVariable> & ClientDiagnosticsAttribute,\r\n ): Promise<Descriptor | undefined> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n try {\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options });\r\n const result = await this._requestsHandler.getNodesDescriptor(rpcOptions);\r\n const descriptor = Descriptor.fromJSON(result);\r\n return descriptor ? this._localizationHelper.getLocalizedContentDescriptor(descriptor) : undefined;\r\n } finally {\r\n await this.ensureIModelInitialized(requestOptions.imodel);\r\n }\r\n }\r\n\r\n /** Retrieves paths from root nodes to children nodes according to specified keys. Intersecting paths will be merged. */\r\n public async getNodePaths(\r\n requestOptions: FilterByInstancePathsHierarchyRequestOptions<IModelConnection, RulesetVariable> & ClientDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options });\r\n const result = await this._requestsHandler.getNodePaths(rpcOptions);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return result.map(NodePathElement.fromJSON).map((npe) => this._localizationHelper.getLocalizedNodePathElement(npe));\r\n }\r\n\r\n /** Retrieves paths from root nodes to nodes containing filter text in their label. */\r\n public async getFilteredNodePaths(\r\n requestOptions: FilterByTextHierarchyRequestOptions<IModelConnection, RulesetVariable> & ClientDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const result = await this._requestsHandler.getFilteredNodePaths(this.toRpcTokenOptions(options));\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return result.map(NodePathElement.fromJSON).map((npe) => this._localizationHelper.getLocalizedNodePathElement(npe));\r\n }\r\n\r\n /**\r\n * Get information about the sources of content when building it for specific ECClasses. Sources involve classes of the primary select instance,\r\n * its related instances for loading related and navigation properties.\r\n * @public\r\n */\r\n public async getContentSources(requestOptions: ContentSourcesRequestOptions<IModelConnection> & ClientDiagnosticsAttribute): Promise<SelectClassInfo[]> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions(requestOptions);\r\n const result = await this._requestsHandler.getContentSources(rpcOptions);\r\n return SelectClassInfo.listFromCompressedJSON(result.sources, result.classesMap);\r\n }\r\n\r\n /** Retrieves the content descriptor which describes the content and can be used to customize it. */\r\n public async getContentDescriptor(\r\n requestOptions: ContentDescriptorRequestOptions<IModelConnection, KeySet, RulesetVariable> & ClientDiagnosticsAttribute,\r\n ): Promise<Descriptor | undefined> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n try {\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({\r\n ...options,\r\n keys: stripTransientElementKeys(options.keys).toJSON(),\r\n });\r\n const result = await this._requestsHandler.getContentDescriptor(rpcOptions);\r\n const descriptor = Descriptor.fromJSON(result);\r\n return descriptor ? this._localizationHelper.getLocalizedContentDescriptor(descriptor) : undefined;\r\n } finally {\r\n await this.ensureIModelInitialized(requestOptions.imodel);\r\n }\r\n }\r\n\r\n /** Retrieves overall content set size. */\r\n public async getContentSetSize(requestOptions: GetContentRequestOptions): Promise<number> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({\r\n ...options,\r\n descriptor: getDescriptorOverrides(requestOptions.descriptor),\r\n keys: stripTransientElementKeys(requestOptions.keys).toJSON(),\r\n });\r\n return this._requestsHandler.getContentSetSize(rpcOptions);\r\n }\r\n\r\n private async getContentIteratorInternal(\r\n requestOptions: GetContentRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ descriptor: Descriptor; total: number; items: AsyncIterableIterator<Item> } | undefined> {\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const firstPageSize = options.batchSize ?? requestOptions.paging?.size;\r\n const rpcOptions = this.toRpcTokenOptions({\r\n ...options,\r\n descriptor: getDescriptorOverrides(requestOptions.descriptor),\r\n keys: stripTransientElementKeys(requestOptions.keys).toJSON(),\r\n ...(firstPageSize ? { paging: { ...requestOptions.paging, size: firstPageSize } } : undefined),\r\n ...(!requestOptions.omitFormattedValues && this._schemaContextProvider !== undefined ? { omitFormattedValues: true } : undefined),\r\n });\r\n\r\n let contentFormatter: ContentFormatter | undefined;\r\n if (!requestOptions.omitFormattedValues && this._schemaContextProvider) {\r\n const koqPropertyFormatter = new KoqPropertyValueFormatter(this._schemaContextProvider(requestOptions.imodel), this._defaultFormats);\r\n contentFormatter = new ContentFormatter(\r\n new ContentPropertyValueFormatter(koqPropertyFormatter),\r\n requestOptions.unitSystem ?? this._explicitActiveUnitSystem ?? IModelApp.quantityFormatter.activeUnitSystem,\r\n );\r\n }\r\n\r\n let descriptor = requestOptions.descriptor instanceof Descriptor ? requestOptions.descriptor : undefined;\r\n let firstPage: PagedResponse<ItemJSON> | undefined;\r\n if (!descriptor) {\r\n const firstPageResponse = await this._requestsHandler.getPagedContent(rpcOptions);\r\n if (!firstPageResponse?.descriptor || !firstPageResponse.contentSet) {\r\n return undefined;\r\n }\r\n descriptor = Descriptor.fromJSON(firstPageResponse?.descriptor);\r\n firstPage = firstPageResponse?.contentSet;\r\n }\r\n\r\n // istanbul ignore if\r\n if (!descriptor) {\r\n return undefined;\r\n }\r\n\r\n descriptor = this._localizationHelper.getLocalizedContentDescriptor(descriptor);\r\n\r\n const getPage = async (paging: Required<PageOptions>, requestIndex: number) => {\r\n let contentSet = requestIndex === 0 ? firstPage : undefined;\r\n contentSet ??= await this._requestsHandler.getPagedContentSet({ ...rpcOptions, paging });\r\n\r\n let items = contentSet.items.map((x) => Item.fromJSON(x)).filter((x): x is Item => x !== undefined);\r\n if (contentFormatter) {\r\n items = await contentFormatter.formatContentItems(items, descriptor);\r\n }\r\n\r\n items = this._localizationHelper.getLocalizedContentItems(items);\r\n return {\r\n total: contentSet.total,\r\n items,\r\n };\r\n };\r\n\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: getPage,\r\n });\r\n\r\n return {\r\n ...(await generator.createAsyncIteratorResponse()),\r\n descriptor,\r\n };\r\n }\r\n\r\n /** Retrieves a content descriptor, item count and async generator for the items themselves. */\r\n public async getContentIterator(\r\n requestOptions: GetContentRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ descriptor: Descriptor; total: number; items: AsyncIterableIterator<Item> } | undefined> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const response = await this.getContentIteratorInternal(requestOptions);\r\n if (!response) {\r\n return undefined;\r\n }\r\n\r\n await this.ensureIModelInitialized(requestOptions.imodel);\r\n return response;\r\n }\r\n\r\n /**\r\n * Retrieves content which consists of a content descriptor and a page of records.\r\n * @deprecated in 4.5. Use [[getContentIterator]] instead.\r\n */\r\n public async getContent(requestOptions: GetContentRequestOptions & MultipleValuesRequestOptions): Promise<Content | undefined> {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return (await this.getContentAndSize(requestOptions))?.content;\r\n }\r\n\r\n /**\r\n * Retrieves content set size and content which consists of a content descriptor and a page of records.\r\n * @deprecated in 4.5. Use [[getContentIterator]] instead.\r\n */\r\n public async getContentAndSize(\r\n requestOptions: GetContentRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ content: Content; size: number } | undefined> {\r\n const response = await this.getContentIterator(requestOptions);\r\n if (!response) {\r\n return undefined;\r\n }\r\n\r\n const { descriptor, total } = response;\r\n const items = await collect(response.items);\r\n return {\r\n content: new Content(descriptor, items),\r\n size: total,\r\n };\r\n }\r\n\r\n /** Returns an iterator that asynchronously polls distinct values of specific field from the content. */\r\n public async getDistinctValuesIterator(\r\n requestOptions: GetDistinctValuesRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ total: number; items: AsyncIterableIterator<DisplayValueGroup> }> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = {\r\n ...this.toRpcTokenOptions(options),\r\n descriptor: getDescriptorOverrides(options.descriptor),\r\n keys: stripTransientElementKeys(options.keys).toJSON(),\r\n };\r\n\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: async (paging) => {\r\n const response = await this._requestsHandler.getPagedDistinctValues({ ...rpcOptions, paging });\r\n return {\r\n total: response.total,\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n items: response.items.map((x) => this._localizationHelper.getLocalizedDisplayValueGroup(DisplayValueGroup.fromJSON(x))),\r\n };\r\n },\r\n });\r\n\r\n return generator.createAsyncIteratorResponse();\r\n }\r\n\r\n /**\r\n * Retrieves distinct values of specific field from the content.\r\n * @deprecated in 4.5. Use [[getDistinctValuesIterator]] instead.\r\n */\r\n public async getPagedDistinctValues(\r\n requestOptions: GetDistinctValuesRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<PagedResponse<DisplayValueGroup>> {\r\n const result = await this.getDistinctValuesIterator(requestOptions);\r\n return {\r\n total: result.total,\r\n items: await collect(result.items),\r\n };\r\n }\r\n\r\n /**\r\n * Retrieves property data in a simplified format for a single element specified by ID.\r\n * @public\r\n */\r\n public async getElementProperties<TParsedContent = ElementProperties>(\r\n requestOptions: SingleElementPropertiesRequestOptions<IModelConnection, TParsedContent> & ClientDiagnosticsAttribute,\r\n ): Promise<TParsedContent | undefined> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n type TParser = Required<typeof requestOptions>[\"contentParser\"];\r\n const { elementId, contentParser, ...optionsNoElementId } = requestOptions;\r\n const parser: TParser = contentParser ?? (buildElementProperties as TParser);\r\n const iter = await this.getContentIterator({\r\n ...optionsNoElementId,\r\n descriptor: {\r\n displayType: DefaultContentDisplayTypes.PropertyPane,\r\n contentFlags: ContentFlags.ShowLabels,\r\n },\r\n rulesetOrId: \"ElementProperties\",\r\n keys: new KeySet([{ className: \"BisCore:Element\", id: elementId }]),\r\n });\r\n if (!iter || iter.total === 0) {\r\n return undefined;\r\n }\r\n return parser(iter.descriptor, (await iter.items.next()).value);\r\n }\r\n\r\n /**\r\n * Retrieves content item instance keys.\r\n * @public\r\n */\r\n public async getContentInstanceKeys(\r\n requestOptions: ContentInstanceKeysRequestOptions<IModelConnection, KeySet, RulesetVariable> & ClientDiagnosticsAttribute & MultipleValuesRequestOptions,\r\n ): Promise<{ total: number; items: () => AsyncGenerator<InstanceKey> }> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = {\r\n ...this.toRpcTokenOptions(options),\r\n keys: stripTransientElementKeys(options.keys).toJSON(),\r\n };\r\n\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: async (page) => {\r\n const keys = await this._requestsHandler.getContentInstanceKeys({ ...rpcOptions, paging: page });\r\n return {\r\n total: keys.total,\r\n items: keys.items.instanceKeys.reduce((instanceKeys, entry) => {\r\n for (const id of CompressedId64Set.iterable(entry[1])) {\r\n instanceKeys.push({ className: entry[0], id });\r\n }\r\n return instanceKeys;\r\n }, new Array<InstanceKey>()),\r\n };\r\n },\r\n });\r\n\r\n const { total, items } = await generator.createAsyncIteratorResponse();\r\n return {\r\n total,\r\n async *items() {\r\n yield* items;\r\n },\r\n };\r\n }\r\n\r\n /** Retrieves display label definition of specific item. */\r\n public async getDisplayLabelDefinition(\r\n requestOptions: DisplayLabelRequestOptions<IModelConnection, InstanceKey> & ClientDiagnosticsAttribute,\r\n ): Promise<LabelDefinition> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions({ ...requestOptions });\r\n const result = await this._requestsHandler.getDisplayLabelDefinition(rpcOptions);\r\n return this._localizationHelper.getLocalizedLabelDefinition(result);\r\n }\r\n\r\n /** Retrieves display label definition of specific items. */\r\n public async getDisplayLabelDefinitionsIterator(\r\n requestOptions: DisplayLabelsRequestOptions<IModelConnection, InstanceKey> & ClientDiagnosticsAttribute & MultipleValuesRequestOptions,\r\n ): Promise<{ total: number; items: AsyncIterableIterator<LabelDefinition> }> {\r\n this.startIModelInitialization(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions({ ...requestOptions });\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: async (page) => {\r\n const partialKeys = !page.start ? rpcOptions.keys : rpcOptions.keys.slice(page.start);\r\n const result = await this._requestsHandler.getPagedDisplayLabelDefinitions({ ...rpcOptions, keys: partialKeys });\r\n result.items = this._localizationHelper.getLocalizedLabelDefinitions(result.items);\r\n return result;\r\n },\r\n });\r\n\r\n return generator.createAsyncIteratorResponse();\r\n }\r\n\r\n /**\r\n * Retrieves display label definition of specific items.\r\n * @deprecated in 4.5. Use [[getDisplayLabelDefinitionsIterator]] instead.\r\n */\r\n public async getDisplayLabelDefinitions(\r\n requestOptions: DisplayLabelsRequestOptions<IModelConnection, InstanceKey> & ClientDiagnosticsAttribute & MultipleValuesRequestOptions,\r\n ): Promise<LabelDefinition[]> {\r\n const { items } = await this.getDisplayLabelDefinitionsIterator(requestOptions);\r\n return collect(items);\r\n }\r\n}\r\n\r\nconst getDescriptorOverrides = (descriptorOrOverrides: Descriptor | DescriptorOverrides): DescriptorOverrides => {\r\n if (descriptorOrOverrides instanceof Descriptor) {\r\n return descriptorOrOverrides.createDescriptorOverrides();\r\n }\r\n return descriptorOrOverrides;\r\n};\r\n\r\nconst stripTransientElementKeys = (keys: KeySet) => {\r\n if (!keys.some((key) => Key.isInstanceKey(key) && key.className === TRANSIENT_ELEMENT_CLASSNAME)) {\r\n return keys;\r\n }\r\n\r\n const copy = new KeySet();\r\n copy.add(keys, (key) => {\r\n // the callback is not going to be called with EntityProps as KeySet converts them\r\n // to InstanceKeys, but we want to keep the EntityProps case for correctness\r\n // istanbul ignore next\r\n const isTransient =\r\n (Key.isInstanceKey(key) && key.className === TRANSIENT_ELEMENT_CLASSNAME) ||\r\n (Key.isEntityProps(key) && key.classFullName === TRANSIENT_ELEMENT_CLASSNAME);\r\n return !isTransient;\r\n });\r\n return copy;\r\n};\r\n\r\nasync function collect<T>(iter: AsyncIterable<T>): Promise<T[]> {\r\n const result = new Array<T>();\r\n for await (const value of iter) {\r\n result.push(value);\r\n }\r\n return result;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PresentationManager.js","sourceRoot":"","sources":["../../../src/presentation-frontend/PresentationManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Core\r\n */\r\n\r\nimport { BeEvent, CompressedId64Set, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\nimport { IModelApp, IModelConnection, IpcApp } from \"@itwin/core-frontend\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport { SchemaContext } from \"@itwin/ecschema-metadata\";\r\nimport {\r\n ClientDiagnosticsAttribute,\r\n Content,\r\n ContentDescriptorRequestOptions,\r\n ContentFlags,\r\n ContentInstanceKeysRequestOptions,\r\n ContentRequestOptions,\r\n ContentSourcesRequestOptions,\r\n ContentUpdateInfo,\r\n DefaultContentDisplayTypes,\r\n Descriptor,\r\n DescriptorOverrides,\r\n DisplayLabelRequestOptions,\r\n DisplayLabelsRequestOptions,\r\n DisplayValueGroup,\r\n DistinctValuesRequestOptions,\r\n ElementProperties,\r\n FilterByInstancePathsHierarchyRequestOptions,\r\n FilterByTextHierarchyRequestOptions,\r\n FormatsMap,\r\n HierarchyLevelDescriptorRequestOptions,\r\n HierarchyRequestOptions,\r\n HierarchyUpdateInfo,\r\n InstanceKey,\r\n Item,\r\n ItemJSON,\r\n Key,\r\n KeySet,\r\n KoqPropertyValueFormatter,\r\n LabelDefinition,\r\n Node,\r\n NodeKey,\r\n NodePathElement,\r\n Paged,\r\n PagedResponse,\r\n PageOptions,\r\n Ruleset,\r\n RulesetVariable,\r\n SelectClassInfo,\r\n SingleElementPropertiesRequestOptions,\r\n UpdateInfo,\r\n VariableValueTypes,\r\n} from \"@itwin/presentation-common\";\r\nimport {\r\n buildElementProperties,\r\n ContentFormatter,\r\n ContentPropertyValueFormatter,\r\n PresentationIpcEvents,\r\n RpcRequestsHandler,\r\n} from \"@itwin/presentation-common/internal\";\r\nimport { TRANSIENT_ELEMENT_CLASSNAME } from \"@itwin/unified-selection\";\r\nimport { IpcRequestsHandler } from \"./IpcRequestsHandler.js\";\r\nimport { FrontendLocalizationHelper } from \"./LocalizationHelper.js\";\r\nimport { RulesetManager, RulesetManagerImpl } from \"./RulesetManager.js\";\r\nimport { RulesetVariablesManager, RulesetVariablesManagerImpl } from \"./RulesetVariablesManager.js\";\r\nimport { StreamedResponseGenerator } from \"./StreamedResponseGenerator.js\";\r\nimport { ensureIModelInitialized, startIModelInitialization } from \"./IModelConnectionInitialization.js\";\r\nimport { _presentation_manager_ipcRequestsHandler, _presentation_manager_rpcRequestsHandler } from \"./InternalSymbols.js\";\r\n\r\n/**\r\n * Data structure that describes IModel hierarchy change event arguments.\r\n * @public\r\n */\r\nexport interface IModelHierarchyChangeEventArgs {\r\n /** Id of ruleset that was used to create hierarchy. */\r\n rulesetId: string;\r\n /** Hierarchy changes info. */\r\n updateInfo: HierarchyUpdateInfo;\r\n /** Key of iModel that was used to create hierarchy. It matches [[IModelConnection.key]] property. */\r\n imodelKey: string;\r\n}\r\n\r\n/**\r\n * Data structure that describes iModel content change event arguments.\r\n * @public\r\n */\r\nexport interface IModelContentChangeEventArgs {\r\n /** Id of ruleset that was used to create content. */\r\n rulesetId: string;\r\n /** Content changes info. */\r\n updateInfo: ContentUpdateInfo;\r\n /** Key of iModel that was used to create content. It matches [[IModelConnection.key]] property. */\r\n imodelKey: string;\r\n}\r\n\r\n/**\r\n * Options for requests that can return multiple pages of items concurrently.\r\n * @public\r\n */\r\nexport type MultipleValuesRequestOptions = Paged<{\r\n /**\r\n * Max number of requests that should be made to the backend to fulfill the whole request.\r\n * `undefined` means no limit, so in that case all requests are sent at once.\r\n */\r\n maxParallelRequests?: number;\r\n\r\n /**\r\n * Size of a single batch when fetching data through multiple requests. If not set,\r\n * the fall back is requested page size. If the page size is not set, the backend\r\n * decides how many items to return.\r\n */\r\n batchSize?: number;\r\n}>;\r\n\r\n/**\r\n * Options for requests that retrieve nodes.\r\n * @public\r\n */\r\nexport type GetNodesRequestOptions = HierarchyRequestOptions<IModelConnection, NodeKey, RulesetVariable> & ClientDiagnosticsAttribute;\r\n\r\n/**\r\n * Options for requests that retrieve content.\r\n * @public\r\n */\r\nexport type GetContentRequestOptions = ContentRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable> &\r\n ClientDiagnosticsAttribute;\r\n\r\n/**\r\n * Options for requests that retrieve distinct values.\r\n * @public\r\n */\r\nexport type GetDistinctValuesRequestOptions = DistinctValuesRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable> &\r\n ClientDiagnosticsAttribute;\r\n\r\n/**\r\n * Properties used to configure [[PresentationManager]]\r\n * @public\r\n */\r\nexport interface PresentationManagerProps {\r\n /**\r\n * Sets the active locale to use when localizing presentation-related\r\n * strings. It can later be changed through [[PresentationManager]].\r\n */\r\n activeLocale?: string;\r\n\r\n /**\r\n * Sets the active unit system to use for formatting property values with\r\n * units. The value can later be changed through [[PresentationManager.activeUnitSystem]] setter or\r\n * overriden for each request through request parameters. If not set, `IModelApp.quantityFormatter.activeUnitSystem`\r\n * is used by default.\r\n *\r\n * @deprecated in 4.0. Use [IModelApp.quantityFormatter]($core-frontend) to set the active unit system.\r\n */\r\n activeUnitSystem?: UnitSystemKey;\r\n\r\n /**\r\n * ID used to identify client that requests data. Generally, clients should\r\n * store this ID in their local storage so the ID can be reused across\r\n * sessions - this allows reusing some caches.\r\n *\r\n * Defaults to a unique GUID as a client id.\r\n */\r\n clientId?: string;\r\n\r\n /**\r\n * Timeout (in milliseconds) for how long we're going to wait for RPC request to be fulfilled before throwing\r\n * a timeout error.\r\n *\r\n * Defaults to 10 minutes.\r\n */\r\n requestTimeout?: number;\r\n\r\n /**\r\n * Callback that provides [SchemaContext]($ecschema-metadata) for supplied [IModelConnection]($core-frontend).\r\n * [SchemaContext]($ecschema-metadata) is used for getting metadata required for values formatting.\r\n */\r\n schemaContextProvider?: (imodel: IModelConnection) => SchemaContext;\r\n\r\n /**\r\n * A map of default unit formats to use for formatting properties that don't have a presentation format\r\n * in requested unit system.\r\n *\r\n * @note Only has effect when frontend value formatting is enabled by supplying the `schemaContextProvider` prop.\r\n */\r\n defaultFormats?: FormatsMap;\r\n}\r\n\r\n/** @internal */\r\ninterface PresentationManagerInternalProps {\r\n rpcRequestsHandler?: RpcRequestsHandler;\r\n ipcRequestsHandler?: IpcRequestsHandler;\r\n}\r\n\r\n/**\r\n * Frontend Presentation manager which basically just forwards all calls to\r\n * the backend implementation.\r\n *\r\n * @public\r\n */\r\nexport class PresentationManager implements Disposable {\r\n private _requestsHandler: RpcRequestsHandler;\r\n private _rulesets: RulesetManager;\r\n private _localizationHelper: FrontendLocalizationHelper;\r\n private _explicitActiveUnitSystem: UnitSystemKey | undefined;\r\n private _rulesetVars: Map<string, RulesetVariablesManager>;\r\n private _clearEventListener?: () => void;\r\n private _schemaContextProvider?: (imodel: IModelConnection) => SchemaContext;\r\n private _defaultFormats?: FormatsMap;\r\n private _ipcRequestsHandler?: IpcRequestsHandler;\r\n\r\n /**\r\n * An event raised when hierarchies created using specific ruleset change\r\n */\r\n public onIModelHierarchyChanged = new BeEvent<(args: IModelHierarchyChangeEventArgs) => void>();\r\n\r\n /**\r\n * An event raised when content created using specific ruleset changes\r\n */\r\n public onIModelContentChanged = new BeEvent<(args: IModelContentChangeEventArgs) => void>();\r\n\r\n /**\r\n * Get / set active unit system used to format property values with units.\r\n *\r\n * @deprecated in 4.0. `IModelApp.quantityFormatter` should be used to get/set the active unit system. At the moment\r\n * [[PresentationManager]] allows overriding it, but returns `IModelApp.quantityFormatter.activeUnitSystem` if override\r\n * is not set.\r\n */\r\n public get activeUnitSystem(): UnitSystemKey {\r\n return this._explicitActiveUnitSystem ?? IModelApp.quantityFormatter.activeUnitSystem;\r\n }\r\n public set activeUnitSystem(value: UnitSystemKey | undefined) {\r\n this._explicitActiveUnitSystem = value;\r\n }\r\n\r\n private constructor(props?: PresentationManagerProps) {\r\n if (props) {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n this._explicitActiveUnitSystem = props.activeUnitSystem;\r\n }\r\n\r\n this._requestsHandler =\r\n (props as PresentationManagerInternalProps)?.rpcRequestsHandler ??\r\n new RpcRequestsHandler(props ? { clientId: props.clientId, timeout: props.requestTimeout } : undefined);\r\n this._rulesetVars = new Map<string, RulesetVariablesManager>();\r\n this._rulesets = RulesetManagerImpl.create();\r\n this._localizationHelper = new FrontendLocalizationHelper(props?.activeLocale);\r\n this._schemaContextProvider = props?.schemaContextProvider;\r\n this._defaultFormats = props?.defaultFormats;\r\n\r\n if (IpcApp.isValid) {\r\n // Ipc only works in ipc apps, so the `onUpdate` callback will only be called there.\r\n this._clearEventListener = IpcApp.addListener(PresentationIpcEvents.Update, this.onUpdate);\r\n this._ipcRequestsHandler = (props as PresentationManagerInternalProps)?.ipcRequestsHandler ?? new IpcRequestsHandler(this._requestsHandler.clientId);\r\n }\r\n }\r\n\r\n /** Get / set active locale used for localizing presentation data */\r\n public get activeLocale(): string | undefined {\r\n return this._localizationHelper.locale;\r\n }\r\n public set activeLocale(locale: string | undefined) {\r\n this._localizationHelper.locale = locale;\r\n }\r\n\r\n public [Symbol.dispose]() {\r\n if (this._clearEventListener) {\r\n this._clearEventListener();\r\n this._clearEventListener = undefined;\r\n }\r\n }\r\n\r\n /** @deprecated in 5.0 Use [Symbol.dispose] instead. */\r\n /* c8 ignore next 3 */\r\n public dispose() {\r\n this[Symbol.dispose]();\r\n }\r\n\r\n private onUpdate = (_evt: Event, report: UpdateInfo) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.handleUpdateAsync(report);\r\n };\r\n\r\n /** @note This is only called in native apps after changes in iModels */\r\n private async handleUpdateAsync(report: UpdateInfo) {\r\n for (const imodelKey in report) {\r\n /* c8 ignore next 3 */\r\n if (!report.hasOwnProperty(imodelKey)) {\r\n continue;\r\n }\r\n\r\n const imodelReport = report[imodelKey];\r\n for (const rulesetId in imodelReport) {\r\n /* c8 ignore next 3 */\r\n if (!imodelReport.hasOwnProperty(rulesetId)) {\r\n continue;\r\n }\r\n\r\n const updateInfo = imodelReport[rulesetId];\r\n if (updateInfo.content) {\r\n this.onIModelContentChanged.raiseEvent({ rulesetId, updateInfo: updateInfo.content, imodelKey });\r\n }\r\n if (updateInfo.hierarchy) {\r\n this.onIModelHierarchyChanged.raiseEvent({ rulesetId, updateInfo: updateInfo.hierarchy, imodelKey });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Create a new PresentationManager instance\r\n * @param props Optional properties used to configure the manager\r\n */\r\n public static create(props?: PresentationManagerProps) {\r\n return new PresentationManager(props);\r\n }\r\n\r\n /** @internal */\r\n public get [_presentation_manager_rpcRequestsHandler]() {\r\n return this._requestsHandler;\r\n }\r\n\r\n /** @internal */\r\n public get [_presentation_manager_ipcRequestsHandler]() {\r\n return this._ipcRequestsHandler;\r\n }\r\n\r\n /**\r\n * Get rulesets manager\r\n */\r\n public rulesets() {\r\n return this._rulesets;\r\n }\r\n\r\n /**\r\n * Get ruleset variables manager for specific ruleset\r\n * @param rulesetId Id of the ruleset to get the vars manager for\r\n */\r\n public vars(rulesetId: string) {\r\n if (!this._rulesetVars.has(rulesetId)) {\r\n const varsManager = new RulesetVariablesManagerImpl(rulesetId, this._ipcRequestsHandler);\r\n this._rulesetVars.set(rulesetId, varsManager);\r\n }\r\n return this._rulesetVars.get(rulesetId)!;\r\n }\r\n\r\n private toRpcTokenOptions<TOptions extends { imodel: IModelConnection; locale?: string; unitSystem?: UnitSystemKey; rulesetVariables?: RulesetVariable[] }>(\r\n requestOptions: TOptions,\r\n ) {\r\n // 1. put default `locale` and `unitSystem`\r\n // 2. put all `requestOptions` members (if `locale` or `unitSystem` are set, they'll override the defaults put at #1)\r\n // 3. put `imodel` of type `IModelRpcProps` which overwrites the `imodel` from `requestOptions` put at #2\r\n const defaultOptions: Pick<TOptions, \"locale\" | \"unitSystem\"> = {};\r\n if (this.activeLocale) {\r\n defaultOptions.locale = this.activeLocale;\r\n }\r\n defaultOptions.unitSystem = this.activeUnitSystem; // eslint-disable-line @typescript-eslint/no-deprecated\r\n\r\n const { imodel, rulesetVariables, ...rpcRequestOptions } = requestOptions;\r\n return {\r\n ...defaultOptions,\r\n ...rpcRequestOptions,\r\n ...(rulesetVariables ? { rulesetVariables: rulesetVariables.map(RulesetVariable.toJSON) } : {}),\r\n imodel: imodel.getRpcProps(),\r\n };\r\n }\r\n\r\n private async addRulesetAndVariablesToOptions<TOptions extends { rulesetOrId: Ruleset | string; rulesetVariables?: RulesetVariable[] }>(options: TOptions) {\r\n const { rulesetOrId, rulesetVariables } = options;\r\n let foundRulesetOrId: Ruleset | string;\r\n if (typeof rulesetOrId === \"object\") {\r\n foundRulesetOrId = rulesetOrId;\r\n } else {\r\n const foundRuleset = await this._rulesets.get(rulesetOrId);\r\n foundRulesetOrId = foundRuleset ? foundRuleset.toJSON() : rulesetOrId;\r\n }\r\n const rulesetId = typeof foundRulesetOrId === \"object\" ? foundRulesetOrId.id : foundRulesetOrId;\r\n\r\n // All Id64Array variable values must be sorted for serialization to JSON to work. RulesetVariablesManager\r\n // sorts them before storing, so that part is taken care of, but we need to ensure that variables coming from\r\n // request options are also sorted.\r\n const variables = (rulesetVariables ?? []).map((variable) => {\r\n if (variable.type === VariableValueTypes.Id64Array) {\r\n return { ...variable, value: OrderedId64Iterable.sortArray(variable.value) };\r\n }\r\n return variable;\r\n });\r\n if (!this._ipcRequestsHandler) {\r\n // only need to add variables from variables manager if there's no IPC\r\n // handler - if there is one, the variables are already known by the backend\r\n variables.push(...this.vars(rulesetId).getAllVariables());\r\n }\r\n\r\n return { ...options, rulesetOrId: foundRulesetOrId, rulesetVariables: variables };\r\n }\r\n\r\n /** Returns an iterator that polls nodes asynchronously. */\r\n public async getNodesIterator(\r\n requestOptions: GetNodesRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ total: number; items: AsyncIterableIterator<Node> }> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options });\r\n\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: async (paging) => {\r\n const result = await this._requestsHandler.getPagedNodes({ ...rpcOptions, paging });\r\n return {\r\n total: result.total,\r\n items: this._localizationHelper.getLocalizedNodes(result.items),\r\n };\r\n },\r\n });\r\n\r\n return generator.createAsyncIteratorResponse();\r\n }\r\n\r\n /**\r\n * Retrieves nodes\r\n * @deprecated in 4.5. Use [[getNodesIterator]] instead.\r\n */\r\n public async getNodes(requestOptions: GetNodesRequestOptions & MultipleValuesRequestOptions): Promise<Node[]> {\r\n const result = await this.getNodesIterator(requestOptions);\r\n return collect(result.items);\r\n }\r\n\r\n /** Retrieves nodes count. */\r\n public async getNodesCount(requestOptions: GetNodesRequestOptions): Promise<number> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options });\r\n return this._requestsHandler.getNodesCount(rpcOptions);\r\n }\r\n\r\n /**\r\n * Retrieves total nodes count and a single page of nodes.\r\n * @deprecated in 4.5. Use [[getNodesIterator]] instead.\r\n */\r\n public async getNodesAndCount(requestOptions: GetNodesRequestOptions & MultipleValuesRequestOptions): Promise<{ count: number; nodes: Node[] }> {\r\n const result = await this.getNodesIterator(requestOptions);\r\n return {\r\n count: result.total,\r\n nodes: await collect(result.items),\r\n };\r\n }\r\n\r\n /**\r\n * Retrieves hierarchy level descriptor.\r\n * @public\r\n */\r\n public async getNodesDescriptor(\r\n requestOptions: HierarchyLevelDescriptorRequestOptions<IModelConnection, NodeKey, RulesetVariable> & ClientDiagnosticsAttribute,\r\n ): Promise<Descriptor | undefined> {\r\n startIModelInitialization(requestOptions.imodel);\r\n try {\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options });\r\n const result = await this._requestsHandler.getNodesDescriptor(rpcOptions);\r\n const descriptor = Descriptor.fromJSON(result);\r\n return descriptor ? this._localizationHelper.getLocalizedContentDescriptor(descriptor) : undefined;\r\n } finally {\r\n await ensureIModelInitialized(requestOptions.imodel);\r\n }\r\n }\r\n\r\n /** Retrieves paths from root nodes to children nodes according to specified keys. Intersecting paths will be merged. */\r\n public async getNodePaths(\r\n requestOptions: FilterByInstancePathsHierarchyRequestOptions<IModelConnection, RulesetVariable> & ClientDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options });\r\n const result = await this._requestsHandler.getNodePaths(rpcOptions);\r\n return result.map((npe) => this._localizationHelper.getLocalizedNodePathElement(npe));\r\n }\r\n\r\n /** Retrieves paths from root nodes to nodes containing filter text in their label. */\r\n public async getFilteredNodePaths(\r\n requestOptions: FilterByTextHierarchyRequestOptions<IModelConnection, RulesetVariable> & ClientDiagnosticsAttribute,\r\n ): Promise<NodePathElement[]> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const result = await this._requestsHandler.getFilteredNodePaths(this.toRpcTokenOptions(options));\r\n return result.map((npe) => this._localizationHelper.getLocalizedNodePathElement(npe));\r\n }\r\n\r\n /**\r\n * Get information about the sources of content when building it for specific ECClasses. Sources involve classes of the primary select instance,\r\n * its related instances for loading related and navigation properties.\r\n * @public\r\n */\r\n public async getContentSources(requestOptions: ContentSourcesRequestOptions<IModelConnection> & ClientDiagnosticsAttribute): Promise<SelectClassInfo[]> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions(requestOptions);\r\n const result = await this._requestsHandler.getContentSources(rpcOptions);\r\n return result.sources.map((sourceJson) => SelectClassInfo.fromCompressedJSON(sourceJson, result.classesMap));\r\n }\r\n\r\n /** Retrieves the content descriptor which describes the content and can be used to customize it. */\r\n public async getContentDescriptor(\r\n requestOptions: ContentDescriptorRequestOptions<IModelConnection, KeySet, RulesetVariable> & ClientDiagnosticsAttribute,\r\n ): Promise<Descriptor | undefined> {\r\n startIModelInitialization(requestOptions.imodel);\r\n try {\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({\r\n ...options,\r\n keys: stripTransientElementKeys(options.keys).toJSON(),\r\n });\r\n const result = await this._requestsHandler.getContentDescriptor(rpcOptions);\r\n const descriptor = Descriptor.fromJSON(result);\r\n return descriptor ? this._localizationHelper.getLocalizedContentDescriptor(descriptor) : undefined;\r\n } finally {\r\n await ensureIModelInitialized(requestOptions.imodel);\r\n }\r\n }\r\n\r\n /** Retrieves overall content set size. */\r\n public async getContentSetSize(requestOptions: GetContentRequestOptions): Promise<number> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({\r\n ...options,\r\n descriptor: getDescriptorOverrides(requestOptions.descriptor),\r\n keys: stripTransientElementKeys(requestOptions.keys).toJSON(),\r\n });\r\n return this._requestsHandler.getContentSetSize(rpcOptions);\r\n }\r\n\r\n private async getContentIteratorInternal(\r\n requestOptions: GetContentRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ descriptor: Descriptor; total: number; items: AsyncIterableIterator<Item> } | undefined> {\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const firstPageSize = options.batchSize ?? requestOptions.paging?.size;\r\n const rpcOptions = this.toRpcTokenOptions({\r\n ...options,\r\n descriptor: getDescriptorOverrides(requestOptions.descriptor),\r\n keys: stripTransientElementKeys(requestOptions.keys).toJSON(),\r\n ...(firstPageSize ? { paging: { ...requestOptions.paging, size: firstPageSize } } : undefined),\r\n ...(!requestOptions.omitFormattedValues && this._schemaContextProvider !== undefined ? { omitFormattedValues: true } : undefined),\r\n });\r\n\r\n let contentFormatter: ContentFormatter | undefined;\r\n if (!requestOptions.omitFormattedValues && this._schemaContextProvider) {\r\n const koqPropertyFormatter = new KoqPropertyValueFormatter(this._schemaContextProvider(requestOptions.imodel), this._defaultFormats);\r\n contentFormatter = new ContentFormatter(\r\n new ContentPropertyValueFormatter(koqPropertyFormatter),\r\n requestOptions.unitSystem ?? this._explicitActiveUnitSystem ?? IModelApp.quantityFormatter.activeUnitSystem,\r\n );\r\n }\r\n\r\n let descriptor = requestOptions.descriptor instanceof Descriptor ? requestOptions.descriptor : undefined;\r\n let firstPage: PagedResponse<ItemJSON> | undefined;\r\n if (!descriptor) {\r\n const firstPageResponse = await this._requestsHandler.getPagedContent(rpcOptions);\r\n if (!firstPageResponse?.descriptor || !firstPageResponse.contentSet) {\r\n return undefined;\r\n }\r\n descriptor = Descriptor.fromJSON(firstPageResponse?.descriptor);\r\n firstPage = firstPageResponse?.contentSet;\r\n }\r\n\r\n /* c8 ignore next 3 */\r\n if (!descriptor) {\r\n return undefined;\r\n }\r\n\r\n descriptor = this._localizationHelper.getLocalizedContentDescriptor(descriptor);\r\n\r\n const getPage = async (paging: Required<PageOptions>, requestIndex: number) => {\r\n let contentSet = requestIndex === 0 ? firstPage : undefined;\r\n contentSet ??= await this._requestsHandler.getPagedContentSet({ ...rpcOptions, paging });\r\n\r\n let items = contentSet.items.map((x) => Item.fromJSON(x)).filter((x): x is Item => x !== undefined);\r\n if (contentFormatter) {\r\n items = await contentFormatter.formatContentItems(items, descriptor);\r\n }\r\n\r\n items = this._localizationHelper.getLocalizedContentItems(items);\r\n return {\r\n total: contentSet.total,\r\n items,\r\n };\r\n };\r\n\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: getPage,\r\n });\r\n\r\n return {\r\n ...(await generator.createAsyncIteratorResponse()),\r\n descriptor,\r\n };\r\n }\r\n\r\n /** Retrieves a content descriptor, item count and async generator for the items themselves. */\r\n public async getContentIterator(\r\n requestOptions: GetContentRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ descriptor: Descriptor; total: number; items: AsyncIterableIterator<Item> } | undefined> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const response = await this.getContentIteratorInternal(requestOptions);\r\n if (!response) {\r\n return undefined;\r\n }\r\n\r\n await ensureIModelInitialized(requestOptions.imodel);\r\n return response;\r\n }\r\n\r\n /**\r\n * Retrieves content which consists of a content descriptor and a page of records.\r\n * @deprecated in 4.5. Use [[getContentIterator]] instead.\r\n */\r\n public async getContent(requestOptions: GetContentRequestOptions & MultipleValuesRequestOptions): Promise<Content | undefined> {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return (await this.getContentAndSize(requestOptions))?.content;\r\n }\r\n\r\n /**\r\n * Retrieves content set size and content which consists of a content descriptor and a page of records.\r\n * @deprecated in 4.5. Use [[getContentIterator]] instead.\r\n */\r\n public async getContentAndSize(\r\n requestOptions: GetContentRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ content: Content; size: number } | undefined> {\r\n const response = await this.getContentIterator(requestOptions);\r\n if (!response) {\r\n return undefined;\r\n }\r\n\r\n const { descriptor, total } = response;\r\n const items = await collect(response.items);\r\n return {\r\n content: new Content(descriptor, items),\r\n size: total,\r\n };\r\n }\r\n\r\n /** Returns an iterator that asynchronously polls distinct values of specific field from the content. */\r\n public async getDistinctValuesIterator(\r\n requestOptions: GetDistinctValuesRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<{ total: number; items: AsyncIterableIterator<DisplayValueGroup> }> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = {\r\n ...this.toRpcTokenOptions(options),\r\n descriptor: getDescriptorOverrides(options.descriptor),\r\n keys: stripTransientElementKeys(options.keys).toJSON(),\r\n };\r\n\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: async (paging) => {\r\n const response = await this._requestsHandler.getPagedDistinctValues({ ...rpcOptions, paging });\r\n return {\r\n total: response.total,\r\n items: response.items.map((x) => this._localizationHelper.getLocalizedDisplayValueGroup(x)),\r\n };\r\n },\r\n });\r\n\r\n return generator.createAsyncIteratorResponse();\r\n }\r\n\r\n /**\r\n * Retrieves distinct values of specific field from the content.\r\n * @deprecated in 4.5. Use [[getDistinctValuesIterator]] instead.\r\n */\r\n public async getPagedDistinctValues(\r\n requestOptions: GetDistinctValuesRequestOptions & MultipleValuesRequestOptions,\r\n ): Promise<PagedResponse<DisplayValueGroup>> {\r\n const result = await this.getDistinctValuesIterator(requestOptions);\r\n return {\r\n total: result.total,\r\n items: await collect(result.items),\r\n };\r\n }\r\n\r\n /**\r\n * Retrieves property data in a simplified format for a single element specified by ID.\r\n * @public\r\n */\r\n public async getElementProperties<TParsedContent = ElementProperties>(\r\n requestOptions: SingleElementPropertiesRequestOptions<IModelConnection, TParsedContent> & ClientDiagnosticsAttribute,\r\n ): Promise<TParsedContent | undefined> {\r\n startIModelInitialization(requestOptions.imodel);\r\n type TParser = Required<typeof requestOptions>[\"contentParser\"];\r\n const { elementId, contentParser, ...optionsNoElementId } = requestOptions;\r\n const parser: TParser = contentParser ?? (buildElementProperties as TParser);\r\n const iter = await this.getContentIterator({\r\n ...optionsNoElementId,\r\n descriptor: {\r\n displayType: DefaultContentDisplayTypes.PropertyPane,\r\n contentFlags: ContentFlags.ShowLabels,\r\n },\r\n rulesetOrId: \"ElementProperties\",\r\n keys: new KeySet([{ className: \"BisCore:Element\", id: elementId }]),\r\n });\r\n if (!iter || iter.total === 0) {\r\n return undefined;\r\n }\r\n return parser(iter.descriptor, (await iter.items.next()).value);\r\n }\r\n\r\n /**\r\n * Retrieves content item instance keys.\r\n * @public\r\n */\r\n public async getContentInstanceKeys(\r\n requestOptions: ContentInstanceKeysRequestOptions<IModelConnection, KeySet, RulesetVariable> & ClientDiagnosticsAttribute & MultipleValuesRequestOptions,\r\n ): Promise<{ total: number; items: () => AsyncGenerator<InstanceKey> }> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = {\r\n ...this.toRpcTokenOptions(options),\r\n keys: stripTransientElementKeys(options.keys).toJSON(),\r\n };\r\n\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: async (page) => {\r\n const keys = await this._requestsHandler.getContentInstanceKeys({ ...rpcOptions, paging: page });\r\n return {\r\n total: keys.total,\r\n items: keys.items.instanceKeys.reduce((instanceKeys, entry) => {\r\n for (const id of CompressedId64Set.iterable(entry[1])) {\r\n instanceKeys.push({ className: entry[0], id });\r\n }\r\n return instanceKeys;\r\n }, new Array<InstanceKey>()),\r\n };\r\n },\r\n });\r\n\r\n const { total, items } = await generator.createAsyncIteratorResponse();\r\n return {\r\n total,\r\n async *items() {\r\n yield* items;\r\n },\r\n };\r\n }\r\n\r\n /** Retrieves display label definition of specific item. */\r\n public async getDisplayLabelDefinition(\r\n requestOptions: DisplayLabelRequestOptions<IModelConnection, InstanceKey> & ClientDiagnosticsAttribute,\r\n ): Promise<LabelDefinition> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions({ ...requestOptions });\r\n const result = await this._requestsHandler.getDisplayLabelDefinition(rpcOptions);\r\n return this._localizationHelper.getLocalizedLabelDefinition(result);\r\n }\r\n\r\n /** Retrieves display label definition of specific items. */\r\n public async getDisplayLabelDefinitionsIterator(\r\n requestOptions: DisplayLabelsRequestOptions<IModelConnection, InstanceKey> & ClientDiagnosticsAttribute & MultipleValuesRequestOptions,\r\n ): Promise<{ total: number; items: AsyncIterableIterator<LabelDefinition> }> {\r\n startIModelInitialization(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions({ ...requestOptions });\r\n const generator = new StreamedResponseGenerator({\r\n ...requestOptions,\r\n getBatch: async (page) => {\r\n const partialKeys = !page.start ? rpcOptions.keys : rpcOptions.keys.slice(page.start);\r\n const result = await this._requestsHandler.getPagedDisplayLabelDefinitions({ ...rpcOptions, keys: partialKeys });\r\n result.items = this._localizationHelper.getLocalizedLabelDefinitions(result.items);\r\n return result;\r\n },\r\n });\r\n\r\n return generator.createAsyncIteratorResponse();\r\n }\r\n\r\n /**\r\n * Retrieves display label definition of specific items.\r\n * @deprecated in 4.5. Use [[getDisplayLabelDefinitionsIterator]] instead.\r\n */\r\n public async getDisplayLabelDefinitions(\r\n requestOptions: DisplayLabelsRequestOptions<IModelConnection, InstanceKey> & ClientDiagnosticsAttribute & MultipleValuesRequestOptions,\r\n ): Promise<LabelDefinition[]> {\r\n const { items } = await this.getDisplayLabelDefinitionsIterator(requestOptions);\r\n return collect(items);\r\n }\r\n}\r\n\r\nconst getDescriptorOverrides = (descriptorOrOverrides: Descriptor | DescriptorOverrides): DescriptorOverrides => {\r\n if (descriptorOrOverrides instanceof Descriptor) {\r\n return descriptorOrOverrides.createDescriptorOverrides();\r\n }\r\n return descriptorOrOverrides;\r\n};\r\n\r\nconst stripTransientElementKeys = (keys: KeySet) => {\r\n if (!keys.some((key) => Key.isInstanceKey(key) && key.className === TRANSIENT_ELEMENT_CLASSNAME)) {\r\n return keys;\r\n }\r\n\r\n const copy = new KeySet();\r\n copy.add(keys, (key) => {\r\n // the callback is not going to be called with EntityProps as KeySet converts them\r\n // to InstanceKeys, but we want to keep the EntityProps case for correctness\r\n /* c8 ignore next 3 */\r\n const isTransient =\r\n (Key.isInstanceKey(key) && key.className === TRANSIENT_ELEMENT_CLASSNAME) ||\r\n (Key.isEntityProps(key) && key.classFullName === TRANSIENT_ELEMENT_CLASSNAME);\r\n return !isTransient;\r\n });\r\n return copy;\r\n};\r\n\r\nasync function collect<T>(iter: AsyncIterable<T>): Promise<T[]> {\r\n const result = new Array<T>();\r\n for await (const value of iter) {\r\n result.push(value);\r\n }\r\n return result;\r\n}\r\n"]}
|
|
@@ -9,10 +9,8 @@ import { BeEvent, Guid } from "@itwin/core-bentley";
|
|
|
9
9
|
import { RegisteredRuleset } from "@itwin/presentation-common";
|
|
10
10
|
/** @internal */
|
|
11
11
|
export class RulesetManagerImpl {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.onRulesetModified = new BeEvent();
|
|
15
|
-
}
|
|
12
|
+
_clientRulesets = new Map();
|
|
13
|
+
onRulesetModified = new BeEvent();
|
|
16
14
|
static create() {
|
|
17
15
|
return new RulesetManagerImpl();
|
|
18
16
|
}
|