@itwin/tree-widget-react 1.2.2 → 2.0.0

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 (194) hide show
  1. package/CHANGELOG.md +26 -2
  2. package/README.md +1 -1
  3. package/lib/cjs/TreeWidget.d.ts +0 -1
  4. package/lib/cjs/TreeWidget.js +9 -10
  5. package/lib/cjs/TreeWidget.js.map +1 -1
  6. package/lib/cjs/components/SelectableTree.d.ts +9 -1
  7. package/lib/cjs/components/SelectableTree.js +28 -17
  8. package/lib/cjs/components/SelectableTree.js.map +1 -1
  9. package/lib/cjs/components/SelectableTree.scss +0 -16
  10. package/lib/cjs/components/TreeFilteringState.js +3 -3
  11. package/lib/cjs/components/TreeFilteringState.js.map +1 -1
  12. package/lib/cjs/components/TreeSelector.d.ts +28 -0
  13. package/lib/cjs/components/TreeSelector.js +27 -0
  14. package/lib/cjs/components/TreeSelector.js.map +1 -0
  15. package/lib/cjs/components/TreeSelector.scss +27 -0
  16. package/lib/cjs/components/TreeWidgetUiItemsProvider.d.ts +9 -1
  17. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +21 -14
  18. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
  19. package/lib/cjs/components/TreeWidgetUiItemsProvider.scss +1 -1
  20. package/lib/cjs/components/tree-header/TreeHeader.d.ts +3 -0
  21. package/lib/cjs/components/tree-header/TreeHeader.js +20 -15
  22. package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -1
  23. package/lib/cjs/components/tree-header/TreeHeader.scss +29 -1
  24. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js +13 -8
  25. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js.map +1 -1
  26. package/lib/cjs/components/trees/VisibilityTreeBase.scss +1 -1
  27. package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +1 -1
  28. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +18 -10
  29. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +1 -1
  30. package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +20 -4
  31. package/lib/cjs/components/trees/VisibilityTreeRenderer.js +28 -10
  32. package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +1 -1
  33. package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +7 -2
  34. package/lib/cjs/components/trees/category-tree/CategoriesTree.js +47 -30
  35. package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +1 -1
  36. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js +27 -18
  37. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -1
  38. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +2 -2
  39. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +18 -13
  40. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -1
  41. package/lib/cjs/components/trees/common/ContextMenu.js +4 -4
  42. package/lib/cjs/components/trees/common/ContextMenu.js.map +1 -1
  43. package/lib/cjs/components/trees/common/TreeNodeRenderer.d.ts +1 -1
  44. package/lib/cjs/components/trees/common/TreeNodeRenderer.js +4 -4
  45. package/lib/cjs/components/trees/common/TreeNodeRenderer.js.map +1 -1
  46. package/lib/cjs/components/trees/common/TreeRenderer.d.ts +15 -1
  47. package/lib/cjs/components/trees/common/TreeRenderer.js +17 -7
  48. package/lib/cjs/components/trees/common/TreeRenderer.js.map +1 -1
  49. package/lib/cjs/components/trees/common/TreeRenderer.scss +39 -2
  50. package/lib/cjs/components/trees/common/Types.d.ts +8 -0
  51. package/lib/cjs/components/trees/common/Types.js +3 -3
  52. package/lib/cjs/components/trees/common/Types.js.map +1 -1
  53. package/lib/cjs/components/trees/common/UseVisibilityTreeState.d.ts +36 -0
  54. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js +47 -0
  55. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js.map +1 -0
  56. package/lib/cjs/components/trees/common/Utils.js +7 -5
  57. package/lib/cjs/components/trees/common/Utils.js.map +1 -1
  58. package/lib/cjs/components/trees/external-sources-tree/ExternalSources.json +1 -3
  59. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +9 -3
  60. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js +19 -7
  61. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  62. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +4 -4
  63. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  64. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.d.ts +9 -3
  65. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js +16 -12
  66. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  67. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js +6 -5
  68. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  69. package/lib/cjs/components/trees/index.js +3 -3
  70. package/lib/cjs/components/trees/index.js.map +1 -1
  71. package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +7 -2
  72. package/lib/cjs/components/trees/models-tree/ModelsTree.js +76 -62
  73. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -1
  74. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +27 -29
  75. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  76. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.d.ts +9 -0
  77. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js +31 -0
  78. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js.map +1 -0
  79. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +125 -66
  80. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -1
  81. package/lib/cjs/components/trees/models-tree/Utils.d.ts +4 -0
  82. package/lib/cjs/components/trees/models-tree/Utils.js +52 -58
  83. package/lib/cjs/components/trees/models-tree/Utils.js.map +1 -1
  84. package/lib/cjs/components/utils/AutoSizer.js +7 -5
  85. package/lib/cjs/components/utils/AutoSizer.js.map +1 -1
  86. package/lib/cjs/components/utils/IsPromiseLike.js +4 -4
  87. package/lib/cjs/components/utils/IsPromiseLike.js.map +1 -1
  88. package/lib/cjs/components/utils/UseTreeTransientState.js +3 -3
  89. package/lib/cjs/components/utils/UseTreeTransientState.js.map +1 -1
  90. package/lib/cjs/tree-widget-react.js +3 -3
  91. package/lib/cjs/tree-widget-react.js.map +1 -1
  92. package/lib/esm/TreeWidget.d.ts +0 -1
  93. package/lib/esm/TreeWidget.js +9 -10
  94. package/lib/esm/TreeWidget.js.map +1 -1
  95. package/lib/esm/components/SelectableTree.d.ts +9 -1
  96. package/lib/esm/components/SelectableTree.js +28 -17
  97. package/lib/esm/components/SelectableTree.js.map +1 -1
  98. package/lib/esm/components/SelectableTree.scss +0 -16
  99. package/lib/esm/components/TreeFilteringState.js +3 -3
  100. package/lib/esm/components/TreeFilteringState.js.map +1 -1
  101. package/lib/esm/components/TreeSelector.d.ts +28 -0
  102. package/lib/esm/components/TreeSelector.js +23 -0
  103. package/lib/esm/components/TreeSelector.js.map +1 -0
  104. package/lib/esm/components/TreeSelector.scss +27 -0
  105. package/lib/esm/components/TreeWidgetUiItemsProvider.d.ts +9 -1
  106. package/lib/esm/components/TreeWidgetUiItemsProvider.js +19 -13
  107. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
  108. package/lib/esm/components/TreeWidgetUiItemsProvider.scss +1 -1
  109. package/lib/esm/components/tree-header/TreeHeader.d.ts +3 -0
  110. package/lib/esm/components/tree-header/TreeHeader.js +20 -15
  111. package/lib/esm/components/tree-header/TreeHeader.js.map +1 -1
  112. package/lib/esm/components/tree-header/TreeHeader.scss +29 -1
  113. package/lib/esm/components/trees/CategoriesVisibilityUtils.js +13 -8
  114. package/lib/esm/components/trees/CategoriesVisibilityUtils.js.map +1 -1
  115. package/lib/esm/components/trees/VisibilityTreeBase.scss +1 -1
  116. package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +1 -1
  117. package/lib/esm/components/trees/VisibilityTreeEventHandler.js +18 -10
  118. package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +1 -1
  119. package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +20 -4
  120. package/lib/esm/components/trees/VisibilityTreeRenderer.js +27 -10
  121. package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +1 -1
  122. package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +7 -2
  123. package/lib/esm/components/trees/category-tree/CategoriesTree.js +51 -34
  124. package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +1 -1
  125. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js +24 -18
  126. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -1
  127. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +2 -2
  128. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +18 -13
  129. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -1
  130. package/lib/esm/components/trees/common/ContextMenu.js +4 -4
  131. package/lib/esm/components/trees/common/ContextMenu.js.map +1 -1
  132. package/lib/esm/components/trees/common/TreeNodeRenderer.d.ts +1 -1
  133. package/lib/esm/components/trees/common/TreeNodeRenderer.js +4 -4
  134. package/lib/esm/components/trees/common/TreeNodeRenderer.js.map +1 -1
  135. package/lib/esm/components/trees/common/TreeRenderer.d.ts +15 -1
  136. package/lib/esm/components/trees/common/TreeRenderer.js +15 -6
  137. package/lib/esm/components/trees/common/TreeRenderer.js.map +1 -1
  138. package/lib/esm/components/trees/common/TreeRenderer.scss +39 -2
  139. package/lib/esm/components/trees/common/Types.d.ts +8 -0
  140. package/lib/esm/components/trees/common/Types.js +3 -3
  141. package/lib/esm/components/trees/common/Types.js.map +1 -1
  142. package/lib/esm/components/trees/common/UseVisibilityTreeState.d.ts +36 -0
  143. package/lib/esm/components/trees/common/UseVisibilityTreeState.js +43 -0
  144. package/lib/esm/components/trees/common/UseVisibilityTreeState.js.map +1 -0
  145. package/lib/esm/components/trees/common/Utils.js +7 -5
  146. package/lib/esm/components/trees/common/Utils.js.map +1 -1
  147. package/lib/esm/components/trees/external-sources-tree/ExternalSources.json +1 -3
  148. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +9 -3
  149. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js +22 -10
  150. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  151. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +4 -4
  152. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  153. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.d.ts +9 -3
  154. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js +19 -15
  155. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  156. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js +6 -5
  157. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  158. package/lib/esm/components/trees/index.js +3 -3
  159. package/lib/esm/components/trees/index.js.map +1 -1
  160. package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +7 -2
  161. package/lib/esm/components/trees/models-tree/ModelsTree.js +80 -66
  162. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -1
  163. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +25 -30
  164. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  165. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.d.ts +9 -0
  166. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js +27 -0
  167. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js.map +1 -0
  168. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +125 -66
  169. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -1
  170. package/lib/esm/components/trees/models-tree/Utils.d.ts +4 -0
  171. package/lib/esm/components/trees/models-tree/Utils.js +50 -57
  172. package/lib/esm/components/trees/models-tree/Utils.js.map +1 -1
  173. package/lib/esm/components/utils/AutoSizer.js +7 -5
  174. package/lib/esm/components/utils/AutoSizer.js.map +1 -1
  175. package/lib/esm/components/utils/IsPromiseLike.js +4 -4
  176. package/lib/esm/components/utils/IsPromiseLike.js.map +1 -1
  177. package/lib/esm/components/utils/UseTreeTransientState.js +3 -3
  178. package/lib/esm/components/utils/UseTreeTransientState.js.map +1 -1
  179. package/lib/esm/tree-widget-react.js +3 -3
  180. package/lib/esm/tree-widget-react.js.map +1 -1
  181. package/lib/public/locales/en/TreeWidget.json +1 -0
  182. package/package.json +47 -46
  183. package/lib/cjs/e2e-tests/TreeWidget.test.d.ts +0 -2
  184. package/lib/cjs/e2e-tests/TreeWidget.test.js +0 -51
  185. package/lib/cjs/e2e-tests/TreeWidget.test.js.map +0 -1
  186. package/lib/cjs/e2e-tests/utils.d.ts +0 -9
  187. package/lib/cjs/e2e-tests/utils.js +0 -51
  188. package/lib/cjs/e2e-tests/utils.js.map +0 -1
  189. package/lib/esm/e2e-tests/TreeWidget.test.d.ts +0 -2
  190. package/lib/esm/e2e-tests/TreeWidget.test.js +0 -46
  191. package/lib/esm/e2e-tests/TreeWidget.test.js.map +0 -1
  192. package/lib/esm/e2e-tests/utils.d.ts +0 -9
  193. package/lib/esm/e2e-tests/utils.js +0 -40
  194. package/lib/esm/e2e-tests/utils.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.registerRenderers = exports.addTreeNodeItemCheckbox = exports.addCustomTreeNodeItemLabelRenderer = exports.combineTreeNodeItemCustomizations = void 0;
