@itwin/tree-widget-react 4.0.0-alpha.6 → 4.0.0-alpha.8

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 (206) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/README.md +2 -1
  3. package/lib/esm/tree-widget-react/TreeWidget.d.ts +6 -1
  4. package/lib/esm/tree-widget-react/TreeWidget.js +19 -2
  5. package/lib/esm/tree-widget-react/TreeWidget.js.map +1 -1
  6. package/lib/esm/tree-widget-react/components/TreeWidgetComponentImpl.d.ts +6 -0
  7. package/lib/esm/tree-widget-react/components/TreeWidgetComponentImpl.js +22 -23
  8. package/lib/esm/tree-widget-react/components/TreeWidgetComponentImpl.js.map +1 -1
  9. package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js +1 -1
  10. package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js.map +1 -1
  11. package/lib/esm/tree-widget-react/components/tree-header/ErrorState.js +1 -1
  12. package/lib/esm/tree-widget-react/components/tree-header/ErrorState.js.map +1 -1
  13. package/lib/esm/tree-widget-react/components/tree-header/SearchBox.d.ts +1 -1
  14. package/lib/esm/tree-widget-react/components/tree-header/SearchBox.js +4 -4
  15. package/lib/esm/tree-widget-react/components/tree-header/SearchBox.js.map +1 -1
  16. package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.css +2 -0
  17. package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.css +1 -0
  18. package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.d.ts +12 -4
  19. package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js +13 -9
  20. package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js.map +1 -1
  21. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.d.ts +2 -2
  22. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js +2 -2
  23. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js.map +1 -1
  24. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.d.ts +9 -2
  25. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js +53 -7
  26. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -1
  27. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.d.ts +1 -1
  28. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js +1 -1
  29. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -1
  30. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +17 -3
  31. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js +561 -161
  32. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -1
  33. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.d.ts +6 -2
  34. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js +46 -117
  35. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js.map +1 -1
  36. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.d.ts +30 -15
  37. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js +188 -38
  38. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js.map +1 -1
  39. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.d.ts +18 -3
  40. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.js +30 -3
  41. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.js.map +1 -1
  42. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeVisibilityHandler.d.ts +24 -0
  43. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeVisibilityHandler.js +701 -0
  44. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeVisibilityHandler.js.map +1 -0
  45. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/FilteredTree.d.ts +39 -0
  46. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/FilteredTree.js +221 -0
  47. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/FilteredTree.js.map +1 -0
  48. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseFilteredPaths.d.ts +25 -0
  49. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseFilteredPaths.js +133 -0
  50. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseFilteredPaths.js.map +1 -0
  51. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseIdsCache.d.ts +8 -0
  52. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseIdsCache.js +48 -0
  53. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseIdsCache.js.map +1 -0
  54. package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.d.ts +5 -17
  55. package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.js +5 -62
  56. package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.js.map +1 -1
  57. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.d.ts +2 -2
  58. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js +11 -5
  59. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js.map +1 -1
  60. package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.d.ts +1 -0
  61. package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.js +13 -11
  62. package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.js.map +1 -1
  63. package/lib/esm/tree-widget-react/components/trees/common/UseTelemetryContext.d.ts +1 -0
  64. package/lib/esm/tree-widget-react/components/trees/common/UseTelemetryContext.js +2 -1
  65. package/lib/esm/tree-widget-react/components/trees/common/UseTelemetryContext.js.map +1 -1
  66. package/lib/esm/tree-widget-react/components/trees/common/Utils.d.ts +38 -23
  67. package/lib/esm/tree-widget-react/components/trees/common/Utils.js +65 -47
  68. package/lib/esm/tree-widget-react/components/trees/common/Utils.js.map +1 -1
  69. package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.d.ts +1 -1
  70. package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.js +4 -4
  71. package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.js.map +1 -1
  72. package/lib/esm/tree-widget-react/components/trees/common/components/Delayed.d.ts +1 -0
  73. package/lib/esm/tree-widget-react/components/trees/common/components/Delayed.js +1 -0
  74. package/lib/esm/tree-widget-react/components/trees/common/components/Delayed.js.map +1 -1
  75. package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.d.ts +1 -0
  76. package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.js +1 -0
  77. package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.js.map +1 -1
  78. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.css +2 -1
  79. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.d.ts +3 -3
  80. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js +15 -6
  81. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js.map +1 -1
  82. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.d.ts +6 -4
  83. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.js +20 -25
  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.d.ts +1 -1
  86. package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js +10 -4
  87. package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js.map +1 -1
  88. package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.d.ts +1 -0
  89. package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.js +7 -3
  90. package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.js.map +1 -1
  91. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTree.js +1 -1
  92. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTree.js.map +1 -1
  93. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.d.ts +1 -1
  94. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js +12 -11
  95. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -1
  96. package/lib/esm/tree-widget-react/components/trees/common/internal/AlwaysAndNeverDrawnElementInfo.d.ts +44 -0
  97. package/lib/esm/tree-widget-react/components/trees/{models-tree → common}/internal/AlwaysAndNeverDrawnElementInfo.js +81 -31
  98. package/lib/esm/tree-widget-react/components/trees/common/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  99. package/lib/esm/tree-widget-react/components/trees/common/internal/ClassNameDefinitions.d.ts +33 -0
  100. package/lib/esm/tree-widget-react/components/trees/common/internal/ClassNameDefinitions.js +37 -0
  101. package/lib/esm/tree-widget-react/components/trees/common/internal/ClassNameDefinitions.js.map +1 -0
  102. package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.d.ts +16 -0
  103. package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.js +72 -0
  104. package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.js.map +1 -0
  105. package/lib/esm/tree-widget-react/components/trees/common/{Rxjs.d.ts → internal/Rxjs.d.ts} +9 -2
  106. package/lib/esm/tree-widget-react/components/trees/common/{Rxjs.js → internal/Rxjs.js} +9 -2
  107. package/lib/esm/tree-widget-react/components/trees/common/internal/Rxjs.js.map +1 -0
  108. package/lib/esm/tree-widget-react/components/trees/common/{Tooltip.d.ts → internal/Tooltip.d.ts} +4 -8
  109. package/lib/esm/tree-widget-react/components/trees/common/{Tooltip.js → internal/Tooltip.js} +4 -10
  110. package/lib/esm/tree-widget-react/components/trees/common/internal/Tooltip.js.map +1 -0
  111. package/lib/esm/tree-widget-react/components/trees/common/internal/Types.d.ts +14 -0
  112. package/lib/esm/tree-widget-react/components/{tree-header/SearchBox.css → trees/common/internal/Types.js} +2 -4
  113. package/lib/esm/tree-widget-react/components/trees/common/internal/Types.js.map +1 -0
  114. package/lib/esm/tree-widget-react/components/trees/common/internal/UseActiveViewport.js.map +1 -0
  115. package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchiesLocalization.d.ts → internal/UseHierarchiesLocalization.d.ts} +1 -0
  116. package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchiesLocalization.js → internal/UseHierarchiesLocalization.js} +6 -2
  117. package/lib/esm/tree-widget-react/components/trees/common/internal/UseHierarchiesLocalization.js.map +1 -0
  118. package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchyFiltering.d.ts → internal/UseHierarchyFiltering.d.ts} +1 -0
  119. package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchyFiltering.js → internal/UseHierarchyFiltering.js} +4 -3
  120. package/lib/esm/tree-widget-react/components/trees/common/internal/UseHierarchyFiltering.js.map +1 -0
  121. package/lib/esm/tree-widget-react/components/trees/common/{UseIModelChangeListener.d.ts → internal/UseIModelChangeListener.d.ts} +1 -0
  122. package/lib/esm/tree-widget-react/components/trees/common/{UseIModelChangeListener.js → internal/UseIModelChangeListener.js} +1 -0
  123. package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelChangeListener.js.map +1 -0
  124. package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.d.ts +47 -0
  125. package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js +101 -0
  126. package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js.map +1 -0
  127. package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityChangeEventListener.d.ts +20 -0
  128. package/lib/esm/tree-widget-react/components/trees/{models-tree → common}/internal/VisibilityChangeEventListener.js +17 -9
  129. package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityChangeEventListener.js.map +1 -0
  130. package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.d.ts +63 -0
  131. package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js +210 -0
  132. package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js.map +1 -0
  133. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +2 -2
  134. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js +8 -8
  135. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  136. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +1 -1
  137. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  138. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +1 -0
  139. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +1 -0
  140. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -1
  141. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.d.ts +4 -2
  142. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js +22 -18
  143. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  144. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +1 -1
  145. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js +1 -1
  146. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  147. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +13 -0
  148. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +39 -38
  149. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -1
  150. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +5 -5
  151. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +25 -24
  152. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -1
  153. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.d.ts +2 -2
  154. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js +2 -2
  155. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js.map +1 -1
  156. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js +15 -11
  157. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
  158. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.d.ts +1 -1
  159. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js +1 -1
  160. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  161. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.d.ts +7 -2
  162. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js +73 -70
  163. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -1
  164. package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js +36 -202
  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/FilteredTree.d.ts +7 -9
  167. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/FilteredTree.js +4 -6
  168. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/FilteredTree.js.map +1 -1
  169. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +4 -5
  170. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js +54 -104
  171. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -1
  172. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +0 -26
  173. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +80 -359
  174. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -1
  175. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseFilteredPaths.d.ts +27 -0
  176. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseFilteredPaths.js +170 -0
  177. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseFilteredPaths.js.map +1 -0
  178. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseIdsCache.d.ts +8 -0
  179. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseIdsCache.js +47 -0
  180. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseIdsCache.js.map +1 -0
  181. package/lib/public/locales/en/TreeWidget.json +13 -59
  182. package/package.json +19 -20
  183. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesVisibilityHandler.d.ts +0 -37
  184. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesVisibilityHandler.js +0 -214
  185. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesVisibilityHandler.js.map +0 -1
  186. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/ClassNameDefinitions.d.ts +0 -7
  187. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/ClassNameDefinitions.js +0 -11
  188. package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/ClassNameDefinitions.js.map +0 -1
  189. package/lib/esm/tree-widget-react/components/trees/common/Rxjs.js.map +0 -1
  190. package/lib/esm/tree-widget-react/components/trees/common/Tooltip.js.map +0 -1
  191. package/lib/esm/tree-widget-react/components/trees/common/UseActiveViewport.js.map +0 -1
  192. package/lib/esm/tree-widget-react/components/trees/common/UseFiltering.d.ts +0 -11
  193. package/lib/esm/tree-widget-react/components/trees/common/UseFiltering.js +0 -24
  194. package/lib/esm/tree-widget-react/components/trees/common/UseFiltering.js.map +0 -1
  195. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchiesLocalization.js.map +0 -1
  196. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyFiltering.js.map +0 -1
  197. package/lib/esm/tree-widget-react/components/trees/common/UseIModelChangeListener.js.map +0 -1
  198. package/lib/esm/tree-widget-react/components/trees/models-tree/Utils.d.ts +0 -7
  199. package/lib/esm/tree-widget-react/components/trees/models-tree/Utils.js +0 -21
  200. package/lib/esm/tree-widget-react/components/trees/models-tree/Utils.js.map +0 -1
  201. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +0 -29
  202. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +0 -1
  203. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +0 -12
  204. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +0 -1
  205. /package/lib/esm/tree-widget-react/components/trees/common/{UseActiveViewport.d.ts → internal/UseActiveViewport.d.ts} +0 -0
  206. /package/lib/esm/tree-widget-react/components/trees/common/{UseActiveViewport.js → internal/UseActiveViewport.js} +0 -0
