@itwin/tree-widget-react 4.0.0-alpha.25 → 4.0.0-alpha.26

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 (192) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js +2 -1
  3. package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js.map +1 -1
  4. package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js +1 -1
  5. package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js.map +1 -1
  6. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.d.ts +4 -1
  7. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js +4 -1
  8. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js.map +1 -1
  9. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.d.ts +1 -0
  10. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js +36 -47
  11. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -1
  12. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.d.ts +2 -0
  13. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js +4 -1
  14. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -1
  15. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +2 -1
  16. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js +75 -38
  17. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -1
  18. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeNode.d.ts +3 -1
  19. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeNode.js.map +1 -1
  20. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.d.ts +4 -2
  21. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js +38 -23
  22. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js.map +1 -1
  23. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.d.ts +11 -21
  24. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js +16 -168
  25. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js.map +1 -1
  26. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNodeInternal.d.ts +65 -0
  27. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNodeInternal.js +22 -0
  28. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNodeInternal.js.map +1 -0
  29. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseSearchPaths.d.ts +2 -2
  30. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseSearchPaths.js +4 -4
  31. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseSearchPaths.js.map +1 -1
  32. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.d.ts +6 -10
  33. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js +180 -88
  34. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js.map +1 -1
  35. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.d.ts +14 -5
  36. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.js +43 -24
  37. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.js.map +1 -1
  38. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/SearchResultsTree.d.ts +3 -1
  39. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/SearchResultsTree.js +78 -17
  40. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/SearchResultsTree.js.map +1 -1
  41. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.d.ts +2 -0
  42. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.js +4 -1
  43. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.js.map +1 -1
  44. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js +91 -114
  45. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js.map +1 -1
  46. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeIcon.d.ts +2 -2
  47. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeIcon.js.map +1 -1
  48. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeNode.d.ts +1 -3
  49. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeNode.js +2 -4
  50. package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeNode.js.map +1 -1
  51. package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.d.ts +13 -1
  52. package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.js +62 -32
  53. package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.js.map +1 -1
  54. package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.d.ts +12 -9
  55. package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.js +42 -38
  56. package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.js.map +1 -1
  57. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.d.ts +15 -38
  58. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js +59 -242
  59. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js.map +1 -1
  60. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNodeInternal.d.ts +29 -0
  61. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNodeInternal.js +19 -0
  62. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNodeInternal.js.map +1 -0
  63. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.d.ts +4 -8
  64. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.js +154 -78
  65. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.js.map +1 -1
  66. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHelper.js +20 -6
  67. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHelper.js.map +1 -1
  68. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/SearchResultsTree.d.ts +6 -10
  69. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/SearchResultsTree.js +104 -63
  70. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/SearchResultsTree.js.map +1 -1
  71. package/lib/esm/tree-widget-react/components/trees/common/SharedTreeContextProvider.d.ts +7 -0
  72. package/lib/esm/tree-widget-react/components/trees/common/SharedTreeContextProvider.js +14 -0
  73. package/lib/esm/tree-widget-react/components/trees/common/SharedTreeContextProvider.js.map +1 -0
  74. package/lib/esm/tree-widget-react/components/trees/common/TreeWidgetViewport.js +1 -1
  75. package/lib/esm/tree-widget-react/components/trees/common/TreeWidgetViewport.js.map +1 -1
  76. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js +2 -2
  77. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js.map +1 -1
  78. package/lib/esm/tree-widget-react/components/trees/common/Utils.js +2 -2
  79. package/lib/esm/tree-widget-react/components/trees/common/Utils.js.map +1 -1
  80. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.d.ts +4 -4
  81. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js +1 -1
  82. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js.map +1 -1
  83. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.d.ts +4 -4
  84. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.js.map +1 -1
  85. package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js +7 -5
  86. package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js.map +1 -1
  87. package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.d.ts +2 -2
  88. package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.js.map +1 -1
  89. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js +5 -5
  90. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -1
  91. package/lib/esm/tree-widget-react/components/trees/common/internal/SharedTreeContextProviderInternal.d.ts +20 -0
  92. package/lib/esm/tree-widget-react/components/trees/common/internal/SharedTreeContextProviderInternal.js +44 -0
  93. package/lib/esm/tree-widget-react/components/trees/common/internal/SharedTreeContextProviderInternal.js.map +1 -0
  94. package/lib/esm/tree-widget-react/components/trees/common/internal/Types.d.ts +4 -0
  95. package/lib/esm/tree-widget-react/components/trees/common/internal/Types.js.map +1 -1
  96. package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.d.ts +12 -0
  97. package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.js +2 -1
  98. package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.js.map +1 -1
  99. package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.d.ts +17 -6
  100. package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js +58 -29
  101. package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js.map +1 -1
  102. package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.d.ts +8 -14
  103. package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js +22 -26
  104. package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js.map +1 -1
  105. package/lib/esm/tree-widget-react/components/trees/common/internal/{AlwaysAndNeverDrawnElementInfo.d.ts → caches/AlwaysAndNeverDrawnElementInfoCache.d.ts} +15 -21
  106. package/lib/esm/tree-widget-react/components/trees/common/internal/{AlwaysAndNeverDrawnElementInfo.js → caches/AlwaysAndNeverDrawnElementInfoCache.js} +40 -38
  107. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/AlwaysAndNeverDrawnElementInfoCache.js.map +1 -0
  108. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.d.ts +68 -0
  109. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.js +148 -0
  110. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/BaseIdsCache.js.map +1 -0
  111. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementChildrenCache.d.ts +30 -0
  112. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementChildrenCache.js +151 -0
  113. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementChildrenCache.js.map +1 -0
  114. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementModelCategoriesCache.d.ts +32 -0
  115. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementModelCategoriesCache.js +106 -0
  116. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ElementModelCategoriesCache.js.map +1 -0
  117. package/lib/esm/tree-widget-react/components/trees/common/internal/{ModelCategoryElementsCountCache.d.ts → caches/ModelCategoryElementsCountCache.d.ts} +9 -2
  118. package/lib/esm/tree-widget-react/components/trees/common/internal/{ModelCategoryElementsCountCache.js → caches/ModelCategoryElementsCountCache.js} +17 -21
  119. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ModelCategoryElementsCountCache.js.map +1 -0
  120. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ModeledElementsCache.d.ts +27 -0
  121. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ModeledElementsCache.js +106 -0
  122. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/ModeledElementsCache.js.map +1 -0
  123. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/SubCategoriesCache.d.ts +23 -0
  124. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/SubCategoriesCache.js +56 -0
  125. package/lib/esm/tree-widget-react/components/trees/common/internal/caches/SubCategoriesCache.js.map +1 -0
  126. package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.d.ts +6 -6
  127. package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.js +27 -17
  128. package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.js.map +1 -1
  129. package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.d.ts +7 -13
  130. package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.js +36 -35
  131. package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.js.map +1 -1
  132. package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseSearchResultsTree.d.ts +18 -0
  133. package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseSearchResultsTree.js +14 -1
  134. package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseSearchResultsTree.js.map +1 -1
  135. package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.d.ts +46 -70
  136. package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.js +229 -361
  137. package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.js.map +1 -1
  138. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +2 -2
  139. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  140. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  141. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.d.ts +2 -2
  142. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  143. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  144. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +1 -1
  145. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -1
  146. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +32 -19
  147. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -1
  148. package/lib/esm/tree-widget-react/components/trees/index.d.ts +2 -1
  149. package/lib/esm/tree-widget-react/components/trees/index.js +2 -1
  150. package/lib/esm/tree-widget-react/components/trees/index.js.map +1 -1
  151. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.d.ts +4 -1
  152. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js +4 -1
  153. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js.map +1 -1
  154. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.d.ts +7 -3
  155. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js +36 -35
  156. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
  157. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.d.ts +1 -0
  158. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js +3 -1
  159. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  160. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.d.ts +1 -0
  161. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js +56 -26
  162. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -1
  163. package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.d.ts +5 -3
  164. package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js +25 -12
  165. package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js.map +1 -1
  166. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +11 -23
  167. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js +56 -189
  168. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -1
  169. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNodeInternal.d.ts +52 -0
  170. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNodeInternal.js +22 -0
  171. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNodeInternal.js.map +1 -0
  172. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseSearchPaths.d.ts +2 -2
  173. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseSearchPaths.js +8 -8
  174. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseSearchPaths.js.map +1 -1
  175. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.d.ts +6 -10
  176. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js +179 -72
  177. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js.map +1 -1
  178. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.d.ts +6 -0
  179. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.js +20 -8
  180. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.js.map +1 -1
  181. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/SearchResultsTree.d.ts +4 -2
  182. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/SearchResultsTree.js +73 -13
  183. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/SearchResultsTree.js.map +1 -1
  184. package/lib/esm/tree-widget-react-internal.d.ts +1 -0
  185. package/lib/esm/tree-widget-react-internal.js +1 -0
  186. package/lib/esm/tree-widget-react-internal.js.map +1 -1
  187. package/package.json +77 -82
  188. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseSearchPaths.d.ts +0 -20
  189. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseSearchPaths.js +0 -53
  190. package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseSearchPaths.js.map +0 -1
  191. package/lib/esm/tree-widget-react/components/trees/common/internal/AlwaysAndNeverDrawnElementInfo.js.map +0 -1
  192. package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import "./Tree.css";
2
2
  import type { ReactNode } from "react";
3
3
  import type { IModelConnection } from "@itwin/core-frontend";
4
- import type { PresentationHierarchyNode, SelectionStorage, TreeRendererProps, useIModelTree, useSelectionHandler } from "@itwin/presentation-hierarchies-react";
4
+ import type { SelectionStorage, TreeNode, TreeRendererProps, useIModelTree } from "@itwin/presentation-hierarchies-react";
5
5
  import type { FunctionProps } from "../Utils.js";
6
6
  import type { BaseTreeRendererProps } from "./BaseTreeRenderer.js";
7
7
  /** @beta */