8
8
  const components_react_1 = require("@itwin/components-react");
@@ -32,10 +32,12 @@ function addTreeNodeItemCheckbox(item) {
32
32
  exports.addTreeNodeItemCheckbox = addTreeNodeItemCheckbox;
33
33
  /** @internal */
34
34
  function registerRenderers() {
35
- const renderers = [{
35
+ const renderers = [
36
+ {
36
37
  name: TreeNodeRenderer_1.TREE_NODE_LABEL_RENDERER,
37
38
  renderer: new TreeNodeRenderer_1.TreeNodeLabelRenderer(),
38
- }];
39
+ },
40
+ ];
39
41
  for (const { name, renderer } of renderers) {
40
42
  components_react_1.PropertyValueRendererManager.defaultManager.registerRenderer(name, renderer);
41
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../../src/components/trees/common/Utils.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,8DAAuE;AACvE,kDAAkD;AAClD,yDAAqF;AAKrF,gBAAgB;AAChB,SAAgB,iCAAiC,CAAC,cAA4F;IAC5I,OAAO,CAAC,IAAsC,EAAE,IAAmB,EAAE,EAAE;QACrE,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AAJD,8EAIC;AAED,gBAAgB;AAChB,SAAgB,kCAAkC,CAAC,IAAsC;IACvF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QACf,OAAO;KACR;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,2CAAwB,EAAE,CAAC;AACpE,CAAC;AAND,gFAMC;AAED,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,IAAsC;IAC5E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,aAAa,GAAG,0BAAa,CAAC,GAAG,CAAC;AACzC,CAAC;AAJD,0DAIC;AAED,gBAAgB;AAChB,SAAgB,iBAAiB;IAC/B,MAAM,SAAS,GAA8D,CAAC;YAC5E,IAAI,EAAE,2CAAwB;YAC9B,QAAQ,EAAG,IAAI,wCAAqB,EAAE;SACvC,CAAC,CAAC;IAEH,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,SAAS,EAAE;QAC1C,+CAA4B,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC9E;IAED,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,EAAE;YAChC,+CAA4B,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SACtE;IACH,CAAC,CAAC;AACJ,CAAC;AAfD,8CAeC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { PropertyValueRendererManager } from \"@itwin/components-react\";\nimport { CheckBoxState } from \"@itwin/core-react\";\nimport { TREE_NODE_LABEL_RENDERER, TreeNodeLabelRenderer } from \"./TreeNodeRenderer\";\n\nimport type { DelayLoadedTreeNodeItem, IPropertyValueRenderer } from \"@itwin/components-react\";\nimport type { Node } from \"@itwin/presentation-common\";\n\n/** @internal */\nexport function combineTreeNodeItemCustomizations(customizations: Array<(item: Partial<DelayLoadedTreeNodeItem>, node: Partial<Node>) => void>) {\n return (item: Partial<DelayLoadedTreeNodeItem>, node: Partial<Node>) => {\n customizations.forEach((customize) => customize(item, node));\n };\n}\n\n/** @internal */\nexport function addCustomTreeNodeItemLabelRenderer(item: Partial<DelayLoadedTreeNodeItem>) {\n if (!item.label) {\n return;\n }\n\n item.label.property.renderer = { name: TREE_NODE_LABEL_RENDERER };\n}\n\n/** @internal */\nexport function addTreeNodeItemCheckbox(item: Partial<DelayLoadedTreeNodeItem>) {\n item.isCheckboxVisible = true;\n item.isCheckboxDisabled = true;\n item.checkBoxState = CheckBoxState.Off;\n}\n\n/** @internal */\nexport function registerRenderers() {\n const renderers: Array<{ name: string, renderer: IPropertyValueRenderer }> = [{\n name: TREE_NODE_LABEL_RENDERER,\n renderer: new TreeNodeLabelRenderer(),\n }];\n\n for (const { name, renderer } of renderers) {\n PropertyValueRendererManager.defaultManager.registerRenderer(name, renderer);\n }\n\n return () => {\n for (const { name } of renderers) {\n PropertyValueRendererManager.defaultManager.unregisterRenderer(name);\n }\n };\n}\n"]}
1
+ {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../../src/components/trees/common/Utils.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,8DAAuE;AACvE,kDAAkD;AAClD,yDAAqF;AAKrF,gBAAgB;AAChB,SAAgB,iCAAiC,CAAC,cAA4F;IAC5I,OAAO,CAAC,IAAsC,EAAE,IAAmB,EAAE,EAAE;QACrE,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AAJD,8EAIC;AAED,gBAAgB;AAChB,SAAgB,kCAAkC,CAAC,IAAsC;IACvF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;QACf,OAAO;KACR;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,2CAAwB,EAAE,CAAC;AACpE,CAAC;AAND,gFAMC;AAED,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,IAAsC;IAC5E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,aAAa,GAAG,0BAAa,CAAC,GAAG,CAAC;AACzC,CAAC;AAJD,0DAIC;AAED,gBAAgB;AAChB,SAAgB,iBAAiB;IAC/B,MAAM,SAAS,GAA8D;QAC3E;YACE,IAAI,EAAE,2CAAwB;YAC9B,QAAQ,EAAE,IAAI,wCAAqB,EAAE;SACtC;KACF,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,SAAS,EAAE;QAC1C,+CAA4B,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC9E;IAED,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,EAAE;YAChC,+CAA4B,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SACtE;IACH,CAAC,CAAC;AACJ,CAAC;AAjBD,8CAiBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { PropertyValueRendererManager } from \"@itwin/components-react\";\nimport { CheckBoxState } from \"@itwin/core-react\";\nimport { TREE_NODE_LABEL_RENDERER, TreeNodeLabelRenderer } from \"./TreeNodeRenderer\";\n\nimport type { DelayLoadedTreeNodeItem, IPropertyValueRenderer } from \"@itwin/components-react\";\nimport type { Node } from \"@itwin/presentation-common\";\n\n/** @internal */\nexport function combineTreeNodeItemCustomizations(customizations: Array<(item: Partial<DelayLoadedTreeNodeItem>, node: Partial<Node>) => void>) {\n return (item: Partial<DelayLoadedTreeNodeItem>, node: Partial<Node>) => {\n customizations.forEach((customize) => customize(item, node));\n };\n}\n\n/** @internal */\nexport function addCustomTreeNodeItemLabelRenderer(item: Partial<DelayLoadedTreeNodeItem>) {\n if (!item.label) {\n return;\n }\n\n item.label.property.renderer = { name: TREE_NODE_LABEL_RENDERER };\n}\n\n/** @internal */\nexport function addTreeNodeItemCheckbox(item: Partial<DelayLoadedTreeNodeItem>) {\n item.isCheckboxVisible = true;\n item.isCheckboxDisabled = true;\n item.checkBoxState = CheckBoxState.Off;\n}\n\n/** @internal */\nexport function registerRenderers() {\n const renderers: Array<{ name: string; renderer: IPropertyValueRenderer }> = [\n {\n name: TREE_NODE_LABEL_RENDERER,\n renderer: new TreeNodeLabelRenderer(),\n },\n ];\n\n for (const { name, renderer } of renderers) {\n PropertyValueRendererManager.defaultManager.registerRenderer(name, renderer);\n }\n\n return () => {\n for (const { name } of renderers) {\n PropertyValueRendererManager.defaultManager.unregisterRenderer(name);\n }\n };\n}\n"]}
@@ -16,9 +16,7 @@
16
16
  "classes": [
17
17
  {
18
18
  "schemaName": "BisCore",
19
- "classNames": [
20
- "ExternalSource"
21
- ],
19
+ "classNames": ["ExternalSource"],
22
20
  "arePolymorphic": false
23
21
  }
24
22
  ],
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import "../VisibilityTreeBase.scss";
3
3
  import type { Ruleset } from "@itwin/presentation-common";
4
- import type { BaseTreeProps } from "../common/Types";
4
+ import type { BaseTreeProps, HierarchyLevelConfig } from "../common/Types";
5
5
  /**
6
6
  * Presentation rules used by ControlledCategoriesTree
7
7
  * @internal
@@ -11,10 +11,16 @@ export declare const RULESET_EXTERNAL_SOURCES: Ruleset;
11
11
  * Props for the [[ExternalSourcesTree]] component
12
12
  * @alpha
13
13
  */
