@itwin/tree-widget-react 2.3.2 → 3.0.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 (418) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/README.md +232 -147
  3. package/lib/cjs/TreeWidget.d.ts +2 -4
  4. package/lib/cjs/TreeWidget.js +0 -6
  5. package/lib/cjs/TreeWidget.js.map +1 -1
  6. package/lib/cjs/components/SelectableTree.d.ts +3 -9
  7. package/lib/cjs/components/SelectableTree.js +1 -1
  8. package/lib/cjs/components/SelectableTree.js.map +1 -1
  9. package/lib/cjs/components/TreeSelector.d.ts +2 -2
  10. package/lib/cjs/components/TreeSelector.js.map +1 -1
  11. package/lib/cjs/components/TreeWidgetUiItemsProvider.d.ts +14 -25
  12. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +43 -45
  13. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
  14. package/lib/cjs/components/tree-header/TreeHeader.js +17 -9
  15. package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -1
  16. package/lib/cjs/components/tree-header/TreeHeader.scss +7 -41
  17. package/lib/cjs/components/trees/Tree.scss +23 -0
  18. package/lib/cjs/components/trees/categories-tree/CategoriesTree.d.ts +22 -0
  19. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js +78 -0
  20. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js.map +1 -0
  21. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.d.ts +21 -0
  22. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js +37 -0
  23. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
  24. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.d.ts +55 -0
  25. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js +75 -0
  26. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
  27. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +23 -0
  28. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js +185 -0
  29. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
  30. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +36 -0
  31. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js +94 -0
  32. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
  33. package/lib/cjs/components/trees/categories-tree/UseCategories.d.ts +8 -0
  34. package/lib/cjs/components/trees/categories-tree/UseCategories.js +22 -0
  35. package/lib/cjs/components/trees/categories-tree/UseCategories.js.map +1 -0
  36. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.d.ts +46 -0
  37. package/lib/cjs/components/trees/{CategoriesVisibilityUtils.js → common/CategoriesVisibilityUtils.js} +56 -8
  38. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
  39. package/lib/cjs/components/trees/common/FocusedInstancesContext.d.ts +14 -0
  40. package/lib/cjs/components/trees/common/FocusedInstancesContext.js +16 -0
  41. package/lib/cjs/components/trees/common/FocusedInstancesContext.js.map +1 -0
  42. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.d.ts +8 -0
  43. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js +71 -0
  44. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js.map +1 -0
  45. package/lib/cjs/components/trees/common/Rxjs.d.ts +10 -0
  46. package/lib/cjs/components/trees/common/Rxjs.js +46 -0
  47. package/lib/cjs/components/trees/common/Rxjs.js.map +1 -0
  48. package/lib/cjs/components/trees/common/UseFeatureReporting.d.ts +11 -0
  49. package/lib/cjs/components/trees/common/UseFeatureReporting.js +10 -1
  50. package/lib/cjs/components/trees/common/UseFeatureReporting.js.map +1 -1
  51. package/lib/cjs/components/trees/common/UseFiltering.d.ts +12 -0
  52. package/lib/cjs/components/trees/common/UseFiltering.js +29 -0
  53. package/lib/cjs/components/trees/common/UseFiltering.js.map +1 -0
  54. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.d.ts +8 -0
  55. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js +33 -0
  56. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
  57. package/lib/cjs/components/trees/common/UseHierarchyFiltering.d.ts +19 -0
  58. package/lib/cjs/components/trees/common/UseHierarchyFiltering.js +157 -0
  59. package/lib/cjs/components/trees/common/UseHierarchyFiltering.js.map +1 -0
  60. package/lib/cjs/components/trees/common/UseHierarchyVisibility.d.ts +30 -0
  61. package/lib/cjs/components/trees/common/UseHierarchyVisibility.js +98 -0
  62. package/lib/cjs/components/trees/common/UseHierarchyVisibility.js.map +1 -0
  63. package/lib/cjs/components/trees/common/UseIModelChangeListener.d.ts +9 -0
  64. package/lib/cjs/components/trees/common/UseIModelChangeListener.js +20 -0
  65. package/lib/cjs/components/trees/common/UseIModelChangeListener.js.map +1 -0
  66. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.d.ts +13 -0
  67. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js +35 -0
  68. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
  69. package/lib/cjs/components/trees/common/UseNodeHighlighting.d.ts +16 -0
  70. package/lib/cjs/components/trees/common/UseNodeHighlighting.js +140 -0
  71. package/lib/cjs/components/trees/common/UseNodeHighlighting.js.map +1 -0
  72. package/lib/cjs/components/trees/common/Utils.d.ts +16 -6
  73. package/lib/cjs/components/trees/common/Utils.js +38 -34
  74. package/lib/cjs/components/trees/common/Utils.js.map +1 -1
  75. package/lib/cjs/components/trees/common/components/BaseTree.d.ts +34 -0
  76. package/lib/cjs/components/trees/common/components/BaseTree.js +77 -0
  77. package/lib/cjs/components/trees/common/components/BaseTree.js.map +1 -0
  78. package/lib/cjs/components/trees/common/components/Delayed.d.ts +6 -0
  79. package/lib/cjs/components/trees/common/components/Delayed.js +31 -0
  80. package/lib/cjs/components/trees/common/components/Delayed.js.map +1 -0
  81. package/lib/cjs/components/trees/common/components/ProgressOverlay.d.ts +5 -0
  82. package/lib/cjs/components/trees/common/components/ProgressOverlay.js +16 -0
  83. package/lib/cjs/components/trees/common/components/ProgressOverlay.js.map +1 -0
  84. package/lib/cjs/components/trees/common/components/ProgressOverlay.scss +21 -0
  85. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.d.ts +20 -0
  86. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js +28 -0
  87. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
  88. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.d.ts +13 -0
  89. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js +20 -0
  90. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
  91. package/lib/cjs/components/trees/common/components/TreeRenderer.d.ts +19 -0
  92. package/lib/cjs/components/trees/common/components/TreeRenderer.js +30 -0
  93. package/lib/cjs/components/trees/common/components/TreeRenderer.js.map +1 -0
  94. package/lib/cjs/components/trees/common/components/TreeRenderer.scss +62 -0
  95. package/lib/cjs/components/trees/common/components/VisibilityTree.d.ts +14 -0
  96. package/lib/cjs/components/trees/common/components/VisibilityTree.js +41 -0
  97. package/lib/cjs/components/trees/common/components/VisibilityTree.js.map +1 -0
  98. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +11 -35
  99. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js +29 -83
  100. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  101. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -14
  102. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +12 -12
  103. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  104. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +24 -0
  105. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +262 -0
  106. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
  107. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.d.ts +11 -35
  108. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js +41 -79
  109. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  110. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -14
  111. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js +12 -12
  112. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  113. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +28 -0
  114. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +619 -0
  115. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
  116. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +26 -0
  117. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +203 -0
  118. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
  119. package/lib/cjs/components/trees/index.d.ts +4 -16
  120. package/lib/cjs/components/trees/index.js +9 -30
  121. package/lib/cjs/components/trees/index.js.map +1 -1
  122. package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +17 -72
  123. package/lib/cjs/components/trees/models-tree/ModelsTree.js +196 -135
  124. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -1
  125. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.d.ts +33 -0
  126. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js +101 -0
  127. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
  128. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.d.ts +14 -35
  129. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +40 -83
  130. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  131. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.d.ts +67 -0
  132. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js +617 -0
  133. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
  134. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +24 -0
  135. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +121 -0
  136. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  137. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +44 -0
  138. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js +325 -0
  139. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
  140. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.d.ts +31 -0
  141. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js +40 -0
  142. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
  143. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +122 -0
  144. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +757 -0
  145. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
  146. package/lib/cjs/components/trees/models-tree/internal/Tooltip.d.ts +13 -0
  147. package/lib/cjs/components/trees/models-tree/internal/Tooltip.js +29 -0
  148. package/lib/cjs/components/trees/models-tree/internal/Tooltip.js.map +1 -0
  149. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +10 -0
  150. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js +43 -0
  151. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
  152. package/lib/cjs/tree-widget-react.d.ts +3 -4
  153. package/lib/cjs/tree-widget-react.js +8 -4
  154. package/lib/cjs/tree-widget-react.js.map +1 -1
  155. package/lib/esm/TreeWidget.d.ts +2 -4
  156. package/lib/esm/TreeWidget.js +0 -6
  157. package/lib/esm/TreeWidget.js.map +1 -1
  158. package/lib/esm/components/SelectableTree.d.ts +3 -9
  159. package/lib/esm/components/SelectableTree.js +1 -1
  160. package/lib/esm/components/SelectableTree.js.map +1 -1
  161. package/lib/esm/components/TreeSelector.d.ts +2 -2
  162. package/lib/esm/components/TreeSelector.js.map +1 -1
  163. package/lib/esm/components/TreeWidgetUiItemsProvider.d.ts +14 -25
  164. package/lib/esm/components/TreeWidgetUiItemsProvider.js +42 -44
  165. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
  166. package/lib/esm/components/tree-header/TreeHeader.js +17 -9
  167. package/lib/esm/components/tree-header/TreeHeader.js.map +1 -1
  168. package/lib/esm/components/tree-header/TreeHeader.scss +7 -41
  169. package/lib/esm/components/trees/Tree.scss +23 -0
  170. package/lib/esm/components/trees/categories-tree/CategoriesTree.d.ts +22 -0
  171. package/lib/esm/components/trees/categories-tree/CategoriesTree.js +74 -0
  172. package/lib/esm/components/trees/categories-tree/CategoriesTree.js.map +1 -0
  173. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.d.ts +21 -0
  174. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js +31 -0
  175. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
  176. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.d.ts +55 -0
  177. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js +68 -0
  178. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
  179. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +23 -0
  180. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js +181 -0
  181. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
  182. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +36 -0
  183. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js +90 -0
  184. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
  185. package/lib/esm/components/trees/categories-tree/UseCategories.d.ts +8 -0
  186. package/lib/esm/components/trees/categories-tree/UseCategories.js +18 -0
  187. package/lib/esm/components/trees/categories-tree/UseCategories.js.map +1 -0
  188. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.d.ts +46 -0
  189. package/lib/esm/components/trees/{CategoriesVisibilityUtils.js → common/CategoriesVisibilityUtils.js} +51 -6
  190. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
  191. package/lib/esm/components/trees/common/FocusedInstancesContext.d.ts +14 -0
  192. package/lib/esm/components/trees/common/FocusedInstancesContext.js +12 -0
  193. package/lib/esm/components/trees/common/FocusedInstancesContext.js.map +1 -0
  194. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.d.ts +8 -0
  195. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js +67 -0
  196. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js.map +1 -0
  197. package/lib/esm/components/trees/common/Rxjs.d.ts +10 -0
  198. package/lib/esm/components/trees/common/Rxjs.js +40 -0
  199. package/lib/esm/components/trees/common/Rxjs.js.map +1 -0
  200. package/lib/esm/components/trees/common/UseFeatureReporting.d.ts +11 -0
  201. package/lib/esm/components/trees/common/UseFeatureReporting.js +8 -0
  202. package/lib/esm/components/trees/common/UseFeatureReporting.js.map +1 -1
  203. package/lib/esm/components/trees/common/UseFiltering.d.ts +12 -0
  204. package/lib/esm/components/trees/common/UseFiltering.js +25 -0
  205. package/lib/esm/components/trees/common/UseFiltering.js.map +1 -0
  206. package/lib/esm/components/trees/common/UseHierarchiesLocalization.d.ts +8 -0
  207. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js +29 -0
  208. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
  209. package/lib/esm/components/trees/common/UseHierarchyFiltering.d.ts +19 -0
  210. package/lib/esm/components/trees/common/UseHierarchyFiltering.js +153 -0
  211. package/lib/esm/components/trees/common/UseHierarchyFiltering.js.map +1 -0
  212. package/lib/esm/components/trees/common/UseHierarchyVisibility.d.ts +30 -0
  213. package/lib/esm/components/trees/common/UseHierarchyVisibility.js +94 -0
  214. package/lib/esm/components/trees/common/UseHierarchyVisibility.js.map +1 -0
  215. package/lib/esm/components/trees/common/UseIModelChangeListener.d.ts +9 -0
  216. package/lib/esm/components/trees/common/UseIModelChangeListener.js +16 -0
  217. package/lib/esm/components/trees/common/UseIModelChangeListener.js.map +1 -0
  218. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.d.ts +13 -0
  219. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js +31 -0
  220. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
  221. package/lib/esm/components/trees/common/UseNodeHighlighting.d.ts +16 -0
  222. package/lib/esm/components/trees/common/UseNodeHighlighting.js +136 -0
  223. package/lib/esm/components/trees/common/UseNodeHighlighting.js.map +1 -0
  224. package/lib/esm/components/trees/common/Utils.d.ts +16 -6
  225. package/lib/esm/components/trees/common/Utils.js +33 -29
  226. package/lib/esm/components/trees/common/Utils.js.map +1 -1
  227. package/lib/esm/components/trees/common/components/BaseTree.d.ts +34 -0
  228. package/lib/esm/components/trees/common/components/BaseTree.js +73 -0
  229. package/lib/esm/components/trees/common/components/BaseTree.js.map +1 -0
  230. package/lib/esm/components/trees/common/components/Delayed.d.ts +6 -0
  231. package/lib/esm/components/trees/common/components/Delayed.js +27 -0
  232. package/lib/esm/components/trees/common/components/Delayed.js.map +1 -0
  233. package/lib/esm/components/trees/common/components/ProgressOverlay.d.ts +5 -0
  234. package/lib/esm/components/trees/common/components/ProgressOverlay.js +12 -0
  235. package/lib/esm/components/trees/common/components/ProgressOverlay.js.map +1 -0
  236. package/lib/esm/components/trees/common/components/ProgressOverlay.scss +21 -0
  237. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.d.ts +20 -0
  238. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js +21 -0
  239. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
  240. package/lib/esm/components/trees/common/components/TreeNodeRenderer.d.ts +13 -0
  241. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js +13 -0
  242. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
  243. package/lib/esm/components/trees/common/components/TreeRenderer.d.ts +19 -0
  244. package/lib/esm/components/trees/common/components/TreeRenderer.js +26 -0
  245. package/lib/esm/components/trees/common/components/TreeRenderer.js.map +1 -0
  246. package/lib/esm/components/trees/common/components/TreeRenderer.scss +62 -0
  247. package/lib/esm/components/trees/common/components/VisibilityTree.d.ts +14 -0
  248. package/lib/esm/components/trees/common/components/VisibilityTree.js +37 -0
  249. package/lib/esm/components/trees/common/components/VisibilityTree.js.map +1 -0
  250. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +11 -35
  251. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js +27 -58
  252. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  253. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -14
  254. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +12 -12
  255. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  256. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +24 -0
  257. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +258 -0
  258. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
  259. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.d.ts +11 -35
  260. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js +39 -54
  261. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  262. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -14
  263. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js +12 -12
  264. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  265. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +28 -0
  266. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +615 -0
  267. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
  268. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +26 -0
  269. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +199 -0
  270. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
  271. package/lib/esm/components/trees/index.d.ts +4 -16
  272. package/lib/esm/components/trees/index.js +4 -16
  273. package/lib/esm/components/trees/index.js.map +1 -1
  274. package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +17 -72
  275. package/lib/esm/components/trees/models-tree/ModelsTree.js +196 -132
  276. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -1
  277. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.d.ts +33 -0
  278. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js +92 -0
  279. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
  280. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.d.ts +14 -35
  281. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +38 -81
  282. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  283. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.d.ts +67 -0
  284. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js +613 -0
  285. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
  286. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +24 -0
  287. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +117 -0
  288. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  289. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +44 -0
  290. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js +321 -0
  291. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
  292. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.d.ts +31 -0
  293. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js +37 -0
  294. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
  295. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +122 -0
  296. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +748 -0
  297. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
  298. package/lib/esm/components/trees/models-tree/internal/Tooltip.d.ts +13 -0
  299. package/lib/esm/components/trees/models-tree/internal/Tooltip.js +24 -0
  300. package/lib/esm/components/trees/models-tree/internal/Tooltip.js.map +1 -0
  301. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +10 -0
  302. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js +39 -0
  303. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
  304. package/lib/esm/tree-widget-react.d.ts +3 -4
  305. package/lib/esm/tree-widget-react.js +3 -4
  306. package/lib/esm/tree-widget-react.js.map +1 -1
  307. package/lib/public/locales/en/TreeWidget.json +126 -42
  308. package/package.json +19 -6
  309. package/lib/cjs/components/TreeFilteringState.d.ts +0 -18
  310. package/lib/cjs/components/TreeFilteringState.js +0 -46
  311. package/lib/cjs/components/TreeFilteringState.js.map +0 -1
  312. package/lib/cjs/components/trees/CategoriesVisibilityUtils.d.ts +0 -25
  313. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js.map +0 -1
  314. package/lib/cjs/components/trees/VisibilityTreeBase.scss +0 -82
  315. package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +0 -67
  316. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +0 -158
  317. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +0 -1
  318. package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +0 -100
  319. package/lib/cjs/components/trees/VisibilityTreeRenderer.js +0 -98
  320. package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +0 -1
  321. package/lib/cjs/components/trees/category-tree/Categories.json +0 -99
  322. package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +0 -60
  323. package/lib/cjs/components/trees/category-tree/CategoriesTree.js +0 -141
  324. package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +0 -1
  325. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.d.ts +0 -71
  326. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js +0 -123
  327. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +0 -1
  328. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +0 -72
  329. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +0 -172
  330. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +0 -1
  331. package/lib/cjs/components/trees/common/ContextMenu.d.ts +0 -39
  332. package/lib/cjs/components/trees/common/ContextMenu.js +0 -44
  333. package/lib/cjs/components/trees/common/ContextMenu.js.map +0 -1
  334. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.d.ts +0 -27
  335. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.js +0 -51
  336. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.js.map +0 -1
  337. package/lib/cjs/components/trees/common/TreeNodeRenderer.d.ts +0 -61
  338. package/lib/cjs/components/trees/common/TreeNodeRenderer.js +0 -50
  339. package/lib/cjs/components/trees/common/TreeNodeRenderer.js.map +0 -1
  340. package/lib/cjs/components/trees/common/TreeRenderer.d.ts +0 -55
  341. package/lib/cjs/components/trees/common/TreeRenderer.js +0 -67
  342. package/lib/cjs/components/trees/common/TreeRenderer.js.map +0 -1
  343. package/lib/cjs/components/trees/common/TreeRenderer.scss +0 -149
  344. package/lib/cjs/components/trees/common/Types.d.ts +0 -57
  345. package/lib/cjs/components/trees/common/Types.js +0 -21
  346. package/lib/cjs/components/trees/common/Types.js.map +0 -1
  347. package/lib/cjs/components/trees/common/UseVisibilityTreeState.d.ts +0 -43
  348. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js +0 -49
  349. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js.map +0 -1
  350. package/lib/cjs/components/trees/external-sources-tree/ExternalSources.json +0 -228
  351. package/lib/cjs/components/trees/imodel-content-tree/IModelContent.json +0 -443
  352. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.d.ts +0 -19
  353. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js +0 -36
  354. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js.map +0 -1
  355. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.d.ts +0 -130
  356. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +0 -651
  357. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +0 -1
  358. package/lib/cjs/components/trees/models-tree/Utils.d.ts +0 -29
  359. package/lib/cjs/components/trees/models-tree/Utils.js +0 -556
  360. package/lib/cjs/components/trees/models-tree/Utils.js.map +0 -1
  361. package/lib/cjs/components/utils/UseTreeTransientState.d.ts +0 -19
  362. package/lib/cjs/components/utils/UseTreeTransientState.js +0 -33
  363. package/lib/cjs/components/utils/UseTreeTransientState.js.map +0 -1
  364. package/lib/esm/components/TreeFilteringState.d.ts +0 -18
  365. package/lib/esm/components/TreeFilteringState.js +0 -42
  366. package/lib/esm/components/TreeFilteringState.js.map +0 -1
  367. package/lib/esm/components/trees/CategoriesVisibilityUtils.d.ts +0 -25
  368. package/lib/esm/components/trees/CategoriesVisibilityUtils.js.map +0 -1
  369. package/lib/esm/components/trees/VisibilityTreeBase.scss +0 -82
  370. package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +0 -67
  371. package/lib/esm/components/trees/VisibilityTreeEventHandler.js +0 -154
  372. package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +0 -1
  373. package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +0 -100
  374. package/lib/esm/components/trees/VisibilityTreeRenderer.js +0 -86
  375. package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +0 -1
  376. package/lib/esm/components/trees/category-tree/Categories.json +0 -99
  377. package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +0 -60
  378. package/lib/esm/components/trees/category-tree/CategoriesTree.js +0 -111
  379. package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +0 -1
  380. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.d.ts +0 -71
  381. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js +0 -116
  382. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +0 -1
  383. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +0 -72
  384. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +0 -164
  385. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +0 -1
  386. package/lib/esm/components/trees/common/ContextMenu.d.ts +0 -39
  387. package/lib/esm/components/trees/common/ContextMenu.js +0 -39
  388. package/lib/esm/components/trees/common/ContextMenu.js.map +0 -1
  389. package/lib/esm/components/trees/common/ReportingTreeEventHandler.d.ts +0 -27
  390. package/lib/esm/components/trees/common/ReportingTreeEventHandler.js +0 -47
  391. package/lib/esm/components/trees/common/ReportingTreeEventHandler.js.map +0 -1
  392. package/lib/esm/components/trees/common/TreeNodeRenderer.d.ts +0 -61
  393. package/lib/esm/components/trees/common/TreeNodeRenderer.js +0 -44
  394. package/lib/esm/components/trees/common/TreeNodeRenderer.js.map +0 -1
  395. package/lib/esm/components/trees/common/TreeRenderer.d.ts +0 -55
  396. package/lib/esm/components/trees/common/TreeRenderer.js +0 -59
  397. package/lib/esm/components/trees/common/TreeRenderer.js.map +0 -1
  398. package/lib/esm/components/trees/common/TreeRenderer.scss +0 -149
  399. package/lib/esm/components/trees/common/Types.d.ts +0 -57
  400. package/lib/esm/components/trees/common/Types.js +0 -18
  401. package/lib/esm/components/trees/common/Types.js.map +0 -1
  402. package/lib/esm/components/trees/common/UseVisibilityTreeState.d.ts +0 -43
  403. package/lib/esm/components/trees/common/UseVisibilityTreeState.js +0 -45
  404. package/lib/esm/components/trees/common/UseVisibilityTreeState.js.map +0 -1
  405. package/lib/esm/components/trees/external-sources-tree/ExternalSources.json +0 -228
  406. package/lib/esm/components/trees/imodel-content-tree/IModelContent.json +0 -443
  407. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.d.ts +0 -19
  408. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js +0 -32
  409. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js.map +0 -1
  410. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.d.ts +0 -130
  411. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +0 -641
  412. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +0 -1
  413. package/lib/esm/components/trees/models-tree/Utils.d.ts +0 -29
  414. package/lib/esm/components/trees/models-tree/Utils.js +0 -548
  415. package/lib/esm/components/trees/models-tree/Utils.js.map +0 -1
  416. package/lib/esm/components/utils/UseTreeTransientState.d.ts +0 -19
  417. package/lib/esm/components/utils/UseTreeTransientState.js +0 -29
  418. package/lib/esm/components/utils/UseTreeTransientState.js.map +0 -1
