@itwin/presentation-frontend 3.2.0-dev.8 → 3.3.0-dev.1

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/lib/cjs/presentation-frontend/PresentationManager.d.ts.map +1 -1
  3. package/lib/cjs/presentation-frontend/PresentationManager.js +7 -10
  4. package/lib/cjs/presentation-frontend/PresentationManager.js.map +1 -1
  5. package/lib/cjs/presentation-frontend/selection/ISelectionProvider.d.ts +1 -1
  6. package/lib/cjs/presentation-frontend/selection/ISelectionProvider.js.map +1 -1
  7. package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.d.ts +1 -1
  8. package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.d.ts.map +1 -1
  9. package/lib/cjs/presentation-frontend/selection/SelectionChangeEvent.js.map +1 -1
  10. package/lib/cjs/presentation-frontend/selection/SelectionManager.d.ts +12 -12
  11. package/lib/cjs/presentation-frontend/selection/SelectionManager.js +10 -10
  12. package/lib/cjs/presentation-frontend/selection/SelectionManager.js.map +1 -1
  13. package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.d.ts +1 -1
  14. package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.js +1 -1
  15. package/lib/cjs/presentation-frontend/selection/SelectionScopesManager.js.map +1 -1
  16. package/lib/cjs/presentation-frontend.d.ts +1 -1
  17. package/lib/cjs/presentation-frontend.js +1 -1
  18. package/lib/cjs/presentation-frontend.js.map +1 -1
  19. package/lib/esm/presentation-frontend/PresentationManager.d.ts.map +1 -1
  20. package/lib/esm/presentation-frontend/PresentationManager.js +7 -10
  21. package/lib/esm/presentation-frontend/PresentationManager.js.map +1 -1
  22. package/lib/esm/presentation-frontend/selection/ISelectionProvider.d.ts +1 -1
  23. package/lib/esm/presentation-frontend/selection/ISelectionProvider.js.map +1 -1
  24. package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.d.ts +1 -1
  25. package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.d.ts.map +1 -1
  26. package/lib/esm/presentation-frontend/selection/SelectionChangeEvent.js.map +1 -1
  27. package/lib/esm/presentation-frontend/selection/SelectionManager.d.ts +12 -12
  28. package/lib/esm/presentation-frontend/selection/SelectionManager.js +10 -10
  29. package/lib/esm/presentation-frontend/selection/SelectionManager.js.map +1 -1
  30. package/lib/esm/presentation-frontend/selection/SelectionScopesManager.d.ts +1 -1
  31. package/lib/esm/presentation-frontend/selection/SelectionScopesManager.js +1 -1
  32. package/lib/esm/presentation-frontend/selection/SelectionScopesManager.js.map +1 -1
  33. package/lib/esm/presentation-frontend.d.ts +1 -1
  34. package/lib/esm/presentation-frontend.js +1 -1
  35. package/lib/esm/presentation-frontend.js.map +1 -1
  36. package/package.json +16 -17
package/CHANGELOG.md CHANGED
@@ -1,6 +1,38 @@
1
1
  # Change Log - @itwin/presentation-frontend
2
2
 
3
- This log was last generated on Thu, 24 Feb 2022 15:26:55 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 15 Apr 2022 13:49:25 GMT and should not be manually modified.
4
+
5
+ ## 3.1.3
6
+ Fri, 15 Apr 2022 13:49:25 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 3.1.2
11
+ Wed, 06 Apr 2022 22:27:56 GMT
12
+
13
+ _Version update only_
14
+
15
+ ## 3.1.1
16
+ Thu, 31 Mar 2022 15:55:48 GMT
17
+
18
+ _Version update only_
19
+
20
+ ## 3.1.0
21
+ Tue, 29 Mar 2022 20:53:47 GMT
22
+
23
+ _Version update only_
24
+
25
+ ## 3.0.3
26
+ Fri, 25 Mar 2022 15:10:02 GMT
27
+
28
+ ### Updates
29
+
30
+ - Fix paged requests result accumulation resulting in infinite loop.
31
+
32
+ ## 3.0.2
33
+ Thu, 10 Mar 2022 21:18:13 GMT
34
+
35
+ _Version update only_
4
36
 
5
37
  ## 3.0.1