14
- export type ExternalSourcesTreeProps = BaseTreeProps;
14
+ export interface ExternalSourcesTreeProps extends BaseTreeProps {
15
+ /**
16
+ * Props for configuring hierarchy level.
17
+ * @beta
18
+ */
19
+ hierarchyLevelConfig?: HierarchyLevelConfig;
20
+ }
15
21
  /**
16
22
  * Tree which displays a hierarchy of ExternalSources and their elements.
17
23
  * @alpha
18
24
  */
19
- export declare function ExternalSourcesTree(props: ExternalSourcesTreeProps): JSX.Element;
25
+ export declare function ExternalSourcesTree(props: ExternalSourcesTreeProps): JSX.Element | null;
20
26
  //# sourceMappingURL=ExternalSourcesTree.d.ts.map
@@ -26,9 +26,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.ExternalSourcesTree = exports.RULESET_EXTERNAL_SOURCES = void 0;
27
27
  const jsx_runtime_1 = require("react/jsx-runtime");
28
28
  /*---------------------------------------------------------------------------------------------
29
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
30
- * See LICENSE.md in the project root for license terms and full copyright notice.
31
- *--------------------------------------------------------------------------------------------*/
29
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
30
+ * See LICENSE.md in the project root for license terms and full copyright notice.
31
+ *--------------------------------------------------------------------------------------------*/
32
32
  require("../VisibilityTreeBase.scss");
33
33
  const components_react_1 = require("@itwin/components-react");
34
34
  const presentation_components_1 = require("@itwin/presentation-components");
@@ -46,17 +46,29 @@ const PAGING_SIZE = 20;
46
46
  * @alpha
47
47
  */