@@ -1,164 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- import { useMemo } from "react";
6
- import { useAsyncValue } from "@itwin/components-react";
7
- import { BeEvent } from "@itwin/core-bentley";
8
- import { IModelApp } from "@itwin/core-frontend";
9
- import { NodeKey } from "@itwin/presentation-common";
10
- import { isPresentationTreeNodeItem } from "@itwin/presentation-components";
11
- import { enableCategory, enableSubCategory, loadCategoriesFromViewport } from "../CategoriesVisibilityUtils";
12
- const EMPTY_CATEGORIES_ARRAY = [];
13
- /**
14
- * Loads categories from viewport or uses provided list of categories.
15
- * @internal
16
- */
17
- export function useCategories(viewManager, imodel, view) {
18
- const currentView = view || viewManager.getFirstOpenView();
19
- const categoriesPromise = useMemo(async () => loadCategoriesFromViewport(imodel, currentView), [imodel, currentView]);
20
- return useAsyncValue(categoriesPromise) ?? EMPTY_CATEGORIES_ARRAY;
21
- }
22
- /**
23
- * An [[IVisibilityHandler]] implementation that knows how to determine and change visibility of categories
24
- * and subcategories.
25
- * @public
26
- */
27
- export class CategoryVisibilityHandler {
28
- constructor(params) {
29
- this.onVisibilityChange = new BeEvent();
30
- // eslint-disable-next-line @typescript-eslint/naming-convention
31
- this.onDisplayStyleChanged = () => {
32
- this.onVisibilityChangeInternal();
33
- };
34
- // eslint-disable-next-line @typescript-eslint/naming-convention
35
- this.onViewedCategoriesChanged = () => {
36
- this.onVisibilityChangeInternal();
37
- };
38
- this._viewManager = params.viewManager;
39
- this._imodel = params.imodel;
40
- this._activeView = params.activeView;
41
- // istanbul ignore next
42
- this._useAllViewports = params.allViewports ?? false;
43
- this._categories = params.categories;
44
- this._activeView.onDisplayStyleChanged.addListener(this.onDisplayStyleChanged);
45
- this._activeView.onViewedCategoriesChanged.addListener(this.onViewedCategoriesChanged);
46
- }
47
- dispose() {
48
- this._activeView.onDisplayStyleChanged.removeListener(this.onDisplayStyleChanged);
49
- this._activeView.onViewedCategoriesChanged.removeListener(this.onViewedCategoriesChanged);
50
- clearTimeout(this._pendingVisibilityChange);
51
- }
52
- getVisibilityStatus(node) {
53
- const nodeKey = isPresentationTreeNodeItem(node) ? node.key : undefined;
54
- if (!nodeKey) {
55
- return { state: "hidden", isDisabled: true };
56
- }
57
- const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);
58
- return { state: node.parentId ? this.getSubCategoryVisibility(instanceId) : this.getCategoryVisibility(instanceId) };
59
- }
60
- async changeVisibility(node, shouldDisplay) {
61
- const nodeKey = isPresentationTreeNodeItem(node) ? node.key : undefined;
62
- if (!nodeKey) {
63
- return;
64
- }
65
- // handle subcategory visibility change
66
- if (node.parentId) {
67
- const childId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);
68
- // istanbul ignore next
69
- const parentId = this.getParent(childId)?.categoryId;
70
- // make sure parent category is enabled
71
- if (shouldDisplay && parentId) {
72
- await this.enableCategory([parentId], true, false);
73
- }
74
- this.enableSubCategory(childId, shouldDisplay);
75
- return;
76
- }
77
- const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);
78
- await this.enableCategory([instanceId], shouldDisplay, true);
79
- }
80
- getSubCategoryVisibility(id) {
81
- const parentItem = this.getParent(id);
82
- if (!parentItem) {
83
- return "hidden";
84
- }
85
- const isVisible = this._activeView.view.viewsCategory(parentItem.categoryId) && this._activeView.isSubCategoryVisible(id);
86
- return isVisible ? "visible" : "hidden";
87
- }
88
- getCategoryVisibility(id) {
89
- return this._activeView.view.viewsCategory(id) ? "visible" : "hidden";
90
- }
91
- getParent(key) {
92
- for (const category of this._categories) {
93
- // istanbul ignore else
94
- if (category.subCategoryIds && category.subCategoryIds.indexOf(key) !== -1) {
95
- return category;
96
- }
97
- }
98
- return undefined;
99
- }
100
- onVisibilityChangeInternal() {
101
- if (this._pendingVisibilityChange) {
102
- return;
103
- }
104
- this._pendingVisibilityChange = setTimeout(() => {
105
- this.onVisibilityChange.raiseEvent();
106
- this._pendingVisibilityChange = undefined;
107
- }, 0);
108
- }
109
- static getInstanceIdFromTreeNodeKey(nodeKey) {
110
- return NodeKey.isInstancesNodeKey(nodeKey) && nodeKey.instanceKeys.length > 0 ? nodeKey.instanceKeys[0].id : /* istanbul ignore next */ "";
111
- }
112
- async enableCategory(ids, enabled, enableAllSubCategories = true) {
113
- await enableCategory(this._viewManager, this._imodel, ids, enabled, this._useAllViewports, enableAllSubCategories);
114
- }
115
- enableSubCategory(key, enabled) {
116
- enableSubCategory(this._viewManager, key, enabled, this._useAllViewports);
117
- }
118
- }
119
- /**
120
- * Enable display of all given categories.
121
- * @public
122
- */
123
- export async function showAllCategories(categories, viewport) {
124
- await enableCategory(IModelApp.viewManager, viewport.iModel, categories, true, true);
125
- }
126
- /**
127
- * Disable display of all given categories.
128
- * @public
129
- */
130
- export async function hideAllCategories(categories, viewport) {
131
- await enableCategory(IModelApp.viewManager, viewport.iModel, categories, false, true);
132
- }
133
- /**
134
- * Invert display of all given categories.
135
- * @public
136
- */
137
- export async function invertAllCategories(categories, viewport) {
138
- const enabled = [];
139
- const disabled = [];
140
- const enabledSubCategories = [];
141
- const disabledSubCategories = [];
142
- for (const category of categories) {
143
- if (!viewport.view.viewsCategory(category.categoryId)) {
144
- disabled.push(category.categoryId);
145
- continue;
146
- }
147
- // First, we need to check if at least one subcategory is disabled. If it is true, then only subcategories should change display, not categories.
148
- if (category.subCategoryIds?.some((subCategory) => !viewport.isSubCategoryVisible(subCategory))) {
149
- for (const subCategory of category.subCategoryIds) {
150
- viewport.isSubCategoryVisible(subCategory) ? enabledSubCategories.push(subCategory) : disabledSubCategories.push(subCategory);
151
- }
152
- }
153
- else {
154
- enabled.push(category.categoryId);
155
- }
156
- }
157
- // Disable enabled
158
- enabledSubCategories.forEach((subCategory) => enableSubCategory(IModelApp.viewManager, subCategory, false, true));
159
- await enableCategory(IModelApp.viewManager, viewport.iModel, enabled, false, true);
160
- // Enable disabled
161
- disabledSubCategories.forEach((subCategory) => enableSubCategory(IModelApp.viewManager, subCategory, true, true));
162
- await enableCategory(IModelApp.viewManager, viewport.iModel, disabled, true, true);
163
- }
164
- //# sourceMappingURL=CategoryVisibilityHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CategoryVisibilityHandler.js","sourceRoot":"","sources":["../../../../../src/components/trees/category-tree/CategoryVisibilityHandler.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { useMemo } from \"react\";\nimport { useAsyncValue } from \"@itwin/components-react\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { NodeKey } from \"@itwin/presentation-common\";\nimport { isPresentationTreeNodeItem } from \"@itwin/presentation-components\";\nimport { enableCategory, enableSubCategory, loadCategoriesFromViewport } from \"../CategoriesVisibilityUtils\";\n\nimport type { TreeNodeItem } from \"@itwin/components-react\";\nimport type { IModelConnection, ViewManager, Viewport } from \"@itwin/core-frontend\";\nimport type { IVisibilityHandler, VisibilityChangeListener, VisibilityStatus } from \"../VisibilityTreeEventHandler\";\n\nconst EMPTY_CATEGORIES_ARRAY: CategoryInfo[] = [];\n\n/**\n * Loads categories from viewport or uses provided list of categories.\n * @internal\n */\nexport function useCategories(viewManager: ViewManager, imodel: IModelConnection, view?: Viewport) {\n const currentView = view || viewManager.getFirstOpenView();\n const categoriesPromise = useMemo(async () => loadCategoriesFromViewport(imodel, currentView), [imodel, currentView]);\n return useAsyncValue(categoriesPromise) ?? EMPTY_CATEGORIES_ARRAY;\n}\n\n/**\n * Data structure that describes category.\n * @public\n */\nexport interface CategoryInfo {\n categoryId: string;\n subCategoryIds?: string[];\n}\n\n/**\n * Params for creating a [[CategoryVisibilityHandler]].\n * @public\n */\nexport interface CategoryVisibilityHandlerParams {\n viewManager: ViewManager;\n imodel: IModelConnection;\n categories: CategoryInfo[];\n activeView: Viewport;\n allViewports?: boolean;\n}\n\n/**\n * An [[IVisibilityHandler]] implementation that knows how to determine and change visibility of categories\n * and subcategories.\n * @public\n */\nexport class CategoryVisibilityHandler implements IVisibilityHandler {\n private _viewManager: ViewManager;\n private _imodel: IModelConnection;\n private _pendingVisibilityChange: any | undefined;\n private _activeView: Viewport;\n private _useAllViewports: boolean;\n private _categories: CategoryInfo[];\n\n constructor(params: CategoryVisibilityHandlerParams) {\n this._viewManager = params.viewManager;\n this._imodel = params.imodel;\n this._activeView = params.activeView;\n // istanbul ignore next\n this._useAllViewports = params.allViewports ?? false;\n this._categories = params.categories;\n this._activeView.onDisplayStyleChanged.addListener(this.onDisplayStyleChanged);\n this._activeView.onViewedCategoriesChanged.addListener(this.onViewedCategoriesChanged);\n }\n\n public dispose() {\n this._activeView.onDisplayStyleChanged.removeListener(this.onDisplayStyleChanged);\n this._activeView.onViewedCategoriesChanged.removeListener(this.onViewedCategoriesChanged);\n clearTimeout(this._pendingVisibilityChange);\n }\n\n public onVisibilityChange = new BeEvent<VisibilityChangeListener>();\n\n public getVisibilityStatus(node: TreeNodeItem): VisibilityStatus {\n const nodeKey = isPresentationTreeNodeItem(node) ? node.key : undefined;\n if (!nodeKey) {\n return { state: \"hidden\", isDisabled: true };\n }\n\n const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\n return { state: node.parentId ? this.getSubCategoryVisibility(instanceId) : this.getCategoryVisibility(instanceId) };\n }\n\n public async changeVisibility(node: TreeNodeItem, shouldDisplay: boolean): Promise<void> {\n const nodeKey = isPresentationTreeNodeItem(node) ? node.key : undefined;\n if (!nodeKey) {\n return;\n }\n\n // handle subcategory visibility change\n if (node.parentId) {\n const childId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\n // istanbul ignore next\n const parentId = this.getParent(childId)?.categoryId;\n\n // make sure parent category is enabled\n if (shouldDisplay && parentId) {\n await this.enableCategory([parentId], true, false);\n }\n\n this.enableSubCategory(childId, shouldDisplay);\n return;\n }\n\n const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\n await this.enableCategory([instanceId], shouldDisplay, true);\n }\n\n public getSubCategoryVisibility(id: string) {\n const parentItem = this.getParent(id);\n if (!parentItem) {\n return \"hidden\";\n }\n\n const isVisible = this._activeView.view.viewsCategory(parentItem.categoryId) && this._activeView.isSubCategoryVisible(id);\n return isVisible ? \"visible\" : \"hidden\";\n }\n\n public getCategoryVisibility(id: string) {\n return this._activeView.view.viewsCategory(id) ? \"visible\" : \"hidden\";\n }\n\n public getParent(key: string): CategoryInfo | undefined {\n for (const category of this._categories) {\n // istanbul ignore else\n if (category.subCategoryIds && category.subCategoryIds.indexOf(key) !== -1) {\n return category;\n }\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private onDisplayStyleChanged = () => {\n this.onVisibilityChangeInternal();\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private onViewedCategoriesChanged = () => {\n this.onVisibilityChangeInternal();\n };\n\n private onVisibilityChangeInternal() {\n if (this._pendingVisibilityChange) {\n return;\n }\n\n this._pendingVisibilityChange = setTimeout(() => {\n this.onVisibilityChange.raiseEvent();\n this._pendingVisibilityChange = undefined;\n }, 0);\n }\n\n public static getInstanceIdFromTreeNodeKey(nodeKey: NodeKey) {\n return NodeKey.isInstancesNodeKey(nodeKey) && nodeKey.instanceKeys.length > 0 ? nodeKey.instanceKeys[0].id : /* istanbul ignore next */ \"\";\n }\n\n public async enableCategory(ids: string[], enabled: boolean, enableAllSubCategories = true) {\n await enableCategory(this._viewManager, this._imodel, ids, enabled, this._useAllViewports, enableAllSubCategories);\n }\n\n public enableSubCategory(key: string, enabled: boolean) {\n enableSubCategory(this._viewManager, key, enabled, this._useAllViewports);\n }\n}\n\n/**\n * Enable display of all given categories.\n * @public\n */\nexport async function showAllCategories(categories: string[], viewport: Viewport) {\n await enableCategory(IModelApp.viewManager, viewport.iModel, categories, true, true);\n}\n\n/**\n * Disable display of all given categories.\n * @public\n */\nexport async function hideAllCategories(categories: string[], viewport: Viewport) {\n await enableCategory(IModelApp.viewManager, viewport.iModel, categories, false, true);\n}\n\n/**\n * Invert display of all given categories.\n * @public\n */\nexport async function invertAllCategories(categories: CategoryInfo[], viewport: Viewport) {\n const enabled: string[] = [];\n const disabled: string[] = [];\n const enabledSubCategories: string[] = [];\n const disabledSubCategories: string[] = [];\n\n for (const category of categories) {\n if (!viewport.view.viewsCategory(category.categoryId)) {\n disabled.push(category.categoryId);\n continue;\n }\n // First, we need to check if at least one subcategory is disabled. If it is true, then only subcategories should change display, not categories.\n if (category.subCategoryIds?.some((subCategory) => !viewport.isSubCategoryVisible(subCategory))) {\n for (const subCategory of category.subCategoryIds) {\n viewport.isSubCategoryVisible(subCategory) ? enabledSubCategories.push(subCategory) : disabledSubCategories.push(subCategory);\n }\n } else {\n enabled.push(category.categoryId);\n }\n }\n\n // Disable enabled\n enabledSubCategories.forEach((subCategory) => enableSubCategory(IModelApp.viewManager, subCategory, false, true));\n\n await enableCategory(IModelApp.viewManager, viewport.iModel, enabled, false, true);\n\n // Enable disabled\n disabledSubCategories.forEach((subCategory) => enableSubCategory(IModelApp.viewManager, subCategory, true, true));\n\n await enableCategory(IModelApp.viewManager, viewport.iModel, disabled, true, true);\n}\n"]}
@@ -1,39 +0,0 @@
1
- import type { MouseEvent, PropsWithChildren, ReactNode } from "react";
2
- import type { TreeModelNode } from "@itwin/components-react";
3
- /**
4
- * Props for single context menu item.
5
- * @public
6
- */
7
- export interface ContextMenuItemProps {
8
- node: TreeModelNode;
9
- }
10
- /**
11
- * Props for configuring tree context menu.
12
- * @public
13
- */
14
- export interface TreeContextMenuProps {
15
- contextMenuItems?: Array<(props: ContextMenuItemProps) => ReactNode>;
16
- }
17
- /**
18
- * Props for [[TreeContextMenuItem]] component.
19
- * @public
20
- */
21
- export interface TreeContextMenuItemProps {
22
- /** Unique id of the context menu item. */
23
- id: string;
24
- /** Description of the context menu item. */
25
- title?: string;
26
- /** Callback that is invoked when context menu item is clicked. */
27
- onSelect: () => void;
28
- }
29
- /**
30
- * Base component for rendering single context menu item.
31
- * @public
32
- */
33
- export declare function TreeContextMenuItem({ id, children, title, onSelect }: PropsWithChildren<TreeContextMenuItemProps>): JSX.Element;
34
- /** @internal */
35
- export declare function useContextMenu({ contextMenuItems }: TreeContextMenuProps): {
36
- onContextMenu: (e: MouseEvent, node: TreeModelNode) => void;
37
- renderContextMenu: () => JSX.Element | null;
38
- };
39
- //# sourceMappingURL=ContextMenu.d.ts.map
@@ -1,39 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- import { Fragment, useState } from "react";
7
- import { ContextMenuItem, GlobalContextMenu } from "@itwin/core-react";
8
- /**
9
- * Base component for rendering single context menu item.
10
- * @public
11
- */
12
- export function TreeContextMenuItem({ id, children, title, onSelect }) {
13
- return (_jsx(ContextMenuItem, { onSelect: onSelect, title: title, children: children }, id));
14
- }
15
- /** @internal */
16
- export function useContextMenu({ contextMenuItems }) {
17
- const [contextMenu, setContextMenu] = useState();
18
- const close = () => setContextMenu(undefined);
19
- const onContextMenu = (e, node) => {
20
- if (!contextMenuItems) {
21
- return;
22
- }
23
- setContextMenu({
24
- items: contextMenuItems.map((item, index) => _jsx(Fragment, { children: item({ node }) }, index)),
25
- position: { x: e.clientX, y: e.clientY },
26
- });
27
- };
28
- const renderContextMenu = () => {
29
- if (!contextMenu) {
30
- return null;
31
- }
32
- return (_jsx(GlobalContextMenu, { identifier: "tree-widget-context-menu", x: contextMenu.position.x, y: contextMenu.position.y, opened: true, onOutsideClick: close, onEsc: close, onSelect: close, children: contextMenu.items }));
33
- };
34
- return {
35
- onContextMenu,
36
- renderContextMenu,
37
- };
38
- }
39
- //# sourceMappingURL=ContextMenu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContextMenu.js","sourceRoot":"","sources":["../../../../../src/components/trees/common/ContextMenu.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAkCvE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAA+C;IAChH,OAAO,CACL,KAAC,eAAe,IAAU,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,YACvD,QAAQ,IADW,EAAE,CAEN,CACnB,CAAC;AACJ,CAAC;AAOD,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAC,EAAE,gBAAgB,EAAwB;IACvE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAe,CAAC;IAC9D,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,CAAC,CAAa,EAAE,IAAmB,EAAE,EAAE;QAC3D,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO;SACR;QAED,cAAc,CAAC;YACb,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAC,QAAQ,cAAc,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAtB,KAAK,CAA6B,CAAC;YAC/F,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;SACzC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,CACL,KAAC,iBAAiB,IAChB,UAAU,EAAC,0BAA0B,EACrC,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EACzB,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,EACzB,MAAM,EAAE,IAAI,EACZ,cAAc,EAAE,KAAK,EACrB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,KAAK,YAEd,WAAW,CAAC,KAAK,GACA,CACrB,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,aAAa;QACb,iBAAiB;KAClB,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Fragment, useState } from \"react\";\nimport { ContextMenuItem, GlobalContextMenu } from \"@itwin/core-react\";\n\nimport type { MouseEvent, PropsWithChildren, ReactNode } from \"react\";\nimport type { TreeModelNode } from \"@itwin/components-react\";\n\n/**\n * Props for single context menu item.\n * @public\n */\nexport interface ContextMenuItemProps {\n node: TreeModelNode;\n}\n\n/**\n * Props for configuring tree context menu.\n * @public\n */\nexport interface TreeContextMenuProps {\n contextMenuItems?: Array<(props: ContextMenuItemProps) => ReactNode>;\n}\n\n/**\n * Props for [[TreeContextMenuItem]] component.\n * @public\n */\nexport interface TreeContextMenuItemProps {\n /** Unique id of the context menu item. */\n id: string;\n /** Description of the context menu item. */\n title?: string;\n /** Callback that is invoked when context menu item is clicked. */\n onSelect: () => void;\n}\n\n/**\n * Base component for rendering single context menu item.\n * @public\n */\nexport function TreeContextMenuItem({ id, children, title, onSelect }: PropsWithChildren<TreeContextMenuItemProps>) {\n return (\n <ContextMenuItem key={id} onSelect={onSelect} title={title}>\n {children}\n </ContextMenuItem>\n );\n}\n\ninterface ContextMenu {\n items: ReactNode[];\n position: { x: number; y: number };\n}\n\n/** @internal */\nexport function useContextMenu({ contextMenuItems }: TreeContextMenuProps) {\n const [contextMenu, setContextMenu] = useState<ContextMenu>();\n const close = () => setContextMenu(undefined);\n\n const onContextMenu = (e: MouseEvent, node: TreeModelNode) => {\n if (!contextMenuItems) {\n return;\n }\n\n setContextMenu({\n items: contextMenuItems.map((item, index) => <Fragment key={index}>{item({ node })}</Fragment>),\n position: { x: e.clientX, y: e.clientY },\n });\n };\n\n const renderContextMenu = () => {\n if (!contextMenu) {\n return null;\n }\n\n return (\n <GlobalContextMenu\n identifier=\"tree-widget-context-menu\"\n x={contextMenu.position.x}\n y={contextMenu.position.y}\n opened={true}\n onOutsideClick={close}\n onEsc={close}\n onSelect={close}\n >\n {contextMenu.items}\n </GlobalContextMenu>\n );\n };\n\n return {\n onContextMenu,\n renderContextMenu,\n };\n}\n"]}
@@ -1,27 +0,0 @@
1
- import { TreeEventHandler } from "@itwin/components-react";
2
- import type { AbstractTreeNodeLoaderWithProvider, TreeCheckboxStateChangeEventArgs, TreeNodeEventArgs, TreeSelectionModificationEventArgs, TreeSelectionReplacementEventArgs } from "@itwin/components-react";
3
- import type { IPresentationTreeDataProvider } from "@itwin/presentation-components";
4
- export interface ReportingTreeEventHandlerProps {
5
- nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;
6
- eventHandler: TreeEventHandler;
7
- reportUsage: (props: {
8
- reportInteraction: boolean;
9
- }) => void;
10
- }
11
- export declare class ReportingTreeEventHandler extends TreeEventHandler {
12
- protected _eventHandler: TreeEventHandler;
13
- protected _reportUsage: (props: {
14
- reportInteraction: boolean;
15
- }) => void;
16
- constructor(props: ReportingTreeEventHandlerProps);
17
- dispose(): void;
18
- onNodeExpanded(props: TreeNodeEventArgs): void;
19
- onNodeCollapsed(props: TreeNodeEventArgs): void;
20
- onSelectionModified(props: TreeSelectionModificationEventArgs): import("@itwin/components-react").Subscription | undefined;
21
- onSelectionReplaced(props: TreeSelectionReplacementEventArgs): import("@itwin/components-react").Subscription | undefined;
22
- onCheckboxStateChanged(props: TreeCheckboxStateChangeEventArgs): import("@itwin/components-react").Subscription | undefined;
23
- onDelayedNodeClick(props: TreeNodeEventArgs): void;
24
- onNodeDoubleClick(props: TreeNodeEventArgs): void;
25
- onNodeEditorActivated(props: TreeNodeEventArgs): void;
26
- }
27
- //# sourceMappingURL=ReportingTreeEventHandler.d.ts.map
@@ -1,47 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- import { TreeEventHandler } from "@itwin/components-react";
6
- export class ReportingTreeEventHandler extends TreeEventHandler {
7
- constructor(props) {
8
- super({ modelSource: props.nodeLoader.modelSource, nodeLoader: props.nodeLoader });
9
- this._eventHandler = props.eventHandler;
10
- this._reportUsage = props.reportUsage;
11
- }
12
- dispose() {
13
- this._eventHandler.dispose();
14
- super.dispose();
15
- }
16
- onNodeExpanded(props) {
17
- this._reportUsage({ reportInteraction: true });
18
- this._eventHandler.onNodeExpanded(props);
19
- }
20
- onNodeCollapsed(props) {
21
- this._reportUsage({ reportInteraction: true });
22
- this._eventHandler.onNodeCollapsed(props);
23
- }
24
- onSelectionModified(props) {
25
- this._reportUsage({ reportInteraction: true });
26
- return this._eventHandler.onSelectionModified(props);
27
- }
28
- onSelectionReplaced(props) {
29
- this._reportUsage({ reportInteraction: true });
30
- return this._eventHandler.onSelectionReplaced(props);
31
- }
32
- onCheckboxStateChanged(props) {
33
- return this._eventHandler.onCheckboxStateChanged(props);
34
- }
35
- onDelayedNodeClick(props) {
36
- this._eventHandler.onDelayedNodeClick(props);
37
- }
38
- onNodeDoubleClick(props) {
39
- this._reportUsage({ reportInteraction: true });
40
- this._eventHandler.onNodeDoubleClick(props);
41
- }
42
- onNodeEditorActivated(props) {
43
- this._reportUsage({ reportInteraction: true });
44
- this._eventHandler.onNodeEditorActivated(props);
45
- }
46
- }
47
- //# sourceMappingURL=ReportingTreeEventHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportingTreeEventHandler.js","sourceRoot":"","sources":["../../../../../src/components/trees/common/ReportingTreeEventHandler.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAgB3D,MAAM,OAAO,yBAA0B,SAAQ,gBAAgB;IAI7D,YAAY,KAAqC;QAC/C,KAAK,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;IACxC,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAEe,cAAc,CAAC,KAAwB;QACrD,IAAI,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAEe,eAAe,CAAC,KAAwB;QACtD,IAAI,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAEe,mBAAmB,CAAC,KAAyC;QAC3E,IAAI,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAEe,mBAAmB,CAAC,KAAwC;QAC1E,IAAI,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAEe,sBAAsB,CAAC,KAAuC;QAC5E,OAAO,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAEe,kBAAkB,CAAC,KAAwB;QACzD,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAEe,iBAAiB,CAAC,KAAwB;QACxD,IAAI,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEe,qBAAqB,CAAC,KAAwB;QAC5D,IAAI,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;CACF","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 { TreeEventHandler } from \"@itwin/components-react\";\n\nimport type {\n AbstractTreeNodeLoaderWithProvider,\n TreeCheckboxStateChangeEventArgs,\n TreeNodeEventArgs,\n TreeSelectionModificationEventArgs,\n TreeSelectionReplacementEventArgs,\n} from \"@itwin/components-react\";\nimport type { IPresentationTreeDataProvider } from \"@itwin/presentation-components\";\nexport interface ReportingTreeEventHandlerProps {\n nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;\n eventHandler: TreeEventHandler;\n reportUsage: (props: { reportInteraction: boolean }) => void;\n}\n\nexport class ReportingTreeEventHandler extends TreeEventHandler {\n protected _eventHandler: TreeEventHandler;\n protected _reportUsage: (props: { reportInteraction: boolean }) => void;\n\n constructor(props: ReportingTreeEventHandlerProps) {\n super({ modelSource: props.nodeLoader.modelSource, nodeLoader: props.nodeLoader });\n this._eventHandler = props.eventHandler;\n this._reportUsage = props.reportUsage;\n }\n\n public dispose() {\n this._eventHandler.dispose();\n super.dispose();\n }\n\n public override onNodeExpanded(props: TreeNodeEventArgs) {\n this._reportUsage({ reportInteraction: true });\n this._eventHandler.onNodeExpanded(props);\n }\n\n public override onNodeCollapsed(props: TreeNodeEventArgs) {\n this._reportUsage({ reportInteraction: true });\n this._eventHandler.onNodeCollapsed(props);\n }\n\n public override onSelectionModified(props: TreeSelectionModificationEventArgs) {\n this._reportUsage({ reportInteraction: true });\n return this._eventHandler.onSelectionModified(props);\n }\n\n public override onSelectionReplaced(props: TreeSelectionReplacementEventArgs) {\n this._reportUsage({ reportInteraction: true });\n return this._eventHandler.onSelectionReplaced(props);\n }\n\n public override onCheckboxStateChanged(props: TreeCheckboxStateChangeEventArgs) {\n return this._eventHandler.onCheckboxStateChanged(props);\n }\n\n public override onDelayedNodeClick(props: TreeNodeEventArgs) {\n this._eventHandler.onDelayedNodeClick(props);\n }\n\n public override onNodeDoubleClick(props: TreeNodeEventArgs) {\n this._reportUsage({ reportInteraction: true });\n this._eventHandler.onNodeDoubleClick(props);\n }\n\n public override onNodeEditorActivated(props: TreeNodeEventArgs) {\n this._reportUsage({ reportInteraction: true });\n this._eventHandler.onNodeEditorActivated(props);\n }\n}\n"]}
@@ -1,61 +0,0 @@
1
- import type { ReactNode } from "react";
2
- import type { PropertyRecord } from "@itwin/appui-abstract";
3
- import type { IPropertyValueRenderer, PropertyValueRendererContext, TreeModelNode } from "@itwin/components-react";
4
- /**
5
- * Context for rendering label value.
6
- * @public
7
- */
8
- export interface LabelRendererContext {
9
- /** Style that should be applied to the rendered element. */
10
- style?: React.CSSProperties;
11
- /** Callback to highlight text. */
12
- textHighlighter?: (text: string) => React.ReactNode;
13
- }
14
- /**
15
- * Props for custom node renderer.
16
- * @public
17
- */
18
- export interface TreeNodeLabelRendererProps {
19
- /** Tree node to rendered label for. */
20
- node: TreeModelNode;
21
- /** Context for rendering node's label value. */
22
- context?: LabelRendererContext;
23
- }
24
- /**
25
- * Props for customizing node rendering.
26
- * @public
27
- */
28
- export interface TreeNodeRendererProps {
29
- /** Custom renderer for node's label. */
30
- nodeLabelRenderer?: (props: TreeNodeLabelRendererProps) => ReactNode;
31
- }
32
- /**
33
- * Props for [[DefaultLabelRenderer]] component.
34
- * @public
35
- */
36
- export interface DefaultLabelRendererProps {
37
- /** Label that should be rendered. */
38
- label: PropertyRecord;
39
- /** Context for rendering label value. */
40
- context?: LabelRendererContext;
41
- }
42
- /**
43
- * Renders label for tree node.
44
- * @public
45
- */
46
- export declare function DefaultLabelRenderer({ label, context }: DefaultLabelRendererProps): React.JSX.Element;
47
- /** @internal */
48
- export interface TreeNodeRendererContextProviderProps extends TreeNodeRendererProps {
49
- node: TreeModelNode;
50
- children: ReactNode;
51
- }
52
- /** @internal */
53
- export declare function TreeNodeRendererContextProvider({ nodeLabelRenderer, node, children }: TreeNodeRendererContextProviderProps): JSX.Element;
54
- /** @internal */
55
- export declare const TREE_NODE_LABEL_RENDERER = "visibility-tree-node-label";
56
- /** @internal */
57
- export declare class TreeNodeLabelRenderer implements IPropertyValueRenderer {
58
- canRender(record: PropertyRecord, _context?: PropertyValueRendererContext | undefined): boolean;
59
- render(record: PropertyRecord, context?: PropertyValueRendererContext | undefined): ReactNode;
60
- }
61
- //# sourceMappingURL=TreeNodeRenderer.d.ts.map
@@ -1,44 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- import { createContext, useContext } from "react";
7
- import { PrimitivePropertyValueRenderer } from "@itwin/components-react";
8
- /**
9
- * Renders label for tree node.
10
- * @public
11
- */
12
- export function DefaultLabelRenderer({ label, context }) {
13
- const renderer = new PrimitivePropertyValueRenderer();
14
- return renderer.render(label, context);
15
- }
16
- /** @internal */
17
- export function TreeNodeRendererContextProvider({ nodeLabelRenderer, node, children }) {
18
- return _jsx(treeNodeLabelRendererContext.Provider, { value: { renderer: nodeLabelRenderer, node }, children: children });
19
- }
20
- /** @internal */
21
- export const TREE_NODE_LABEL_RENDERER = "visibility-tree-node-label";
22
- /** @internal */
23
- export class TreeNodeLabelRenderer {
24
- canRender(record, _context) {
25
- return record.property.renderer?.name === TREE_NODE_LABEL_RENDERER;
26
- }
27
- render(record, context) {
28
- const labelContext = {
29
- style: context?.style,
30
- textHighlighter: context?.textHighlighter,
31
- };
32
- return _jsx(LabelRenderer, { record: record, context: labelContext });
33
- }
34
- }
35
- const treeNodeLabelRendererContext = createContext(undefined);
36
- function LabelRenderer({ record, context }) {
37
- const renderContext = useContext(treeNodeLabelRendererContext);
38
- if (!renderContext || !renderContext.renderer) {
39
- return _jsx(DefaultLabelRenderer, { label: record, context: context });
40
- }
41
- const { renderer, node } = renderContext;
42
- return _jsx(_Fragment, { children: renderer({ node, context }) });
43
- }
44
- //# sourceMappingURL=TreeNodeRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeNodeRenderer.js","sourceRoot":"","sources":["../../../../../src/components/trees/common/TreeNodeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAgDzE;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,EAA6B;IAChF,MAAM,QAAQ,GAAG,IAAI,8BAA8B,EAAE,CAAC;IACtD,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAQD,gBAAgB;AAChB,MAAM,UAAU,+BAA+B,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAwC;IACzH,OAAO,KAAC,4BAA4B,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAG,QAAQ,GAAyC,CAAC;AACjJ,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,4BAA4B,CAAC;AAErE,gBAAgB;AAChB,MAAM,OAAO,qBAAqB;IACzB,SAAS,CAAC,MAAsB,EAAE,QAAmD;QAC1F,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,KAAK,wBAAwB,CAAC;IACrE,CAAC;IAEM,MAAM,CAAC,MAAsB,EAAE,OAAkD;QACtF,MAAM,YAAY,GAAyB;YACzC,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,eAAe,EAAE,OAAO,EAAE,eAAe;SAC1C,CAAC;QACF,OAAO,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAI,CAAC;IAClE,CAAC;CACF;AAOD,MAAM,4BAA4B,GAAG,aAAa,CAA2C,SAAS,CAAC,CAAC;AAOxG,SAAS,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,EAAsB;IAC5D,MAAM,aAAa,GAAG,UAAU,CAAC,4BAA4B,CAAC,CAAC;IAE/D,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;QAC7C,OAAO,KAAC,oBAAoB,IAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;KAClE;IAED,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;IACzC,OAAO,4BAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAI,CAAC;AAC5C,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 { createContext, useContext } from \"react\";\nimport { PrimitivePropertyValueRenderer } from \"@itwin/components-react\";\n\nimport type { ReactNode } from \"react\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport type { IPropertyValueRenderer, PropertyValueRendererContext, TreeModelNode } from \"@itwin/components-react\";\n\n/**\n * Context for rendering label value.\n * @public\n */\nexport interface LabelRendererContext {\n /** Style that should be applied to the rendered element. */\n style?: React.CSSProperties;\n /** Callback to highlight text. */\n textHighlighter?: (text: string) => React.ReactNode;\n}\n\n/**\n * Props for custom node renderer.\n * @public\n */\nexport interface TreeNodeLabelRendererProps {\n /** Tree node to rendered label for. */\n node: TreeModelNode;\n /** Context for rendering node's label value. */\n context?: LabelRendererContext;\n}\n\n/**\n * Props for customizing node rendering.\n * @public\n */\nexport interface TreeNodeRendererProps {\n /** Custom renderer for node's label. */\n nodeLabelRenderer?: (props: TreeNodeLabelRendererProps) => ReactNode;\n}\n\n/**\n * Props for [[DefaultLabelRenderer]] component.\n * @public\n */\nexport interface DefaultLabelRendererProps {\n /** Label that should be rendered. */\n label: PropertyRecord;\n /** Context for rendering label value. */\n context?: LabelRendererContext;\n}\n\n/**\n * Renders label for tree node.\n * @public\n */\nexport function DefaultLabelRenderer({ label, context }: DefaultLabelRendererProps) {\n const renderer = new PrimitivePropertyValueRenderer();\n return renderer.render(label, context);\n}\n\n/** @internal */\nexport interface TreeNodeRendererContextProviderProps extends TreeNodeRendererProps {\n node: TreeModelNode;\n children: ReactNode;\n}\n\n/** @internal */\nexport function TreeNodeRendererContextProvider({ nodeLabelRenderer, node, children }: TreeNodeRendererContextProviderProps) {\n return <treeNodeLabelRendererContext.Provider value={{ renderer: nodeLabelRenderer, node }}>{children}</treeNodeLabelRendererContext.Provider>;\n}\n\n/** @internal */\nexport const TREE_NODE_LABEL_RENDERER = \"visibility-tree-node-label\";\n\n/** @internal */\nexport class TreeNodeLabelRenderer implements IPropertyValueRenderer {\n public canRender(record: PropertyRecord, _context?: PropertyValueRendererContext | undefined): boolean {\n return record.property.renderer?.name === TREE_NODE_LABEL_RENDERER;\n }\n\n public render(record: PropertyRecord, context?: PropertyValueRendererContext | undefined): ReactNode {\n const labelContext: LabelRendererContext = {\n style: context?.style,\n textHighlighter: context?.textHighlighter,\n };\n return <LabelRenderer record={record} context={labelContext} />;\n }\n}\n\ninterface TreeNodeLabelRendererContext {\n renderer?: (props: TreeNodeLabelRendererProps) => ReactNode;\n node: TreeModelNode;\n}\n\nconst treeNodeLabelRendererContext = createContext<TreeNodeLabelRendererContext | undefined>(undefined);\n\ninterface LabelRendererProps {\n record: PropertyRecord;\n context?: LabelRendererContext;\n}\n\nfunction LabelRenderer({ record, context }: LabelRendererProps) {\n const renderContext = useContext(treeNodeLabelRendererContext);\n\n if (!renderContext || !renderContext.renderer) {\n return <DefaultLabelRenderer label={record} context={context} />;\n }\n\n const { renderer, node } = renderContext;\n return <>{renderer({ node, context })}</>;\n}\n"]}
@@ -1,55 +0,0 @@
1
- /// <reference types="react" />
2
- import "./TreeRenderer.scss";
3
- import type { IPresentationTreeDataProvider, PresentationTreeNodeRendererProps } from "@itwin/presentation-components";
4
- import type { AbstractTreeNodeLoaderWithProvider, TreeRendererProps as ComponentsTreeRendererProps } from "@itwin/components-react";
5
- import type { TreeNodeRendererProps } from "./TreeNodeRenderer";
6
- import type { TreeContextMenuProps } from "./ContextMenu";
7
- import type { UsageTrackedFeatures } from "./UseFeatureReporting";
8
- /**
9
- * Base props for [[TreeRenderer]] component.
10
- * @public
11
- */
12
- export interface TreeRendererBaseProps extends TreeContextMenuProps, TreeNodeRendererProps {
13
- /**
14
- * Modifies the density of tree nodes. `enlarged` tree nodes have bigger height and bigger button hit boxes.
15
- */
16
- density?: "default" | "enlarged";
17
- }
18
- /**
19
- * Props for [[TreeRenderer]] component.
20
- * @public
21
- */
22
- export type TreeRendererProps = ComponentsTreeRendererProps & TreeRendererBaseProps;
23
- /**
24
- * Base tree renderer for visibility trees.
25
- * @public
26
- */
27
- export declare function TreeRenderer({ contextMenuItems, nodeRenderer, nodeLabelRenderer, density, ...restProps }: TreeRendererProps): JSX.Element;
28
- /**
29
- * Props for [[FilterableTreeRenderer]] node renderer.
30
- * @beta
31
- */
32
- export interface FilterableTreeNodeRendererProps extends PresentationTreeNodeRendererProps {
33
- reportUsage?: (props: {
34
- featureId?: UsageTrackedFeatures;
35
- reportInteraction: boolean;
36
- }) => void;
37
- }
38
- /**
39
- * Props for [[FilterableTreeRenderer]] component.
40
- * @beta
41
- */
42
- export interface FilterableTreeRendererProps extends Omit<TreeRendererProps, "nodeLoader" | "nodeRenderer"> {
43
- nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;
44
- nodeRenderer: (props: FilterableTreeNodeRendererProps) => React.ReactNode;
45
- reportUsage?: (props: {
46
- featureId?: UsageTrackedFeatures;
47
- reportInteraction: boolean;
48
- }) => void;
49
- }
50
- /**
51
- * Base tree renderer for trees with enabled hierarchy level filtering.
52
- * @beta
53
- */
54
- export declare function FilterableTreeRenderer({ nodeRenderer, nodeLoader, reportUsage, ...restProps }: FilterableTreeRendererProps): JSX.Element;
55
- //# sourceMappingURL=TreeRenderer.d.ts.map
@@ -1,59 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- import "./TreeRenderer.scss";
7
- import classNames from "classnames";
8
- import { TreeRenderer as ComponentsTreeRenderer, TreeNodeRenderer } from "@itwin/components-react";
9
- import { useFilterablePresentationTree } from "@itwin/presentation-components";
10
- import { useContextMenu } from "./ContextMenu";
11
- import { TreeNodeRendererContextProvider } from "./TreeNodeRenderer";
12
- /**
13
- * Base tree renderer for visibility trees.
14
- * @public
15
- */
16
- export function TreeRenderer({ contextMenuItems, nodeRenderer, nodeLabelRenderer, density, ...restProps }) {
17
- const { onContextMenu, renderContextMenu } = useContextMenu({ contextMenuItems });
18
- const nodeHeight = getNodeHeight(density ?? "default", restProps.nodeHeight);
19
- const className = classNames("tree-widget-tree-nodes-list", { ["enlarge"]: density === "enlarged" });
20
- return (_jsxs("div", { className: className, children: [_jsx(ComponentsTreeRenderer, { ...restProps, nodeRenderer: (nodeProps) => {
21
- const nodeClassName = nodeProps.node.numChildren === 0 ? "without-expander" : undefined;
22
- return (_jsx(TreeNodeRendererContextProvider, { node: nodeProps.node, nodeLabelRenderer: nodeLabelRenderer, children: nodeRenderer ? (nodeRenderer({ ...nodeProps, onContextMenu, className: nodeClassName })) : (_jsx(TreeNodeRenderer, { ...nodeProps, onContextMenu: onContextMenu, className: nodeClassName })) }));
23
- }, nodeHeight: nodeHeight }), renderContextMenu()] }));
24
- }
25
- /**
26
- * Base tree renderer for trees with enabled hierarchy level filtering.
27
- * @beta
28
- */
29
- export function FilterableTreeRenderer({ nodeRenderer, nodeLoader, reportUsage, ...restProps }) {
30
- const { onClearFilterClick, onFilterClick, filterDialog } = useFilterablePresentationTree({
31
- nodeLoader,
32
- onFilterApplied: () => {
33
- reportUsage?.({ featureId: "hierarchy-level-filtering", reportInteraction: true });
34
- },
35
- });
36
- return (_jsxs("div", { children: [_jsx(TreeRenderer, { ...restProps, nodeLoader: nodeLoader, nodeRenderer: (props) => {
37
- return nodeRenderer({
38
- ...props,
39
- reportUsage,
40
- onFilterClick: (nodeId) => {
41
- reportUsage?.({ reportInteraction: true });
42
- onFilterClick(nodeId);
43
- },
44
- onClearFilterClick: (nodeId) => {
45
- reportUsage?.({ reportInteraction: true });
46
- onClearFilterClick(nodeId);
47
- },
48
- });
49
- } }), filterDialog] }));
50
- }
51
- function getNodeHeight(density, defaultHeight) {
52
- switch (density) {
53
- case "default":
54
- return defaultHeight;
55
- case "enlarged":
56
- return () => 43;
57
- }
58
- }
59
- //# sourceMappingURL=TreeRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../../src/components/trees/common/TreeRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport \"./TreeRenderer.scss\";\nimport classNames from \"classnames\";\nimport { TreeRenderer as ComponentsTreeRenderer, TreeNodeRenderer } from \"@itwin/components-react\";\nimport { useFilterablePresentationTree } from \"@itwin/presentation-components\";\nimport { useContextMenu } from \"./ContextMenu\";\nimport { TreeNodeRendererContextProvider } from \"./TreeNodeRenderer\";\n\nimport type { IPresentationTreeDataProvider, PresentationTreeNodeRendererProps } from \"@itwin/presentation-components\";\nimport type { AbstractTreeNodeLoaderWithProvider, TreeRendererProps as ComponentsTreeRendererProps } from \"@itwin/components-react\";\nimport type { TreeNodeRendererProps } from \"./TreeNodeRenderer\";\nimport type { TreeContextMenuProps } from \"./ContextMenu\";\nimport type { UsageTrackedFeatures } from \"./UseFeatureReporting\";\n/**\n * Base props for [[TreeRenderer]] component.\n * @public\n */\nexport interface TreeRendererBaseProps extends TreeContextMenuProps, TreeNodeRendererProps {\n /**\n * Modifies the density of tree nodes. `enlarged` tree nodes have bigger height and bigger button hit boxes.\n */\n density?: \"default\" | \"enlarged\";\n}\n\n/**\n * Props for [[TreeRenderer]] component.\n * @public\n */\nexport type TreeRendererProps = ComponentsTreeRendererProps & TreeRendererBaseProps;\n\n/**\n * Base tree renderer for visibility trees.\n * @public\n */\nexport function TreeRenderer({ contextMenuItems, nodeRenderer, nodeLabelRenderer, density, ...restProps }: TreeRendererProps) {\n const { onContextMenu, renderContextMenu } = useContextMenu({ contextMenuItems });\n\n const nodeHeight = getNodeHeight(density ?? \"default\", restProps.nodeHeight);\n const className = classNames(\"tree-widget-tree-nodes-list\", { [\"enlarge\"]: density === \"enlarged\" });\n\n return (\n <div className={className}>\n <ComponentsTreeRenderer\n {...restProps}\n nodeRenderer={(nodeProps) => {\n const nodeClassName = nodeProps.node.numChildren === 0 ? \"without-expander\" : undefined;\n return (\n <TreeNodeRendererContextProvider node={nodeProps.node} nodeLabelRenderer={nodeLabelRenderer}>\n {nodeRenderer ? (\n nodeRenderer({ ...nodeProps, onContextMenu, className: nodeClassName })\n ) : (\n <TreeNodeRenderer {...nodeProps} onContextMenu={onContextMenu} className={nodeClassName} />\n )}\n </TreeNodeRendererContextProvider>\n );\n }}\n nodeHeight={nodeHeight}\n />\n {renderContextMenu()}\n </div>\n );\n}\n\n/**\n * Props for [[FilterableTreeRenderer]] node renderer.\n * @beta\n */\nexport interface FilterableTreeNodeRendererProps extends PresentationTreeNodeRendererProps {\n reportUsage?: (props: { featureId?: UsageTrackedFeatures; reportInteraction: boolean }) => void;\n}\n\n/**\n * Props for [[FilterableTreeRenderer]] component.\n * @beta\n */\nexport interface FilterableTreeRendererProps extends Omit<TreeRendererProps, \"nodeLoader\" | \"nodeRenderer\"> {\n nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;\n nodeRenderer: (props: FilterableTreeNodeRendererProps) => React.ReactNode;\n reportUsage?: (props: { featureId?: UsageTrackedFeatures; reportInteraction: boolean }) => void;\n}\n/**\n * Base tree renderer for trees with enabled hierarchy level filtering.\n * @beta\n */\nexport function FilterableTreeRenderer({ nodeRenderer, nodeLoader, reportUsage, ...restProps }: FilterableTreeRendererProps) {\n const { onClearFilterClick, onFilterClick, filterDialog } = useFilterablePresentationTree({\n nodeLoader,\n onFilterApplied: () => {\n reportUsage?.({ featureId: \"hierarchy-level-filtering\", reportInteraction: true });\n },\n });\n\n return (\n <div>\n <TreeRenderer\n {...restProps}\n nodeLoader={nodeLoader}\n nodeRenderer={(props) => {\n return nodeRenderer({\n ...props,\n reportUsage,\n onFilterClick: (nodeId: string) => {\n reportUsage?.({ reportInteraction: true });\n onFilterClick(nodeId);\n },\n onClearFilterClick: (nodeId: string) => {\n reportUsage?.({ reportInteraction: true });\n onClearFilterClick(nodeId);\n },\n });\n }}\n />\n {filterDialog}\n </div>\n );\n}\n\nfunction getNodeHeight(density: \"default\" | \"enlarged\", defaultHeight: ComponentsTreeRendererProps[\"nodeHeight\"]) {\n switch (density) {\n case \"default\":\n return defaultHeight;\n case \"enlarged\":\n return () => 43;\n }\n}\n"]}