6
38
  Thu, 24 Feb 2022 15:26:55 GMT
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationManager.d.ts","sourceRoot":"","sources":["../../../src/presentation-frontend/PresentationManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PresentationManager.d.ts","sourceRoot":"","sources":["../../../src/presentation-frontend/PresentationManager.ts"],"names":[],"mappings":"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"}
@@ -354,11 +354,8 @@ const getDescriptorOverrides = (descriptorOrOverrides) => {
354
354
  const optionalNodeKeyToJson = (key) => key ? presentation_common_1.NodeKey.toJSON(key) : undefined;
355
355
  async function createPagedGeneratorResponse(props) {
356
356
  var _a, _b, _c, _d;
357
- const requestedPageStart = (_b = (_a = props.page) === null || _a === void 0 ? void 0 : _a.start) !== null && _b !== void 0 ? _b : 0;
358
- const requestedPageSize = (_d = (_c = props.page) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0;
359
- let pageStart = requestedPageStart;
360
- let pageSize = requestedPageSize;
361
- let receivedItemsCount = 0;
357
+ let pageStart = (_b = (_a = props.page) === null || _a === void 0 ? void 0 : _a.start) !== null && _b !== void 0 ? _b : 0;
358
+ let pageSize = (_d = (_c = props.page) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : 0;
362
359
  let requestIndex = 0;
363
360
  const firstPage = await props.get({ start: pageStart, size: pageSize }, requestIndex++);
364
361
  return {
@@ -368,18 +365,18 @@ async function createPagedGeneratorResponse(props) {
368
365
  while (true) {
369
366
  for (const item of partialResult.items) {
370
367
  yield item;
371
- ++receivedItemsCount;
372
368
  }
369
+ const receivedItemsCount = partialResult.items.length;
373
370
  if (partialResult.total !== 0 && receivedItemsCount === 0) {
374
371
  if (pageStart >= partialResult.total)
375
372
  throw new Error(`Requested page with start index ${pageStart} is out of bounds. Total number of items: ${partialResult.total}`);
376
373
  throw new Error("Paged request returned non zero total count but no items");
377
374
  }
378
- if (requestedPageSize !== 0 && receivedItemsCount >= requestedPageSize || receivedItemsCount >= (partialResult.total - requestedPageStart))
375
+ if (pageSize !== 0 && receivedItemsCount >= pageSize || receivedItemsCount >= (partialResult.total - pageStart))
379
376
  break;
380
- if (requestedPageSize !== 0)
381
- pageSize = requestedPageSize - receivedItemsCount;
382
- pageStart = requestedPageStart + receivedItemsCount;
377
+ if (pageSize !== 0)
378
+ pageSize -= receivedItemsCount;
379
+ pageStart += receivedItemsCount;
383
380
  partialResult = await props.get({ start: pageStart, size: pageSize }, requestIndex++);
384
381
  }
385
382
  },
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationManager.js","sourceRoot":"","sources":["../../../src/presentation-frontend/PresentationManager.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAmG;AACnG,wDAAgE;AAEhE,oEAOoC;AACpC,6DAA0D;AAC1D,6DAA0D;AAC1D,qDAAsE;AACtE,uEAAiG;AACjG,mEAA2E;AAC3E,iDAA8C;AAiE9C;;;;;GAKG;AACH,MAAa,mBAAmB;IA4B9B,YAAoB,KAAgC;;QAlBpD;;;WAGG;QACI,6BAAwB,GAAG,IAAI,sBAAO,EAAkD,CAAC;QAEhG;;;WAGG;QACI,2BAAsB,GAAG,IAAI,sBAAO,EAAgD,CAAC;QAiD5F,gEAAgE;QACxD,aAAQ,GAAG,CAAC,IAAW,EAAE,MAAsB,EAAE,EAAE;YACzD,mEAAmE;YACnE,IAAI,CAAC,iBAAiB,CAAC,gCAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;QA5CA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;SAChD;QAED,IAAI,CAAC,gBAAgB,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,mCAAI,IAAI,wCAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9H,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAmC,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,mCAAkB,CAAC,MAAM,EAAE,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,IAAI,uCAAkB,EAAE,CAAC;QACpD,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAmC,CAAC;QAE/D,IAAI,sBAAM,CAAC,OAAO,EAAE;YAClB,oFAAoF;YACpF,IAAI,CAAC,mBAAmB,GAAG,sBAAM,CAAC,WAAW,CAAC,2CAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3F,IAAI,CAAC,mBAAmB,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,kBAAkB,mCAAI,IAAI,uCAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC/G,IAAI,CAAC,aAAa,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,mCAAI,IAAI,2BAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACxF;IACH,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;SACtC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAwB;QACjD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,MAAwB;QACrD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAQD,wEAAwE;IAChE,KAAK,CAAC,iBAAiB,CAAC,MAAkB;QAChD,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE;YAC9B,qBAAqB;YACrB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;gBACnC,SAAS;YAEX,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE;gBACpC,qBAAqB;gBACrB,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC;oBACzC,SAAS;gBAEX,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC3C,IAAI,UAAU,CAAC,OAAO;oBACpB,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBACnG,IAAI,UAAU,CAAC,SAAS;oBACtB,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;aACxG;SACF;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,qBAAqB,CAAC,CAAmB,IAAI,CAAC;IAE3D;;;OAGG;IACI,MAAM,CAAC,MAAM,CAAC,KAAgC;QACnD,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB;IAChB,IAAW,kBAAkB,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEjE,gBAAgB;IAChB,IAAW,kBAAkB,KAAK,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAEpE,gBAAgB;IAChB,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAExD;;OAEG;IACI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAE5C;;;OAGG;IACI,IAAI,CAAC,SAAiB;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACrC,MAAM,WAAW,GAAG,IAAI,qDAA2B,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACzF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC/C;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAC3C,CAAC;IAEO,iBAAiB,CAAmI,cAAwB;QAClL,2CAA2C;QAC3C,qHAAqH;QACrH,yGAAyG;QACzG,MAAM,cAAc,GAA4C,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,YAAY;YACnB,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5C,IAAI,IAAI,CAAC,gBAAgB;YACvB,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEpD,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,iBAAiB,EAAE,GAAG,cAAc,CAAC;QAC1E,OAAO;YACL,GAAG,cAAc;YACjB,GAAG,iBAAiB;YACpB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,qCAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;SAC7B,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAA2F,OAAiB;QACvJ,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;QAClD,IAAI,gBAAkC,CAAC;QACvC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACnC,gBAAgB,GAAG,WAAW,CAAC;SAChC;aAAM;YACL,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC3D,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;SACvE;QACD,MAAM,SAAS,GAAG,CAAC,OAAO,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAElG,0GAA0G;QAC1G,6GAA6G;QAC7G,mCAAmC;QACnC,MAAM,SAAS,GAAG,CAAC,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC1D,IAAI,QAAQ,CAAC,IAAI,KAAK,wCAAkB,CAAC,SAAS;gBAChD,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,kCAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/E,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,sEAAsE;YACtE,4EAA4E;YAC5E,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;SAC3D;QAED,OAAO,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IACpF,CAAC;IAED,sBAAsB;IACf,KAAK,CAAC,QAAQ,CAAC,cAA0F;QAC9G,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/G,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAuB,EAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAC/K,OAAO,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,0BAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,6BAA6B;IACtB,KAAK,CAAC,aAAa,CAAC,cAAmF;QAC5G,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,8DAA8D;IACvD,KAAK,CAAC,gBAAgB,CAAC,cAA0F;QACtH,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/G,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAuB,EAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAC/K,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,0BAAI,CAAC,QAAQ,CAAC,CAAC;SACnF,CAAC;IACJ,CAAC;IAED,wHAAwH;IACjH,KAAK,CAAC,YAAY,CAAC,cAA+F;QACvH,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,iCAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QACtI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC,GAAG,CAAC,qCAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,sFAAsF;IAC/E,KAAK,CAAC,oBAAoB,CAAC,cAAsF;QACtH,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QACjG,OAAO,MAAM,CAAC,GAAG,CAAC,qCAAe,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB,CAAC,cAA8D;QAC3F,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACzE,OAAO,qCAAe,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACnF,CAAC;IAED,oGAAoG;IAC7F,KAAK,CAAC,oBAAoB,CAAC,cAA0F;QAC1H,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACxC,GAAG,OAAO;YACV,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;SACvD,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC5E,OAAO,gCAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,0CAA0C;IACnC,KAAK,CAAC,iBAAiB,CAAC,cAAkH;QAC/I,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACxC,GAAG,OAAO;YACV,UAAU,EAAE,sBAAsB,CAAC,cAAc,CAAC,UAAU,CAAC;YAC7D,IAAI,EAAE,yBAAyB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;SAC9D,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,sFAAsF;IAC/E,KAAK,CAAC,UAAU,CAAC,cAAyH;;QAC/I,OAAO,MAAA,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,0CAAE,OAAO,CAAC;IACjE,CAAC;IAED,2GAA2G;IACpG,KAAK,CAAC,iBAAiB,CAAC,cAAyH;QACtJ,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACxC,GAAG,OAAO;YACV,UAAU,EAAE,sBAAsB,CAAC,cAAc,CAAC,UAAU,CAAC;YAC7D,IAAI,EAAE,yBAAyB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;SAC9D,CAAC,CAAC;QACH,IAAI,UAAU,GAAG,CAAC,cAAc,CAAC,UAAU,YAAY,gCAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3G,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAuB,EAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,EAAE;YACtG,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,UAAU,EAAE;gBACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3G,IAAI,OAAO,EAAE;oBACX,UAAU,GAAG,gCAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACrD,OAAO,OAAO,CAAC,UAAU,CAAC;iBAC3B;gBACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;aAChC;YACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,0BAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAO,CAAC,IAAI,EAAgB,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;QACjI,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,6BAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;SACtF,CAAC;IACJ,CAAC;IAED,oEAAoE;IAC7D,KAAK,CAAC,sBAAsB,CAAC,cAAyH;QAC3J,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG;YACjB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAClC,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC;YACtD,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;SACvD,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAuB,EAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAC/L,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAiB,CAAC,QAAQ,CAAC;SACpD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,oBAAoB,CAAC,cAAuE;QACvG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,sBAAsB,CAAC,cAA4F;QAC9H,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG;YACjB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAClC,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;SACvD,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,cAAc,CAAC,MAAM;YAC3B,GAAG,EAAE,KAAK,EAAE,IAA2B,EAAE,EAAE;gBACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjG,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;wBAC5D,KAAK,MAAM,EAAE,IAAI,gCAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;4BACrD,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;yBAChD;wBACD,OAAO,YAAY,CAAC;oBACtB,CAAC,EAAE,IAAI,KAAK,EAAe,CAAC;iBAC7B,CAAC;YACJ,CAAC;SACF,CAAC;QACF,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,2DAA2D;IACpD,KAAK,CAAC,yBAAyB,CAAC,cAAyE;QAC9G,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,iCAAW,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9G,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,qCAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,4DAA4D;IACrD,KAAK,CAAC,0BAA0B,CAAC,cAA0E;QAChH,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,cAAc,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,iCAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpH,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAuB,EAAC,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE;YACnF,MAAM,WAAW,GAAG,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACpH,OAAO,IAAI,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3G,CAAC;CAEF;AArXD,kDAqXC;AAED,MAAM,sBAAsB,GAAG,CAAC,qBAAuD,EAAuB,EAAE;IAC9G,IAAI,qBAAqB,YAAY,gCAAU;QAC7C,OAAO,qBAAqB,CAAC,yBAAyB,EAAE,CAAC;IAC3D,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,GAAwB,EAA2B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,6BAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAM3H,KAAK,UAAU,4BAA4B,CAAqB,KAAoD;;IAClH,MAAM,kBAAkB,GAAG,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,KAAK,mCAAI,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAI,mCAAI,CAAC,CAAC;IAChD,IAAI,SAAS,GAAG,kBAAkB,CAAC;IACnC,IAAI,QAAQ,GAAG,iBAAiB,CAAC;IACjC,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACxF,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,KAAK,CAAC,CAAC,KAAK;YACV,IAAI,aAAa,GAAG,SAAS,CAAC;YAC9B,OAAO,IAAI,EAAE;gBACX,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE;oBACtC,MAAM,IAAI,CAAC;oBACX,EAAE,kBAAkB,CAAC;iBACtB;gBAED,IAAI,aAAa,CAAC,KAAK,KAAK,CAAC,IAAI,kBAAkB,KAAK,CAAC,EAAE;oBACzD,IAAI,SAAS,IAAI,aAAa,CAAC,KAAK;wBAClC,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,6CAA6C,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;oBAClI,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;iBAC7E;gBAED,IAAI,iBAAiB,KAAK,CAAC,IAAI,kBAAkB,IAAI,iBAAiB,IAAI,kBAAkB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,kBAAkB,CAAC;oBACxI,MAAM;gBAER,IAAI,iBAAiB,KAAK,CAAC;oBACzB,QAAQ,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;gBACpD,SAAS,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;gBAEpD,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;aACvF;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gBAAgB;AACT,MAAM,uBAAuB,GAAG,KAAK,EAAS,aAAsC,EAAE,MAA4F,EAAiC,EAAE;IAC1N,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,KAAK,EAAS,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,4BAA4B,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE;YACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClB;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;KACpC;IAAC,MAAM;QACN,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KAChC;AACH,CAAC,CAAC;AAXW,QAAA,uBAAuB,2BAWlC;AAEF,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAE,EAAE;IACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,8CAA2B,CAAC;QAC9F,OAAO,IAAI,CAAC;IAEd,MAAM,IAAI,GAAG,IAAI,4BAAM,EAAE,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QACrB,kFAAkF;QAClF,4EAA4E;QAC5E,uBAAuB;QACvB,MAAM,WAAW,GAAG,yBAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,8CAA2B;eACtF,yBAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,KAAK,8CAA2B,CAAC;QACjF,OAAO,CAAC,WAAW,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","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 { IModelConnection, IpcApp } from \"@itwin/core-frontend\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport {\r\n Content, ContentDescriptorRequestOptions, ContentInstanceKeysRequestOptions, ContentRequestOptions, ContentSourcesRequestOptions, ContentUpdateInfo,\r\n Descriptor, DescriptorOverrides, DisplayLabelRequestOptions, DisplayLabelsRequestOptions, DisplayValueGroup, DistinctValuesRequestOptions,\r\n ElementProperties, FilterByInstancePathsHierarchyRequestOptions, FilterByTextHierarchyRequestOptions, HierarchyRequestOptions, HierarchyUpdateInfo,\r\n InstanceKey, Item, Key, KeySet, LabelDefinition, Node, NodeKey, NodeKeyJSON, NodePathElement, Paged, PagedResponse, PageOptions,\r\n PresentationIpcEvents, RpcRequestsHandler, Ruleset, RulesetVariable, SelectClassInfo, SingleElementPropertiesRequestOptions, UpdateInfo,\r\n UpdateInfoJSON, VariableValueTypes,\r\n} from \"@itwin/presentation-common\";\r\nimport { IpcRequestsHandler } from \"./IpcRequestsHandler\";\r\nimport { LocalizationHelper } from \"./LocalizationHelper\";\r\nimport { RulesetManager, RulesetManagerImpl } from \"./RulesetManager\";\r\nimport { RulesetVariablesManager, RulesetVariablesManagerImpl } from \"./RulesetVariablesManager\";\r\nimport { TRANSIENT_ELEMENT_CLASSNAME } from \"./selection/SelectionManager\";\r\nimport { StateTracker } from \"./StateTracker\";\r\n\r\n/**\r\n * Data structure that describes IModel hierarchy change event arguments.\r\n * @alpha\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 * @alpha\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 * 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. Default presentation units are used if this is not specified. The active unit\r\n * system can later be changed through [[PresentationManager]] or overriden for each request.\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 /** @internal */\r\n rpcRequestsHandler?: RpcRequestsHandler;\r\n\r\n /** @internal */\r\n ipcRequestsHandler?: IpcRequestsHandler;\r\n\r\n /** @internal */\r\n stateTracker?: StateTracker;\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: LocalizationHelper;\r\n private _rulesetVars: Map<string, RulesetVariablesManager>;\r\n private _clearEventListener?: () => void;\r\n private _connections: Map<IModelConnection, Promise<void>>;\r\n private _ipcRequestsHandler?: IpcRequestsHandler;\r\n private _stateTracker?: StateTracker;\r\n\r\n /**\r\n * An event raised when hierarchies created using specific ruleset change\r\n * @alpha\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 * @alpha\r\n */\r\n public onIModelContentChanged = new BeEvent<(args: IModelContentChangeEventArgs) => void>();\r\n\r\n /** Get / set active locale used for localizing presentation data */\r\n public activeLocale: string | undefined;\r\n\r\n /** Get / set active unit system used to format property values with units */\r\n public activeUnitSystem: UnitSystemKey | undefined;\r\n\r\n private constructor(props?: PresentationManagerProps) {\r\n if (props) {\r\n this.activeLocale = props.activeLocale;\r\n this.activeUnitSystem = props.activeUnitSystem;\r\n }\r\n\r\n this._requestsHandler = props?.rpcRequestsHandler ?? new RpcRequestsHandler(props ? { clientId: props.clientId } : undefined);\r\n this._rulesetVars = new Map<string, RulesetVariablesManager>();\r\n this._rulesets = RulesetManagerImpl.create();\r\n this._localizationHelper = new LocalizationHelper();\r\n this._connections = new Map<IModelConnection, Promise<void>>();\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 this._stateTracker = props?.stateTracker ?? new StateTracker(this._ipcRequestsHandler);\r\n }\r\n }\r\n\r\n public dispose() {\r\n this._requestsHandler.dispose();\r\n if (this._clearEventListener) {\r\n this._clearEventListener();\r\n this._clearEventListener = undefined;\r\n }\r\n }\r\n\r\n private async onConnection(imodel: IModelConnection) {\r\n if (!this._connections.has(imodel))\r\n this._connections.set(imodel, this.initializeIModel(imodel));\r\n await this._connections.get(imodel);\r\n }\r\n\r\n private async initializeIModel(imodel: IModelConnection) {\r\n imodel.onClose.addOnce(() => {\r\n this._connections.delete(imodel);\r\n });\r\n await this.onNewiModelConnection(imodel);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onUpdate = (_evt: Event, report: UpdateInfoJSON) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.handleUpdateAsync(UpdateInfo.fromJSON(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 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 const updateInfo = imodelReport[rulesetId];\r\n if (updateInfo.content)\r\n this.onIModelContentChanged.raiseEvent({ rulesetId, updateInfo: updateInfo.content, imodelKey });\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 /** Function that is called when a new IModelConnection is used to retrieve data.\r\n * @internal\r\n */\r\n public async onNewiModelConnection(_: 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() { return this._requestsHandler; }\r\n\r\n /** @internal */\r\n public get ipcRequestsHandler() { return this._ipcRequestsHandler; }\r\n\r\n /** @internal */\r\n public get stateTracker() { return this._stateTracker; }\r\n\r\n /**\r\n * Get rulesets manager\r\n */\r\n public rulesets() { return this._rulesets; }\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[] }>(requestOptions: TOptions) {\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 if (this.activeUnitSystem)\r\n defaultOptions.unitSystem = this.activeUnitSystem;\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 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 /** Retrieves nodes */\r\n public async getNodes(requestOptions: Paged<HierarchyRequestOptions<IModelConnection, NodeKey, RulesetVariable>>): Promise<Node[]> {\r\n await this.onConnection(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options, parentKey: optionalNodeKeyToJson(options.parentKey) });\r\n const result = await buildPagedArrayResponse(options.paging, async (partialPageOptions) => this._requestsHandler.getPagedNodes({ ...rpcOptions, paging: partialPageOptions }));\r\n return this._localizationHelper.getLocalizedNodes(result.items.map(Node.fromJSON));\r\n }\r\n\r\n /** Retrieves nodes count. */\r\n public async getNodesCount(requestOptions: HierarchyRequestOptions<IModelConnection, NodeKey, RulesetVariable>): Promise<number> {\r\n await this.onConnection(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options, parentKey: optionalNodeKeyToJson(options.parentKey) });\r\n return this._requestsHandler.getNodesCount(rpcOptions);\r\n }\r\n\r\n /** Retrieves total nodes count and a single page of nodes. */\r\n public async getNodesAndCount(requestOptions: Paged<HierarchyRequestOptions<IModelConnection, NodeKey, RulesetVariable>>): Promise<{ count: number, nodes: Node[] }> {\r\n await this.onConnection(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options, parentKey: optionalNodeKeyToJson(options.parentKey) });\r\n const result = await buildPagedArrayResponse(options.paging, async (partialPageOptions) => this._requestsHandler.getPagedNodes({ ...rpcOptions, paging: partialPageOptions }));\r\n return {\r\n count: result.total,\r\n nodes: this._localizationHelper.getLocalizedNodes(result.items.map(Node.fromJSON)),\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(requestOptions: FilterByInstancePathsHierarchyRequestOptions<IModelConnection, RulesetVariable>): Promise<NodePathElement[]> {\r\n await this.onConnection(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options, instancePaths: options.instancePaths.map((p) => p.map(InstanceKey.toJSON)) });\r\n const result = await this._requestsHandler.getNodePaths(rpcOptions);\r\n return result.map(NodePathElement.fromJSON);\r\n }\r\n\r\n /** Retrieves paths from root nodes to nodes containing filter text in their label. */\r\n public async getFilteredNodePaths(requestOptions: FilterByTextHierarchyRequestOptions<IModelConnection, RulesetVariable>): Promise<NodePathElement[]> {\r\n await this.onConnection(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(NodePathElement.fromJSON);\r\n }\r\n\r\n /**\r\n * Get all content sources for a given list of classes.\r\n * @beta\r\n */\r\n public async getContentSources(requestOptions: ContentSourcesRequestOptions<IModelConnection>): Promise<SelectClassInfo[]> {\r\n await this.onConnection(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(requestOptions: ContentDescriptorRequestOptions<IModelConnection, KeySet, RulesetVariable>): Promise<Descriptor | undefined> {\r\n await this.onConnection(requestOptions.imodel);\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 return Descriptor.fromJSON(result);\r\n }\r\n\r\n /** Retrieves overall content set size. */\r\n public async getContentSetSize(requestOptions: ContentRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>): Promise<number> {\r\n await this.onConnection(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 /** Retrieves content which consists of a content descriptor and a page of records. */\r\n public async getContent(requestOptions: Paged<ContentRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>): Promise<Content | undefined> {\r\n return (await this.getContentAndSize(requestOptions))?.content;\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 public async getContentAndSize(requestOptions: Paged<ContentRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>): Promise<{ content: Content, size: number } | undefined> {\r\n await this.onConnection(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 let descriptor = (requestOptions.descriptor instanceof Descriptor) ? requestOptions.descriptor : undefined;\r\n const result = await buildPagedArrayResponse(options.paging, async (partialPageOptions, requestIndex) => {\r\n if (0 === requestIndex && !descriptor) {\r\n const content = await this._requestsHandler.getPagedContent({ ...rpcOptions, paging: partialPageOptions });\r\n if (content) {\r\n descriptor = Descriptor.fromJSON(content.descriptor);\r\n return content.contentSet;\r\n }\r\n return { total: 0, items: [] };\r\n }\r\n return this._requestsHandler.getPagedContentSet({ ...rpcOptions, paging: partialPageOptions });\r\n });\r\n if (!descriptor)\r\n return undefined;\r\n const items = result.items.map((itemJson) => Item.fromJSON(itemJson)).filter<Item>((item): item is Item => (item !== undefined));\r\n return {\r\n size: result.total,\r\n content: this._localizationHelper.getLocalizedContent(new Content(descriptor, items)),\r\n };\r\n }\r\n\r\n /** Retrieves distinct values of specific field from the content. */\r\n public async getPagedDistinctValues(requestOptions: DistinctValuesRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>): Promise<PagedResponse<DisplayValueGroup>> {\r\n await this.onConnection(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 const result = await buildPagedArrayResponse(requestOptions.paging, async (partialPageOptions) => this._requestsHandler.getPagedDistinctValues({ ...rpcOptions, paging: partialPageOptions }));\r\n return {\r\n ...result,\r\n items: result.items.map(DisplayValueGroup.fromJSON),\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 * @beta\r\n */\r\n public async getElementProperties(requestOptions: SingleElementPropertiesRequestOptions<IModelConnection>): Promise<ElementProperties | undefined> {\r\n await this.onConnection(requestOptions.imodel);\r\n return this._requestsHandler.getElementProperties(this.toRpcTokenOptions(requestOptions));\r\n }\r\n\r\n /**\r\n * Retrieves content item instance keys.\r\n * @beta\r\n */\r\n public async getContentInstanceKeys(requestOptions: ContentInstanceKeysRequestOptions<IModelConnection, KeySet, RulesetVariable>): Promise<{ total: number, items: () => AsyncGenerator<InstanceKey> }> {\r\n await this.onConnection(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 props = {\r\n page: requestOptions.paging,\r\n get: async (page: Required<PageOptions>) => {\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 return createPagedGeneratorResponse(props);\r\n }\r\n\r\n /** Retrieves display label definition of specific item. */\r\n public async getDisplayLabelDefinition(requestOptions: DisplayLabelRequestOptions<IModelConnection, InstanceKey>): Promise<LabelDefinition> {\r\n await this.onConnection(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions({ ...requestOptions, key: InstanceKey.toJSON(requestOptions.key) });\r\n const result = await this._requestsHandler.getDisplayLabelDefinition(rpcOptions);\r\n return this._localizationHelper.getLocalizedLabelDefinition(LabelDefinition.fromJSON(result));\r\n }\r\n\r\n /** Retrieves display label definition of specific items. */\r\n public async getDisplayLabelDefinitions(requestOptions: DisplayLabelsRequestOptions<IModelConnection, InstanceKey>): Promise<LabelDefinition[]> {\r\n await this.onConnection(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions({ ...requestOptions, keys: requestOptions.keys.map(InstanceKey.toJSON) });\r\n const result = await buildPagedArrayResponse(undefined, async (partialPageOptions) => {\r\n const partialKeys = (!partialPageOptions.start) ? rpcOptions.keys : rpcOptions.keys.slice(partialPageOptions.start);\r\n return this._requestsHandler.getPagedDisplayLabelDefinitions({ ...rpcOptions, keys: partialKeys });\r\n });\r\n return this._localizationHelper.getLocalizedLabelDefinitions(result.items.map(LabelDefinition.fromJSON));\r\n }\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 return descriptorOrOverrides;\r\n};\r\n\r\nconst optionalNodeKeyToJson = (key: NodeKey | undefined): NodeKeyJSON | undefined => key ? NodeKey.toJSON(key) : undefined;\r\n\r\ninterface PagedGeneratorCreateProps<TPagedResponseItem> {\r\n page: PageOptions | undefined;\r\n get: (pageStart: Required<PageOptions>, requestIndex: number) => Promise<{ total: number, items: TPagedResponseItem[] }>;\r\n}\r\nasync function createPagedGeneratorResponse<TPagedResponseItem>(props: PagedGeneratorCreateProps<TPagedResponseItem>) {\r\n const requestedPageStart = props.page?.start ?? 0;\r\n const requestedPageSize = props.page?.size ?? 0;\r\n let pageStart = requestedPageStart;\r\n let pageSize = requestedPageSize;\r\n let receivedItemsCount = 0;\r\n let requestIndex = 0;\r\n\r\n const firstPage = await props.get({ start: pageStart, size: pageSize }, requestIndex++);\r\n return {\r\n total: firstPage.total,\r\n async *items() {\r\n let partialResult = firstPage;\r\n while (true) {\r\n for (const item of partialResult.items) {\r\n yield item;\r\n ++receivedItemsCount;\r\n }\r\n\r\n if (partialResult.total !== 0 && receivedItemsCount === 0) {\r\n if (pageStart >= partialResult.total)\r\n throw new Error(`Requested page with start index ${pageStart} is out of bounds. Total number of items: ${partialResult.total}`);\r\n throw new Error(\"Paged request returned non zero total count but no items\");\r\n }\r\n\r\n if (requestedPageSize !== 0 && receivedItemsCount >= requestedPageSize || receivedItemsCount >= (partialResult.total - requestedPageStart))\r\n break;\r\n\r\n if (requestedPageSize !== 0)\r\n pageSize = requestedPageSize - receivedItemsCount;\r\n pageStart = requestedPageStart + receivedItemsCount;\r\n\r\n partialResult = await props.get({ start: pageStart, size: pageSize }, requestIndex++);\r\n }\r\n },\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport const buildPagedArrayResponse = async <TItem>(requestedPage: PageOptions | undefined, getter: (page: Required<PageOptions>, requestIndex: number) => Promise<PagedResponse<TItem>>): Promise<PagedResponse<TItem>> => {\r\n try {\r\n const items = new Array<TItem>();\r\n const gen = await createPagedGeneratorResponse({ page: requestedPage, get: getter });\r\n for await (const item of gen.items()) {\r\n items.push(item);\r\n }\r\n return { total: gen.total, items };\r\n } catch {\r\n return { total: 0, items: [] };\r\n }\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 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 = 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"]}
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 { IModelConnection, IpcApp } from \"@itwin/core-frontend\";\r\nimport { UnitSystemKey } from \"@itwin/core-quantity\";\r\nimport {\r\n Content, ContentDescriptorRequestOptions, ContentInstanceKeysRequestOptions, ContentRequestOptions, ContentSourcesRequestOptions, ContentUpdateInfo,\r\n Descriptor, DescriptorOverrides, DisplayLabelRequestOptions, DisplayLabelsRequestOptions, DisplayValueGroup, DistinctValuesRequestOptions,\r\n ElementProperties, FilterByInstancePathsHierarchyRequestOptions, FilterByTextHierarchyRequestOptions, HierarchyRequestOptions, HierarchyUpdateInfo,\r\n InstanceKey, Item, Key, KeySet, LabelDefinition, Node, NodeKey, NodeKeyJSON, NodePathElement, Paged, PagedResponse, PageOptions,\r\n PresentationIpcEvents, RpcRequestsHandler, Ruleset, RulesetVariable, SelectClassInfo, SingleElementPropertiesRequestOptions, UpdateInfo,\r\n UpdateInfoJSON, VariableValueTypes,\r\n} from \"@itwin/presentation-common\";\r\nimport { IpcRequestsHandler } from \"./IpcRequestsHandler\";\r\nimport { LocalizationHelper } from \"./LocalizationHelper\";\r\nimport { RulesetManager, RulesetManagerImpl } from \"./RulesetManager\";\r\nimport { RulesetVariablesManager, RulesetVariablesManagerImpl } from \"./RulesetVariablesManager\";\r\nimport { TRANSIENT_ELEMENT_CLASSNAME } from \"./selection/SelectionManager\";\r\nimport { StateTracker } from \"./StateTracker\";\r\n\r\n/**\r\n * Data structure that describes IModel hierarchy change event arguments.\r\n * @alpha\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 * @alpha\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 * 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. Default presentation units are used if this is not specified. The active unit\r\n * system can later be changed through [[PresentationManager]] or overriden for each request.\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 /** @internal */\r\n rpcRequestsHandler?: RpcRequestsHandler;\r\n\r\n /** @internal */\r\n ipcRequestsHandler?: IpcRequestsHandler;\r\n\r\n /** @internal */\r\n stateTracker?: StateTracker;\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: LocalizationHelper;\r\n private _rulesetVars: Map<string, RulesetVariablesManager>;\r\n private _clearEventListener?: () => void;\r\n private _connections: Map<IModelConnection, Promise<void>>;\r\n private _ipcRequestsHandler?: IpcRequestsHandler;\r\n private _stateTracker?: StateTracker;\r\n\r\n /**\r\n * An event raised when hierarchies created using specific ruleset change\r\n * @alpha\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 * @alpha\r\n */\r\n public onIModelContentChanged = new BeEvent<(args: IModelContentChangeEventArgs) => void>();\r\n\r\n /** Get / set active locale used for localizing presentation data */\r\n public activeLocale: string | undefined;\r\n\r\n /** Get / set active unit system used to format property values with units */\r\n public activeUnitSystem: UnitSystemKey | undefined;\r\n\r\n private constructor(props?: PresentationManagerProps) {\r\n if (props) {\r\n this.activeLocale = props.activeLocale;\r\n this.activeUnitSystem = props.activeUnitSystem;\r\n }\r\n\r\n this._requestsHandler = props?.rpcRequestsHandler ?? new RpcRequestsHandler(props ? { clientId: props.clientId } : undefined);\r\n this._rulesetVars = new Map<string, RulesetVariablesManager>();\r\n this._rulesets = RulesetManagerImpl.create();\r\n this._localizationHelper = new LocalizationHelper();\r\n this._connections = new Map<IModelConnection, Promise<void>>();\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 this._stateTracker = props?.stateTracker ?? new StateTracker(this._ipcRequestsHandler);\r\n }\r\n }\r\n\r\n public dispose() {\r\n this._requestsHandler.dispose();\r\n if (this._clearEventListener) {\r\n this._clearEventListener();\r\n this._clearEventListener = undefined;\r\n }\r\n }\r\n\r\n private async onConnection(imodel: IModelConnection) {\r\n if (!this._connections.has(imodel))\r\n this._connections.set(imodel, this.initializeIModel(imodel));\r\n await this._connections.get(imodel);\r\n }\r\n\r\n private async initializeIModel(imodel: IModelConnection) {\r\n imodel.onClose.addOnce(() => {\r\n this._connections.delete(imodel);\r\n });\r\n await this.onNewiModelConnection(imodel);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onUpdate = (_evt: Event, report: UpdateInfoJSON) => {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.handleUpdateAsync(UpdateInfo.fromJSON(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 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 const updateInfo = imodelReport[rulesetId];\r\n if (updateInfo.content)\r\n this.onIModelContentChanged.raiseEvent({ rulesetId, updateInfo: updateInfo.content, imodelKey });\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 /** Function that is called when a new IModelConnection is used to retrieve data.\r\n * @internal\r\n */\r\n public async onNewiModelConnection(_: 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() { return this._requestsHandler; }\r\n\r\n /** @internal */\r\n public get ipcRequestsHandler() { return this._ipcRequestsHandler; }\r\n\r\n /** @internal */\r\n public get stateTracker() { return this._stateTracker; }\r\n\r\n /**\r\n * Get rulesets manager\r\n */\r\n public rulesets() { return this._rulesets; }\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[] }>(requestOptions: TOptions) {\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 if (this.activeUnitSystem)\r\n defaultOptions.unitSystem = this.activeUnitSystem;\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 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 /** Retrieves nodes */\r\n public async getNodes(requestOptions: Paged<HierarchyRequestOptions<IModelConnection, NodeKey, RulesetVariable>>): Promise<Node[]> {\r\n await this.onConnection(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options, parentKey: optionalNodeKeyToJson(options.parentKey) });\r\n const result = await buildPagedArrayResponse(options.paging, async (partialPageOptions) => this._requestsHandler.getPagedNodes({ ...rpcOptions, paging: partialPageOptions }));\r\n return this._localizationHelper.getLocalizedNodes(result.items.map(Node.fromJSON));\r\n }\r\n\r\n /** Retrieves nodes count. */\r\n public async getNodesCount(requestOptions: HierarchyRequestOptions<IModelConnection, NodeKey, RulesetVariable>): Promise<number> {\r\n await this.onConnection(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options, parentKey: optionalNodeKeyToJson(options.parentKey) });\r\n return this._requestsHandler.getNodesCount(rpcOptions);\r\n }\r\n\r\n /** Retrieves total nodes count and a single page of nodes. */\r\n public async getNodesAndCount(requestOptions: Paged<HierarchyRequestOptions<IModelConnection, NodeKey, RulesetVariable>>): Promise<{ count: number, nodes: Node[] }> {\r\n await this.onConnection(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options, parentKey: optionalNodeKeyToJson(options.parentKey) });\r\n const result = await buildPagedArrayResponse(options.paging, async (partialPageOptions) => this._requestsHandler.getPagedNodes({ ...rpcOptions, paging: partialPageOptions }));\r\n return {\r\n count: result.total,\r\n nodes: this._localizationHelper.getLocalizedNodes(result.items.map(Node.fromJSON)),\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(requestOptions: FilterByInstancePathsHierarchyRequestOptions<IModelConnection, RulesetVariable>): Promise<NodePathElement[]> {\r\n await this.onConnection(requestOptions.imodel);\r\n const options = await this.addRulesetAndVariablesToOptions(requestOptions);\r\n const rpcOptions = this.toRpcTokenOptions({ ...options, instancePaths: options.instancePaths.map((p) => p.map(InstanceKey.toJSON)) });\r\n const result = await this._requestsHandler.getNodePaths(rpcOptions);\r\n return result.map(NodePathElement.fromJSON);\r\n }\r\n\r\n /** Retrieves paths from root nodes to nodes containing filter text in their label. */\r\n public async getFilteredNodePaths(requestOptions: FilterByTextHierarchyRequestOptions<IModelConnection, RulesetVariable>): Promise<NodePathElement[]> {\r\n await this.onConnection(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(NodePathElement.fromJSON);\r\n }\r\n\r\n /**\r\n * Get all content sources for a given list of classes.\r\n * @beta\r\n */\r\n public async getContentSources(requestOptions: ContentSourcesRequestOptions<IModelConnection>): Promise<SelectClassInfo[]> {\r\n await this.onConnection(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(requestOptions: ContentDescriptorRequestOptions<IModelConnection, KeySet, RulesetVariable>): Promise<Descriptor | undefined> {\r\n await this.onConnection(requestOptions.imodel);\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 return Descriptor.fromJSON(result);\r\n }\r\n\r\n /** Retrieves overall content set size. */\r\n public async getContentSetSize(requestOptions: ContentRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>): Promise<number> {\r\n await this.onConnection(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 /** Retrieves content which consists of a content descriptor and a page of records. */\r\n public async getContent(requestOptions: Paged<ContentRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>): Promise<Content | undefined> {\r\n return (await this.getContentAndSize(requestOptions))?.content;\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 public async getContentAndSize(requestOptions: Paged<ContentRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>>): Promise<{ content: Content, size: number } | undefined> {\r\n await this.onConnection(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 let descriptor = (requestOptions.descriptor instanceof Descriptor) ? requestOptions.descriptor : undefined;\r\n const result = await buildPagedArrayResponse(options.paging, async (partialPageOptions, requestIndex) => {\r\n if (0 === requestIndex && !descriptor) {\r\n const content = await this._requestsHandler.getPagedContent({ ...rpcOptions, paging: partialPageOptions });\r\n if (content) {\r\n descriptor = Descriptor.fromJSON(content.descriptor);\r\n return content.contentSet;\r\n }\r\n return { total: 0, items: [] };\r\n }\r\n return this._requestsHandler.getPagedContentSet({ ...rpcOptions, paging: partialPageOptions });\r\n });\r\n if (!descriptor)\r\n return undefined;\r\n const items = result.items.map((itemJson) => Item.fromJSON(itemJson)).filter<Item>((item): item is Item => (item !== undefined));\r\n return {\r\n size: result.total,\r\n content: this._localizationHelper.getLocalizedContent(new Content(descriptor, items)),\r\n };\r\n }\r\n\r\n /** Retrieves distinct values of specific field from the content. */\r\n public async getPagedDistinctValues(requestOptions: DistinctValuesRequestOptions<IModelConnection, Descriptor | DescriptorOverrides, KeySet, RulesetVariable>): Promise<PagedResponse<DisplayValueGroup>> {\r\n await this.onConnection(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 const result = await buildPagedArrayResponse(requestOptions.paging, async (partialPageOptions) => this._requestsHandler.getPagedDistinctValues({ ...rpcOptions, paging: partialPageOptions }));\r\n return {\r\n ...result,\r\n items: result.items.map(DisplayValueGroup.fromJSON),\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 * @beta\r\n */\r\n public async getElementProperties(requestOptions: SingleElementPropertiesRequestOptions<IModelConnection>): Promise<ElementProperties | undefined> {\r\n await this.onConnection(requestOptions.imodel);\r\n return this._requestsHandler.getElementProperties(this.toRpcTokenOptions(requestOptions));\r\n }\r\n\r\n /**\r\n * Retrieves content item instance keys.\r\n * @beta\r\n */\r\n public async getContentInstanceKeys(requestOptions: ContentInstanceKeysRequestOptions<IModelConnection, KeySet, RulesetVariable>): Promise<{ total: number, items: () => AsyncGenerator<InstanceKey> }> {\r\n await this.onConnection(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 props = {\r\n page: requestOptions.paging,\r\n get: async (page: Required<PageOptions>) => {\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 return createPagedGeneratorResponse(props);\r\n }\r\n\r\n /** Retrieves display label definition of specific item. */\r\n public async getDisplayLabelDefinition(requestOptions: DisplayLabelRequestOptions<IModelConnection, InstanceKey>): Promise<LabelDefinition> {\r\n await this.onConnection(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions({ ...requestOptions, key: InstanceKey.toJSON(requestOptions.key) });\r\n const result = await this._requestsHandler.getDisplayLabelDefinition(rpcOptions);\r\n return this._localizationHelper.getLocalizedLabelDefinition(LabelDefinition.fromJSON(result));\r\n }\r\n\r\n /** Retrieves display label definition of specific items. */\r\n public async getDisplayLabelDefinitions(requestOptions: DisplayLabelsRequestOptions<IModelConnection, InstanceKey>): Promise<LabelDefinition[]> {\r\n await this.onConnection(requestOptions.imodel);\r\n const rpcOptions = this.toRpcTokenOptions({ ...requestOptions, keys: requestOptions.keys.map(InstanceKey.toJSON) });\r\n const result = await buildPagedArrayResponse(undefined, async (partialPageOptions) => {\r\n const partialKeys = (!partialPageOptions.start) ? rpcOptions.keys : rpcOptions.keys.slice(partialPageOptions.start);\r\n return this._requestsHandler.getPagedDisplayLabelDefinitions({ ...rpcOptions, keys: partialKeys });\r\n });\r\n return this._localizationHelper.getLocalizedLabelDefinitions(result.items.map(LabelDefinition.fromJSON));\r\n }\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 return descriptorOrOverrides;\r\n};\r\n\r\nconst optionalNodeKeyToJson = (key: NodeKey | undefined): NodeKeyJSON | undefined => key ? NodeKey.toJSON(key) : undefined;\r\n\r\ninterface PagedGeneratorCreateProps<TPagedResponseItem> {\r\n page: PageOptions | undefined;\r\n get: (pageStart: Required<PageOptions>, requestIndex: number) => Promise<{ total: number, items: TPagedResponseItem[] }>;\r\n}\r\nasync function createPagedGeneratorResponse<TPagedResponseItem>(props: PagedGeneratorCreateProps<TPagedResponseItem>) {\r\n let pageStart = props.page?.start ?? 0;\r\n let pageSize = props.page?.size ?? 0;\r\n let requestIndex = 0;\r\n\r\n const firstPage = await props.get({ start: pageStart, size: pageSize }, requestIndex++);\r\n return {\r\n total: firstPage.total,\r\n async *items() {\r\n let partialResult = firstPage;\r\n while (true) {\r\n for (const item of partialResult.items) {\r\n yield item;\r\n }\r\n\r\n const receivedItemsCount = partialResult.items.length;\r\n if (partialResult.total !== 0 && receivedItemsCount === 0) {\r\n if (pageStart >= partialResult.total)\r\n throw new Error(`Requested page with start index ${pageStart} is out of bounds. Total number of items: ${partialResult.total}`);\r\n throw new Error(\"Paged request returned non zero total count but no items\");\r\n }\r\n\r\n if (pageSize !== 0 && receivedItemsCount >= pageSize || receivedItemsCount >= (partialResult.total - pageStart))\r\n break;\r\n\r\n if (pageSize !== 0)\r\n pageSize -= receivedItemsCount;\r\n pageStart += receivedItemsCount;\r\n\r\n partialResult = await props.get({ start: pageStart, size: pageSize }, requestIndex++);\r\n }\r\n },\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport const buildPagedArrayResponse = async <TItem>(requestedPage: PageOptions | undefined, getter: (page: Required<PageOptions>, requestIndex: number) => Promise<PagedResponse<TItem>>): Promise<PagedResponse<TItem>> => {\r\n try {\r\n const items = new Array<TItem>();\r\n const gen = await createPagedGeneratorResponse({ page: requestedPage, get: getter });\r\n for await (const item of gen.items()) {\r\n items.push(item);\r\n }\r\n return { total: gen.total, items };\r\n } catch {\r\n return { total: 0, items: [] };\r\n }\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 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 = 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"]}
@@ -13,7 +13,7 @@ export interface ISelectionProvider {
13
13
  selectionChange: SelectionChangeEvent;
14
14
  /** Get the selection stored in the provider.
15
15
  * @param imodel iModel connection which the selection is associated with.
16
- * @param level Level of the selection (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
16
+ * @param level Level of the selection (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
17
17
  */
18
18
  getSelection(imodel: IModelConnection, level: number): Readonly<KeySet>;
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ISelectionProvider.js","sourceRoot":"","sources":["../../../../src/presentation-frontend/selection/ISelectionProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","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 UnifiedSelection\r\n */\r\n\r\nimport { IModelConnection } from \"@itwin/core-frontend\";\r\nimport { KeySet } from \"@itwin/presentation-common\";\r\nimport { SelectionChangeEvent } from \"./SelectionChangeEvent\";\r\n\r\n/**\r\n * Selection provider interface which provides main selection and sub-selection.\r\n * @public\r\n */\r\nexport interface ISelectionProvider {\r\n /** An event that's fired when selection changes */\r\n selectionChange: SelectionChangeEvent;\r\n\r\n /** Get the selection stored in the provider.\r\n * @param imodel iModel connection which the selection is associated with.\r\n * @param level Level of the selection (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))\r\n */\r\n getSelection(imodel: IModelConnection, level: number): Readonly<KeySet>;\r\n}\r\n"]}
1
+ {"version":3,"file":"ISelectionProvider.js","sourceRoot":"","sources":["../../../../src/presentation-frontend/selection/ISelectionProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","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 UnifiedSelection\r\n */\r\n\r\nimport { IModelConnection } from \"@itwin/core-frontend\";\r\nimport { KeySet } from \"@itwin/presentation-common\";\r\nimport { SelectionChangeEvent } from \"./SelectionChangeEvent\";\r\n\r\n/**\r\n * Selection provider interface which provides main selection and sub-selection.\r\n * @public\r\n */\r\nexport interface ISelectionProvider {\r\n /** An event that's fired when selection changes */\r\n selectionChange: SelectionChangeEvent;\r\n\r\n /** Get the selection stored in the provider.\r\n * @param imodel iModel connection which the selection is associated with.\r\n * @param level Level of the selection (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))\r\n */\r\n getSelection(imodel: IModelConnection, level: number): Readonly<KeySet>;\r\n}\r\n"]}
@@ -37,7 +37,7 @@ export declare enum SelectionChangeType {
37
37
  export interface SelectionChangeEventArgs {
38
38
  /** The name of the selection source which caused the selection change. */
39
39
  source: string;
40
- /** Level of the selection. See [selection levels]($docs/presentation/Unified-Selection/index#selection-levels). */
40
+ /** Level of the selection. See [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels). */
41
41
  level: number;
42
42
  /** The selection change type. */
43
43
  changeType: SelectionChangeType;
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionChangeEvent.d.ts","sourceRoot":"","sources":["../../../../src/presentation-frontend/selection/SelectionChangeEvent.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,OAAO,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAEtH;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,OAAO,CAAC,wBAAwB,CAAC;CAAI;AAE/E;;;GAGG;AACH,oBAAY,mBAAmB;IAC7B,0BAA0B;IAC1B,GAAG,IAAA;IAEH,8BAA8B;IAC9B,MAAM,IAAA;IAEN,8BAA8B;IAC9B,OAAO,IAAA;IAEP,6BAA6B;IAC7B,KAAK,IAAA;CACN;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IAEf,mHAAmH;IACnH,KAAK,EAAE,MAAM,CAAC;IAEd,iCAAiC;IACjC,UAAU,EAAE,mBAAmB,CAAC;IAEhC,2DAA2D;IAC3D,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvB,qEAAqE;IACrE,MAAM,EAAE,gBAAgB,CAAC;IAEzB,0DAA0D;IAC1D,SAAS,EAAE,IAAI,CAAC;IAEhB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"SelectionChangeEvent.d.ts","sourceRoot":"","sources":["../../../../src/presentation-frontend/selection/SelectionChangeEvent.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,OAAO,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAEtH;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,OAAO,CAAC,wBAAwB,CAAC;CAAI;AAE/E;;;GAGG;AACH,oBAAY,mBAAmB;IAC7B,0BAA0B;IAC1B,GAAG,IAAA;IAEH,8BAA8B;IAC9B,MAAM,IAAA;IAEN,8BAA8B;IAC9B,OAAO,IAAA;IAEP,6BAA6B;IAC7B,KAAK,IAAA;CACN;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IAEf,yIAAyI;IACzI,KAAK,EAAE,MAAM,CAAC;IAEd,iCAAiC;IACjC,UAAU,EAAE,mBAAmB,CAAC;IAEhC,2DAA2D;IAC3D,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvB,qEAAqE;IACrE,MAAM,EAAE,gBAAgB,CAAC;IAEzB,0DAA0D;IAC1D,SAAS,EAAE,IAAI,CAAC;IAEhB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionChangeEvent.js","sourceRoot":"","sources":["../../../../src/presentation-frontend/selection/SelectionChangeEvent.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA8C;AAW9C;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,sBAAiC;CAAI;AAA/E,oDAA+E;AAE/E;;;GAGG;AACH,IAAY,mBAYX;AAZD,WAAY,mBAAmB;IAC7B,0BAA0B;IAC1B,2DAAG,CAAA;IAEH,8BAA8B;IAC9B,iEAAM,CAAA;IAEN,8BAA8B;IAC9B,mEAAO,CAAA;IAEP,6BAA6B;IAC7B,+DAAK,CAAA;AACP,CAAC,EAZW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAY9B","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 UnifiedSelection\r\n */\r\n\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { IModelConnection } from \"@itwin/core-frontend\";\r\nimport { KeySet } from \"@itwin/presentation-common\";\r\nimport { ISelectionProvider } from \"./ISelectionProvider\";\r\n\r\n/**\r\n * An interface for selection change listeners.\r\n * @public\r\n */\r\nexport declare type SelectionChangesListener = (args: SelectionChangeEventArgs, provider: ISelectionProvider) => void;\r\n\r\n/**\r\n * An event broadcasted on selection changes\r\n * @public\r\n */\r\nexport class SelectionChangeEvent extends BeEvent<SelectionChangesListener> { }\r\n\r\n/**\r\n * The type of selection change\r\n * @public\r\n */\r\nexport enum SelectionChangeType {\r\n /** Added to selection. */\r\n Add,\r\n\r\n /** Removed from selection. */\r\n Remove,\r\n\r\n /** Selection was replaced. */\r\n Replace,\r\n\r\n /** Selection was cleared. */\r\n Clear,\r\n}\r\n\r\n/**\r\n * The event object that's sent when the selection changes.\r\n * @public\r\n */\r\nexport interface SelectionChangeEventArgs {\r\n /** The name of the selection source which caused the selection change. */\r\n source: string;\r\n\r\n /** Level of the selection. See [selection levels]($docs/presentation/Unified-Selection/index#selection-levels). */\r\n level: number;\r\n\r\n /** The selection change type. */\r\n changeType: SelectionChangeType;\r\n\r\n /** Set of keys affected by this selection change event. */\r\n keys: Readonly<KeySet>;\r\n\r\n /** iModel connection with which the selection is associated with. */\r\n imodel: IModelConnection;\r\n\r\n /** The timestamp of when the selection change happened */\r\n timestamp: Date;\r\n\r\n /** Id of the ruleset associated with the selection change. */\r\n rulesetId?: string;\r\n}\r\n"]}
1
+ {"version":3,"file":"SelectionChangeEvent.js","sourceRoot":"","sources":["../../../../src/presentation-frontend/selection/SelectionChangeEvent.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA8C;AAW9C;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,sBAAiC;CAAI;AAA/E,oDAA+E;AAE/E;;;GAGG;AACH,IAAY,mBAYX;AAZD,WAAY,mBAAmB;IAC7B,0BAA0B;IAC1B,2DAAG,CAAA;IAEH,8BAA8B;IAC9B,iEAAM,CAAA;IAEN,8BAA8B;IAC9B,mEAAO,CAAA;IAEP,6BAA6B;IAC7B,+DAAK,CAAA;AACP,CAAC,EAZW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAY9B","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 UnifiedSelection\r\n */\r\n\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { IModelConnection } from \"@itwin/core-frontend\";\r\nimport { KeySet } from \"@itwin/presentation-common\";\r\nimport { ISelectionProvider } from \"./ISelectionProvider\";\r\n\r\n/**\r\n * An interface for selection change listeners.\r\n * @public\r\n */\r\nexport declare type SelectionChangesListener = (args: SelectionChangeEventArgs, provider: ISelectionProvider) => void;\r\n\r\n/**\r\n * An event broadcasted on selection changes\r\n * @public\r\n */\r\nexport class SelectionChangeEvent extends BeEvent<SelectionChangesListener> { }\r\n\r\n/**\r\n * The type of selection change\r\n * @public\r\n */\r\nexport enum SelectionChangeType {\r\n /** Added to selection. */\r\n Add,\r\n\r\n /** Removed from selection. */\r\n Remove,\r\n\r\n /** Selection was replaced. */\r\n Replace,\r\n\r\n /** Selection was cleared. */\r\n Clear,\r\n}\r\n\r\n/**\r\n * The event object that's sent when the selection changes.\r\n * @public\r\n */\r\nexport interface SelectionChangeEventArgs {\r\n /** The name of the selection source which caused the selection change. */\r\n source: string;\r\n\r\n /** Level of the selection. See [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels). */\r\n level: number;\r\n\r\n /** The selection change type. */\r\n changeType: SelectionChangeType;\r\n\r\n /** Set of keys affected by this selection change event. */\r\n keys: Readonly<KeySet>;\r\n\r\n /** iModel connection with which the selection is associated with. */\r\n imodel: IModelConnection;\r\n\r\n /** The timestamp of when the selection change happened */\r\n timestamp: Date;\r\n\r\n /** Id of the ruleset associated with the selection change. */\r\n rulesetId?: string;\r\n}\r\n"]}
@@ -13,7 +13,7 @@ import { SelectionScopesManager } from "./SelectionScopesManager";
13
13
  * @public
14
14
  */
15
15
  export interface SelectionManagerProps {
16
- /** A manager for [selection scopes]($docs/presentation/Unified-Selection/index#selection-scopes) */
16
+ /** A manager for [selection scopes]($docs/presentation/unified-selection/index#selection-scopes) */
17
17
  scopes: SelectionScopesManager;
18
18
  }
19
19
  /**
@@ -26,7 +26,7 @@ export declare class SelectionManager implements ISelectionProvider {
26
26
  private _hiliteSetProviders;
27
27
  /** An event which gets broadcasted on selection changes */
28
28
  readonly selectionChange: SelectionChangeEvent;
29
- /** Manager for [selection scopes]($docs/presentation/Unified-Selection/index#selection-scopes) */
29
+ /** Manager for [selection scopes]($docs/presentation/unified-selection/index#selection-scopes) */
30
30
  readonly scopes: SelectionScopesManager;
31
31
  /**
32
32
  * Creates an instance of SelectionManager.
@@ -55,7 +55,7 @@ export declare class SelectionManager implements ISelectionProvider {
55
55
  * @param source Name of the selection source
56
56
  * @param imodel iModel associated with the selection
57
57
  * @param keys Keys to add
58
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
58
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
59
59
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
60
60
  */
61
61
  addToSelection(source: string, imodel: IModelConnection, keys: Keys, level?: number, rulesetId?: string): void;
@@ -64,7 +64,7 @@ export declare class SelectionManager implements ISelectionProvider {
64
64
  * @param source Name of the selection source
65
65
  * @param imodel iModel associated with the selection
66
66
  * @param keys Keys to remove
67
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
67
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
68
68
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
69
69
  */
70
70
  removeFromSelection(source: string, imodel: IModelConnection, keys: Keys, level?: number, rulesetId?: string): void;
@@ -73,7 +73,7 @@ export declare class SelectionManager implements ISelectionProvider {
73
73
  * @param source Name of the selection source
74
74
  * @param imodel iModel associated with the selection
75
75
  * @param keys Keys to add
76
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
76
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
77
77
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
78
78
  */
79
79
  replaceSelection(source: string, imodel: IModelConnection, keys: Keys, level?: number, rulesetId?: string): void;
@@ -81,37 +81,37 @@ export declare class SelectionManager implements ISelectionProvider {
81
81
  * Clear current selection
82
82
  * @param source Name of the selection source
83
83
  * @param imodel iModel associated with the selection
84
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
84
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
85
85
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
86
86
  */
87
87
  clearSelection(source: string, imodel: IModelConnection, level?: number, rulesetId?: string): void;
88
88
  /**
89
- * Add keys to selection after applying [selection scope]($docs/presentation/Unified-Selection/index#selection-scopes) on them.
89
+ * Add keys to selection after applying [selection scope]($docs/presentation/unified-selection/index#selection-scopes) on them.
90
90
  * @param source Name of the selection source
91
91
  * @param imodel iModel associated with the selection
92
92
  * @param ids Element IDs to add
93
93
  * @param scope Selection scope to apply
94
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
94
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
95
95
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
96
96
  */
97
97
  addToSelectionWithScope(source: string, imodel: IModelConnection, ids: Id64Arg, scope: SelectionScope | string, level?: number, rulesetId?: string): Promise<void>;
98
98
  /**
99
- * Remove keys from current selection after applying [selection scope]($docs/presentation/Unified-Selection/index#selection-scopes) on them.
99
+ * Remove keys from current selection after applying [selection scope]($docs/presentation/unified-selection/index#selection-scopes) on them.
100
100
  * @param source Name of the selection source
101
101
  * @param imodel iModel associated with the selection
102
102
  * @param ids Element IDs to remove
103
103
  * @param scope Selection scope to apply
104
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
104
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
105
105
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
106
106
  */
107
107
  removeFromSelectionWithScope(source: string, imodel: IModelConnection, ids: Id64Arg, scope: SelectionScope | string, level?: number, rulesetId?: string): Promise<void>;
108
108
  /**
109
- * Replace current selection with keys after applying [selection scope]($docs/presentation/Unified-Selection/index#selection-scopes) on them.
109
+ * Replace current selection with keys after applying [selection scope]($docs/presentation/unified-selection/index#selection-scopes) on them.
110
110
  * @param source Name of the selection source
111
111
  * @param imodel iModel associated with the selection
112
112
  * @param ids Element IDs to replace with
113
113
  * @param scope Selection scope to apply
114
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
114
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
115
115
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
116
116
  */
117
117
  replaceSelectionWithScope(source: string, imodel: IModelConnection, ids: Id64Arg, scope: SelectionScope | string, level?: number, rulesetId?: string): Promise<void>;
@@ -126,7 +126,7 @@ class SelectionManager {
126
126
  * @param source Name of the selection source
127
127
  * @param imodel iModel associated with the selection
128
128
  * @param keys Keys to add
129
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
129
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
130
130
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
131
131
  */
132
132
  addToSelection(source, imodel, keys, level = 0, rulesetId) {
@@ -146,7 +146,7 @@ class SelectionManager {
146
146
  * @param source Name of the selection source
147
147
  * @param imodel iModel associated with the selection
148
148
  * @param keys Keys to remove
149
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
149
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
150
150
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
151
151
  */
152
152
  removeFromSelection(source, imodel, keys, level = 0, rulesetId) {
@@ -166,7 +166,7 @@ class SelectionManager {
166
166
  * @param source Name of the selection source
167
167
  * @param imodel iModel associated with the selection
168
168
  * @param keys Keys to add
169
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
169
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
170
170
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
171
171
  */
172
172
  replaceSelection(source, imodel, keys, level = 0, rulesetId) {
@@ -185,7 +185,7 @@ class SelectionManager {
185
185
  * Clear current selection
186
186
  * @param source Name of the selection source
187
187
  * @param imodel iModel associated with the selection
188
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
188
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
189
189
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
190
190
  */
191
191
  clearSelection(source, imodel, level = 0, rulesetId) {
@@ -201,12 +201,12 @@ class SelectionManager {
201
201
  this.handleEvent(evt);
202
202
  }
203
203
  /**
204
- * Add keys to selection after applying [selection scope]($docs/presentation/Unified-Selection/index#selection-scopes) on them.
204
+ * Add keys to selection after applying [selection scope]($docs/presentation/unified-selection/index#selection-scopes) on them.
205
205
  * @param source Name of the selection source
206
206
  * @param imodel iModel associated with the selection
207
207
  * @param ids Element IDs to add
208
208
  * @param scope Selection scope to apply
209
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
209
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
210
210
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
211
211
  */
212
212
  async addToSelectionWithScope(source, imodel, ids, scope, level = 0, rulesetId) {
@@ -214,12 +214,12 @@ class SelectionManager {
214
214
  this.addToSelection(source, imodel, scopedKeys, level, rulesetId);
215
215
  }
216
216
  /**
217
- * Remove keys from current selection after applying [selection scope]($docs/presentation/Unified-Selection/index#selection-scopes) on them.
217
+ * Remove keys from current selection after applying [selection scope]($docs/presentation/unified-selection/index#selection-scopes) on them.
218
218
  * @param source Name of the selection source
219
219
  * @param imodel iModel associated with the selection
220
220
  * @param ids Element IDs to remove
221
221
  * @param scope Selection scope to apply
222
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
222
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
223
223
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
224
224
  */
225
225
  async removeFromSelectionWithScope(source, imodel, ids, scope, level = 0, rulesetId) {
@@ -227,12 +227,12 @@ class SelectionManager {
227
227
  this.removeFromSelection(source, imodel, scopedKeys, level, rulesetId);
228
228
  }
229
229
  /**
230
- * Replace current selection with keys after applying [selection scope]($docs/presentation/Unified-Selection/index#selection-scopes) on them.
230
+ * Replace current selection with keys after applying [selection scope]($docs/presentation/unified-selection/index#selection-scopes) on them.
231
231
  * @param source Name of the selection source
232
232
  * @param imodel iModel associated with the selection
233
233
  * @param ids Element IDs to replace with
234
234
  * @param scope Selection scope to apply
235
- * @param level Selection level (see [Selection levels]($docs/presentation/Unified-Selection/index#selection-levels))
235
+ * @param level Selection level (see [selection levels documentation section]($docs/presentation/unified-selection/index#selection-levels))
236
236
  * @param rulesetId ID of the ruleset in case the selection was changed from a rules-driven control
237
237
  */
238
238
  async replaceSelectionWithScope(source, imodel, ids, scope, level = 0, rulesetId) {