48
48
  function ExternalSourcesTree(props) {
49
- const { nodeLoader } = (0, presentation_components_1.usePresentationTreeNodeLoader)({
49
+ const { hierarchyLevelConfig, contextMenuItems, nodeLabelRenderer, density } = props;
50
+ const state = (0, presentation_components_1.usePresentationTreeState)({
50
51
  imodel: props.iModel,
51
52
  ruleset: exports.RULESET_EXTERNAL_SOURCES,
52
53
  pagingSize: PAGING_SIZE,
54
+ eventHandlerFactory: unifiedSelectionTreeEventHandlerFactory,
53
55
  customizeTreeNodeItem,
56
+ hierarchyLevelSizeLimit: hierarchyLevelConfig?.sizeLimit,
54
57
  });
55
- const eventsHandler = (0, presentation_components_1.useUnifiedSelectionTreeEventHandler)({ nodeLoader });
56
- const treeModel = (0, components_react_1.useTreeModel)(nodeLoader.modelSource);
57
- return ((0, jsx_runtime_1.jsx)("div", { className: "tree-widget-tree-container", children: (0, jsx_runtime_1.jsx)(components_react_1.ControlledTree, { nodeLoader: nodeLoader, model: treeModel, selectionMode: props.selectionMode ?? components_react_1.SelectionMode.Extended, eventsHandler: eventsHandler, width: props.width, height: props.height, iconsEnabled: true, treeRenderer: (treeProps) => (0, jsx_runtime_1.jsx)(TreeRenderer_1.TreeRenderer, { ...treeProps, contextMenuItems: props.contextMenuItems, nodeLabelRenderer: props.nodeLabelRenderer, density: props.density }) }) }));
58
+ const treeRendererProps = {
59
+ contextMenuItems,
60
+ nodeLabelRenderer,
61
+ density,
62
+ };
63
+ if (!state) {
64
+ return null;
65
+ }
66
+ return ((0, jsx_runtime_1.jsx)("div", { className: "tree-widget-tree-container", children: (0, jsx_runtime_1.jsx)(presentation_components_1.PresentationTree, { width: props.width, height: props.height, state: state, selectionMode: props.selectionMode ?? components_react_1.SelectionMode.Extended, iconsEnabled: true, treeRenderer: (treeProps) => hierarchyLevelConfig?.isFilteringEnabled ? ((0, jsx_runtime_1.jsx)(TreeRenderer_1.FilterableTreeRenderer, { ...treeProps, ...treeRendererProps, nodeLoader: state.nodeLoader, nodeRenderer: (nodeRendererProps) => (0, jsx_runtime_1.jsx)(presentation_components_1.PresentationTreeNodeRenderer, { ...nodeRendererProps }) })) : ((0, jsx_runtime_1.jsx)(TreeRenderer_1.TreeRenderer, { ...treeProps, ...treeRendererProps })) }) }));
58
67
  }
59
68
  exports.ExternalSourcesTree = ExternalSourcesTree;
69
+ function unifiedSelectionTreeEventHandlerFactory(props) {
70
+ return new presentation_components_1.UnifiedSelectionTreeEventHandler({ nodeLoader: props.nodeLoader });
71
+ }
60
72
  const customizeTreeNodeItem = (0, Utils_1.combineTreeNodeItemCustomizations)([
61
73
  Utils_1.addCustomTreeNodeItemLabelRenderer,
62
74
  (item, node) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalSourcesTree.js","sourceRoot":"","sources":["../../../../../src/components/trees/external-sources-tree/ExternalSourcesTree.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAE/F,sCAAoC;AACpC,8DAAsF;AACtF,4EAAoH;AACpH,yDAAsD;AACtD,2CAAwG;AACxG,wFAA0E;AAI1E;;;GAGG;AACU,QAAA,wBAAwB,GAAG,+BAA0C,CAAC;AAEnF,MAAM,WAAW,GAAG,EAAE,CAAC;AAQvB;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,uDAA6B,EAAC;QACnD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,gCAAwB;QACjC,UAAU,EAAE,WAAW;QACvB,qBAAqB;KACtB,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAA,6DAAmC,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACvD,OAAO,CACL,gCAAK,SAAS,EAAC,4BAA4B,YACzC,uBAAC,iCAAc,IACb,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,gCAAa,CAAC,QAAQ,EAC5D,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,YAAY,EAAE,IAAI,EAClB,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAC1B,uBAAC,2BAAY,OACP,SAAS,EACb,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAC1C,OAAO,EAAE,KAAK,CAAC,OAAO,GACtB,GAEJ,GACE,CACP,CAAC;AACJ,CAAC;AA9BD,kDA8BC;AAED,MAAM,qBAAqB,GAAG,IAAA,yCAAiC,EAAC;IAC9D,0CAAkC;IAClC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IACzC,CAAC;CACF,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport \"../VisibilityTreeBase.scss\";\nimport { ControlledTree, SelectionMode, useTreeModel } from \"@itwin/components-react\";\nimport { usePresentationTreeNodeLoader, useUnifiedSelectionTreeEventHandler } from \"@itwin/presentation-components\";\nimport { TreeRenderer } from \"../common/TreeRenderer\";\nimport { addCustomTreeNodeItemLabelRenderer, combineTreeNodeItemCustomizations } from \"../common/Utils\";\nimport * as RULESET_EXTERNAL_SOURCES_IMPORT from \"./ExternalSources.json\";\n\nimport type { Ruleset } from \"@itwin/presentation-common\";\nimport type { BaseTreeProps } from \"../common/Types\";\n/**\n * Presentation rules used by ControlledCategoriesTree\n * @internal\n */\nexport const RULESET_EXTERNAL_SOURCES = RULESET_EXTERNAL_SOURCES_IMPORT as Ruleset;\n\nconst PAGING_SIZE = 20;\n\n/**\n * Props for the [[ExternalSourcesTree]] component\n * @alpha\n */\nexport type ExternalSourcesTreeProps = BaseTreeProps;\n\n/**\n * Tree which displays a hierarchy of ExternalSources and their elements.\n * @alpha\n */\nexport function ExternalSourcesTree(props: ExternalSourcesTreeProps) {\n const { nodeLoader } = usePresentationTreeNodeLoader({\n imodel: props.iModel,\n ruleset: RULESET_EXTERNAL_SOURCES,\n pagingSize: PAGING_SIZE,\n customizeTreeNodeItem,\n });\n const eventsHandler = useUnifiedSelectionTreeEventHandler({ nodeLoader });\n const treeModel = useTreeModel(nodeLoader.modelSource);\n return (\n <div className=\"tree-widget-tree-container\">\n <ControlledTree\n nodeLoader={nodeLoader}\n model={treeModel}\n selectionMode={props.selectionMode ?? SelectionMode.Extended}\n eventsHandler={eventsHandler}\n width={props.width}\n height={props.height}\n iconsEnabled={true}\n treeRenderer={(treeProps) =>\n <TreeRenderer\n {...treeProps}\n contextMenuItems={props.contextMenuItems}\n nodeLabelRenderer={props.nodeLabelRenderer}\n density={props.density}\n />\n }\n />\n </div>\n );\n}\n\nconst customizeTreeNodeItem = combineTreeNodeItemCustomizations([\n addCustomTreeNodeItemLabelRenderer,\n (item, node) => {\n item.icon = node.extendedData?.imageId;\n },\n]);\n"]}
1
+ {"version":3,"file":"ExternalSourcesTree.js","sourceRoot":"","sources":["../../../../../src/components/trees/external-sources-tree/ExternalSourcesTree.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAEhG,sCAAoC;AACpC,8DAAwD;AACxD,4EAA4J;AAC5J,yDAA8E;AAC9E,2CAAwG;AACxG,wFAA0E;AAK1E;;;GAGG;AACU,QAAA,wBAAwB,GAAG,+BAA0C,CAAC;AAEnF,MAAM,WAAW,GAAG,EAAE,CAAC;AAcvB;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAErF,MAAM,KAAK,GAAG,IAAA,kDAAwB,EAAC;QACrC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,gCAAwB;QACjC,UAAU,EAAE,WAAW;QACvB,mBAAmB,EAAE,uCAAuC;QAC5D,qBAAqB;QACrB,uBAAuB,EAAE,oBAAoB,EAAE,SAAS;KACzD,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG;QACxB,gBAAgB;QAChB,iBAAiB;QACjB,OAAO;KACR,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,gCAAK,SAAS,EAAC,4BAA4B,YACzC,uBAAC,0CAAgB,IACf,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,gCAAa,CAAC,QAAQ,EAC5D,YAAY,EAAE,IAAI,EAClB,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAC1B,oBAAoB,EAAE,kBAAkB,CAAC,CAAC,CAAC,CACzC,uBAAC,qCAAsB,OACjB,SAAS,KACT,iBAAiB,EACrB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,YAAY,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,uBAAC,sDAA4B,OAAK,iBAAiB,GAAI,GAC5F,CACH,CAAC,CAAC,CAAC,CACF,uBAAC,2BAAY,OAAK,SAAS,KAAM,iBAAiB,GAAI,CACvD,GAEH,GACE,CACP,CAAC;AACJ,CAAC;AA7CD,kDA6CC;AAED,SAAS,uCAAuC,CAAC,KAAwC;IACvF,OAAO,IAAI,0DAAgC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,qBAAqB,GAAG,IAAA,yCAAiC,EAAC;IAC9D,0CAAkC;IAClC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IACzC,CAAC;CACF,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport \"../VisibilityTreeBase.scss\";\nimport { SelectionMode } from \"@itwin/components-react\";\nimport { PresentationTree, PresentationTreeNodeRenderer, UnifiedSelectionTreeEventHandler, usePresentationTreeState } from \"@itwin/presentation-components\";\nimport { FilterableTreeRenderer, TreeRenderer } from \"../common/TreeRenderer\";\nimport { addCustomTreeNodeItemLabelRenderer, combineTreeNodeItemCustomizations } from \"../common/Utils\";\nimport * as RULESET_EXTERNAL_SOURCES_IMPORT from \"./ExternalSources.json\";\n\nimport type { Ruleset } from \"@itwin/presentation-common\";\nimport type { PresentationTreeEventHandlerProps } from \"@itwin/presentation-components\";\nimport type { BaseTreeProps, HierarchyLevelConfig } from \"../common/Types\";\n/**\n * Presentation rules used by ControlledCategoriesTree\n * @internal\n */\nexport const RULESET_EXTERNAL_SOURCES = RULESET_EXTERNAL_SOURCES_IMPORT as Ruleset;\n\nconst PAGING_SIZE = 20;\n\n/**\n * Props for the [[ExternalSourcesTree]] component\n * @alpha\n */\nexport interface ExternalSourcesTreeProps extends BaseTreeProps {\n /**\n * Props for configuring hierarchy level.\n * @beta\n */\n hierarchyLevelConfig?: HierarchyLevelConfig;\n}\n\n/**\n * Tree which displays a hierarchy of ExternalSources and their elements.\n * @alpha\n */\nexport function ExternalSourcesTree(props: ExternalSourcesTreeProps) {\n const { hierarchyLevelConfig, contextMenuItems, nodeLabelRenderer, density } = props;\n\n const state = usePresentationTreeState({\n imodel: props.iModel,\n ruleset: RULESET_EXTERNAL_SOURCES,\n pagingSize: PAGING_SIZE,\n eventHandlerFactory: unifiedSelectionTreeEventHandlerFactory,\n customizeTreeNodeItem,\n hierarchyLevelSizeLimit: hierarchyLevelConfig?.sizeLimit,\n });\n\n const treeRendererProps = {\n contextMenuItems,\n nodeLabelRenderer,\n density,\n };\n\n if (!state) {\n return null;\n }\n\n return (\n <div className=\"tree-widget-tree-container\">\n <PresentationTree\n width={props.width}\n height={props.height}\n state={state}\n selectionMode={props.selectionMode ?? SelectionMode.Extended}\n iconsEnabled={true}\n treeRenderer={(treeProps) =>\n hierarchyLevelConfig?.isFilteringEnabled ? (\n <FilterableTreeRenderer\n {...treeProps}\n {...treeRendererProps}\n nodeLoader={state.nodeLoader}\n nodeRenderer={(nodeRendererProps) => <PresentationTreeNodeRenderer {...nodeRendererProps} />}\n />\n ) : (\n <TreeRenderer {...treeProps} {...treeRendererProps} />\n )\n }\n />\n </div>\n );\n}\n\nfunction unifiedSelectionTreeEventHandlerFactory(props: PresentationTreeEventHandlerProps) {\n return new UnifiedSelectionTreeEventHandler({ nodeLoader: props.nodeLoader });\n}\n\nconst customizeTreeNodeItem = combineTreeNodeItemCustomizations([\n addCustomTreeNodeItemLabelRenderer,\n (item, node) => {\n item.icon = node.extendedData?.imageId;\n },\n]);\n"]}
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExternalSourcesTreeComponent = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  /*---------------------------------------------------------------------------------------------
6
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
- * See LICENSE.md in the project root for license terms and full copyright notice.
8
- *--------------------------------------------------------------------------------------------*/
6
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
+ * See LICENSE.md in the project root for license terms and full copyright notice.
8
+ *--------------------------------------------------------------------------------------------*/
9
9
  require("../VisibilityTreeBase.scss");
10
10
  const appui_react_1 = require("@itwin/appui-react");
11
11
  const TreeWidget_1 = require("../../../TreeWidget");
@@ -20,7 +20,7 @@ const ExternalSourcesTreeComponent = (props) => {
20
20
  if (!iModel) {
21
21
  return null;
22
22
  }
23
- return ((0, jsx_runtime_1.jsx)(AutoSizer_1.AutoSizer, { children: ({ width, height }) => ((0, jsx_runtime_1.jsx)(ExternalSourcesTree_1.ExternalSourcesTree, { ...props, iModel: iModel, width: width, height: height })) }));
23
+ return (0, jsx_runtime_1.jsx)(AutoSizer_1.AutoSizer, { children: ({ width, height }) => (0, jsx_runtime_1.jsx)(ExternalSourcesTree_1.ExternalSourcesTree, { ...props, iModel: iModel, width: width, height: height }) });
24
24
  };
25
25
  exports.ExternalSourcesTreeComponent = ExternalSourcesTreeComponent;
26
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalSourcesTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/external-sources-tree/ExternalSourcesTreeComponent.tsx"],"names":[],"mappings":";;;;AAAA;;;+FAG+F;AAE/F,sCAAoC;AACpC,oDAA+D;AAC/D,oDAAiD;AACjD,qDAAkD;AAClD,+DAA4D;AAU5D;;;GAGG;AACI,MAAM,4BAA4B,GAAG,CAAC,KAAwC,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,IAAA,uCAAyB,GAAE,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,uBAAC,qBAAS,cACP,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACtB,uBAAC,yCAAmB,OACd,KAAK,EACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACd,CACH,GACS,CACb,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,4BAA4B,gCAkBvC;AAEF;;;GAGG;AACH,oCAA4B,CAAC,EAAE,GAAG,uBAAuB,CAAC;AAE1D;;;GAGG;AACH,oCAA4B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,uBAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport \"../VisibilityTreeBase.scss\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { AutoSizer } from \"../../utils/AutoSizer\";\nimport { ExternalSourcesTree } from \"./ExternalSourcesTree\";\n\nimport type { ExternalSourcesTreeProps } from \"./ExternalSourcesTree\";\n\n/**\n * Props for [[ExternalSourcesTreeComponent]].\n * @alpha\n */\nexport type ExternalSourcesTreeComponentProps = Omit<ExternalSourcesTreeProps, \"iModel\" | \"width\" | \"height\">;\n\n/**\n * A component that displays an External Sources tree and any necessary \"chrome\".\n * @alpha\n */\nexport const ExternalSourcesTreeComponent = (props: ExternalSourcesTreeComponentProps) => {\n const iModel = useActiveIModelConnection();\n if (!iModel) {\n return null;\n }\n\n return (\n <AutoSizer>\n {({ width, height }) => (\n <ExternalSourcesTree\n {...props}\n iModel={iModel}\n width={width}\n height={height}\n />\n )}\n </AutoSizer>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a [[TreeDefinition]] for [[ExternalSourcesTreeComponent]].\n * @alpha\n */\nExternalSourcesTreeComponent.id = \"external-sources-tree\";\n\n/**\n * Label of the component. May be used when a creating a [[TreeDefinition]] for [[ExternalSourcesTreeComponent]].\n * @alpha\n */\nExternalSourcesTreeComponent.getLabel = () => TreeWidget.translate(\"externalSources\");\n"]}
1
+ {"version":3,"file":"ExternalSourcesTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/external-sources-tree/ExternalSourcesTreeComponent.tsx"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAEhG,sCAAoC;AACpC,oDAA+D;AAC/D,oDAAiD;AACjD,qDAAkD;AAClD,+DAA4D;AAU5D;;;GAGG;AACI,MAAM,4BAA4B,GAAG,CAAC,KAAwC,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,IAAA,uCAAyB,GAAE,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,uBAAC,qBAAS,cAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,uBAAC,yCAAmB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GAAa,CAAC;AAC1I,CAAC,CAAC;AAPW,QAAA,4BAA4B,gCAOvC;AAEF;;;GAGG;AACH,oCAA4B,CAAC,EAAE,GAAG,uBAAuB,CAAC;AAE1D;;;GAGG;AACH,oCAA4B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,uBAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport \"../VisibilityTreeBase.scss\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { AutoSizer } from \"../../utils/AutoSizer\";\nimport { ExternalSourcesTree } from \"./ExternalSourcesTree\";\n\nimport type { ExternalSourcesTreeProps } from \"./ExternalSourcesTree\";\n\n/**\n * Props for [[ExternalSourcesTreeComponent]].\n * @alpha\n */\nexport type ExternalSourcesTreeComponentProps = Omit<ExternalSourcesTreeProps, \"iModel\" | \"width\" | \"height\">;\n\n/**\n * A component that displays an External Sources tree and any necessary \"chrome\".\n * @alpha\n */\nexport const ExternalSourcesTreeComponent = (props: ExternalSourcesTreeComponentProps) => {\n const iModel = useActiveIModelConnection();\n if (!iModel) {\n return null;\n }\n\n return <AutoSizer>{({ width, height }) => <ExternalSourcesTree {...props} iModel={iModel} width={width} height={height} />}</AutoSizer>;\n};\n\n/**\n * Id of the component. May be used when a creating a [[TreeDefinition]] for [[ExternalSourcesTreeComponent]].\n * @alpha\n */\nExternalSourcesTreeComponent.id = \"external-sources-tree\";\n\n/**\n * Label of the component. May be used when a creating a [[TreeDefinition]] for [[ExternalSourcesTreeComponent]].\n * @alpha\n */\nExternalSourcesTreeComponent.getLabel = () => TreeWidget.translate(\"externalSources\");\n"]}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import type { Ruleset } from "@itwin/presentation-common";
3
- import type { BaseTreeProps } from "../common/Types";
3
+ import type { BaseTreeProps, HierarchyLevelConfig } from "../common/Types";
4
4
  /**
5
5
  * Presentation rules used by IModelContentTree
6
6
  * @internal
@@ -10,11 +10,17 @@ export declare const RULESET_IMODEL_CONTENT: Ruleset;
10
10
  * Props for [[IModelContentTree]].
11
11
  * @public
12
12
  */