8
- export type TreeProps = Pick<FunctionProps<typeof useIModelTree>, "getSearchPaths" | "getHierarchyDefinition"> & Partial<Pick<FunctionProps<typeof useSelectionHandler>, "selectionMode">> & {
8
+ export type TreeProps = Pick<FunctionProps<typeof useIModelTree>, "getSearchPaths" | "getHierarchyDefinition"> & Pick<BaseTreeRendererProps, "selectionMode"> & {
9
9
  /** iModel connection that should be used to pull data from. */
10
10
  imodel: IModelConnection;
11
11
  /** Unique tree component name that will be used as unified selection change event source when selecting node. */
@@ -16,7 +16,7 @@ export type TreeProps = Pick<FunctionProps<typeof useIModelTree>, "getSearchPath
16
16
  * An optional predicate to allow or prohibit selection of a node.
17
17
  * When not supplied, all nodes are selectable.
18
18
  */
19
- selectionPredicate?: (node: PresentationHierarchyNode) => boolean;
19
+ selectionPredicate?: (node: TreeNode) => boolean;
20
20
  /** Tree renderer that should be used to render tree data. */
21
21
  treeRenderer: (treeProps: Required<CommonTreeRendererProps & Pick<BaseTreeRendererProps, "getTreeItemProps">>) => ReactNode;
22
22
  /** Custom iModel access that is stored outside tree component. If not provided it new iModel access will be created using `imodel` prop. */
@@ -31,7 +31,7 @@ export type TreeProps = Pick<FunctionProps<typeof useIModelTree>, "getSearchPath
31
31
  highlightText?: string;
32
32
  };
33
33
  /** @beta */
34
- export type CommonTreeRendererProps = Pick<BaseTreeRendererProps, "onFilterClick" | "selectionMode" | "getTreeItemProps"> & TreeRendererProps;
34
+ export type CommonTreeRendererProps = Pick<BaseTreeRendererProps, "filterHierarchyLevel" | "selectionMode" | "getTreeItemProps"> & TreeRendererProps;
35
35
  /** @beta */
36
36
  export type CallbacksWithCommonTreeRendererProps<T extends BaseTreeRendererProps, K extends keyof T> = Omit<T, K> & {
37
37
  [P in keyof Pick<T, K>]?: T[P] extends ((props: any) => any) | undefined ? (args: Parameters<NonNullable<T[P]>>[0], treeRendererProps: CommonTreeRendererProps) => ReturnType<NonNullable<T[P]>> : never;
@@ -96,7 +96,7 @@ function TreeBaseImpl({ imodel, emptyTreeContent, currentHierarchyLevelSizeLimit
96
96
  selectNodes,
97
97
  selectionMode: selectionMode ?? "single",
98
98
  expandNode: reportingExpandNode,
99
- onFilterClick: reportingOnFilterClicked,
99
+ filterHierarchyLevel: reportingOnFilterClicked,
100
100
  getTreeItemProps: (node) => ({
101
101
  label: getLabel(node),
102
102
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/Tree.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 \"./Tree.css\";\n\nimport { useCallback, useState } from \"react\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { SchemaMetadataContextProvider } from \"@itwin/presentation-components\";\nimport { StrataKitRootErrorRenderer, useIModelUnifiedSelectionTree, useNodeHighlighting } from \"@itwin/presentation-hierarchies-react\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { useHierarchiesLocalization } from \"../internal/UseHierarchiesLocalization.js\";\nimport { useHierarchyLevelFiltering } from \"../internal/UseHierarchyFiltering.js\";\nimport { useIModelAccess } from \"../internal/UseIModelAccess.js\";\nimport { useIModelChangeListener } from \"../internal/UseIModelChangeListener.js\";\nimport { useReportingAction, useTelemetryContext } from \"../UseTelemetryContext.js\";\nimport { LOGGING_NAMESPACE } from \"../Utils.js\";\nimport { Delayed } from \"./Delayed.js\";\nimport { EmptyTreeContent } from \"./EmptyTree.js\";\nimport { ProgressOverlay } from \"./ProgressOverlay.js\";\nimport { SkeletonTree } from \"./SkeletonTree.js\";\n\nimport type { ReactNode } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type {\n PresentationHierarchyNode,\n SelectionStorage,\n TreeRendererProps,\n useIModelTree,\n useSelectionHandler,\n useTree,\n} from \"@itwin/presentation-hierarchies-react\";\nimport type { FunctionProps } from \"../Utils.js\";\nimport type { BaseTreeRendererProps } from \"./BaseTreeRenderer.js\";\n\n/** @beta */\nexport type TreeProps = Pick<FunctionProps<typeof useIModelTree>, \"getSearchPaths\" | \"getHierarchyDefinition\"> &\n Partial<Pick<FunctionProps<typeof useSelectionHandler>, \"selectionMode\">> & {\n /** iModel connection that should be used to pull data from. */\n imodel: IModelConnection;\n /** Unique tree component name that will be used as unified selection change event source when selecting node. */\n treeName: string;\n /** Unified selection storage that should be used by tree to handle tree selection changes. */\n selectionStorage: SelectionStorage;\n /**\n * An optional predicate to allow or prohibit selection of a node.\n * When not supplied, all nodes are selectable.\n */\n selectionPredicate?: (node: PresentationHierarchyNode) => boolean;\n /** Tree renderer that should be used to render tree data. */\n treeRenderer: (treeProps: Required<CommonTreeRendererProps & Pick<BaseTreeRendererProps, \"getTreeItemProps\">>) => ReactNode;\n /** Custom iModel access that is stored outside tree component. If not provided it new iModel access will be created using `imodel` prop. */\n imodelAccess?: FunctionProps<typeof useIModelTree>[\"imodelAccess\"];\n /** Size limit that should be applied on each hierarchy level. Default to `1000`. */\n hierarchyLevelSizeLimit?: number;\n /** Component that should be renderer if there are no tree nodes. */\n emptyTreeContent?: ReactNode;\n /** Callback that this invoked when tree reloads. */\n onReload?: () => void;\n /** Text that should be highlighted in node labels. */\n highlightText?: string;\n };\n\n/** @beta */\nexport type CommonTreeRendererProps = Pick<BaseTreeRendererProps, \"onFilterClick\" | \"selectionMode\" | \"getTreeItemProps\"> & TreeRendererProps;\n\n/** @beta */\nexport type CallbacksWithCommonTreeRendererProps<T extends BaseTreeRendererProps, K extends keyof T> = Omit<T, K> & {\n [P in keyof Pick<T, K>]?: T[P] extends ((props: any) => any) | undefined\n ? (args: Parameters<NonNullable<T[P]>>[0], treeRendererProps: CommonTreeRendererProps) => ReturnType<NonNullable<T[P]>>\n : never;\n};\n\n/**\n * Default tree component that manages tree state and renders using supplied `treeRenderer`.\n * @beta\n */\nexport function Tree({\n hierarchyLevelSizeLimit,\n getHierarchyDefinition,\n getSearchPaths,\n selectionStorage,\n imodelAccess: providedIModelAccess,\n treeName,\n onReload,\n ...props\n}: TreeProps) {\n const { onFeatureUsed, onPerformanceMeasured } = useTelemetryContext();\n const [imodelChanged] = useState(new BeEvent<() => void>());\n const localizedStrings = useHierarchiesLocalization();\n\n const { imodelAccess, currentHierarchyLevelSizeLimit } = useIModelAccess({\n imodel: props.imodel,\n imodelAccess: providedIModelAccess,\n treeName,\n hierarchyLevelSizeLimit,\n });\n\n const {\n getNode,\n setFormatter: _setFormatter,\n isReloading,\n ...treeProps\n } = useIModelUnifiedSelectionTree({\n imodelAccess,\n imodelChanged,\n getHierarchyDefinition,\n getSearchPaths,\n sourceName: treeName,\n localizedStrings,\n selectionStorage,\n onPerformanceMeasured: (action, duration) => {\n if (action === \"reload\") {\n onReload?.();\n }\n onPerformanceMeasured(action, duration);\n },\n onHierarchyLimitExceeded: () => onFeatureUsed({ featureId: \"hierarchy-level-size-limit-hit\", reportInteraction: false }),\n onHierarchyLoadError: ({ type, error }) => {\n // eslint-disable-next-line no-console\n console.error(error);\n onFeatureUsed({ featureId: `error-${type}`, reportInteraction: false });\n },\n });\n useIModelChangeListener({\n imodel: props.imodel,\n action: useCallback(() => {\n TreeWidget.logger.logTrace(`${LOGGING_NAMESPACE}.${treeName}`, `iModel data changed`);\n imodelChanged.raiseEvent();\n }, [imodelChanged, treeName]),\n });\n\n if (treeProps.rootErrorRendererProps !== undefined) {\n return <StrataKitRootErrorRenderer {...treeProps.rootErrorRendererProps} />;\n }\n\n return (\n <TreeBase\n {...props}\n isReloading={isReloading}\n treeRendererProps={treeProps.treeRendererProps}\n getNode={getNode}\n currentHierarchyLevelSizeLimit={currentHierarchyLevelSizeLimit}\n />\n );\n}\n\ntype TreeBaseProps = {\n currentHierarchyLevelSizeLimit: number;\n getNode: (nodeId: string) => PresentationHierarchyNode | undefined;\n treeRendererProps?: TreeRendererProps;\n} & Omit<TreeProps, \"selectionStorage\" | \"treeName\" | \"getHierarchyDefinition\"> &\n Pick<ReturnType<typeof useTree>, \"getNode\" | \"isReloading\">;\n\n/** @internal */\nfunction TreeBase({ treeRendererProps, ...props }: TreeBaseProps) {\n const getSchemaContext = useCallback(() => props.imodel.schemaContext, [props.imodel]);\n\n if (treeRendererProps === undefined) {\n return <SkeletonTree />;\n }\n\n return (\n <SchemaMetadataContextProvider imodel={props.imodel} schemaContextProvider={getSchemaContext}>\n <TreeBaseImpl {...props} treeRendererProps={treeRendererProps} />\n </SchemaMetadataContextProvider>\n );\n}\n\nfunction TreeBaseImpl({\n imodel,\n emptyTreeContent,\n currentHierarchyLevelSizeLimit,\n selectionPredicate,\n selectionMode,\n treeRenderer,\n highlightText,\n treeRendererProps,\n isReloading,\n getNode,\n}: Omit<TreeBaseProps, \"getSchemaContext\" | \"treeRendererProps\"> & Required<Pick<TreeBaseProps, \"treeRendererProps\">>) {\n const selectNodes = useSelectionPredicate({\n action: useReportingAction({ action: treeRendererProps.selectNodes }),\n predicate: selectionPredicate,\n getNode,\n });\n const { filteringDialog, onFilterClick } = useHierarchyLevelFiltering({\n imodel,\n defaultHierarchyLevelSizeLimit: currentHierarchyLevelSizeLimit,\n });\n const reportingExpandNode = useReportingAction({ action: treeRendererProps.expandNode });\n const reportingOnFilterClicked = useReportingAction({ action: onFilterClick });\n // Don't highlight nodes if tree is reloading\n const { getLabel } = useNodeHighlighting({ highlightText: isReloading ? undefined : highlightText });\n\n if (treeRendererProps.rootNodes.length === 0 && !isReloading) {\n return <>{emptyTreeContent ? emptyTreeContent : <EmptyTreeContent />}</>;\n }\n\n const treeRenderProps: FunctionProps<TreeProps[\"treeRenderer\"]> = {\n ...treeRendererProps,\n selectNodes,\n selectionMode: selectionMode ?? \"single\",\n expandNode: reportingExpandNode,\n onFilterClick: reportingOnFilterClicked,\n getTreeItemProps: (node) => ({\n label: getLabel(node),\n }),\n };\n\n return (\n <div style={{ position: \"relative\", height: \"100%\", overflow: \"hidden\" }}>\n <div className={\"tw-tree-renderer-container\"} id=\"tw-tree-renderer-container\">\n {treeRenderer(treeRenderProps)}\n {filteringDialog}\n </div>\n <Delayed show={isReloading}>\n <ProgressOverlay />\n </Delayed>\n </div>\n );\n}\n\nfunction useSelectionPredicate({\n action,\n predicate,\n getNode,\n}: {\n action: (...args: any[]) => void;\n predicate?: (node: PresentationHierarchyNode) => boolean;\n getNode: (nodeId: string) => PresentationHierarchyNode | undefined;\n}): TreeRendererProps[\"selectNodes\"] {\n return useCallback(\n (nodeIds, changeType) =>\n action(\n nodeIds.filter((nodeId) => {\n const node = getNode(nodeId);\n return node && (!predicate || predicate(node));\n }),\n changeType,\n ),\n [action, getNode, predicate],\n );\n}\n"]}
1
+ {"version":3,"file":"Tree.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/Tree.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 \"./Tree.css\";\n\nimport { useCallback, useState } from \"react\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { SchemaMetadataContextProvider } from \"@itwin/presentation-components\";\nimport { StrataKitRootErrorRenderer, useIModelUnifiedSelectionTree, useNodeHighlighting } from \"@itwin/presentation-hierarchies-react\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { useHierarchiesLocalization } from \"../internal/UseHierarchiesLocalization.js\";\nimport { useHierarchyLevelFiltering } from \"../internal/UseHierarchyFiltering.js\";\nimport { useIModelAccess } from \"../internal/UseIModelAccess.js\";\nimport { useIModelChangeListener } from \"../internal/UseIModelChangeListener.js\";\nimport { useReportingAction, useTelemetryContext } from \"../UseTelemetryContext.js\";\nimport { LOGGING_NAMESPACE } from \"../Utils.js\";\nimport { Delayed } from \"./Delayed.js\";\nimport { EmptyTreeContent } from \"./EmptyTree.js\";\nimport { ProgressOverlay } from \"./ProgressOverlay.js\";\nimport { SkeletonTree } from \"./SkeletonTree.js\";\n\nimport type { ReactNode } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { SelectionStorage, TreeNode, TreeRendererProps, useIModelTree, useTree } from \"@itwin/presentation-hierarchies-react\";\nimport type { FunctionProps } from \"../Utils.js\";\nimport type { BaseTreeRendererProps } from \"./BaseTreeRenderer.js\";\n\n/** @beta */\nexport type TreeProps = Pick<FunctionProps<typeof useIModelTree>, \"getSearchPaths\" | \"getHierarchyDefinition\"> &\n Pick<BaseTreeRendererProps, \"selectionMode\"> & {\n /** iModel connection that should be used to pull data from. */\n imodel: IModelConnection;\n /** Unique tree component name that will be used as unified selection change event source when selecting node. */\n treeName: string;\n /** Unified selection storage that should be used by tree to handle tree selection changes. */\n selectionStorage: SelectionStorage;\n /**\n * An optional predicate to allow or prohibit selection of a node.\n * When not supplied, all nodes are selectable.\n */\n selectionPredicate?: (node: TreeNode) => boolean;\n /** Tree renderer that should be used to render tree data. */\n treeRenderer: (treeProps: Required<CommonTreeRendererProps & Pick<BaseTreeRendererProps, \"getTreeItemProps\">>) => ReactNode;\n /** Custom iModel access that is stored outside tree component. If not provided it new iModel access will be created using `imodel` prop. */\n imodelAccess?: FunctionProps<typeof useIModelTree>[\"imodelAccess\"];\n /** Size limit that should be applied on each hierarchy level. Default to `1000`. */\n hierarchyLevelSizeLimit?: number;\n /** Component that should be renderer if there are no tree nodes. */\n emptyTreeContent?: ReactNode;\n /** Callback that this invoked when tree reloads. */\n onReload?: () => void;\n /** Text that should be highlighted in node labels. */\n highlightText?: string;\n };\n\n/** @beta */\nexport type CommonTreeRendererProps = Pick<BaseTreeRendererProps, \"filterHierarchyLevel\" | \"selectionMode\" | \"getTreeItemProps\"> & TreeRendererProps;\n\n/** @beta */\nexport type CallbacksWithCommonTreeRendererProps<T extends BaseTreeRendererProps, K extends keyof T> = Omit<T, K> & {\n [P in keyof Pick<T, K>]?: T[P] extends ((props: any) => any) | undefined\n ? (args: Parameters<NonNullable<T[P]>>[0], treeRendererProps: CommonTreeRendererProps) => ReturnType<NonNullable<T[P]>>\n : never;\n};\n\n/**\n * Default tree component that manages tree state and renders using supplied `treeRenderer`.\n * @beta\n */\nexport function Tree({\n hierarchyLevelSizeLimit,\n getHierarchyDefinition,\n getSearchPaths,\n selectionStorage,\n imodelAccess: providedIModelAccess,\n treeName,\n onReload,\n ...props\n}: TreeProps) {\n const { onFeatureUsed, onPerformanceMeasured } = useTelemetryContext();\n const [imodelChanged] = useState(new BeEvent<() => void>());\n const localizedStrings = useHierarchiesLocalization();\n\n const { imodelAccess, currentHierarchyLevelSizeLimit } = useIModelAccess({\n imodel: props.imodel,\n imodelAccess: providedIModelAccess,\n treeName,\n hierarchyLevelSizeLimit,\n });\n\n const {\n getNode,\n setFormatter: _setFormatter,\n isReloading,\n ...treeProps\n } = useIModelUnifiedSelectionTree({\n imodelAccess,\n imodelChanged,\n getHierarchyDefinition,\n getSearchPaths,\n sourceName: treeName,\n localizedStrings,\n selectionStorage,\n onPerformanceMeasured: (action, duration) => {\n if (action === \"reload\") {\n onReload?.();\n }\n onPerformanceMeasured(action, duration);\n },\n onHierarchyLimitExceeded: () => onFeatureUsed({ featureId: \"hierarchy-level-size-limit-hit\", reportInteraction: false }),\n onHierarchyLoadError: ({ type, error }) => {\n // eslint-disable-next-line no-console\n console.error(error);\n onFeatureUsed({ featureId: `error-${type}`, reportInteraction: false });\n },\n });\n useIModelChangeListener({\n imodel: props.imodel,\n action: useCallback(() => {\n TreeWidget.logger.logTrace(`${LOGGING_NAMESPACE}.${treeName}`, `iModel data changed`);\n imodelChanged.raiseEvent();\n }, [imodelChanged, treeName]),\n });\n\n if (treeProps.rootErrorRendererProps !== undefined) {\n return <StrataKitRootErrorRenderer {...treeProps.rootErrorRendererProps} />;\n }\n\n return (\n <TreeBase\n {...props}\n isReloading={isReloading}\n treeRendererProps={treeProps.treeRendererProps}\n getNode={getNode}\n currentHierarchyLevelSizeLimit={currentHierarchyLevelSizeLimit}\n />\n );\n}\n\ntype TreeBaseProps = {\n currentHierarchyLevelSizeLimit: number;\n getNode: (nodeId: string) => TreeNode | undefined;\n treeRendererProps?: TreeRendererProps;\n} & Omit<TreeProps, \"selectionStorage\" | \"treeName\" | \"getHierarchyDefinition\"> &\n Pick<ReturnType<typeof useTree>, \"getNode\" | \"isReloading\">;\n\n/** @internal */\nfunction TreeBase({ treeRendererProps, ...props }: TreeBaseProps) {\n const getSchemaContext = useCallback(() => props.imodel.schemaContext, [props.imodel]);\n\n if (treeRendererProps === undefined) {\n return <SkeletonTree />;\n }\n\n return (\n <SchemaMetadataContextProvider imodel={props.imodel} schemaContextProvider={getSchemaContext}>\n <TreeBaseImpl {...props} treeRendererProps={treeRendererProps} />\n </SchemaMetadataContextProvider>\n );\n}\n\nfunction TreeBaseImpl({\n imodel,\n emptyTreeContent,\n currentHierarchyLevelSizeLimit,\n selectionPredicate,\n selectionMode,\n treeRenderer,\n highlightText,\n treeRendererProps,\n isReloading,\n getNode,\n}: Omit<TreeBaseProps, \"getSchemaContext\" | \"treeRendererProps\"> & Required<Pick<TreeBaseProps, \"treeRendererProps\">>) {\n const selectNodes = useSelectionPredicate({\n action: useReportingAction({ action: treeRendererProps.selectNodes }),\n predicate: selectionPredicate,\n getNode,\n });\n const { filteringDialog, onFilterClick } = useHierarchyLevelFiltering({\n imodel,\n defaultHierarchyLevelSizeLimit: currentHierarchyLevelSizeLimit,\n });\n const reportingExpandNode = useReportingAction({ action: treeRendererProps.expandNode });\n const reportingOnFilterClicked = useReportingAction({ action: onFilterClick });\n // Don't highlight nodes if tree is reloading\n const { getLabel } = useNodeHighlighting({ highlightText: isReloading ? undefined : highlightText });\n\n if (treeRendererProps.rootNodes.length === 0 && !isReloading) {\n return <>{emptyTreeContent ? emptyTreeContent : <EmptyTreeContent />}</>;\n }\n\n const treeRenderProps: FunctionProps<TreeProps[\"treeRenderer\"]> = {\n ...treeRendererProps,\n selectNodes,\n selectionMode: selectionMode ?? \"single\",\n expandNode: reportingExpandNode,\n filterHierarchyLevel: reportingOnFilterClicked,\n getTreeItemProps: (node) => ({\n label: getLabel(node),\n }),\n };\n\n return (\n <div style={{ position: \"relative\", height: \"100%\", overflow: \"hidden\" }}>\n <div className={\"tw-tree-renderer-container\"} id=\"tw-tree-renderer-container\">\n {treeRenderer(treeRenderProps)}\n {filteringDialog}\n </div>\n <Delayed show={isReloading}>\n <ProgressOverlay />\n </Delayed>\n </div>\n );\n}\n\nfunction useSelectionPredicate({\n action,\n predicate,\n getNode,\n}: {\n action: (...args: any[]) => void;\n predicate?: (node: TreeNode) => boolean;\n getNode: (nodeId: string) => TreeNode | undefined;\n}): TreeRendererProps[\"selectNodes\"] {\n return useCallback(\n (nodeIds, changeType) =>\n action(\n nodeIds.filter((nodeId) => {\n const node = getNode(nodeId);\n return node && (!predicate || predicate(node));\n }),\n changeType,\n ),\n [action, getNode, predicate],\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import "./TreeNodeVisibilityButton.css";
2
2
  import type { PropsWithChildren } from "react";
3
- import type { PresentationHierarchyNode, TreeActionBaseAttributes } from "@itwin/presentation-hierarchies-react";
3
+ import type { TreeActionBaseAttributes, TreeNode } from "@itwin/presentation-hierarchies-react";
4
4
  /** @beta */
5
5
  interface LoadedTreeItemVisibilityButtonState {
6
6
  state: "visible" | "hidden" | "partial";
@@ -21,14 +21,14 @@ export type TreeItemVisibilityButtonState = (LoadedTreeItemVisibilityButtonState
21
21
  * @beta
22
22
  */
23
23
  export declare const VisibilityAction: import("react").NamedExoticComponent<{
24
- node: PresentationHierarchyNode;
24
+ node: TreeNode;
25
25
  } & TreeActionBaseAttributes>;
26
26
  /** @beta */
27
27
  export interface VisibilityContext {
28
28
  /** Callback that should be invoked when checkbox is clicked. */
29
- onVisibilityButtonClick: (node: PresentationHierarchyNode, state: LoadedTreeItemVisibilityButtonState["state"]) => void;
29
+ onVisibilityButtonClick: (node: TreeNode, state: LoadedTreeItemVisibilityButtonState["state"]) => void;
30
30
  /** Callback that should be used to determine current checkbox state. */
31
- getVisibilityButtonState: (node: PresentationHierarchyNode) => TreeItemVisibilityButtonState;
31
+ getVisibilityButtonState: (node: TreeNode) => TreeItemVisibilityButtonState;
32
32
  }
33
33
  /** @internal */
34
34
  export declare const useVisibilityContext: () => VisibilityContext | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeVisibilityButton.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,gCAAgC,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,oBAAoB,MAAM,yCAAyC,CAAC;AAC3E,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAuBvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAkE;IAC1J,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAEtD,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QAC9F,OAAO,CACL,KAAC,cAAc,OACT,gBAAgB,EACpB,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,oCAAoC,CAAC,EACjE,OAAO,EAAE,KAAK,EACd,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,IAAI,GACV,CACH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO,iBAAiB,CAAC;YAC3B,KAAK,QAAQ;gBACX,OAAO,iBAAiB,CAAC;YAC3B,KAAK,SAAS;gBACZ,OAAO,oBAAoB,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,cAAc,OACT,gBAAgB,EACpB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAClD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EACjE,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACrD,IAAI,EAAE,OAAO,EAAE,GACf,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAUH,MAAM,iBAAiB,GAAG,aAAa,CAAgC,SAAS,CAAC,CAAC;AAElF,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,OAAO,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,yBAAyB,CAAC,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,QAAQ,EAAwC;IAC7I,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IACzB,KAAK,EAAE,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;YACL,uBAAuB;YACvB,wBAAwB;SACzB,CAAC,EACF,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CACpD,YAEA,QAAQ,GACkB,CAC9B,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 \"./TreeNodeVisibilityButton.css\";\n\nimport { createContext, memo, useContext, useMemo } from \"react\";\nimport { TreeActionBase } from \"@itwin/presentation-hierarchies-react\";\nimport visibilityHideSvg from \"@stratakit/icons/visibility-hide.svg\";\nimport visibilityPartialSvg from \"@stratakit/icons/visibility-partial.svg\";\nimport visibilityShowSvg from \"@stratakit/icons/visibility-show.svg\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { createTooltip } from \"../internal/Tooltip.js\";\n\nimport type { PropsWithChildren } from \"react\";\nimport type { PresentationHierarchyNode, TreeActionBaseAttributes } from \"@itwin/presentation-hierarchies-react\";\n\n/** @beta */\ninterface LoadedTreeItemVisibilityButtonState {\n state: \"visible\" | \"hidden\" | \"partial\";\n isDisabled?: boolean;\n}\n/**\n * Data structure that describes tree node checkbox state.\n * @beta\n */\nexport type TreeItemVisibilityButtonState = (\n | LoadedTreeItemVisibilityButtonState\n | {\n isLoading: true;\n }\n) & {\n tooltip?: string;\n};\n\n/**\n * React component that renders a visibility action for a tree item.\n * Should be used with `VisibilityTreeRenderer`.\n * @beta\n */\nexport const VisibilityAction = memo(function VisibilityAction({ node, ...actionAttributes }: { node: PresentationHierarchyNode } & TreeActionBaseAttributes) {\n const context = useVisibilityContext();\n const state = context?.getVisibilityButtonState(node);\n\n if (!context || !state || (\"isDisabled\" in state && state.isDisabled) || \"isLoading\" in state) {\n return (\n <TreeActionBase\n {...actionAttributes}\n label={TreeWidget.translate(`visibilityTooltips.status.disabled`)}\n visible={false}\n icon={visibilityShowSvg}\n hide={true}\n />\n );\n }\n\n const getIcon = () => {\n switch (state.state) {\n case \"visible\":\n return visibilityShowSvg;\n case \"hidden\":\n return visibilityHideSvg;\n case \"partial\":\n return visibilityPartialSvg;\n }\n };\n\n return (\n <TreeActionBase\n {...actionAttributes}\n label={state.tooltip ?? createTooltip(state.state)}\n onClick={() => context.onVisibilityButtonClick(node, state.state)}\n visible={state.state !== \"visible\" ? true : undefined}\n icon={getIcon()}\n />\n );\n});\n\n/** @beta */\nexport interface VisibilityContext {\n /** Callback that should be invoked when checkbox is clicked. */\n onVisibilityButtonClick: (node: PresentationHierarchyNode, state: LoadedTreeItemVisibilityButtonState[\"state\"]) => void;\n /** Callback that should be used to determine current checkbox state. */\n getVisibilityButtonState: (node: PresentationHierarchyNode) => TreeItemVisibilityButtonState;\n}\n\nconst visibilityContext = createContext<VisibilityContext | undefined>(undefined);\n\n/** @internal */\nexport const useVisibilityContext = () => {\n return useContext(visibilityContext);\n};\n\n/** @internal */\nexport function VisibilityContextProvider({ onVisibilityButtonClick, getVisibilityButtonState, children }: PropsWithChildren<VisibilityContext>) {\n return (\n <visibilityContext.Provider\n value={useMemo(\n () => ({\n onVisibilityButtonClick,\n getVisibilityButtonState,\n }),\n [getVisibilityButtonState, onVisibilityButtonClick],\n )}\n >\n {children}\n </visibilityContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"TreeNodeVisibilityButton.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,gCAAgC,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,oBAAoB,MAAM,yCAAyC,CAAC;AAC3E,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAuBvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAiD;IACzI,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAEtD,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QAC9F,OAAO,CACL,KAAC,cAAc,OACT,gBAAgB,EACpB,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,oCAAoC,CAAC,EACjE,OAAO,EAAE,KAAK,EACd,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,IAAI,GACV,CACH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO,iBAAiB,CAAC;YAC3B,KAAK,QAAQ;gBACX,OAAO,iBAAiB,CAAC;YAC3B,KAAK,SAAS;gBACZ,OAAO,oBAAoB,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,cAAc,OACT,gBAAgB,EACpB,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAClD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EACjE,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACrD,IAAI,EAAE,OAAO,EAAE,GACf,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAUH,MAAM,iBAAiB,GAAG,aAAa,CAAgC,SAAS,CAAC,CAAC;AAElF,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,OAAO,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,yBAAyB,CAAC,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,QAAQ,EAAwC;IAC7I,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IACzB,KAAK,EAAE,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;YACL,uBAAuB;YACvB,wBAAwB;SACzB,CAAC,EACF,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CACpD,YAEA,QAAQ,GACkB,CAC9B,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 \"./TreeNodeVisibilityButton.css\";\n\nimport { createContext, memo, useContext, useMemo } from \"react\";\nimport { TreeActionBase } from \"@itwin/presentation-hierarchies-react\";\nimport visibilityHideSvg from \"@stratakit/icons/visibility-hide.svg\";\nimport visibilityPartialSvg from \"@stratakit/icons/visibility-partial.svg\";\nimport visibilityShowSvg from \"@stratakit/icons/visibility-show.svg\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { createTooltip } from \"../internal/Tooltip.js\";\n\nimport type { PropsWithChildren } from \"react\";\nimport type { TreeActionBaseAttributes, TreeNode } from \"@itwin/presentation-hierarchies-react\";\n\n/** @beta */\ninterface LoadedTreeItemVisibilityButtonState {\n state: \"visible\" | \"hidden\" | \"partial\";\n isDisabled?: boolean;\n}\n/**\n * Data structure that describes tree node checkbox state.\n * @beta\n */\nexport type TreeItemVisibilityButtonState = (\n | LoadedTreeItemVisibilityButtonState\n | {\n isLoading: true;\n }\n) & {\n tooltip?: string;\n};\n\n/**\n * React component that renders a visibility action for a tree item.\n * Should be used with `VisibilityTreeRenderer`.\n * @beta\n */\nexport const VisibilityAction = memo(function VisibilityAction({ node, ...actionAttributes }: { node: TreeNode } & TreeActionBaseAttributes) {\n const context = useVisibilityContext();\n const state = context?.getVisibilityButtonState(node);\n\n if (!context || !state || (\"isDisabled\" in state && state.isDisabled) || \"isLoading\" in state) {\n return (\n <TreeActionBase\n {...actionAttributes}\n label={TreeWidget.translate(`visibilityTooltips.status.disabled`)}\n visible={false}\n icon={visibilityShowSvg}\n hide={true}\n />\n );\n }\n\n const getIcon = () => {\n switch (state.state) {\n case \"visible\":\n return visibilityShowSvg;\n case \"hidden\":\n return visibilityHideSvg;\n case \"partial\":\n return visibilityPartialSvg;\n }\n };\n\n return (\n <TreeActionBase\n {...actionAttributes}\n label={state.tooltip ?? createTooltip(state.state)}\n onClick={() => context.onVisibilityButtonClick(node, state.state)}\n visible={state.state !== \"visible\" ? true : undefined}\n icon={getIcon()}\n />\n );\n});\n\n/** @beta */\nexport interface VisibilityContext {\n /** Callback that should be invoked when checkbox is clicked. */\n onVisibilityButtonClick: (node: TreeNode, state: LoadedTreeItemVisibilityButtonState[\"state\"]) => void;\n /** Callback that should be used to determine current checkbox state. */\n getVisibilityButtonState: (node: TreeNode) => TreeItemVisibilityButtonState;\n}\n\nconst visibilityContext = createContext<VisibilityContext | undefined>(undefined);\n\n/** @internal */\nexport const useVisibilityContext = () => {\n return useContext(visibilityContext);\n};\n\n/** @internal */\nexport function VisibilityContextProvider({ onVisibilityButtonClick, getVisibilityButtonState, children }: PropsWithChildren<VisibilityContext>) {\n return (\n <visibilityContext.Provider\n value={useMemo(\n () => ({\n onVisibilityButtonClick,\n getVisibilityButtonState,\n }),\n [getVisibilityButtonState, onVisibilityButtonClick],\n )}\n >\n {children}\n </visibilityContext.Provider>\n );\n}\n"]}
@@ -4,19 +4,21 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  import { useCallback } from "react";
7
- import { FilterAction } from "@itwin/presentation-hierarchies-react";
7
+ import { TreeNodeFilterAction } from "@itwin/presentation-hierarchies-react";
8
8
  import { BaseTreeRenderer } from "./BaseTreeRenderer.js";
9
9
  /**
10
10
  * Default renderer for rendering tree data.
11
11
  * @beta
12
12
  */
13
13
  export function TreeRenderer(props) {
14
- const { getInlineActions, getHierarchyLevelDetails, onFilterClick, ...restProps } = props;
14
+ const { getInlineActions, getHierarchyLevelDetails, filterHierarchyLevel, ...restProps } = props;
15
15
  const nodeInlineActions = useCallback((actionsProps) => {
16
16
  return getInlineActions
17
17
  ? getInlineActions(actionsProps)
18
- : [_jsx(FilterAction, { node: actionsProps.targetNode, onFilter: onFilterClick, getHierarchyLevelDetails: getHierarchyLevelDetails }, "Filter")];
19
- }, [getInlineActions, onFilterClick, getHierarchyLevelDetails]);
20
- return (_jsx(BaseTreeRenderer, { ...restProps, onFilterClick: onFilterClick, getHierarchyLevelDetails: getHierarchyLevelDetails, getInlineActions: nodeInlineActions }));
18
+ : [
19
+ _jsx(TreeNodeFilterAction, { node: actionsProps.targetNode, onFilter: filterHierarchyLevel, getHierarchyLevelDetails: getHierarchyLevelDetails }, "Filter"),
20
+ ];
21
+ }, [getInlineActions, filterHierarchyLevel, getHierarchyLevelDetails]);
22
+ return (_jsx(BaseTreeRenderer, { ...restProps, filterHierarchyLevel: filterHierarchyLevel, getHierarchyLevelDetails: getHierarchyLevelDetails, getInlineActions: nodeInlineActions }));
21
23
  }
22
24
  //# sourceMappingURL=TreeRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAczD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAE1F,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,YAAY,EAAE,EAAE;QACf,OAAO,gBAAgB;YACrB,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAChC,CAAC,CAAC,CAAC,KAAC,YAAY,IAAgB,IAAI,EAAE,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,wBAAwB,EAAE,wBAAwB,IAApH,QAAQ,CAAgH,CAAC,CAAC;IACpJ,CAAC,EACD,CAAC,gBAAgB,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAC5D,CAAC;IAEF,OAAO,CACL,KAAC,gBAAgB,OAAK,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,iBAAiB,GAAI,CAC3J,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 { useCallback } from \"react\";\nimport { FilterAction } from \"@itwin/presentation-hierarchies-react\";\nimport { BaseTreeRenderer } from \"./BaseTreeRenderer.js\";\n\nimport type { BaseTreeRendererProps } from \"./BaseTreeRenderer.js\";\nimport type { CallbacksWithCommonTreeRendererProps } from \"./Tree.js\";\n\n/** @beta */\nexport type TreeRendererProps = BaseTreeRendererProps;\n\n/** @beta */\nexport type ExtendedTreeRendererProps = CallbacksWithCommonTreeRendererProps<\n TreeRendererProps,\n \"getInlineActions\" | \"getMenuActions\" | \"getContextMenuActions\" | \"getTreeItemProps\"\n>;\n\n/**\n * Default renderer for rendering tree data.\n * @beta\n */\nexport function TreeRenderer(props: TreeRendererProps) {\n const { getInlineActions, getHierarchyLevelDetails, onFilterClick, ...restProps } = props;\n\n const nodeInlineActions = useCallback<Required<BaseTreeRendererProps>[\"getInlineActions\"]>(\n (actionsProps) => {\n return getInlineActions\n ? getInlineActions(actionsProps)\n : [<FilterAction key={\"Filter\"} node={actionsProps.targetNode} onFilter={onFilterClick} getHierarchyLevelDetails={getHierarchyLevelDetails} />];\n },\n [getInlineActions, onFilterClick, getHierarchyLevelDetails],\n );\n\n return (\n <BaseTreeRenderer {...restProps} onFilterClick={onFilterClick} getHierarchyLevelDetails={getHierarchyLevelDetails} getInlineActions={nodeInlineActions} />\n );\n}\n"]}
1
+ {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAczD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAEjG,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,YAAY,EAAE,EAAE;QACf,OAAO,gBAAgB;YACrB,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAChC,CAAC,CAAC;gBACE,KAAC,oBAAoB,IAEnB,IAAI,EAAE,YAAY,CAAC,UAAU,EAC7B,QAAQ,EAAE,oBAAoB,EAC9B,wBAAwB,EAAE,wBAAwB,IAH7C,QAAQ,CAIb;aACH,CAAC;IACR,CAAC,EACD,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,wBAAwB,CAAC,CACnE,CAAC;IAEF,OAAO,CACL,KAAC,gBAAgB,OACX,SAAS,EACb,oBAAoB,EAAE,oBAAoB,EAC1C,wBAAwB,EAAE,wBAAwB,EAClD,gBAAgB,EAAE,iBAAiB,GACnC,CACH,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 { useCallback } from \"react\";\nimport { TreeNodeFilterAction } from \"@itwin/presentation-hierarchies-react\";\nimport { BaseTreeRenderer } from \"./BaseTreeRenderer.js\";\n\nimport type { BaseTreeRendererProps } from \"./BaseTreeRenderer.js\";\nimport type { CallbacksWithCommonTreeRendererProps } from \"./Tree.js\";\n\n/** @beta */\nexport type TreeRendererProps = BaseTreeRendererProps;\n\n/** @beta */\nexport type ExtendedTreeRendererProps = CallbacksWithCommonTreeRendererProps<\n TreeRendererProps,\n \"getInlineActions\" | \"getMenuActions\" | \"getContextMenuActions\" | \"getTreeItemProps\"\n>;\n\n/**\n * Default renderer for rendering tree data.\n * @beta\n */\nexport function TreeRenderer(props: TreeRendererProps) {\n const { getInlineActions, getHierarchyLevelDetails, filterHierarchyLevel, ...restProps } = props;\n\n const nodeInlineActions = useCallback<Required<BaseTreeRendererProps>[\"getInlineActions\"]>(\n (actionsProps) => {\n return getInlineActions\n ? getInlineActions(actionsProps)\n : [\n <TreeNodeFilterAction\n key={\"Filter\"}\n node={actionsProps.targetNode}\n onFilter={filterHierarchyLevel}\n getHierarchyLevelDetails={getHierarchyLevelDetails}\n />,\n ];\n },\n [getInlineActions, filterHierarchyLevel, getHierarchyLevelDetails],\n );\n\n return (\n <BaseTreeRenderer\n {...restProps}\n filterHierarchyLevel={filterHierarchyLevel}\n getHierarchyLevelDetails={getHierarchyLevelDetails}\n getInlineActions={nodeInlineActions}\n />\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
- import type { PresentationHierarchyNode } from "@itwin/presentation-hierarchies-react";
1
+ import type { TreeNode } from "@itwin/presentation-hierarchies-react";
2
2
  import type { VisibilityContext } from "./TreeNodeVisibilityButton.js";
3
3
  interface UseVisibilityButtonHandlerProps {
4
- rootNodes: PresentationHierarchyNode[] | undefined;
4
+ rootNodes: TreeNode[] | undefined;
5
5
  isNodeSelected?: (nodeId: string) => boolean;
6
6
  onClick: VisibilityContext["onVisibilityButtonClick"];
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UseVisibilityButtonHandler.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAejD,gBAAgB;AAChB,MAAM,UAAU,0BAA0B,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAmC;IAChH,MAAM,iBAAiB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,uBAAuB,GAAG,WAAW,CACzC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,YAAY,CAAC,OAAO,IAAI,mBAAmB,CAAC,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/H,CAAC,EACD,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAC3C,CAAC;IAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAuC,EACvC,cAA2C,EAC3C,QAAmD;IAEnD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1D,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,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 { useCallback } from \"react\";\nimport { useLatest } from \"../internal/Utils.js\";\n\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { VisibilityContext } from \"./TreeNodeVisibilityButton.js\";\n\ninterface UseVisibilityButtonHandlerProps {\n rootNodes: PresentationHierarchyNode[] | undefined;\n isNodeSelected?: (nodeId: string) => boolean;\n onClick: VisibilityContext[\"onVisibilityButtonClick\"];\n}\n\ninterface UseVisibilityButtonHandlerResult {\n onVisibilityButtonClick: VisibilityContext[\"onVisibilityButtonClick\"];\n}\n\n/** @internal */\nexport function useVisibilityButtonHandler({ rootNodes, isNodeSelected, onClick }: UseVisibilityButtonHandlerProps): UseVisibilityButtonHandlerResult {\n const isNodeSelectedRef = useLatest(isNodeSelected);\n const rootNodesRef = useLatest(rootNodes);\n\n const onVisibilityButtonClick = useCallback<VisibilityContext[\"onVisibilityButtonClick\"]>(\n (clickedNode, state) => {\n if (!isNodeSelectedRef.current?.(clickedNode.id)) {\n onClick(clickedNode, state);\n return;\n }\n rootNodesRef.current && forEachSelectedNode(rootNodesRef.current, isNodeSelectedRef.current, (node) => onClick(node, state));\n },\n [onClick, isNodeSelectedRef, rootNodesRef],\n );\n\n return { onVisibilityButtonClick };\n}\n\nfunction forEachSelectedNode(\n nodes: Array<PresentationHierarchyNode>,\n isNodeSelected: (nodeId: string) => boolean,\n callback: (node: PresentationHierarchyNode) => void,\n) {\n nodes.forEach((node) => {\n if (isNodeSelected(node.id)) {\n callback(node);\n }\n if (node.isExpanded && typeof node.children !== \"boolean\") {\n forEachSelectedNode(node.children, isNodeSelected, callback);\n }\n });\n}\n"]}
1
+ {"version":3,"file":"UseVisibilityButtonHandler.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAejD,gBAAgB;AAChB,MAAM,UAAU,0BAA0B,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAmC;IAChH,MAAM,iBAAiB,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAE1C,MAAM,uBAAuB,GAAG,WAAW,CACzC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,YAAY,CAAC,OAAO,IAAI,mBAAmB,CAAC,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/H,CAAC,EACD,CAAC,OAAO,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAC3C,CAAC;IAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAsB,EAAE,cAA2C,EAAE,QAAkC;IAClI,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1D,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,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 { useCallback } from \"react\";\nimport { useLatest } from \"../internal/Utils.js\";\n\nimport type { TreeNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { VisibilityContext } from \"./TreeNodeVisibilityButton.js\";\n\ninterface UseVisibilityButtonHandlerProps {\n rootNodes: TreeNode[] | undefined;\n isNodeSelected?: (nodeId: string) => boolean;\n onClick: VisibilityContext[\"onVisibilityButtonClick\"];\n}\n\ninterface UseVisibilityButtonHandlerResult {\n onVisibilityButtonClick: VisibilityContext[\"onVisibilityButtonClick\"];\n}\n\n/** @internal */\nexport function useVisibilityButtonHandler({ rootNodes, isNodeSelected, onClick }: UseVisibilityButtonHandlerProps): UseVisibilityButtonHandlerResult {\n const isNodeSelectedRef = useLatest(isNodeSelected);\n const rootNodesRef = useLatest(rootNodes);\n\n const onVisibilityButtonClick = useCallback<VisibilityContext[\"onVisibilityButtonClick\"]>(\n (clickedNode, state) => {\n if (!isNodeSelectedRef.current?.(clickedNode.id)) {\n onClick(clickedNode, state);\n return;\n }\n rootNodesRef.current && forEachSelectedNode(rootNodesRef.current, isNodeSelectedRef.current, (node) => onClick(node, state));\n },\n [onClick, isNodeSelectedRef, rootNodesRef],\n );\n\n return { onVisibilityButtonClick };\n}\n\nfunction forEachSelectedNode(nodes: Array<TreeNode>, isNodeSelected: (nodeId: string) => boolean, callback: (node: TreeNode) => void) {\n nodes.forEach((node) => {\n if (isNodeSelected(node.id)) {\n callback(node);\n }\n if (node.isExpanded && typeof node.children !== \"boolean\") {\n forEachSelectedNode(node.children, isNodeSelected, callback);\n }\n });\n}\n"]}
@@ -4,7 +4,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  import { useCallback } from "react";
7
- import { FilterAction } from "@itwin/presentation-hierarchies-react";
7
+ import { TreeNodeFilterAction } from "@itwin/presentation-hierarchies-react";
8
8
  import { BaseTreeRenderer } from "./BaseTreeRenderer.js";
9
9
  import { VisibilityAction, VisibilityContextProvider } from "./TreeNodeVisibilityButton.js";
10
10
  import { useVisibilityButtonHandler } from "./UseVisibilityButtonHandler.js";
@@ -13,16 +13,16 @@ import { useVisibilityButtonHandler } from "./UseVisibilityButtonHandler.js";
13
13
  * @beta
14
14
  */
15
15
  export function VisibilityTreeRenderer(props) {
16
- const { getVisibilityButtonState, onVisibilityButtonClick: onClick, getInlineActions, onFilterClick, getHierarchyLevelDetails, ...restProps } = props;
16
+ const { getVisibilityButtonState, onVisibilityButtonClick: onClick, getInlineActions, filterHierarchyLevel, getHierarchyLevelDetails, ...restProps } = props;
17
17
  const { onVisibilityButtonClick } = useVisibilityButtonHandler({ rootNodes: props.rootNodes, isNodeSelected: props.isNodeSelected, onClick });
18
18
  const nodeInlineActions = useCallback((actionsProps) => {
19
19
  return getInlineActions
20
20
  ? getInlineActions(actionsProps)
21
21
  : [
22
22
  _jsx(VisibilityAction, { node: actionsProps.targetNode }, "Visibility"),
23
- _jsx(FilterAction, { node: actionsProps.targetNode, onFilter: onFilterClick, getHierarchyLevelDetails: getHierarchyLevelDetails }, "Filter"),
23
+ _jsx(TreeNodeFilterAction, { node: actionsProps.targetNode, onFilter: filterHierarchyLevel, getHierarchyLevelDetails: getHierarchyLevelDetails }, "Filter"),
24
24
  ];
25
- }, [onFilterClick, getHierarchyLevelDetails, getInlineActions]);
26
- return (_jsx(VisibilityContextProvider, { onVisibilityButtonClick: onVisibilityButtonClick, getVisibilityButtonState: getVisibilityButtonState, children: _jsx(BaseTreeRenderer, { ...restProps, onFilterClick: onFilterClick, getHierarchyLevelDetails: getHierarchyLevelDetails, getInlineActions: nodeInlineActions }) }));
25
+ }, [filterHierarchyLevel, getHierarchyLevelDetails, getInlineActions]);
26
+ return (_jsx(VisibilityContextProvider, { onVisibilityButtonClick: onVisibilityButtonClick, getVisibilityButtonState: getVisibilityButtonState, children: _jsx(BaseTreeRenderer, { ...restProps, filterHierarchyLevel: filterHierarchyLevel, getHierarchyLevelDetails: getHierarchyLevelDetails, getInlineActions: nodeInlineActions }) }));
27
27
  }