@@ -0,0 +1,20 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { BeEvent } from "@itwin/core-bentley";
3
+ import type { Viewport } from "@itwin/core-frontend";
4
+ /** @internal */
5
+ export interface IVisibilityChangeEventListener extends Disposable {
6
+ onVisibilityChange: BeEvent<() => void>;
7
+ suppressChangeEvents(): void;
8
+ resumeChangeEvents(): void;
9
+ }
10
+ /** @internal */
11
+ export declare function createVisibilityChangeEventListener(props: {
12
+ viewport: Viewport;
13
+ listeners: {
14
+ elements?: boolean;
15
+ categories?: boolean;
16
+ displayStyle?: boolean;
17
+ models?: boolean;
18
+ };
19
+ }): IVisibilityChangeEventListener;
20
+ //# sourceMappingURL=VisibilityChangeEventListener.d.ts.map
@@ -4,7 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { BeEvent } from "@itwin/core-bentley";
6
6
  /** @internal */
7
- export function createVisibilityChangeEventListener(viewport) {
7
+ export function createVisibilityChangeEventListener(props) {
8
8
  const onVisibilityChange = new BeEvent();
9
9
  let pendingVisibilityChange;
10
10
  let suppressChangeEvents = 0;
@@ -17,16 +17,24 @@ export function createVisibilityChangeEventListener(viewport) {
17
17
  pendingVisibilityChange = undefined;
18
18
  });
19
19
  };