13
- export type IModelContentTreeProps = BaseTreeProps;
13
+ export interface IModelContentTreeProps extends BaseTreeProps {
14
+ /**
15
+ * Props for configuring hierarchy level.
16
+ * @beta
17
+ */
18
+ hierarchyLevelConfig?: HierarchyLevelConfig;
19
+ }
14
20
  /**
15
21
  * A tree that shows all iModel content starting from the root Subject, then the hierarchy of child
16
22
  * Subjects, their Models and Elements contained in those Models.
17
23
  * @public
18
24
  */
19
- export declare const IModelContentTree: (props: IModelContentTreeProps) => JSX.Element;
25
+ export declare const IModelContentTree: (props: IModelContentTreeProps) => JSX.Element | null;
20
26
  //# sourceMappingURL=IModelContentTree.d.ts.map
@@ -3,10 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IModelContentTree = exports.RULESET_IMODEL_CONTENT = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  /*---------------------------------------------------------------------------------------------
6
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
- * See LICENSE.md in the project root for license terms and full copyright notice.
8
- *--------------------------------------------------------------------------------------------*/
9
- const react_1 = require("react");
6
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
+ * See LICENSE.md in the project root for license terms and full copyright notice.
8
+ *--------------------------------------------------------------------------------------------*/
10
9
  const components_react_1 = require("@itwin/components-react");
11
10
  const presentation_components_1 = require("@itwin/presentation-components");
12
11
  const TreeRenderer_1 = require("../common/TreeRenderer");
@@ -22,20 +21,25 @@ exports.RULESET_IMODEL_CONTENT = require("./IModelContent.json"); // eslint-disa
22
21
  * @public
23
22
  */