28
28
  //# sourceMappingURL=VisibilityTreeRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityTreeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAe7E;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,wBAAwB,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IACtJ,MAAM,EAAE,uBAAuB,EAAE,GAAG,0BAA0B,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9I,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,YAAY,EAAE,EAAE;QACf,OAAO,gBAAgB;YACrB,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAChC,CAAC,CAAC;gBACE,KAAC,gBAAgB,IAAoB,IAAI,EAAE,YAAY,CAAC,UAAU,IAA3C,YAAY,CAAmC;gBACtE,KAAC,YAAY,IAAgB,IAAI,EAAE,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,wBAAwB,EAAE,wBAAwB,IAApH,QAAQ,CAAgH;aAC5I,CAAC;IACR,CAAC,EACD,CAAC,aAAa,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,CAC5D,CAAC;IAEF,OAAO,CACL,KAAC,yBAAyB,IAAC,uBAAuB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,wBAAwB,YAC7H,KAAC,gBAAgB,OAAK,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,iBAAiB,GAAI,GAChI,CAC7B,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 { useCallback } from \"react\";\nimport { FilterAction } from \"@itwin/presentation-hierarchies-react\";\nimport { BaseTreeRenderer } from \"./BaseTreeRenderer.js\";\nimport { VisibilityAction, VisibilityContextProvider } from \"./TreeNodeVisibilityButton.js\";\nimport { useVisibilityButtonHandler } from \"./UseVisibilityButtonHandler.js\";\n\nimport type { BaseTreeRendererProps } from \"./BaseTreeRenderer.js\";\nimport type { CallbacksWithCommonTreeRendererProps } from \"./Tree.js\";\nimport type { VisibilityContext } from \"./TreeNodeVisibilityButton.js\";\n\n/** @beta */\nexport type VisibilityTreeRendererProps = BaseTreeRendererProps & VisibilityContext;\n\n/** @beta */\nexport type ExtendedVisibilityTreeRendererProps = CallbacksWithCommonTreeRendererProps<\n VisibilityTreeRendererProps,\n \"getInlineActions\" | \"getMenuActions\" | \"getContextMenuActions\" | \"getTreeItemProps\"\n>;\n\n/**\n * Tree renderer that renders tree nodes with eye checkboxes for controlling visibility of instances represented by tree nodes.\n * @beta\n */\nexport function VisibilityTreeRenderer(props: VisibilityTreeRendererProps) {\n const { getVisibilityButtonState, onVisibilityButtonClick: onClick, getInlineActions, onFilterClick, getHierarchyLevelDetails, ...restProps } = props;\n const { onVisibilityButtonClick } = useVisibilityButtonHandler({ rootNodes: props.rootNodes, isNodeSelected: props.isNodeSelected, onClick });\n\n const nodeInlineActions = useCallback<Required<BaseTreeRendererProps>[\"getInlineActions\"]>(\n (actionsProps) => {\n return getInlineActions\n ? getInlineActions(actionsProps)\n : [\n <VisibilityAction key={\"Visibility\"} node={actionsProps.targetNode} />,\n <FilterAction key={\"Filter\"} node={actionsProps.targetNode} onFilter={onFilterClick} getHierarchyLevelDetails={getHierarchyLevelDetails} />,\n ];\n },\n [onFilterClick, getHierarchyLevelDetails, getInlineActions],\n );\n\n return (\n <VisibilityContextProvider onVisibilityButtonClick={onVisibilityButtonClick} getVisibilityButtonState={getVisibilityButtonState}>\n <BaseTreeRenderer {...restProps} onFilterClick={onFilterClick} getHierarchyLevelDetails={getHierarchyLevelDetails} getInlineActions={nodeInlineActions} />\n </VisibilityContextProvider>\n );\n}\n"]}