20
- const listeners = [
21
- viewport.onViewedCategoriesPerModelChanged.addListener(handleVisibilityChange),
22
- viewport.onViewedCategoriesChanged.addListener(handleVisibilityChange),
23
- viewport.onViewedModelsChanged.addListener(handleVisibilityChange),
24
- viewport.onAlwaysDrawnChanged.addListener(handleVisibilityChange),
25
- viewport.onNeverDrawnChanged.addListener(handleVisibilityChange),
26
- ];
20
+ const listeners = new Array();
21
+ if (props.listeners.elements) {
22
+ listeners.push(props.viewport.onAlwaysDrawnChanged.addListener(handleVisibilityChange));
23
+ listeners.push(props.viewport.onNeverDrawnChanged.addListener(handleVisibilityChange));
24
+ }
25
+ if (props.listeners.categories) {
26
+ listeners.push(props.viewport.onViewedCategoriesPerModelChanged.addListener(handleVisibilityChange));
27
+ listeners.push(props.viewport.onViewedCategoriesChanged.addListener(handleVisibilityChange));
28
+ }
29
+ if (props.listeners.displayStyle) {
30
+ listeners.push(props.viewport.onDisplayStyleChanged.addListener(handleVisibilityChange));
31
+ }
32
+ if (props.listeners.models) {
33
+ listeners.push(props.viewport.onViewedModelsChanged.addListener(handleVisibilityChange));
34
+ }
27
35
  return {
28
36
  onVisibilityChange,
29
- dispose: () => {
37
+ [Symbol.dispose]() {
30
38
  if (pendingVisibilityChange) {
31
39
  clearTimeout(pendingVisibilityChange);
32
40
  pendingVisibilityChange = undefined;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisibilityChangeEventListener.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/VisibilityChangeEventListener.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAW9C,gBAAgB;AAChB,MAAM,UAAU,mCAAmC,CAAC,KAQnD;IACC,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAAc,CAAC;IACrD,IAAI,uBAAkE,CAAC;IACvE,IAAI,oBAAoB,GAAW,CAAC,CAAC;IACrC,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,IAAI,uBAAuB,IAAI,oBAAoB,GAAG,CAAC,EAAE;YACvD,OAAO;SACR;QACD,uBAAuB,GAAG,UAAU,CAAC,GAAG,EAAE;YACxC,kBAAkB,CAAC,UAAU,EAAE,CAAC;YAChC,uBAAuB,GAAG,SAAS,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,KAAK,EAAc,CAAC;IAE1C,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE;QAC5B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACxF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC;KACxF;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE;QAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iCAAiC,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACrG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC;KAC9F;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE;QAChC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC;KAC1F;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;QAC1B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC;KAC1F;IAED,OAAO;QACL,kBAAkB;QAClB,CAAC,MAAM,CAAC,OAAO,CAAC;YACd,IAAI,uBAAuB,EAAE;gBAC3B,YAAY,CAAC,uBAAuB,CAAC,CAAC;gBACtC,uBAAuB,GAAG,SAAS,CAAC;aACrC;YACD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9B,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,oBAAoB,EAAE,GAAG,EAAE;YACzB,oBAAoB,EAAE,CAAC;QACzB,CAAC;QACD,kBAAkB,EAAE,GAAG,EAAE;YACvB,oBAAoB,EAAE,CAAC;YACvB,IAAI,oBAAoB,KAAK,CAAC,EAAE;gBAC9B,sBAAsB,EAAE,CAAC;aAC1B;QACH,CAAC;KACF,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 { BeEvent } from \"@itwin/core-bentley\";\n\nimport type { Viewport } from \"@itwin/core-frontend\";\n\n/** @internal */\nexport interface IVisibilityChangeEventListener extends Disposable {\n onVisibilityChange: BeEvent<() => void>;\n suppressChangeEvents(): void;\n resumeChangeEvents(): void;\n}\n\n/** @internal */\nexport function createVisibilityChangeEventListener(props: {\n viewport: Viewport;\n listeners: {\n elements?: boolean;\n categories?: boolean;\n displayStyle?: boolean;\n models?: boolean;\n };\n}): IVisibilityChangeEventListener {\n const onVisibilityChange = new BeEvent<() => void>();\n let pendingVisibilityChange: undefined | ReturnType<typeof setTimeout>;\n let suppressChangeEvents: number = 0;\n const handleVisibilityChange = () => {\n if (pendingVisibilityChange || suppressChangeEvents > 0) {\n return;\n }\n pendingVisibilityChange = setTimeout(() => {\n onVisibilityChange.raiseEvent();\n pendingVisibilityChange = undefined;\n });\n };\n\n const listeners = new Array<() => void>();\n\n if (props.listeners.elements) {\n listeners.push(props.viewport.onAlwaysDrawnChanged.addListener(handleVisibilityChange));\n listeners.push(props.viewport.onNeverDrawnChanged.addListener(handleVisibilityChange));\n }\n if (props.listeners.categories) {\n listeners.push(props.viewport.onViewedCategoriesPerModelChanged.addListener(handleVisibilityChange));\n listeners.push(props.viewport.onViewedCategoriesChanged.addListener(handleVisibilityChange));\n }\n if (props.listeners.displayStyle) {\n listeners.push(props.viewport.onDisplayStyleChanged.addListener(handleVisibilityChange));\n }\n if (props.listeners.models) {\n listeners.push(props.viewport.onViewedModelsChanged.addListener(handleVisibilityChange));\n }\n\n return {\n onVisibilityChange,\n [Symbol.dispose]() {\n if (pendingVisibilityChange) {\n clearTimeout(pendingVisibilityChange);\n pendingVisibilityChange = undefined;\n }\n listeners.forEach((x) => x());\n listeners.length = 0;\n },\n suppressChangeEvents: () => {\n suppressChangeEvents++;\n },\n resumeChangeEvents: () => {\n suppressChangeEvents--;\n if (suppressChangeEvents === 0) {\n handleVisibilityChange();\n }\n },\n };\n}\n"]}
@@ -0,0 +1,63 @@
1
+ import type { Viewport } from "@itwin/core-frontend";
2
+ import type { Observable, OperatorFunction } from "rxjs";
3
+ import type { Id64Array, Id64String } from "@itwin/core-bentley";
4
+ import type { NonPartialVisibilityStatus } from "./Tooltip.js";
5
+ import type { VisibilityStatus } from "../UseHierarchyVisibility.js";
6
+ import type { ElementId, ModelId } from "./Types.js";
7
+ import type { CategoryInfo } from "../CategoriesVisibilityUtils.js";
8
+ /** @internal */
9
+ export declare function mergeVisibilityStatuses(obs: Observable<VisibilityStatus>): Observable<VisibilityStatus>;
10
+ /** @internal */
11
+ export declare function getSubModeledElementsVisibilityStatus({ parentNodeVisibilityStatus, getModelVisibilityStatus, }: {
12
+ parentNodeVisibilityStatus: VisibilityStatus;
13
+ getModelVisibilityStatus: ({ modelId }: {
14
+ modelId: Id64String;
15
+ }) => Observable<VisibilityStatus>;
16
+ }): OperatorFunction<Id64Array, VisibilityStatus>;
17
+ /** @internal */
18
+ export declare function filterSubModeledElementIds({ doesSubModelExist, }: {
19
+ doesSubModelExist: (elementId: Id64String) => Promise<boolean>;
20
+ }): OperatorFunction<Array<ElementId>, Array<ModelId>>;
21
+ /** @internal */
22
+ export declare function changeElementStateNoChildrenOperator(props: {
23
+ on: boolean;
24
+ isDisplayedByDefault: boolean;
25
+ viewport: Viewport;
26
+ }): OperatorFunction<string, void>;
27
+ /** @internal */
28
+ export declare function getVisibilityFromAlwaysAndNeverDrawnElementsImpl(props: {
29
+ alwaysDrawn: Set<ElementId> | undefined;
30
+ neverDrawn: Set<ElementId> | undefined;
31
+ totalCount: number;
32
+ viewport: Viewport;
33
+ } & GetVisibilityFromAlwaysAndNeverDrawnElementsProps): VisibilityStatus;
34
+ /** @internal */
35
+ export declare function getElementOverriddenVisibility(props: {
36
+ elementId: Id64String;
37
+ viewport: Viewport;
38
+ }): NonPartialVisibilityStatus | undefined;
39
+ /** @internal */
40
+ export interface GetVisibilityFromAlwaysAndNeverDrawnElementsProps {
41
+ /** Status when always/never lists are empty and exclusive mode is off */
42
+ defaultStatus: () => VisibilityStatus;
43
+ }
44
+ /** @internal */
45
+ export declare function getElementVisibility(viewsModel: boolean, overridenVisibility: NonPartialVisibilityStatus | undefined, categoryVisibility: NonPartialVisibilityStatus, subModelVisibilityStatus?: VisibilityStatus): VisibilityStatus;
46
+ /**
47
+ * Toggles visibility of categories to show or hide.
48
+ * @internal
49
+ */
50
+ export declare function toggleAllCategories(viewport: Viewport, display: boolean): Promise<void>;
51
+ /**
52
+ * Changes category display in the viewport.
53
+ * @internal
54
+ */
55
+ export declare function enableCategoryDisplay(viewport: Viewport, categoryIds: Id64Array, enabled: boolean, enableAllSubCategories?: boolean): Promise<void>;
56
+ /**
57
+ * Changes subcategory display in the viewport
58
+ * @internal
59
+ */
60
+ export declare function enableSubCategoryDisplay(viewport: Viewport, subCategoryId: Id64String, enabled: boolean): void;
61
+ /** @internal */
62
+ export declare function loadCategoriesFromViewport(vp: Viewport): Promise<CategoryInfo[]>;
63
+ //# sourceMappingURL=VisibilityUtils.d.ts.map
@@ -0,0 +1,210 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { filter, from, map, mergeAll, mergeMap, of, reduce, startWith, toArray } from "rxjs";
6
+ import { QueryRowFormat } from "@itwin/core-common";
7
+ import { PerModelCategoryVisibility } from "@itwin/core-frontend";
8
+ import { reduceWhile } from "./Rxjs.js";
9
+ import { createVisibilityStatus } from "./Tooltip.js";
10
+ import { getClassesByView, releaseMainThreadOnItemsCount } from "./Utils.js";
11
+ function mergeVisibilities(obs) {
12
+ return obs.pipe(reduceWhile((x) => x.allVisible || x.allHidden, (acc, val) => {
13
+ acc.allVisible &&= val === "visible";
14
+ acc.allHidden &&= val === "hidden";
15
+ return acc;
16
+ }, { allVisible: true, allHidden: true }), map((x) => {
17
+ if (!x) {
18
+ return "empty";
19
+ }
20
+ return x.allVisible ? "visible" : x.allHidden ? "hidden" : "partial";
21
+ }));
22
+ }
23
+ /** @internal */
24
+ export function mergeVisibilityStatuses(obs) {
25
+ return obs.pipe(map((visibilityStatus) => visibilityStatus.state), mergeVisibilities, map((visibility) => {
26
+ if (visibility === "empty") {
27
+ visibility = "visible";
28
+ }
29
+ return createVisibilityStatus(visibility);
30
+ }));
31
+ }
32
+ /** @internal */
33
+ export function getSubModeledElementsVisibilityStatus({ parentNodeVisibilityStatus, getModelVisibilityStatus, }) {
34
+ return (obs) => {
35
+ return obs.pipe(
36
+ // combine visibility status of sub-models with visibility status of parent node
37
+ mergeMap((modeledElementIds) => {
38
+ if (modeledElementIds.length === 0) {
39
+ return of(parentNodeVisibilityStatus);
40
+ }
41
+ return from(modeledElementIds).pipe(mergeMap((modeledElementId) => getModelVisibilityStatus({ modelId: modeledElementId })), startWith(parentNodeVisibilityStatus), mergeVisibilityStatuses);
42
+ }));
43
+ };
44
+ }
45
+ /** @internal */
46
+ export function filterSubModeledElementIds({ doesSubModelExist, }) {
47
+ return (obs) => {
48
+ return obs.pipe(mergeAll(), mergeMap(async (elementId) => ({ elementId, hasSubModel: await doesSubModelExist(elementId) })), filter(({ hasSubModel }) => hasSubModel), map(({ elementId }) => elementId), toArray());
49
+ };
50
+ }
51
+ /** @internal */
52
+ export function changeElementStateNoChildrenOperator(props) {
53
+ return (elementIds) => {
54
+ const { on, isDisplayedByDefault } = props;
55
+ const isAlwaysDrawnExclusive = props.viewport.isAlwaysDrawnExclusive;
56
+ return elementIds.pipe(releaseMainThreadOnItemsCount(500), reduce((acc, elementId) => {
57
+ if (acc.alwaysDrawn === undefined || acc.neverDrawn === undefined) {
58
+ acc.alwaysDrawn = new Set(props.viewport.alwaysDrawn || []);
59
+ acc.neverDrawn = new Set(props.viewport.neverDrawn || []);
60
+ }
61
+ if (on) {
62
+ const wasRemoved = acc.neverDrawn.delete(elementId);
63
+ acc.changedNeverDrawn ||= wasRemoved;
64
+ // If exclusive mode is enabled, we must add the element to the always drawn list.
65
+ if ((!isDisplayedByDefault || isAlwaysDrawnExclusive) && !acc.alwaysDrawn.has(elementId)) {
66
+ acc.alwaysDrawn.add(elementId);
67
+ acc.changedAlwaysDrawn = true;
68
+ }
69
+ }
70
+ else {
71
+ const wasRemoved = acc.alwaysDrawn.delete(elementId);
72
+ acc.changedAlwaysDrawn ||= wasRemoved;
73
+ // If exclusive mode is not enabled, we have to add the element to the never drawn list.
74
+ if (isDisplayedByDefault && !isAlwaysDrawnExclusive && !acc.neverDrawn.has(elementId)) {
75
+ acc.neverDrawn.add(elementId);
76
+ acc.changedNeverDrawn = true;
77
+ }
78
+ }
79
+ return acc;
80
+ }, {
81
+ changedNeverDrawn: false,
82
+ changedAlwaysDrawn: false,
83
+ neverDrawn: undefined,
84
+ alwaysDrawn: undefined,
85
+ }), map((state) => {
86
+ state.changedNeverDrawn && state.neverDrawn && props.viewport.setNeverDrawn(state.neverDrawn);
87
+ state.changedAlwaysDrawn && state.alwaysDrawn && props.viewport.setAlwaysDrawn(state.alwaysDrawn, props.viewport.isAlwaysDrawnExclusive);
88
+ }));
89
+ };
90
+ }
91
+ /** @internal */
92
+ export function getVisibilityFromAlwaysAndNeverDrawnElementsImpl(props) {
93
+ const { alwaysDrawn, neverDrawn, totalCount, viewport } = props;
94
+ if (neverDrawn?.size === totalCount) {
95
+ return createVisibilityStatus("hidden");
96
+ }
97
+ if (alwaysDrawn?.size === totalCount) {
98
+ return createVisibilityStatus("visible");
99
+ }
100
+ if (viewport.isAlwaysDrawnExclusive) {
101
+ return createVisibilityStatus(alwaysDrawn?.size ? "partial" : "hidden");
102
+ }
103
+ const status = props.defaultStatus();
104
+ if ((status.state === "visible" && neverDrawn?.size) || (status.state === "hidden" && alwaysDrawn?.size)) {
105
+ return createVisibilityStatus("partial");
106
+ }
107
+ return status;
108
+ }
109
+ /** @internal */
110
+ export function getElementOverriddenVisibility(props) {
111
+ const { viewport, elementId } = props;
112
+ if (viewport.neverDrawn?.has(elementId)) {
113
+ return createVisibilityStatus("hidden");
114
+ }
115
+ if (viewport.alwaysDrawn?.has(elementId)) {
116
+ return createVisibilityStatus("visible");
117
+ }
118
+ if (viewport.isAlwaysDrawnExclusive) {
119
+ return createVisibilityStatus("hidden");
120
+ }
121
+ return undefined;
122
+ }
123
+ /** @internal */
124
+ export function getElementVisibility(viewsModel, overridenVisibility, categoryVisibility, subModelVisibilityStatus) {
125
+ if (subModelVisibilityStatus?.state === "partial") {
126
+ return createVisibilityStatus("partial");
127
+ }
128
+ if (!viewsModel) {
129
+ return createVisibilityStatus(subModelVisibilityStatus?.state === "visible" ? "partial" : "hidden");
130
+ }
131
+ const elementVisibilityWithoutSubModels = overridenVisibility ?? categoryVisibility;
132
+ if (!subModelVisibilityStatus) {
133
+ return elementVisibilityWithoutSubModels;
134
+ }
135
+ if (elementVisibilityWithoutSubModels.state === subModelVisibilityStatus.state) {
136
+ return elementVisibilityWithoutSubModels;
137
+ }
138
+ return createVisibilityStatus("partial");
139
+ }
140
+ /**
141
+ * Toggles visibility of categories to show or hide.
142
+ * @internal
143
+ */
144
+ export async function toggleAllCategories(viewport, display) {
145
+ const categoryIds = await getCategoryIds(viewport);
146
+ if (categoryIds.length === 0) {
147
+ return;
148
+ }
149
+ await enableCategoryDisplay(viewport, categoryIds, display);
150
+ }
151
+ /**
152
+ * Gets ids of all categories from specified imodel and viewport.
153
+ * @internal
154
+ */
155
+ async function getCategoryIds(viewport) {
156
+ const categories = await loadCategoriesFromViewport(viewport);
157
+ return categories.map((category) => category.categoryId);
158
+ }
159
+ /**
160
+ * Changes category display in the viewport.
161
+ * @internal
162
+ */
163
+ export async function enableCategoryDisplay(viewport, categoryIds, enabled, enableAllSubCategories = true) {
164
+ viewport.changeCategoryDisplay(categoryIds, enabled, enableAllSubCategories);
165
+ // remove category overrides per model
166
+ const modelsContainingOverrides = new Array();
167
+ for (const ovr of viewport.perModelCategoryVisibility) {
168
+ if (categoryIds.findIndex((id) => id === ovr.categoryId) !== -1) {
169
+ modelsContainingOverrides.push(ovr.modelId);
170
+ }
171
+ }
172
+ viewport.perModelCategoryVisibility.setOverride(modelsContainingOverrides, categoryIds, PerModelCategoryVisibility.Override.None);
173
+ // changeCategoryDisplay only enables subcategories, it does not disabled them. So we must do that ourselves.
174
+ if (false === enabled) {
175
+ (await viewport.iModel.categories.getCategoryInfo(categoryIds)).forEach((categoryInfo) => {
176
+ categoryInfo.subCategories.forEach((value) => enableSubCategoryDisplay(viewport, value.id, false));
177
+ });
178
+ }
179
+ }
180
+ /**
181
+ * Changes subcategory display in the viewport
182
+ * @internal
183
+ */
184
+ export function enableSubCategoryDisplay(viewport, subCategoryId, enabled) {
185
+ viewport.changeSubCategoryDisplay(subCategoryId, enabled);
186
+ }
187
+ /** @internal */
188
+ export async function loadCategoriesFromViewport(vp) {
189
+ // Query categories and add them to state
190
+ const { categoryClass, elementClass } = getClassesByView(vp.view.is3d() ? "3d" : "2d");
191
+ const ecsql = `
192
+ SELECT ECInstanceId as id
193
+ FROM ${categoryClass}
194
+ WHERE
195
+ ECInstanceId IN (
196
+ SELECT DISTINCT Category.Id
197
+ FROM ${elementClass}
198
+ WHERE
199
+ Category.Id IN (SELECT ECInstanceId FROM ${categoryClass})
200
+ ${vp.view.is3d() ? "" : "AND Model.Id=?"}
201
+ )
202
+ `;
203
+ const categories = [];
204
+ const rows = await vp.iModel.createQueryReader(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }).toArray();
205
+ (await vp.iModel.categories.getCategoryInfo(rows.map((row) => row.id))).forEach((val) => {
206
+ categories.push({ categoryId: val.id, subCategoryIds: val.subCategories.size ? [...val.subCategories.keys()] : undefined });
207
+ });
208
+ return categories;
209
+ }
210
+ //# sourceMappingURL=VisibilityUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisibilityUtils.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/VisibilityUtils.ts"],"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 { filter, from, map, mergeAll, mergeMap, of, reduce, startWith, toArray } from \"rxjs\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\nimport { PerModelCategoryVisibility } from \"@itwin/core-frontend\";\nimport { reduceWhile } from \"./Rxjs.js\";\nimport { createVisibilityStatus } from \"./Tooltip.js\";\nimport { getClassesByView, releaseMainThreadOnItemsCount } from \"./Utils.js\";\n\nimport type { Viewport } from \"@itwin/core-frontend\";\nimport type { Observable, OperatorFunction } from \"rxjs\";\nimport type { Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport type { NonPartialVisibilityStatus, Visibility } from \"./Tooltip.js\";\nimport type { VisibilityStatus } from \"../UseHierarchyVisibility.js\";\nimport type { ElementId, ModelId } from \"./Types.js\";\nimport type { CategoryInfo } from \"../CategoriesVisibilityUtils.js\";\n\nfunction mergeVisibilities(obs: Observable<Visibility>): Observable<Visibility | \"empty\"> {\n return obs.pipe(\n reduceWhile(\n (x) => x.allVisible || x.allHidden,\n (acc, val) => {\n acc.allVisible &&= val === \"visible\";\n acc.allHidden &&= val === \"hidden\";\n return acc;\n },\n { allVisible: true, allHidden: true },\n ),\n map((x) => {\n if (!x) {\n return \"empty\";\n }\n return x.allVisible ? \"visible\" : x.allHidden ? \"hidden\" : \"partial\";\n }),\n );\n}\n\n/** @internal */\nexport function mergeVisibilityStatuses(obs: Observable<VisibilityStatus>): Observable<VisibilityStatus> {\n return obs.pipe(\n map((visibilityStatus) => visibilityStatus.state),\n mergeVisibilities,\n map((visibility) => {\n if (visibility === \"empty\") {\n visibility = \"visible\";\n }\n return createVisibilityStatus(visibility);\n }),\n );\n}\n\n/** @internal */\nexport function getSubModeledElementsVisibilityStatus({\n parentNodeVisibilityStatus,\n getModelVisibilityStatus,\n}: {\n parentNodeVisibilityStatus: VisibilityStatus;\n getModelVisibilityStatus: ({ modelId }: { modelId: Id64String }) => Observable<VisibilityStatus>;\n}): OperatorFunction<Id64Array, VisibilityStatus> {\n return (obs) => {\n return obs.pipe(\n // combine visibility status of sub-models with visibility status of parent node\n mergeMap((modeledElementIds) => {\n if (modeledElementIds.length === 0) {\n return of(parentNodeVisibilityStatus);\n }\n return from(modeledElementIds).pipe(\n mergeMap((modeledElementId) => getModelVisibilityStatus({ modelId: modeledElementId })),\n startWith<VisibilityStatus>(parentNodeVisibilityStatus),\n mergeVisibilityStatuses,\n );\n }),\n );\n };\n}\n\n/** @internal */\nexport function filterSubModeledElementIds({\n doesSubModelExist,\n}: {\n doesSubModelExist: (elementId: Id64String) => Promise<boolean>;\n}): OperatorFunction<Array<ElementId>, Array<ModelId>> {\n return (obs) => {\n return obs.pipe(\n mergeAll(),\n mergeMap(async (elementId) => ({ elementId, hasSubModel: await doesSubModelExist(elementId) })),\n filter(({ hasSubModel }) => hasSubModel),\n map(({ elementId }) => elementId),\n toArray(),\n );\n };\n}\n\n/** @internal */\nexport function changeElementStateNoChildrenOperator(props: {\n on: boolean;\n isDisplayedByDefault: boolean;\n viewport: Viewport;\n}): OperatorFunction<string, void> {\n return (elementIds: Observable<Id64String>) => {\n const { on, isDisplayedByDefault } = props;\n const isAlwaysDrawnExclusive = props.viewport.isAlwaysDrawnExclusive;\n return elementIds.pipe(\n releaseMainThreadOnItemsCount(500),\n reduce<\n string,\n { changedNeverDrawn: boolean; changedAlwaysDrawn: boolean; neverDrawn: Set<ElementId> | undefined; alwaysDrawn: Set<ElementId> | undefined }\n >(\n (acc, elementId) => {\n if (acc.alwaysDrawn === undefined || acc.neverDrawn === undefined) {\n acc.alwaysDrawn = new Set(props.viewport.alwaysDrawn || []);\n acc.neverDrawn = new Set(props.viewport.neverDrawn || []);\n }\n if (on) {\n const wasRemoved = acc.neverDrawn.delete(elementId);\n acc.changedNeverDrawn ||= wasRemoved;\n // If exclusive mode is enabled, we must add the element to the always drawn list.\n if ((!isDisplayedByDefault || isAlwaysDrawnExclusive) && !acc.alwaysDrawn.has(elementId)) {\n acc.alwaysDrawn.add(elementId);\n acc.changedAlwaysDrawn = true;\n }\n } else {\n const wasRemoved = acc.alwaysDrawn.delete(elementId);\n acc.changedAlwaysDrawn ||= wasRemoved;\n // If exclusive mode is not enabled, we have to add the element to the never drawn list.\n if (isDisplayedByDefault && !isAlwaysDrawnExclusive && !acc.neverDrawn.has(elementId)) {\n acc.neverDrawn.add(elementId);\n acc.changedNeverDrawn = true;\n }\n }\n return acc;\n },\n {\n changedNeverDrawn: false,\n changedAlwaysDrawn: false,\n neverDrawn: undefined,\n alwaysDrawn: undefined,\n },\n ),\n map((state) => {\n state.changedNeverDrawn && state.neverDrawn && props.viewport.setNeverDrawn(state.neverDrawn);\n state.changedAlwaysDrawn && state.alwaysDrawn && props.viewport.setAlwaysDrawn(state.alwaysDrawn, props.viewport.isAlwaysDrawnExclusive);\n }),\n );\n };\n}\n\n/** @internal */\nexport function getVisibilityFromAlwaysAndNeverDrawnElementsImpl(\n props: {\n alwaysDrawn: Set<ElementId> | undefined;\n neverDrawn: Set<ElementId> | undefined;\n totalCount: number;\n viewport: Viewport;\n } & GetVisibilityFromAlwaysAndNeverDrawnElementsProps,\n): VisibilityStatus {\n const { alwaysDrawn, neverDrawn, totalCount, viewport } = props;\n\n if (neverDrawn?.size === totalCount) {\n return createVisibilityStatus(\"hidden\");\n }\n\n if (alwaysDrawn?.size === totalCount) {\n return createVisibilityStatus(\"visible\");\n }\n\n if (viewport.isAlwaysDrawnExclusive) {\n return createVisibilityStatus(alwaysDrawn?.size ? \"partial\" : \"hidden\")\n }\n\n const status = props.defaultStatus();\n if ((status.state === \"visible\" && neverDrawn?.size) || (status.state === \"hidden\" && alwaysDrawn?.size)) {\n return createVisibilityStatus(\"partial\");\n }\n return status;\n}\n\n/** @internal */\nexport function getElementOverriddenVisibility(props: { elementId: Id64String; viewport: Viewport }): NonPartialVisibilityStatus | undefined {\n const { viewport, elementId } = props;\n if (viewport.neverDrawn?.has(elementId)) {\n return createVisibilityStatus(\"hidden\");\n }\n if (viewport.alwaysDrawn?.has(elementId)) {\n return createVisibilityStatus(\"visible\");\n }\n\n if (viewport.isAlwaysDrawnExclusive) {\n return createVisibilityStatus(\"hidden\");\n }\n\n return undefined;\n}\n\n/** @internal */\nexport interface GetVisibilityFromAlwaysAndNeverDrawnElementsProps {\n /** Status when always/never lists are empty and exclusive mode is off */\n defaultStatus: () => VisibilityStatus;\n}\n\n/** @internal */\nexport function getElementVisibility(\n viewsModel: boolean,\n overridenVisibility: NonPartialVisibilityStatus | undefined,\n categoryVisibility: NonPartialVisibilityStatus,\n subModelVisibilityStatus?: VisibilityStatus,\n): VisibilityStatus {\n if (subModelVisibilityStatus?.state === \"partial\") {\n return createVisibilityStatus(\"partial\");\n }\n\n if (!viewsModel) {\n return createVisibilityStatus(subModelVisibilityStatus?.state === \"visible\" ? \"partial\" : \"hidden\");\n }\n\n const elementVisibilityWithoutSubModels = overridenVisibility ?? categoryVisibility;\n if (!subModelVisibilityStatus) {\n return elementVisibilityWithoutSubModels;\n }\n\n if (elementVisibilityWithoutSubModels.state === subModelVisibilityStatus.state) {\n return elementVisibilityWithoutSubModels;\n }\n\n return createVisibilityStatus(\"partial\");\n}\n\n/**\n * Toggles visibility of categories to show or hide.\n * @internal\n */\nexport async function toggleAllCategories(viewport: Viewport, display: boolean) {\n const categoryIds = await getCategoryIds(viewport);\n if (categoryIds.length === 0) {\n return;\n }\n\n await enableCategoryDisplay(viewport, categoryIds, display);\n}\n\n/**\n * Gets ids of all categories from specified imodel and viewport.\n * @internal\n */\nasync function getCategoryIds(viewport: Viewport): Promise<Id64Array> {\n const categories = await loadCategoriesFromViewport(viewport);\n return categories.map((category) => category.categoryId);\n}\n\n/**\n * Changes category display in the viewport.\n * @internal\n */\nexport async function enableCategoryDisplay(viewport: Viewport, categoryIds: Id64Array, enabled: boolean, enableAllSubCategories = true) {\n viewport.changeCategoryDisplay(categoryIds, enabled, enableAllSubCategories);\n\n // remove category overrides per model\n const modelsContainingOverrides = new Array<ModelId>();\n for (const ovr of viewport.perModelCategoryVisibility) {\n if (categoryIds.findIndex((id) => id === ovr.categoryId) !== -1) {\n modelsContainingOverrides.push(ovr.modelId);\n }\n }\n viewport.perModelCategoryVisibility.setOverride(modelsContainingOverrides, categoryIds, PerModelCategoryVisibility.Override.None);\n\n // changeCategoryDisplay only enables subcategories, it does not disabled them. So we must do that ourselves.\n if (false === enabled) {\n (await viewport.iModel.categories.getCategoryInfo(categoryIds)).forEach((categoryInfo) => {\n categoryInfo.subCategories.forEach((value) => enableSubCategoryDisplay(viewport, value.id, false));\n });\n }\n}\n\n/**\n * Changes subcategory display in the viewport\n * @internal\n */\nexport function enableSubCategoryDisplay(viewport: Viewport, subCategoryId: Id64String, enabled: boolean) {\n viewport.changeSubCategoryDisplay(subCategoryId, enabled);\n}\n\n/** @internal */\nexport async function loadCategoriesFromViewport(vp: Viewport) {\n // Query categories and add them to state\n const { categoryClass, elementClass } = getClassesByView(vp.view.is3d() ? \"3d\" : \"2d\");\n const ecsql = `\n SELECT ECInstanceId as id\n FROM ${categoryClass}\n WHERE\n ECInstanceId IN (\n SELECT DISTINCT Category.Id\n FROM ${elementClass}\n WHERE\n Category.Id IN (SELECT ECInstanceId FROM ${categoryClass})\n ${vp.view.is3d() ? \"\" : \"AND Model.Id=?\"}\n )\n `;\n\n const categories: CategoryInfo[] = [];\n\n const rows = await vp.iModel.createQueryReader(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }).toArray();\n (await vp.iModel.categories.getCategoryInfo(rows.map((row) => row.id))).forEach((val) => {\n categories.push({ categoryId: val.id, subCategoryIds: val.subCategories.size ? [...val.subCategories.keys()] : undefined });\n });\n return categories;\n}\n"]}
@@ -2,13 +2,13 @@ import type { PresentationHierarchyNode } from "@itwin/presentation-hierarchies-
2
2
  import type { BaseTreeRendererProps } from "../common/components/BaseTreeRenderer.js";
3
3
  import type { TreeProps } from "../common/components/Tree.js";
4
4
  /** @beta */
5
- export type ExternalSourcesTreeProps = Pick<TreeProps, "imodel" | "getSchemaContext" | "selectionStorage" | "selectionMode" | "emptyTreeContent"> & Pick<BaseTreeRendererProps, "actions" | "getDecorations"> & {
5
+ export type ExternalSourcesTreeProps = Pick<TreeProps, "imodel" | "getSchemaContext" | "selectionStorage" | "selectionMode" | "emptyTreeContent"> & Pick<BaseTreeRendererProps, "getActions" | "getDecorations"> & {
6
6
  hierarchyLevelConfig?: {
7
7
  sizeLimit?: number;
8
8
  };
9
9
  };
10
10
  /** @beta */
11
- export declare function ExternalSourcesTree({ actions, getDecorations, selectionMode, ...rest }: ExternalSourcesTreeProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function ExternalSourcesTree({ getActions, getDecorations, selectionMode, ...rest }: ExternalSourcesTreeProps): import("react/jsx-runtime").JSX.Element;
12
12
  /** @beta */
13
13
  export declare function ExternalSourcesTreeIcon({ node }: {
14
14
  node: PresentationHierarchyNode;
@@ -3,6 +3,10 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
+ import classSvg from "@itwin/itwinui-icons/bis-class.svg";
7
+ import elementSvg from "@itwin/itwinui-icons/bis-element.svg";
8
+ import documentSvg from "@itwin/itwinui-icons/document.svg";
9
+ import ecSchemaSvg from "@itwin/itwinui-icons/selection-children.svg";
6
10
  import { Icon } from "@itwin/itwinui-react/bricks";
7
11
  import { EmptyTreeContent } from "../common/components/EmptyTree.js";
8
12
  import { Tree } from "../common/components/Tree.js";
@@ -10,23 +14,19 @@ import { TreeRenderer } from "../common/components/TreeRenderer.js";
10
14
  import { ExternalSourcesTreeComponent } from "./ExternalSourcesTreeComponent.js";
11
15
  import { ExternalSourcesTreeDefinition } from "./ExternalSourcesTreeDefinition.js";
12
16
  /** @beta */
13
- export function ExternalSourcesTree({ actions, getDecorations, selectionMode, ...rest }) {
14
- return (_jsx(Tree, { emptyTreeContent: _jsx(EmptyTreeContent, { icon: documentSvg }), ...rest, treeName: ExternalSourcesTreeComponent.id, getHierarchyDefinition: getDefinitionsProvider, selectionMode: selectionMode ?? "none", treeRenderer: (treeProps) => (_jsx(TreeRenderer, { ...treeProps, actions: actions, getDecorations: getDecorations ?? ((node) => _jsx(ExternalSourcesTreeIcon, { node: node })) })) }));
17
+ export function ExternalSourcesTree({ getActions, getDecorations, selectionMode, ...rest }) {
18
+ return (_jsx(Tree, { emptyTreeContent: _jsx(EmptyTreeContent, { icon: documentSvg }), ...rest, treeName: ExternalSourcesTreeComponent.id, getHierarchyDefinition: getDefinitionsProvider, selectionMode: selectionMode ?? "none", treeRenderer: (treeProps) => (_jsx(TreeRenderer, { ...treeProps, getActions: getActions, getDecorations: getDecorations ?? ((node) => _jsx(ExternalSourcesTreeIcon, { node: node })) })) }));
15
19
  }
16
20
  const getDefinitionsProvider = (props) => {
17
21
  return new ExternalSourcesTreeDefinition(props);
18
22
  };
19
- const classSvg = new URL("@itwin/itwinui-icons/bis-class.svg", import.meta.url).href;
20
- const elementSvg = new URL("@itwin/itwinui-icons/bis-element.svg", import.meta.url).href;
21
- const documentSvg = new URL("@itwin/itwinui-icons/document.svg", import.meta.url).href;
22
- const ecSchemaSvg = new URL("@itwin/itwinui-icons/selection-children.svg", import.meta.url).href;
23
23
  /** @beta */
24
24
  export function ExternalSourcesTreeIcon({ node }) {
25
- if (node.extendedData?.imageId === undefined) {
25
+ if (node.nodeData.extendedData?.imageId === undefined) {
26
26
  return undefined;
27
27
  }
28
28
  const getIcon = () => {
29
- switch (node.extendedData.imageId) {
29
+ switch (node.nodeData.extendedData.imageId) {
30
30
  case "icon-item":
31
31
  return elementSvg;
32
32
  case "icon-ec-class":
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalSourcesTree.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAanF,YAAY;AACZ,MAAM,UAAU,mBAAmB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,EAA4B;IAC/G,OAAO,CACL,KAAC,IAAI,IACH,gBAAgB,EAAE,KAAC,gBAAgB,IAAC,IAAI,EAAE,WAAW,GAAI,KACrD,IAAI,EACR,QAAQ,EAAE,4BAA4B,CAAC,EAAE,EACzC,sBAAsB,EAAE,sBAAsB,EAC9C,aAAa,EAAE,aAAa,IAAI,MAAM,EACtC,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAC3B,KAAC,YAAY,OAAK,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAC,uBAAuB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,GAAI,CACzI,GACD,CACH,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAwC,CAAC,KAAK,EAAE,EAAE;IAC5E,OAAO,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACrF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACzF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACvF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,6CAA6C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAEjG,YAAY;AACZ,MAAM,UAAU,uBAAuB,CAAC,EAAE,IAAI,EAAuC;IACnF,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,KAAK,SAAS,EAAE;QAC5C,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,IAAI,CAAC,YAAa,CAAC,OAAO,EAAE;YAClC,KAAK,WAAW;gBACd,OAAO,UAAU,CAAC;YACpB,KAAK,eAAe;gBAClB,OAAO,QAAQ,CAAC;YAClB,KAAK,eAAe;gBAClB,OAAO,WAAW,CAAC;YACrB,KAAK,gBAAgB;gBACnB,OAAO,WAAW,CAAC;YACrB;gBACE,OAAO,SAAS,CAAC;SACpB;IACH,CAAC,CAAC;IAEF,OAAO,KAAC,IAAI,IAAC,IAAI,EAAE,OAAO,EAAE,GAAI,CAAC;AACnC,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 { Icon } from \"@itwin/itwinui-react/bricks\";\nimport { EmptyTreeContent } from \"../common/components/EmptyTree.js\";\nimport { Tree } from \"../common/components/Tree.js\";\nimport { TreeRenderer } from \"../common/components/TreeRenderer.js\";\nimport { ExternalSourcesTreeComponent } from \"./ExternalSourcesTreeComponent.js\";\nimport { ExternalSourcesTreeDefinition } from \"./ExternalSourcesTreeDefinition.js\";\n\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { BaseTreeRendererProps } from \"../common/components/BaseTreeRenderer.js\";\nimport type { TreeProps } from \"../common/components/Tree.js\";\n/** @beta */\nexport type ExternalSourcesTreeProps = Pick<TreeProps, \"imodel\" | \"getSchemaContext\" | \"selectionStorage\" | \"selectionMode\" | \"emptyTreeContent\"> &\n Pick<BaseTreeRendererProps, \"actions\" | \"getDecorations\"> & {\n hierarchyLevelConfig?: {\n sizeLimit?: number;\n };\n };\n\n/** @beta */\nexport function ExternalSourcesTree({ actions, getDecorations, selectionMode, ...rest }: ExternalSourcesTreeProps) {\n return (\n <Tree\n emptyTreeContent={<EmptyTreeContent icon={documentSvg} />}\n {...rest}\n treeName={ExternalSourcesTreeComponent.id}\n getHierarchyDefinition={getDefinitionsProvider}\n selectionMode={selectionMode ?? \"none\"}\n treeRenderer={(treeProps) => (\n <TreeRenderer {...treeProps} actions={actions} getDecorations={getDecorations ?? ((node) => <ExternalSourcesTreeIcon node={node} />)} />\n )}\n />\n );\n}\n\nconst getDefinitionsProvider: TreeProps[\"getHierarchyDefinition\"] = (props) => {\n return new ExternalSourcesTreeDefinition(props);\n};\n\nconst classSvg = new URL(\"@itwin/itwinui-icons/bis-class.svg\", import.meta.url).href;\nconst elementSvg = new URL(\"@itwin/itwinui-icons/bis-element.svg\", import.meta.url).href;\nconst documentSvg = new URL(\"@itwin/itwinui-icons/document.svg\", import.meta.url).href;\nconst ecSchemaSvg = new URL(\"@itwin/itwinui-icons/selection-children.svg\", import.meta.url).href;\n\n/** @beta */\nexport function ExternalSourcesTreeIcon({ node }: { node: PresentationHierarchyNode }) {\n if (node.extendedData?.imageId === undefined) {\n return undefined;\n }\n const getIcon = () => {\n switch (node.extendedData!.imageId) {\n case \"icon-item\":\n return elementSvg;\n case \"icon-ec-class\":\n return classSvg;\n case \"icon-document\":\n return documentSvg;\n case \"icon-ec-schema\":\n return ecSchemaSvg;\n default:\n return undefined;\n }\n };\n\n return <Icon href={getIcon()} />;\n}\n"]}
1
+ {"version":3,"file":"ExternalSourcesTree.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,QAAQ,MAAM,oCAAoC,CAAC;AAC1D,OAAO,UAAU,MAAM,sCAAsC,CAAC;AAC9D,OAAO,WAAW,MAAM,mCAAmC,CAAC;AAC5D,OAAO,WAAW,MAAM,6CAA6C,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAcnF,YAAY;AACZ,MAAM,UAAU,mBAAmB,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,EAA4B;IAClH,OAAO,CACL,KAAC,IAAI,IACH,gBAAgB,EAAE,KAAC,gBAAgB,IAAC,IAAI,EAAE,WAAW,GAAI,KACrD,IAAI,EACR,QAAQ,EAAE,4BAA4B,CAAC,EAAE,EACzC,sBAAsB,EAAE,sBAAsB,EAC9C,aAAa,EAAE,aAAa,IAAI,MAAM,EACtC,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAC3B,KAAC,YAAY,OAAK,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAC,uBAAuB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC,GAAI,CAC/I,GACD,CACH,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAwC,CAAC,KAAK,EAAE,EAAE;IAC5E,OAAO,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,YAAY;AACZ,MAAM,UAAU,uBAAuB,CAAC,EAAE,IAAI,EAAuC;IACnF,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,KAAK,SAAS,EAAE;QACrD,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAa,CAAC,OAAO,EAAE;YAC3C,KAAK,WAAW;gBACd,OAAO,UAAU,CAAC;YACpB,KAAK,eAAe;gBAClB,OAAO,QAAQ,CAAC;YAClB,KAAK,eAAe;gBAClB,OAAO,WAAW,CAAC;YACrB,KAAK,gBAAgB;gBACnB,OAAO,WAAW,CAAC;YACrB;gBACE,OAAO,SAAS,CAAC;SACpB;IACH,CAAC,CAAC;IAEF,OAAO,KAAC,IAAI,IAAC,IAAI,EAAE,OAAO,EAAE,GAAI,CAAC;AACnC,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 classSvg from \"@itwin/itwinui-icons/bis-class.svg\";\nimport elementSvg from \"@itwin/itwinui-icons/bis-element.svg\";\nimport documentSvg from \"@itwin/itwinui-icons/document.svg\";\nimport ecSchemaSvg from \"@itwin/itwinui-icons/selection-children.svg\";\nimport { Icon } from \"@itwin/itwinui-react/bricks\";\nimport { EmptyTreeContent } from \"../common/components/EmptyTree.js\";\nimport { Tree } from \"../common/components/Tree.js\";\nimport { TreeRenderer } from \"../common/components/TreeRenderer.js\";\nimport { ExternalSourcesTreeComponent } from \"./ExternalSourcesTreeComponent.js\";\nimport { ExternalSourcesTreeDefinition } from \"./ExternalSourcesTreeDefinition.js\";\n\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { BaseTreeRendererProps } from \"../common/components/BaseTreeRenderer.js\";\nimport type { TreeProps } from \"../common/components/Tree.js\";\n\n/** @beta */\nexport type ExternalSourcesTreeProps = Pick<TreeProps, \"imodel\" | \"getSchemaContext\" | \"selectionStorage\" | \"selectionMode\" | \"emptyTreeContent\"> &\n Pick<BaseTreeRendererProps, \"getActions\" | \"getDecorations\"> & {\n hierarchyLevelConfig?: {\n sizeLimit?: number;\n };\n };\n\n/** @beta */\nexport function ExternalSourcesTree({ getActions, getDecorations, selectionMode, ...rest }: ExternalSourcesTreeProps) {\n return (\n <Tree\n emptyTreeContent={<EmptyTreeContent icon={documentSvg} />}\n {...rest}\n treeName={ExternalSourcesTreeComponent.id}\n getHierarchyDefinition={getDefinitionsProvider}\n selectionMode={selectionMode ?? \"none\"}\n treeRenderer={(treeProps) => (\n <TreeRenderer {...treeProps} getActions={getActions} getDecorations={getDecorations ?? ((node) => <ExternalSourcesTreeIcon node={node} />)} />\n )}\n />\n );\n}\n\nconst getDefinitionsProvider: TreeProps[\"getHierarchyDefinition\"] = (props) => {\n return new ExternalSourcesTreeDefinition(props);\n};\n\n/** @beta */\nexport function ExternalSourcesTreeIcon({ node }: { node: PresentationHierarchyNode }) {\n if (node.nodeData.extendedData?.imageId === undefined) {\n return undefined;\n }\n const getIcon = () => {\n switch (node.nodeData.extendedData!.imageId) {\n case \"icon-item\":\n return elementSvg;\n case \"icon-ec-class\":\n return classSvg;\n case \"icon-document\":\n return documentSvg;\n case \"icon-ec-schema\":\n return ecSchemaSvg;\n default:\n return undefined;\n }\n };\n\n return <Icon href={getIcon()} />;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { ExternalSourcesTreeProps } from "./ExternalSourcesTree.js";
2
2
  /** @beta */
3
- interface ExternalSourcesTreeComponentProps extends Pick<ExternalSourcesTreeProps, "getSchemaContext" | "selectionStorage" | "selectionMode" | "hierarchyLevelConfig" | "selectionMode" | "emptyTreeContent" | "actions" | "getDecorations"> {
3
+ interface ExternalSourcesTreeComponentProps extends Pick<ExternalSourcesTreeProps, "getSchemaContext" | "selectionStorage" | "selectionMode" | "hierarchyLevelConfig" | "selectionMode" | "emptyTreeContent" | "getActions" | "getDecorations"> {
4
4
  onPerformanceMeasured?: (featureId: string, duration: number) => void;
5
5
  onFeatureUsed?: (feature: string) => void;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalSourcesTreeComponent.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAa/D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAAqC,EAAE,EAAE;IACpI,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,KAAC,wBAAwB,IAAC,mBAAmB,EAAE,4BAA4B,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,YACxJ,KAAC,cAAc,cACb,KAAC,mBAAmB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GACnC,GACQ,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,4BAA4B,CAAC,EAAE,GAAG,0BAA0B,CAAC;AAE7D;;;GAGG;AACH,4BAA4B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { SelectableTree } from \"../../tree-header/SelectableTree.js\";\nimport { TelemetryContextProvider } from \"../common/UseTelemetryContext.js\";\nimport { ExternalSourcesTree } from \"./ExternalSourcesTree.js\";\n\nimport type { ExternalSourcesTreeProps } from \"./ExternalSourcesTree.js\";\n/** @beta */\ninterface ExternalSourcesTreeComponentProps\n extends Pick<\n ExternalSourcesTreeProps,\n \"getSchemaContext\" | \"selectionStorage\" | \"selectionMode\" | \"hierarchyLevelConfig\" | \"selectionMode\" | \"emptyTreeContent\" | \"actions\" | \"getDecorations\"\n > {\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders `ExternalSourcesTree`.\n * @beta\n */\nexport const ExternalSourcesTreeComponent = ({ onFeatureUsed, onPerformanceMeasured, ...props }: ExternalSourcesTreeComponentProps) => {\n const imodel = useActiveIModelConnection();\n\n if (!imodel) {\n return null;\n }\n\n return (\n <TelemetryContextProvider componentIdentifier={ExternalSourcesTreeComponent.id} onFeatureUsed={onFeatureUsed} onPerformanceMeasured={onPerformanceMeasured}>\n <SelectableTree>\n <ExternalSourcesTree {...props} imodel={imodel} />\n </SelectableTree>\n </TelemetryContextProvider>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nExternalSourcesTreeComponent.id = \"external-sources-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nExternalSourcesTreeComponent.getLabel = () => TreeWidget.translate(\"externalSourcesTree.label\");\n"]}
1
+ {"version":3,"file":"ExternalSourcesTreeComponent.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAc/D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAAqC,EAAE,EAAE;IACpI,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,KAAC,wBAAwB,IAAC,mBAAmB,EAAE,4BAA4B,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,YACxJ,KAAC,cAAc,cACb,KAAC,mBAAmB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GACnC,GACQ,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,4BAA4B,CAAC,EAAE,GAAG,0BAA0B,CAAC;AAE7D;;;GAGG;AACH,4BAA4B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { SelectableTree } from \"../../tree-header/SelectableTree.js\";\nimport { TelemetryContextProvider } from \"../common/UseTelemetryContext.js\";\nimport { ExternalSourcesTree } from \"./ExternalSourcesTree.js\";\n\nimport type { ExternalSourcesTreeProps } from \"./ExternalSourcesTree.js\";\n\n/** @beta */\ninterface ExternalSourcesTreeComponentProps\n extends Pick<\n ExternalSourcesTreeProps,\n \"getSchemaContext\" | \"selectionStorage\" | \"selectionMode\" | \"hierarchyLevelConfig\" | \"selectionMode\" | \"emptyTreeContent\" | \"getActions\" | \"getDecorations\"\n > {\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders `ExternalSourcesTree`.\n * @beta\n */\nexport const ExternalSourcesTreeComponent = ({ onFeatureUsed, onPerformanceMeasured, ...props }: ExternalSourcesTreeComponentProps) => {\n const imodel = useActiveIModelConnection();\n\n if (!imodel) {\n return null;\n }\n\n return (\n <TelemetryContextProvider componentIdentifier={ExternalSourcesTreeComponent.id} onFeatureUsed={onFeatureUsed} onPerformanceMeasured={onPerformanceMeasured}>\n <SelectableTree>\n <ExternalSourcesTree {...props} imodel={imodel} />\n </SelectableTree>\n </TelemetryContextProvider>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nExternalSourcesTreeComponent.id = \"external-sources-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nExternalSourcesTreeComponent.getLabel = () => TreeWidget.translate(\"externalSourcesTree.label\");\n"]}
@@ -3,6 +3,7 @@ import type { DefineHierarchyLevelProps, HierarchyDefinition, HierarchyLevelDefi
3
3
  interface ExternalSourcesTreeDefinitionProps {
4
4
  imodelAccess: ECSchemaProvider & ECClassHierarchyInspector & LimitingECSqlQueryExecutor;
5
5
  }
6
+ /** @internal */
6
7
  export declare class ExternalSourcesTreeDefinition implements HierarchyDefinition {
7
8
  private _impl;
8
9
  private _selectQueryFactory;
@@ -4,6 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { createNodesQueryClauseFactory, createPredicateBasedHierarchyDefinition, HierarchyNode } from "@itwin/presentation-hierarchies";
6
6
  import { createBisInstanceLabelSelectClauseFactory, ECSql } from "@itwin/presentation-shared";
7
+ /** @internal */
7
8
  export class ExternalSourcesTreeDefinition {
8
9
  constructor(props) {
9
10
  this._impl = createPredicateBasedHierarchyDefinition({