24
23
  const IModelContentTree = (props) => {
25
- const { iModel, width, height, selectionMode, contextMenuItems } = props;
26
- const { nodeLoader } = (0, presentation_components_1.usePresentationTreeNodeLoader)({
24
+ const { iModel, width, height, selectionMode, hierarchyLevelConfig } = props;
25
+ const state = (0, presentation_components_1.usePresentationTreeState)({
27
26
  imodel: iModel,
28
27
  ruleset: exports.RULESET_IMODEL_CONTENT,
29
28
  pagingSize: 20,
30
29
  appendChildrenCountForGroupingNodes: true,
31
30
  customizeTreeNodeItem,
31
+ hierarchyLevelSizeLimit: hierarchyLevelConfig?.sizeLimit,
32
32
  });
33
- const eventHandler = (0, components_react_1.useTreeEventsHandler)((0, react_1.useMemo)(() => ({ nodeLoader, modelSource: nodeLoader.modelSource }), [nodeLoader]));
34
- const treeModel = (0, components_react_1.useTreeModel)(nodeLoader.modelSource);
35
- return ((0, jsx_runtime_1.jsx)("div", { className: "tree-widget-tree-container", children: (0, jsx_runtime_1.jsx)(components_react_1.ControlledTree, { width: width, height: height, nodeLoader: nodeLoader, selectionMode: selectionMode ?? components_react_1.SelectionMode.None, eventsHandler: eventHandler, model: treeModel, treeRenderer: (treeProps) => (0, jsx_runtime_1.jsx)(TreeRenderer_1.TreeRenderer, { ...treeProps, contextMenuItems: contextMenuItems, nodeLabelRenderer: props.nodeLabelRenderer, density: props.density }) }) }));
33
+ const treeRendererProps = {
34
+ contextMenuItems: props.contextMenuItems,
35
+ nodeLabelRenderer: props.nodeLabelRenderer,
36
+ density: props.density,
37
+ };
38
+ if (!state) {
39
+ return null;
40
+ }
41
+ return ((0, jsx_runtime_1.jsx)("div", { className: "tree-widget-tree-container", children: (0, jsx_runtime_1.jsx)(presentation_components_1.PresentationTree, { width: width, height: height, state: state, selectionMode: selectionMode ?? components_react_1.SelectionMode.None, treeRenderer: (treeProps) => hierarchyLevelConfig?.isFilteringEnabled ? ((0, jsx_runtime_1.jsx)(TreeRenderer_1.FilterableTreeRenderer, { ...treeProps, ...treeRendererProps, nodeLoader: state.nodeLoader, nodeRenderer: (nodeRendererProps) => (0, jsx_runtime_1.jsx)(presentation_components_1.PresentationTreeNodeRenderer, { ...nodeRendererProps }) })) : ((0, jsx_runtime_1.jsx)(TreeRenderer_1.TreeRenderer, { ...treeProps, ...treeRendererProps })) }) }));
36
42
  };
37
43
  exports.IModelContentTree = IModelContentTree;
38
- const customizeTreeNodeItem = (0, Utils_1.combineTreeNodeItemCustomizations)([
39
- Utils_1.addCustomTreeNodeItemLabelRenderer,
40
- ]);
44
+ const customizeTreeNodeItem = (0, Utils_1.combineTreeNodeItemCustomizations)([Utils_1.addCustomTreeNodeItemLabelRenderer]);
41
45
  //# sourceMappingURL=IModelContentTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IModelContentTree.js","sourceRoot":"","sources":["../../../../../src/components/trees/imodel-content-tree/IModelContentTree.tsx"],"names":[],"mappings":";;;;AAAA;;;+FAG+F;AAE/F,iCAAgC;AAChC,8DAA4G;AAC5G,4EAA+E;AAC/E,yDAAsD;AACtD,2CAAwG;AAKxG;;;GAGG;AACU,QAAA,sBAAsB,GAAY,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,yDAAyD;AAQzI;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAE,EAAE;IACjE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IAEzE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,uDAA6B,EAAC;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,8BAAsB;QAC/B,UAAU,EAAE,EAAE;QACd,mCAAmC,EAAE,IAAI;QACzC,qBAAqB;KACtB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAA,uCAAoB,EAAC,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAE9H,MAAM,SAAS,GAAG,IAAA,+BAAY,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAEvD,OAAO,CACL,gCAAK,SAAS,EAAC,4BAA4B,YACzC,uBAAC,iCAAc,IACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,IAAI,gCAAa,CAAC,IAAI,EAClD,aAAa,EAAE,YAAY,EAC3B,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAC1B,uBAAC,2BAAY,OACP,SAAS,EACb,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAC1C,OAAO,EAAE,KAAK,CAAC,OAAO,GACtB,GAEJ,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAlCW,QAAA,iBAAiB,qBAkC5B;AAEF,MAAM,qBAAqB,GAAG,IAAA,yCAAiC,EAAC;IAC9D,0CAAkC;CACnC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { useMemo } from \"react\";\nimport { ControlledTree, SelectionMode, useTreeEventsHandler, useTreeModel } from \"@itwin/components-react\";\nimport { usePresentationTreeNodeLoader } from \"@itwin/presentation-components\";\nimport { TreeRenderer } from \"../common/TreeRenderer\";\nimport { addCustomTreeNodeItemLabelRenderer, combineTreeNodeItemCustomizations } from \"../common/Utils\";\n\nimport type { Ruleset } from \"@itwin/presentation-common\";\nimport type { BaseTreeProps } from \"../common/Types\";\n\n/**\n * Presentation rules used by IModelContentTree\n * @internal\n */\nexport const RULESET_IMODEL_CONTENT: Ruleset = require(\"./IModelContent.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\n\n/**\n * Props for [[IModelContentTree]].\n * @public\n */\nexport type IModelContentTreeProps = BaseTreeProps;\n\n/**\n * A tree that shows all iModel content starting from the root Subject, then the hierarchy of child\n * Subjects, their Models and Elements contained in those Models.\n * @public\n */\nexport const IModelContentTree = (props: IModelContentTreeProps) => {\n const { iModel, width, height, selectionMode, contextMenuItems } = props;\n\n const { nodeLoader } = usePresentationTreeNodeLoader({\n imodel: iModel,\n ruleset: RULESET_IMODEL_CONTENT,\n pagingSize: 20,\n appendChildrenCountForGroupingNodes: true,\n customizeTreeNodeItem,\n });\n const eventHandler = useTreeEventsHandler(useMemo(() => ({ nodeLoader, modelSource: nodeLoader.modelSource }), [nodeLoader]));\n\n const treeModel = useTreeModel(nodeLoader.modelSource);\n\n return (\n <div className=\"tree-widget-tree-container\">\n <ControlledTree\n width={width}\n height={height}\n nodeLoader={nodeLoader}\n selectionMode={selectionMode ?? SelectionMode.None}\n eventsHandler={eventHandler}\n model={treeModel}\n treeRenderer={(treeProps) =>\n <TreeRenderer\n {...treeProps}\n contextMenuItems={contextMenuItems}\n nodeLabelRenderer={props.nodeLabelRenderer}\n density={props.density}\n />\n }\n />\n </div>\n );\n};\n\nconst customizeTreeNodeItem = combineTreeNodeItemCustomizations([\n addCustomTreeNodeItemLabelRenderer,\n]);\n"]}
1
+ {"version":3,"file":"IModelContentTree.js","sourceRoot":"","sources":["../../../../../src/components/trees/imodel-content-tree/IModelContentTree.tsx"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAEhG,8DAAwD;AACxD,4EAA0H;AAC1H,yDAA8E;AAC9E,2CAAwG;AAIxG;;;GAGG;AACU,QAAA,sBAAsB,GAAY,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,yDAAyD;AAczI;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAE,EAAE;IACjE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;IAE7E,MAAM,KAAK,GAAG,IAAA,kDAAwB,EAAC;QACrC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,8BAAsB;QAC/B,UAAU,EAAE,EAAE;QACd,mCAAmC,EAAE,IAAI;QACzC,qBAAqB;QACrB,uBAAuB,EAAE,oBAAoB,EAAE,SAAS;KACzD,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG;QACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,gCAAK,SAAS,EAAC,4BAA4B,YACzC,uBAAC,0CAAgB,IACf,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,IAAI,gCAAa,CAAC,IAAI,EAClD,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAC1B,oBAAoB,EAAE,kBAAkB,CAAC,CAAC,CAAC,CACzC,uBAAC,qCAAsB,OACjB,SAAS,KACT,iBAAiB,EACrB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,YAAY,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,uBAAC,sDAA4B,OAAK,iBAAiB,GAAI,GAC5F,CACH,CAAC,CAAC,CAAC,CACF,uBAAC,2BAAY,OAAK,SAAS,KAAM,iBAAiB,GAAI,CACvD,GAEH,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AA5CW,QAAA,iBAAiB,qBA4C5B;AAEF,MAAM,qBAAqB,GAAG,IAAA,yCAAiC,EAAC,CAAC,0CAAkC,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { SelectionMode } from \"@itwin/components-react\";\nimport { PresentationTree, PresentationTreeNodeRenderer, usePresentationTreeState } from \"@itwin/presentation-components\";\nimport { FilterableTreeRenderer, TreeRenderer } from \"../common/TreeRenderer\";\nimport { addCustomTreeNodeItemLabelRenderer, combineTreeNodeItemCustomizations } from \"../common/Utils\";\n\nimport type { Ruleset } from \"@itwin/presentation-common\";\nimport type { BaseTreeProps, HierarchyLevelConfig } from \"../common/Types\";\n/**\n * Presentation rules used by IModelContentTree\n * @internal\n */\nexport const RULESET_IMODEL_CONTENT: Ruleset = require(\"./IModelContent.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\n\n/**\n * Props for [[IModelContentTree]].\n * @public\n */\nexport interface IModelContentTreeProps extends BaseTreeProps {\n /**\n * Props for configuring hierarchy level.\n * @beta\n */\n hierarchyLevelConfig?: HierarchyLevelConfig;\n}\n\n/**\n * A tree that shows all iModel content starting from the root Subject, then the hierarchy of child\n * Subjects, their Models and Elements contained in those Models.\n * @public\n */\nexport const IModelContentTree = (props: IModelContentTreeProps) => {\n const { iModel, width, height, selectionMode, hierarchyLevelConfig } = props;\n\n const state = usePresentationTreeState({\n imodel: iModel,\n ruleset: RULESET_IMODEL_CONTENT,\n pagingSize: 20,\n appendChildrenCountForGroupingNodes: true,\n customizeTreeNodeItem,\n hierarchyLevelSizeLimit: hierarchyLevelConfig?.sizeLimit,\n });\n\n const treeRendererProps = {\n contextMenuItems: props.contextMenuItems,\n nodeLabelRenderer: props.nodeLabelRenderer,\n density: props.density,\n };\n\n if (!state) {\n return null;\n }\n\n return (\n <div className=\"tree-widget-tree-container\">\n <PresentationTree\n width={width}\n height={height}\n state={state}\n selectionMode={selectionMode ?? SelectionMode.None}\n treeRenderer={(treeProps) =>\n hierarchyLevelConfig?.isFilteringEnabled ? (\n <FilterableTreeRenderer\n {...treeProps}\n {...treeRendererProps}\n nodeLoader={state.nodeLoader}\n nodeRenderer={(nodeRendererProps) => <PresentationTreeNodeRenderer {...nodeRendererProps} />}\n />\n ) : (\n <TreeRenderer {...treeProps} {...treeRendererProps} />\n )\n }\n />\n </div>\n );\n};\n\nconst customizeTreeNodeItem = combineTreeNodeItemCustomizations([addCustomTreeNodeItemLabelRenderer]);\n"]}
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IModelContentTreeComponent = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  /*---------------------------------------------------------------------------------------------
6
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
- * See LICENSE.md in the project root for license terms and full copyright notice.
8
- *--------------------------------------------------------------------------------------------*/
6
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
7
+ * See LICENSE.md in the project root for license terms and full copyright notice.
8
+ *--------------------------------------------------------------------------------------------*/
9
9
  require("../VisibilityTreeBase.scss");
10
10
  const appui_react_1 = require("@itwin/appui-react");
11
11
  const TreeWidget_1 = require("../../../TreeWidget");
@@ -17,9 +17,10 @@ const IModelContentTree_1 = require("./IModelContentTree");
17
17
  */
18
18
  const IModelContentTreeComponent = (props) => {
19
19
  const iModel = (0, appui_react_1.useActiveIModelConnection)();
20
- if (!iModel)
20
+ if (!iModel) {
21
21
  return null;
22
- return ((0, jsx_runtime_1.jsx)(AutoSizer_1.AutoSizer, { children: ({ width, height }) => ((0, jsx_runtime_1.jsx)(IModelContentTree_1.IModelContentTree, { ...props, iModel: iModel, width: width, height: height })) }));
22
+ }
23
+ return (0, jsx_runtime_1.jsx)(AutoSizer_1.AutoSizer, { children: ({ width, height }) => (0, jsx_runtime_1.jsx)(IModelContentTree_1.IModelContentTree, { ...props, iModel: iModel, width: width, height: height }) });
23
24
  };
24
25
  exports.IModelContentTreeComponent = IModelContentTreeComponent;
25
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"IModelContentTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/imodel-content-tree/IModelContentTreeComponent.tsx"],"names":[],"mappings":";;;;AAAA;;;+FAG+F;AAE/F,sCAAoC;AACpC,oDAA+D;AAC/D,oDAAiD;AACjD,qDAAkD;AAClD,2DAAwD;AAUxD;;;GAGG;AACI,MAAM,0BAA0B,GAAG,CAAC,KAAsC,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,IAAA,uCAAyB,GAAE,CAAC;IAE3C,IAAI,CAAC,MAAM;QACT,OAAO,IAAI,CAAC;IAEd,OAAO,CACL,uBAAC,qBAAS,cACP,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACtB,uBAAC,qCAAiB,OACZ,KAAK,EACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACd,CACH,GACS,CACb,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,0BAA0B,8BAkBrC;AAEF;;;GAGG;AACH,kCAA0B,CAAC,EAAE,GAAG,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,kCAA0B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,uBAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport \"../VisibilityTreeBase.scss\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { AutoSizer } from \"../../utils/AutoSizer\";\nimport { IModelContentTree } from \"./IModelContentTree\";\n\nimport type { IModelContentTreeProps } from \"./IModelContentTree\";\n\n/**\n * Props for [[IModelContentTreeComponent]].\n * @public\n */\nexport type IModelContentTreeComponentProps = Omit<IModelContentTreeProps, \"iModel\" | \"width\" | \"height\">;\n\n/**\n * A component that renders [[IModelContentTree]]\n * @public\n */\nexport const IModelContentTreeComponent = (props: IModelContentTreeComponentProps) => {\n const iModel = useActiveIModelConnection();\n\n if (!iModel)\n return null;\n\n return (\n <AutoSizer>\n {({ width, height }) => (\n <IModelContentTree\n {...props}\n iModel={iModel}\n width={width}\n height={height}\n />\n )}\n </AutoSizer>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a [[TreeDefinition]] for [[SelectableTree]].\n * @public\n */\nIModelContentTreeComponent.id = \"imodel-content-tree\";\n\n/**\n * Label of the component. May be used when a creating a [[TreeDefinition]] for [[SelectableTree]].\n * @public\n */\nIModelContentTreeComponent.getLabel = () => TreeWidget.translate(\"imodelContent\");\n"]}
1
+ {"version":3,"file":"IModelContentTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/imodel-content-tree/IModelContentTreeComponent.tsx"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAEhG,sCAAoC;AACpC,oDAA+D;AAC/D,oDAAiD;AACjD,qDAAkD;AAClD,2DAAwD;AAUxD;;;GAGG;AACI,MAAM,0BAA0B,GAAG,CAAC,KAAsC,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,IAAA,uCAAyB,GAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,uBAAC,qBAAS,cAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,uBAAC,qCAAiB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GAAa,CAAC;AACxI,CAAC,CAAC;AARW,QAAA,0BAA0B,8BAQrC;AAEF;;;GAGG;AACH,kCAA0B,CAAC,EAAE,GAAG,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,kCAA0B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,uBAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport \"../VisibilityTreeBase.scss\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { AutoSizer } from \"../../utils/AutoSizer\";\nimport { IModelContentTree } from \"./IModelContentTree\";\n\nimport type { IModelContentTreeProps } from \"./IModelContentTree\";\n\n/**\n * Props for [[IModelContentTreeComponent]].\n * @public\n */\nexport type IModelContentTreeComponentProps = Omit<IModelContentTreeProps, \"iModel\" | \"width\" | \"height\">;\n\n/**\n * A component that renders [[IModelContentTree]]\n * @public\n */\nexport const IModelContentTreeComponent = (props: IModelContentTreeComponentProps) => {\n const iModel = useActiveIModelConnection();\n\n if (!iModel) {\n return null;\n }\n\n return <AutoSizer>{({ width, height }) => <IModelContentTree {...props} iModel={iModel} width={width} height={height} />}</AutoSizer>;\n};\n\n/**\n * Id of the component. May be used when a creating a [[TreeDefinition]] for [[SelectableTree]].\n * @public\n */\nIModelContentTreeComponent.id = \"imodel-content-tree\";\n\n/**\n * Label of the component. May be used when a creating a [[TreeDefinition]] for [[SelectableTree]].\n * @public\n */\nIModelContentTreeComponent.getLabel = () => TreeWidget.translate(\"imodelContent\");\n"]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
7
  if (k2 === undefined) k2 = k;