1
+ {"version":3,"file":"VisibilityTreeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAe7E;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAC7J,MAAM,EAAE,uBAAuB,EAAE,GAAG,0BAA0B,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9I,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,YAAY,EAAE,EAAE;QACf,OAAO,gBAAgB;YACrB,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAChC,CAAC,CAAC;gBACE,KAAC,gBAAgB,IAAoB,IAAI,EAAE,YAAY,CAAC,UAAU,IAA3C,YAAY,CAAmC;gBACtE,KAAC,oBAAoB,IAEnB,IAAI,EAAE,YAAY,CAAC,UAAU,EAC7B,QAAQ,EAAE,oBAAoB,EAC9B,wBAAwB,EAAE,wBAAwB,IAH7C,QAAQ,CAIb;aACH,CAAC;IACR,CAAC,EACD,CAAC,oBAAoB,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,CACnE,CAAC;IAEF,OAAO,CACL,KAAC,yBAAyB,IAAC,uBAAuB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,wBAAwB,YAC7H,KAAC,gBAAgB,OACX,SAAS,EACb,oBAAoB,EAAE,oBAAoB,EAC1C,wBAAwB,EAAE,wBAAwB,EAClD,gBAAgB,EAAE,iBAAiB,GACnC,GACwB,CAC7B,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 { useCallback } from \"react\";\nimport { TreeNodeFilterAction } from \"@itwin/presentation-hierarchies-react\";\nimport { BaseTreeRenderer } from \"./BaseTreeRenderer.js\";\nimport { VisibilityAction, VisibilityContextProvider } from \"./TreeNodeVisibilityButton.js\";\nimport { useVisibilityButtonHandler } from \"./UseVisibilityButtonHandler.js\";\n\nimport type { BaseTreeRendererProps } from \"./BaseTreeRenderer.js\";\nimport type { CallbacksWithCommonTreeRendererProps } from \"./Tree.js\";\nimport type { VisibilityContext } from \"./TreeNodeVisibilityButton.js\";\n\n/** @beta */\nexport type VisibilityTreeRendererProps = BaseTreeRendererProps & VisibilityContext;\n\n/** @beta */\nexport type ExtendedVisibilityTreeRendererProps = CallbacksWithCommonTreeRendererProps<\n VisibilityTreeRendererProps,\n \"getInlineActions\" | \"getMenuActions\" | \"getContextMenuActions\" | \"getTreeItemProps\"\n>;\n\n/**\n * Tree renderer that renders tree nodes with eye checkboxes for controlling visibility of instances represented by tree nodes.\n * @beta\n */\nexport function VisibilityTreeRenderer(props: VisibilityTreeRendererProps) {\n const { getVisibilityButtonState, onVisibilityButtonClick: onClick, getInlineActions, filterHierarchyLevel, getHierarchyLevelDetails, ...restProps } = props;\n const { onVisibilityButtonClick } = useVisibilityButtonHandler({ rootNodes: props.rootNodes, isNodeSelected: props.isNodeSelected, onClick });\n\n const nodeInlineActions = useCallback<Required<BaseTreeRendererProps>[\"getInlineActions\"]>(\n (actionsProps) => {\n return getInlineActions\n ? getInlineActions(actionsProps)\n : [\n <VisibilityAction key={\"Visibility\"} node={actionsProps.targetNode} />,\n <TreeNodeFilterAction\n key={\"Filter\"}\n node={actionsProps.targetNode}\n onFilter={filterHierarchyLevel}\n getHierarchyLevelDetails={getHierarchyLevelDetails}\n />,\n ];\n },\n [filterHierarchyLevel, getHierarchyLevelDetails, getInlineActions],\n );\n\n return (\n <VisibilityContextProvider onVisibilityButtonClick={onVisibilityButtonClick} getVisibilityButtonState={getVisibilityButtonState}>\n <BaseTreeRenderer\n {...restProps}\n filterHierarchyLevel={filterHierarchyLevel}\n getHierarchyLevelDetails={getHierarchyLevelDetails}\n getInlineActions={nodeInlineActions}\n />\n </VisibilityContextProvider>\n );\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { BaseIdsCache } from "./caches/BaseIdsCache.js";
2
+ import type { PropsWithChildren } from "react";
3
+ import type { IModelConnection } from "@itwin/core-frontend";
4
+ import type { BaseIdsCacheProps } from "./caches/BaseIdsCache.js";
5
+ import type { GetCacheProps } from "./useTreeHooks/UseIdsCache.js";
6
+ /** @internal */
7
+ interface SharedTreeContextInternal {
8
+ getCache: <TCache extends Disposable>(props: GetCacheProps<TCache>) => TCache;
9
+ getBaseIdsCache: (props: Omit<BaseIdsCacheProps, "queryExecutor"> & {
10
+ imodel: IModelConnection;
11
+ }) => BaseIdsCache;
12
+ }
13
+ /** @internal */
14
+ export declare function useSharedTreeContextInternal(): SharedTreeContextInternal;
15
+ /** @internal */
16
+ export declare function SharedTreeContextProviderInternal({ children, showWarning }: PropsWithChildren<{
17
+ showWarning?: boolean;
18
+ }>): string | number | boolean | Iterable<import("react").ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
19
+ export {};
20
+ //# sourceMappingURL=SharedTreeContextProviderInternal.d.ts.map
@@ -0,0 +1,44 @@
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 { createContext, useCallback, useContext, useEffect } from "react";
7
+ import { createECSqlQueryExecutor } from "@itwin/presentation-core-interop";
8
+ import { BaseIdsCache } from "./caches/BaseIdsCache.js";
9
+ import { useIdsCache } from "./useTreeHooks/UseIdsCache.js";
10
+ const treeWidgetContextInternal = createContext(undefined);
11
+ /** @internal */
12
+ export function useSharedTreeContextInternal() {
13
+ const context = useContext(treeWidgetContextInternal);
14
+ if (!context) {
15
+ throw new Error("Requires `SharedTreeContextProvider` to be present in components tree above.");
16
+ }
17
+ return context;
18
+ }
19
+ /** @internal */
20
+ export function SharedTreeContextProviderInternal({ children, showWarning }) {
21
+ const context = useContext(treeWidgetContextInternal);
22
+ if (context) {
23
+ return children;
24
+ }
25
+ return _jsx(SharedTreeContextProviderInternalImpl, { showWarning: showWarning, children: children });
26
+ }
27
+ function SharedTreeContextProviderInternalImpl({ children, showWarning }) {
28
+ const { getCache } = useIdsCache();
29
+ useEffect(() => {
30
+ if (showWarning) {
31
+ // eslint-disable-next-line no-console
32
+ console.warn("Wrap tree components with a single `SharedTreeContextProvider` to improve trees' performance.");
33
+ }
34
+ }, [showWarning]);
35
+ const getBaseIdsCache = useCallback(({ elementClassName, type, imodel }) => {
36
+ return getCache({
37
+ imodel,
38
+ cacheKey: `${type}-${elementClassName}-BaseIdsCache`,
39
+ createCache: () => new BaseIdsCache({ elementClassName, type, queryExecutor: createECSqlQueryExecutor(imodel) }),
40
+ });
41
+ }, [getCache]);
42
+ return _jsx(treeWidgetContextInternal.Provider, { value: { getCache, getBaseIdsCache }, children: children });
43
+ }
44
+ //# sourceMappingURL=SharedTreeContextProviderInternal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedTreeContextProviderInternal.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/SharedTreeContextProviderInternal.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAa5D,MAAM,yBAAyB,GAAG,aAAa,CAAwC,SAAS,CAAC,CAAC;AAElG,gBAAgB;AAChB,MAAM,UAAU,4BAA4B;IAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,iCAAiC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAgD;IACvH,MAAM,OAAO,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC;IAEtD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,KAAC,qCAAqC,IAAC,WAAW,EAAE,WAAW,YAAG,QAAQ,GAAyC,CAAC;AAC7H,CAAC;AAED,SAAS,qCAAqC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAgD;IACpH,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,EAAE,CAAC;YAChB,sCAAsC;YACtC,OAAO,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;QAChH,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAClB,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAA2E,EAAE,EAAE;QAC9G,OAAO,QAAQ,CAAC;YACd,MAAM;YACN,QAAQ,EAAE,GAAG,IAAI,IAAI,gBAAgB,eAAe;YACpD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;SACjH,CAAC,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,OAAO,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAG,QAAQ,GAAsC,CAAC;AACnI,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, useCallback, useContext, useEffect } from \"react\";\nimport { createECSqlQueryExecutor } from \"@itwin/presentation-core-interop\";\nimport { BaseIdsCache } from \"./caches/BaseIdsCache.js\";\nimport { useIdsCache } from \"./useTreeHooks/UseIdsCache.js\";\n\nimport type { PropsWithChildren } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { BaseIdsCacheProps } from \"./caches/BaseIdsCache.js\";\nimport type { GetCacheProps } from \"./useTreeHooks/UseIdsCache.js\";\n\n/** @internal */\ninterface SharedTreeContextInternal {\n getCache: <TCache extends Disposable>(props: GetCacheProps<TCache>) => TCache;\n getBaseIdsCache: (props: Omit<BaseIdsCacheProps, \"queryExecutor\"> & { imodel: IModelConnection }) => BaseIdsCache;\n}\n\nconst treeWidgetContextInternal = createContext<SharedTreeContextInternal | undefined>(undefined);\n\n/** @internal */\nexport function useSharedTreeContextInternal(): SharedTreeContextInternal {\n const context = useContext(treeWidgetContextInternal);\n if (!context) {\n throw new Error(\"Requires `SharedTreeContextProvider` to be present in components tree above.\");\n }\n return context;\n}\n\n/** @internal */\nexport function SharedTreeContextProviderInternal({ children, showWarning }: PropsWithChildren<{ showWarning?: boolean }>) {\n const context = useContext(treeWidgetContextInternal);\n\n if (context) {\n return children;\n }\n return <SharedTreeContextProviderInternalImpl showWarning={showWarning}>{children}</SharedTreeContextProviderInternalImpl>;\n}\n\nfunction SharedTreeContextProviderInternalImpl({ children, showWarning }: PropsWithChildren<{ showWarning?: boolean }>) {\n const { getCache } = useIdsCache();\n useEffect(() => {\n if (showWarning) {\n // eslint-disable-next-line no-console\n console.warn(\"Wrap tree components with a single `SharedTreeContextProvider` to improve trees' performance.\");\n }\n }, [showWarning]);\n const getBaseIdsCache = useCallback(\n ({ elementClassName, type, imodel }: Omit<BaseIdsCacheProps, \"queryExecutor\"> & { imodel: IModelConnection }) => {\n return getCache({\n imodel,\n cacheKey: `${type}-${elementClassName}-BaseIdsCache`,\n createCache: () => new BaseIdsCache({ elementClassName, type, queryExecutor: createECSqlQueryExecutor(imodel) }),\n });\n },\n [getCache],\n );\n return <treeWidgetContextInternal.Provider value={{ getCache, getBaseIdsCache }}>{children}</treeWidgetContextInternal.Provider>;\n}\n"]}
@@ -11,4 +11,8 @@ export type SubCategoryId = Id64String;
11
11
  export type DefinitionContainerId = Id64String;
12
12
  /** @internal */
13
13
  export type ElementId = Id64String;
14
+ /** @internal */
15
+ export type ClassificationId = Id64String;
16
+ /** @internal */
17
+ export type ClassificationTableId = Id64String;
14
18
  //# sourceMappingURL=Types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Types.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/Types.ts"],"names":[],"mappings":"AAAA;;;gGAGgG","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 type { Id64String } from \"@itwin/core-bentley\";\n\n/** @internal */\nexport type SubjectId = Id64String;\n\n/** @internal */\nexport type ModelId = Id64String;\n\n/** @internal */\nexport type CategoryId = Id64String;\n\n/** @internal */\nexport type SubCategoryId = Id64String;\n\n/** @internal */\nexport type DefinitionContainerId = Id64String;\n\n/** @internal */\nexport type ElementId = Id64String;\n"]}
1
+ {"version":3,"file":"Types.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/Types.ts"],"names":[],"mappings":"AAAA;;;gGAGgG","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 type { Id64String } from \"@itwin/core-bentley\";\n\n/** @internal */\nexport type SubjectId = Id64String;\n\n/** @internal */\nexport type ModelId = Id64String;\n\n/** @internal */\nexport type CategoryId = Id64String;\n\n/** @internal */\nexport type SubCategoryId = Id64String;\n\n/** @internal */\nexport type DefinitionContainerId = Id64String;\n\n/** @internal */\nexport type ElementId = Id64String;\n\n/** @internal */\nexport type ClassificationId = Id64String;\n\n/** @internal */\nexport type ClassificationTableId = Id64String;\n"]}
@@ -13,5 +13,17 @@ export declare function useIModelAccess({ imodel, treeName, imodelAccess: provid
13
13
  imodelAccess: IModelAccess;
14
14
  currentHierarchyLevelSizeLimit: number;
15
15
  };
16
+ /** @internal */
17
+ export declare function createIModelAccess({ imodel, hierarchyLevelSizeLimit }: {
18
+ imodel: IModelConnection;
19
+ hierarchyLevelSizeLimit: number | "unbounded";
20
+ }): {
21
+ createQueryReader(query: import("@itwin/presentation-shared").ECSqlQueryDef, config?: import("@itwin/presentation-shared").ECSqlQueryReaderOptions & {
22
+ limit?: number | "unbounded";
23
+ }): ReturnType<import("@itwin/presentation-shared").ECSqlQueryExecutor["createQueryReader"]>;
24
+ classDerivesFrom(derivedClassFullName: string, candidateBaseClassFullName: string): Promise<boolean> | boolean;
25
+ getSchema(schemaName: string): Promise<import("@itwin/presentation-shared").EC.Schema | undefined>;
26
+ imodelKey: string;
27
+ };
16
28
  export {};
17
29
  //# sourceMappingURL=UseIModelAccess.d.ts.map
@@ -20,7 +20,8 @@ export function useIModelAccess({ imodel, treeName, imodelAccess: providedIModel
20
20
  currentHierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit,
21
21
  };
22
22
  }
23
- function createIModelAccess({ imodel, hierarchyLevelSizeLimit }) {
23
+ /** @internal */
24
+ export function createIModelAccess({ imodel, hierarchyLevelSizeLimit }) {
24
25
  const schemaProvider = createECSchemaProvider(imodel.schemaContext);
25
26
  return {
26
27
  imodelKey: imodel.key,
@@ -1 +1 @@
1
- {"version":3,"file":"UseIModelAccess.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/UseIModelAccess.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACpG,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,sCAAsC,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAehD,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAwB;IAIrI,MAAM,8BAA8B,GAAG,uBAAuB,IAAI,IAAI,CAAC;IACvE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,UAAU,CAAC,MAAM,CAAC,OAAO,CACvB,GAAG,iBAAiB,IAAI,QAAQ,EAAE,EAClC,6BAA6B,oBAAoB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,CACpG,CAAC;QACF,OAAO,oBAAoB,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACzH,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,YAAY;QACZ,8BAA8B,EAAE,8BAA8B;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAiE;IAC5H,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpE,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,GAAG;QACrB,GAAG,cAAc;QACjB,GAAG,sCAAsC,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QAC7E,GAAG,gCAAgC,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;KAC/F,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 { useMemo } from \"react\";\nimport { createECSchemaProvider, createECSqlQueryExecutor } from \"@itwin/presentation-core-interop\";\nimport { createLimitingECSqlQueryExecutor } from \"@itwin/presentation-hierarchies\";\nimport { createCachingECClassHierarchyInspector } from \"@itwin/presentation-shared\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { LOGGING_NAMESPACE } from \"../Utils.js\";\n\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { useIModelTree } from \"@itwin/presentation-hierarchies-react\";\nimport type { FunctionProps } from \"../Utils.js\";\n\ntype IModelAccess = FunctionProps<typeof useIModelTree>[\"imodelAccess\"];\n\nexport interface UseIModelAccessProps {\n imodel: IModelConnection;\n treeName: string;\n imodelAccess?: IModelAccess;\n hierarchyLevelSizeLimit?: number;\n}\n\n/** @internal */\nexport function useIModelAccess({ imodel, treeName, imodelAccess: providedIModelAccess, hierarchyLevelSizeLimit }: UseIModelAccessProps): {\n imodelAccess: IModelAccess;\n currentHierarchyLevelSizeLimit: number;\n} {\n const defaultHierarchyLevelSizeLimit = hierarchyLevelSizeLimit ?? 1000;\n const imodelAccess = useMemo(() => {\n TreeWidget.logger.logInfo(\n `${LOGGING_NAMESPACE}.${treeName}`,\n `iModel changed, now using ${providedIModelAccess ? \"provided imodel access\" : `\"${imodel.name}\"`}`,\n );\n return providedIModelAccess ?? createIModelAccess({ imodel, hierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit });\n }, [providedIModelAccess, imodel, treeName, defaultHierarchyLevelSizeLimit]);\n\n return {\n imodelAccess,\n currentHierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit,\n };\n}\n\nfunction createIModelAccess({ imodel, hierarchyLevelSizeLimit }: { imodel: IModelConnection; hierarchyLevelSizeLimit: number }) {\n const schemaProvider = createECSchemaProvider(imodel.schemaContext);\n return {\n imodelKey: imodel.key,\n ...schemaProvider,\n ...createCachingECClassHierarchyInspector({ schemaProvider, cacheSize: 100 }),\n ...createLimitingECSqlQueryExecutor(createECSqlQueryExecutor(imodel), hierarchyLevelSizeLimit),\n };\n}\n"]}
1
+ {"version":3,"file":"UseIModelAccess.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/UseIModelAccess.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACpG,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,sCAAsC,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAehD,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAwB;IAIrI,MAAM,8BAA8B,GAAG,uBAAuB,IAAI,IAAI,CAAC;IACvE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,UAAU,CAAC,MAAM,CAAC,OAAO,CACvB,GAAG,iBAAiB,IAAI,QAAQ,EAAE,EAClC,6BAA6B,oBAAoB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,CACpG,CAAC;QACF,OAAO,oBAAoB,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACzH,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,YAAY;QACZ,8BAA8B,EAAE,8BAA8B;KAC/D,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,kBAAkB,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAA+E;IACjJ,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpE,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,GAAG;QACrB,GAAG,cAAc;QACjB,GAAG,sCAAsC,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QAC7E,GAAG,gCAAgC,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;KAC/F,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 { useMemo } from \"react\";\nimport { createECSchemaProvider, createECSqlQueryExecutor } from \"@itwin/presentation-core-interop\";\nimport { createLimitingECSqlQueryExecutor } from \"@itwin/presentation-hierarchies\";\nimport { createCachingECClassHierarchyInspector } from \"@itwin/presentation-shared\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { LOGGING_NAMESPACE } from \"../Utils.js\";\n\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { useIModelTree } from \"@itwin/presentation-hierarchies-react\";\nimport type { FunctionProps } from \"../Utils.js\";\n\ntype IModelAccess = FunctionProps<typeof useIModelTree>[\"imodelAccess\"];\n\nexport interface UseIModelAccessProps {\n imodel: IModelConnection;\n treeName: string;\n imodelAccess?: IModelAccess;\n hierarchyLevelSizeLimit?: number;\n}\n\n/** @internal */\nexport function useIModelAccess({ imodel, treeName, imodelAccess: providedIModelAccess, hierarchyLevelSizeLimit }: UseIModelAccessProps): {\n imodelAccess: IModelAccess;\n currentHierarchyLevelSizeLimit: number;\n} {\n const defaultHierarchyLevelSizeLimit = hierarchyLevelSizeLimit ?? 1000;\n const imodelAccess = useMemo(() => {\n TreeWidget.logger.logInfo(\n `${LOGGING_NAMESPACE}.${treeName}`,\n `iModel changed, now using ${providedIModelAccess ? \"provided imodel access\" : `\"${imodel.name}\"`}`,\n );\n return providedIModelAccess ?? createIModelAccess({ imodel, hierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit });\n }, [providedIModelAccess, imodel, treeName, defaultHierarchyLevelSizeLimit]);\n\n return {\n imodelAccess,\n currentHierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit,\n };\n}\n\n/** @internal */\nexport function createIModelAccess({ imodel, hierarchyLevelSizeLimit }: { imodel: IModelConnection; hierarchyLevelSizeLimit: number | \"unbounded\" }) {\n const schemaProvider = createECSchemaProvider(imodel.schemaContext);\n return {\n imodelKey: imodel.key,\n ...schemaProvider,\n ...createCachingECClassHierarchyInspector({ schemaProvider, cacheSize: 100 }),\n ...createLimitingECSqlQueryExecutor(createECSqlQueryExecutor(imodel), hierarchyLevelSizeLimit),\n };\n}\n"]}
@@ -1,18 +1,20 @@
1
1
  import { ProcessedHierarchyNode } from "@itwin/presentation-hierarchies";
2
2
  import type { Observable } from "rxjs";
3
3
  import type { Id64Arg, Id64Array, Id64String } from "@itwin/core-bentley";
4
+ import type { InstanceKey } from "@itwin/presentation-shared";
5
+ import type { ElementId } from "./Types.js";
4
6
  /** @internal */
5
7
  export declare function setDifference<T>(lhs: Readonly<Iterable<T>>, rhs: ReadonlySet<T>): Set<T>;
6
8
  /** @internal */
7
- export declare function setIntersection<T>(lhs: Readonly<Iterable<T>>, rhs: ReadonlySet<T>): Set<T>;
9
+ export declare function setIntersection<T>(lhs: ReadonlySet<T>, rhs: ReadonlySet<T>): Set<T>;
10
+ /** @internal */
11
+ export declare function countInSet(ids: Id64Arg, set: ReadonlySet<Id64String> | undefined): number;
8
12
  /** @internal */
9
13
  export declare function getOptimalBatchSize({ totalSize, maximumBatchSize }: {
10
14
  totalSize: number;
11
15
  maximumBatchSize: number;
12
16
  }): number;
13
17
  /** @internal */
14
- export declare function getDistinctMapValues(map: Map<any, Array<string> | Set<string>>): Set<string>;
15
- /** @internal */
16
18
  export declare function createIdsSelector(ids: Id64Array): string;
17
19
  /** @internal */
18
20
  export declare function parseIdsSelectorResult(selectorResult: any): Id64Array;
@@ -34,8 +36,6 @@ export declare function getClassesByView(viewType: "2d" | "3d"): {
34
36
  };
35
37
  /** @internal */
36
38
  export declare function joinId64Arg(arg: Id64Arg, separator: string): string;
37
- /** @internal */
38
- export declare function getSetFromId64Arg(arg: Id64Arg): Set<Id64String>;
39
39
  /**
40
40
  * Creates an Observable from provided props. If `releaseOnCount` is provided, main thread will be released after processing specified number of items.
41
41
  * @internal
@@ -76,11 +76,22 @@ export declare function updateChildrenTree<T extends object = {}>({ tree, additi
76
76
  additionalPropsGetter: (id: Id64String, additionalProps?: T) => T;
77
77
  }): void;
78
78
  /** @internal */
79
- export declare function groupingNodeHasSearchTargets(children: ProcessedHierarchyNode[]): {
79
+ export declare function groupingNodeDataFromChildren(children: ProcessedHierarchyNode[]): {
80
80
  hasSearchTargetAncestor: true;
81
81
  hasDirectNonSearchTargets: undefined;
82
+ childrenCount: number;
83
+ searchTargets: undefined;
82
84
  } | {
83
85
  hasSearchTargetAncestor: false;
84
86
  hasDirectNonSearchTargets: boolean;
87
+ childrenCount: number;
88
+ searchTargets: Map<Id64String, {
89
+ childrenCount: number;
90
+ }>;
85
91
  };
92
+ /** @internal */
93
+ export declare function getParentElementsIdsPath({ parentInstanceKeys, topMostParentElementId, }: {
94
+ parentInstanceKeys: Array<Array<InstanceKey>>;
95
+ topMostParentElementId: ElementId;
96
+ }): Array<Id64Arg>;
86
97
  //# sourceMappingURL=Utils.d.ts.map