8
8
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/trees/index.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;;;;;AAE/F,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AACtC,4DAA0C;AAC1C,+DAA6C;AAC7C,2DAAyC;AAEzC,0EAAwD;AACxD,mFAAiE;AAEjE,iEAA+C;AAC/C,0EAAwD;AACxD,4EAA0D;AAE1D,8EAA4D;AAC5D,uFAAqE;AAErE,2DAAyC;AACzC,oEAAkD;AAClD,wEAAsD","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nexport * from \"./common/Types\";\nexport * from \"./common/ContextMenu\";\nexport * from \"./common/TreeRenderer\";\nexport * from \"./common/TreeNodeRenderer\";\nexport * from \"./VisibilityTreeEventHandler\";\nexport * from \"./VisibilityTreeRenderer\";\n\nexport * from \"./imodel-content-tree/IModelContentTree\";\nexport * from \"./imodel-content-tree/IModelContentTreeComponent\";\n\nexport * from \"./category-tree/CategoriesTree\";\nexport * from \"./category-tree/CategoriesTreeComponent\";\nexport * from \"./category-tree/CategoryVisibilityHandler\";\n\nexport * from \"./external-sources-tree/ExternalSourcesTree\";\nexport * from \"./external-sources-tree/ExternalSourcesTreeComponent\";\n\nexport * from \"./models-tree/ModelsTree\";\nexport * from \"./models-tree/ModelsTreeComponent\";\nexport * from \"./models-tree/ModelsVisibilityHandler\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/trees/index.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;;;;;;;;;;;;;;AAEhG,iDAA+B;AAC/B,uDAAqC;AACrC,wDAAsC;AACtC,4DAA0C;AAC1C,+DAA6C;AAC7C,2DAAyC;AAEzC,0EAAwD;AACxD,mFAAiE;AAEjE,iEAA+C;AAC/C,0EAAwD;AACxD,4EAA0D;AAE1D,8EAA4D;AAC5D,uFAAqE;AAErE,2DAAyC;AACzC,oEAAkD;AAClD,wEAAsD","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nexport * from \"./common/Types\";\nexport * from \"./common/ContextMenu\";\nexport * from \"./common/TreeRenderer\";\nexport * from \"./common/TreeNodeRenderer\";\nexport * from \"./VisibilityTreeEventHandler\";\nexport * from \"./VisibilityTreeRenderer\";\n\nexport * from \"./imodel-content-tree/IModelContentTree\";\nexport * from \"./imodel-content-tree/IModelContentTreeComponent\";\n\nexport * from \"./category-tree/CategoriesTree\";\nexport * from \"./category-tree/CategoriesTreeComponent\";\nexport * from \"./category-tree/CategoryVisibilityHandler\";\n\nexport * from \"./external-sources-tree/ExternalSourcesTree\";\nexport * from \"./external-sources-tree/ExternalSourcesTreeComponent\";\n\nexport * from \"./models-tree/ModelsTree\";\nexport * from \"./models-tree/ModelsTreeComponent\";\nexport * from \"./models-tree/ModelsVisibilityHandler\";\n"]}
@@ -4,7 +4,7 @@ import { ClassGroupingOption } from "../common/Types";
4
4
  import { ModelsVisibilityHandler } from "./ModelsVisibilityHandler";
5
5
  import type { SingleSchemaClassSpecification } from "@itwin/presentation-common";
6
6
  import type { Viewport } from "@itwin/core-frontend";
7
- import type { BaseFilterableTreeProps } from "../common/Types";
7
+ import type { BaseFilterableTreeProps, HierarchyLevelConfig } from "../common/Types";
8
8
  import type { ModelsTreeSelectionPredicate, ModelsVisibilityHandlerProps } from "./ModelsVisibilityHandler";
9
9
  /**
10
10
  * Props for configuring the hierarchy in [[ModelsTree]].
@@ -47,6 +47,11 @@ export interface ModelsTreeProps extends BaseFilterableTreeProps {
47
47
  * Custom visibility handler.
48
48
  */
49
49
  modelsVisibilityHandler?: ModelsVisibilityHandler | ((props: ModelsVisibilityHandlerProps) => ModelsVisibilityHandler);
50
+ /**
51
+ * Props for configuring hierarchy level.
52
+ * @beta
53
+ */
54
+ hierarchyLevelConfig?: HierarchyLevelConfig;
50
55
  }
51
56
  /**
52
57
  * A tree component that shows a subject - model - category - element
@@ -54,5 +59,5 @@ export interface ModelsTreeProps extends BaseFilterableTreeProps {
54
59
  * the display of those instances.
55
60
  * @public
56
61
  */
57
- export declare function ModelsTree(props: ModelsTreeProps): JSX.Element;
62
+ export declare function ModelsTree(props: ModelsTreeProps): JSX.Element | null;
58
63
  //# sourceMappingURL=ModelsTree.d.ts.map
@@ -6,20 +6,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ModelsTree = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  /*---------------------------------------------------------------------------------------------
9
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
10
- * See LICENSE.md in the project root for license terms and full copyright notice.
11
- *--------------------------------------------------------------------------------------------*/
9
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
10
+ * See LICENSE.md in the project root for license terms and full copyright notice.
11
+ *--------------------------------------------------------------------------------------------*/
12
12
  require("../VisibilityTreeBase.scss");
13
13
  const classnames_1 = __importDefault(require("classnames"));
14
14
  const react_1 = require("react");
15
15
  const components_react_1 = require("@itwin/components-react");
16
- const core_react_1 = require("@itwin/core-react");
17
16
  const presentation_components_1 = require("@itwin/presentation-components");
18
17
  const TreeWidget_1 = require("../../../TreeWidget");
18
+ const TreeRenderer_1 = require("../common/TreeRenderer");
19
19
  const Types_1 = require("../common/Types");
20
+ const UseVisibilityTreeState_1 = require("../common/UseVisibilityTreeState");
20
21
  const Utils_1 = require("../common/Utils");
21
- const VisibilityTreeEventHandler_1 = require("../VisibilityTreeEventHandler");
22
22
  const VisibilityTreeRenderer_1 = require("../VisibilityTreeRenderer");
23
+ const ModelsTreeEventHandler_1 = require("./ModelsTreeEventHandler");
23
24
  const ModelsVisibilityHandler_1 = require("./ModelsVisibilityHandler");
24
25
  const Utils_2 = require("./Utils");
25
26
  const PAGING_SIZE = 20;
@@ -30,18 +31,9 @@ const PAGING_SIZE = 20;
30
31
  * @public
31
32
  */
32
33
  function ModelsTree(props) {
33
- const { nodeLoader, onItemsRendered } = useModelsTreeNodeLoader(props);
34
- const { filteredNodeLoader, isFiltering, nodeHighlightingProps } = (0, VisibilityTreeRenderer_1.useVisibilityTreeFiltering)(nodeLoader, props.filterInfo, props.onFilterApplied);
35
- const filterApplied = filteredNodeLoader !== nodeLoader;
36
- const { activeView, modelsVisibilityHandler, selectionPredicate } = props;
37
- const visibilityHandler = useVisibilityHandler(nodeLoader.dataProvider.rulesetId, props.iModel, activeView, modelsVisibilityHandler, getFilteredDataProvider(filteredNodeLoader.dataProvider), props.enableHierarchyAutoUpdate);
38
- const eventHandler = (0, core_react_1.useDisposable)((0, react_1.useCallback)(() => new VisibilityTreeEventHandler_1.VisibilityTreeEventHandler({
39
- nodeLoader: filteredNodeLoader,
40
- visibilityHandler,
41
- selectionPredicate: (node) => !selectionPredicate || !(0, presentation_components_1.isPresentationTreeNodeItem)(node) ? true : selectionPredicate(node.key, ModelsVisibilityHandler_1.ModelsVisibilityHandler.getNodeType(node)),
42
- }), [filteredNodeLoader, visibilityHandler, selectionPredicate]));
43
- const treeModel = (0, components_react_1.useTreeModel)(filteredNodeLoader.modelSource);
44
- const treeRenderer = (0, VisibilityTreeRenderer_1.createVisibilityTreeRenderer)({
34
+ const { hierarchyLevelConfig, density, height, width, selectionMode } = props;
35
+ const state = useModelsTreeState(props);
36
+ const baseRendererProps = {
45
37
  contextMenuItems: props.contextMenuItems,
46
38
  nodeLabelRenderer: props.nodeLabelRenderer,
47
39
  density: props.density,
@@ -51,21 +43,25 @@ function ModelsTree(props) {
51
43
  levelOffset: 10,
52
44
  disableRootNodeCollapse: true,
53
45
  },
54
- });
55
- const overlay = isFiltering ? (0, jsx_runtime_1.jsx)("div", { className: "filteredTreeOverlay" }) : undefined;
46
+ };
56
47
  // istanbul ignore next
57
48
  const noFilteredDataRenderer = (0, react_1.useCallback)(() => {
58
- return (0, jsx_runtime_1.jsx)(VisibilityTreeRenderer_1.VisibilityTreeNoFilteredData, { title: TreeWidget_1.TreeWidget.translate("modelTree.noModelFound"), message: TreeWidget_1.TreeWidget.translate("modelTree.noMatchingModelNames") });
49
+ return ((0, jsx_runtime_1.jsx)(VisibilityTreeRenderer_1.VisibilityTreeNoFilteredData, { title: TreeWidget_1.TreeWidget.translate("modelTree.noModelFound"), message: TreeWidget_1.TreeWidget.translate("modelTree.noMatchingModelNames") }));
59
50
  }, []);
60
- return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("tree-widget-visibility-tree-base", "tree-widget-tree-container"), children: [(0, jsx_runtime_1.jsx)(components_react_1.ControlledTree, { nodeLoader: filteredNodeLoader, model: treeModel, selectionMode: props.selectionMode || components_react_1.SelectionMode.None, eventsHandler: eventHandler, treeRenderer: treeRenderer, nodeHighlightingProps: nodeHighlightingProps, noDataRenderer: filterApplied ? noFilteredDataRenderer : undefined, onItemsRendered: onItemsRendered, width: props.width, height: props.height }), overlay] }));
51
+ if (!state) {
52
+ return null;
53
+ }
54
+ const isFilterApplied = state.filteringResult?.filteredProvider !== undefined;
55
+ const overlay = state.filteringResult?.isFiltering ? (0, jsx_runtime_1.jsx)("div", { className: "filteredTreeOverlay" }) : undefined;
56
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("tree-widget-visibility-tree-base", "tree-widget-tree-container"), children: [(0, jsx_runtime_1.jsx)(presentation_components_1.PresentationTree, { state: state, selectionMode: selectionMode || components_react_1.SelectionMode.None, treeRenderer: hierarchyLevelConfig?.isFilteringEnabled
57
+ ? (rendererProps) => ((0, jsx_runtime_1.jsx)(TreeRenderer_1.FilterableTreeRenderer, { ...rendererProps, ...baseRendererProps, nodeLoader: state.nodeLoader, nodeRenderer: (nodeProps) => (0, jsx_runtime_1.jsx)(ModelsTreeNodeRenderer, { ...nodeProps, density: density }) }))
58
+ : (0, VisibilityTreeRenderer_1.createVisibilityTreeRenderer)(baseRendererProps), noDataRenderer: isFilterApplied ? noFilteredDataRenderer : undefined, width: width, height: height }), overlay] }));
61
59
  }
62
60
  exports.ModelsTree = ModelsTree;
63
- const customizeTreeNodeItem = (0, Utils_1.combineTreeNodeItemCustomizations)([
64
- Utils_1.addCustomTreeNodeItemLabelRenderer,
65
- Utils_1.addTreeNodeItemCheckbox,
66
- Utils_2.addModelsTreeNodeItemIcons,
67
- ]);
68
- function useModelsTreeNodeLoader(props) {
61
+ function ModelsTreeNodeRenderer(props) {
62
+ return ((0, jsx_runtime_1.jsx)(VisibilityTreeRenderer_1.FilterableVisibilityTreeNodeRenderer, { ...props, iconsEnabled: true, descriptionEnabled: false, levelOffset: 10, disableRootNodeCollapse: true, isEnlarged: props.density === "enlarged" }));
63
+ }
64
+ function useModelsTreeState({ filterInfo, onFilterApplied, ...props }) {
69
65
  const rulesets = {
70
66
  general: (0, react_1.useMemo)(() => (0, Utils_2.createRuleset)({
71
67
  enableElementsClassGrouping: !!props.hierarchyConfig?.enableElementsClassGrouping,
@@ -77,54 +73,72 @@ function useModelsTreeNodeLoader(props) {
77
73
  showEmptyModels: props.hierarchyConfig?.showEmptyModels,
78
74
  }), [props.hierarchyConfig?.elementClassSpecification, props.hierarchyConfig?.showEmptyModels]),
79
75
  };
80
- const { nodeLoader, onItemsRendered } = (0, presentation_components_1.usePresentationTreeNodeLoader)({
81
- imodel: props.iModel,
76
+ const treeState = useTreeState({
77
+ ...props,
82
78
  ruleset: rulesets.general,
83
- appendChildrenCountForGroupingNodes: (props.hierarchyConfig?.enableElementsClassGrouping === Types_1.ClassGroupingOption.YesWithCounts),
84
- pagingSize: PAGING_SIZE,
85
- enableHierarchyAutoUpdate: props.enableHierarchyAutoUpdate,
86
- customizeTreeNodeItem,
87
79
  });
88
- const { nodeLoader: searchNodeLoader, onItemsRendered: onSearchItemsRendered } = (0, presentation_components_1.usePresentationTreeNodeLoader)({
89
- imodel: props.iModel,
80
+ const filteredTreeState = useTreeState({
81
+ ...props,
90
82
  ruleset: rulesets.search,
83
+ filterInfo,
84
+ onFilterApplied,
85
+ });
86
+ return filterInfo?.filter ? filteredTreeState : treeState;
87
+ }
88
+ function useTreeState({ modelsVisibilityHandler, activeView, selectionPredicate, hierarchyConfig, iModel, ruleset, enableHierarchyAutoUpdate, filterInfo, onFilterApplied, hierarchyLevelConfig, }) {
89
+ const visibilityHandler = useVisibilityHandler(ruleset.id, iModel, activeView, modelsVisibilityHandler);
90
+ const selectionPredicateRef = (0, react_1.useRef)(selectionPredicate);
91
+ (0, react_1.useEffect)(() => {
92
+ selectionPredicateRef.current = selectionPredicate;
93
+ }, [selectionPredicate]);
94
+ const onFilterChange = (0, react_1.useCallback)((dataProvider, matchesCount) => {
95
+ if (onFilterApplied && dataProvider && matchesCount !== undefined) {
96
+ onFilterApplied(dataProvider, matchesCount);
97
+ }
98
+ if (visibilityHandler) {
99
+ visibilityHandler.setFilteredDataProvider(dataProvider);
100
+ }
101
+ }, [onFilterApplied, visibilityHandler]);
102
+ return (0, UseVisibilityTreeState_1.useVisibilityTreeState)({
103
+ imodel: iModel,
104
+ ruleset,
91
105
  pagingSize: PAGING_SIZE,
92
- enableHierarchyAutoUpdate: props.enableHierarchyAutoUpdate,
106
+ appendChildrenCountForGroupingNodes: hierarchyConfig?.enableElementsClassGrouping === Types_1.ClassGroupingOption.YesWithCounts,
107
+ enableHierarchyAutoUpdate,
93
108
  customizeTreeNodeItem,
109
+ visibilityHandler,
110
+ filterInfo,
111
+ onFilterChange,
112
+ selectionPredicate: (0, react_1.useCallback)((node) => !selectionPredicateRef.current || !(0, presentation_components_1.isPresentationTreeNodeItem)(node)
113
+ ? true
114
+ : selectionPredicateRef.current(node.key, ModelsVisibilityHandler_1.ModelsVisibilityHandler.getNodeType(node)), []),
115
+ eventHandler: eventHandlerFactory,
116
+ hierarchyLevelSizeLimit: hierarchyLevelConfig?.sizeLimit,
94
117
  });
95
- const activeNodeLoader = props.filterInfo?.filter ? searchNodeLoader : nodeLoader;
96
- const activeItemsRenderedCallback = props.filterInfo?.filter ? onSearchItemsRendered : onItemsRendered;
97
- return {
98
- nodeLoader: activeNodeLoader,
99
- onItemsRendered: activeItemsRenderedCallback,
100
- };
101
118
  }
102
- function useVisibilityHandler(rulesetId, iModel, activeView, visibilityHandler, filteredDataProvider, hierarchyAutoUpdateEnabled) {
119
+ function eventHandlerFactory(props) {
120
+ return new ModelsTreeEventHandler_1.ModelsTreeEventHandler(props);
121
+ }
122
+ function useVisibilityHandler(rulesetId, iModel, activeView, visibilityHandler, hierarchyAutoUpdateEnabled) {
103
123
  const subjectModelIdsCache = (0, react_1.useMemo)(() => new ModelsVisibilityHandler_1.SubjectModelIdsCache(iModel), [iModel]);
104
- const disposableVisibilityHandler = (0, core_react_1.useDisposable)((0, react_1.useCallback)(() => {
124
+ const [state, setState] = (0, react_1.useState)();
125
+ (0, react_1.useEffect)(() => {
126
+ if (visibilityHandler && typeof visibilityHandler !== "function") {
127
+ return;
128
+ }
105
129
  const visibilityHandlerProps = {
106
130
  rulesetId,
107
131
  viewport: activeView,
108
132
  hierarchyAutoUpdateEnabled,
109
133
  subjectModelIdsCache,
110
134
  };
111
- return typeof visibilityHandler === "function"
112
- ? visibilityHandler(visibilityHandlerProps)
113
- : new ModelsVisibilityHandler_1.ModelsVisibilityHandler(visibilityHandlerProps);
114
- }, [visibilityHandler, rulesetId, activeView, hierarchyAutoUpdateEnabled, subjectModelIdsCache]));
115
- const handler = typeof visibilityHandler === "function" || visibilityHandler === undefined
116
- ? disposableVisibilityHandler
117
- : visibilityHandler;
118
- (0, react_1.useEffect)(() => {
119
- handler && handler.setFilteredDataProvider(filteredDataProvider);
120
- }, [handler, filteredDataProvider]);
121
- return handler;
135
+ const handler = visibilityHandler ? visibilityHandler(visibilityHandlerProps) : new ModelsVisibilityHandler_1.ModelsVisibilityHandler(visibilityHandlerProps);
136
+ setState(handler);
137
+ return () => {
138
+ handler.dispose();
139
+ };
140
+ }, [rulesetId, activeView, hierarchyAutoUpdateEnabled, subjectModelIdsCache, visibilityHandler]);
141
+ return visibilityHandler && typeof visibilityHandler !== "function" ? visibilityHandler : state;
122
142
  }
123
- const isFilteredDataProvider = (dataProvider) => {
124
- const filteredProvider = dataProvider;
125
- return filteredProvider.nodeMatchesFilter !== undefined && filteredProvider.getActiveMatch !== undefined && filteredProvider.countFilteringResults !== undefined;
126
- };
127
- const getFilteredDataProvider = (dataProvider) => {
128
- return isFilteredDataProvider(dataProvider) ? dataProvider : undefined;
129
- };
143
+ const customizeTreeNodeItem = (0, Utils_1.combineTreeNodeItemCustomizations)([Utils_1.addCustomTreeNodeItemLabelRenderer, Utils_1.addTreeNodeItemCheckbox, Utils_2.addModelsTreeNodeItemIcons]);
130
144
  //# sourceMappingURL=ModelsTree.js.map