@itwin/tree-widget-react 3.2.4 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/CHANGELOG.md +24 -2
  2. package/README.md +1 -3
  3. package/lib/cjs/package.json +1 -0
  4. package/lib/cjs/tree-widget-react/TreeWidget.js.map +1 -0
  5. package/lib/cjs/{components → tree-widget-react/components}/SelectableTree.js +4 -5
  6. package/lib/cjs/tree-widget-react/components/SelectableTree.js.map +1 -0
  7. package/lib/{esm → cjs/tree-widget-react}/components/TreeSelector.d.ts +1 -1
  8. package/lib/cjs/tree-widget-react/components/TreeSelector.js.map +1 -0
  9. package/lib/cjs/{components → tree-widget-react/components}/TreeWidgetUiItemsProvider.d.ts +1 -1
  10. package/lib/cjs/{components → tree-widget-react/components}/TreeWidgetUiItemsProvider.js +5 -5
  11. package/lib/cjs/tree-widget-react/components/TreeWidgetUiItemsProvider.js.map +1 -0
  12. package/lib/cjs/{components → tree-widget-react/components}/tree-header/TreeHeader.js +8 -9
  13. package/lib/cjs/tree-widget-react/components/tree-header/TreeHeader.js.map +1 -0
  14. package/lib/cjs/{components → tree-widget-react/components}/tree-header/TreeWithHeader.d.ts +1 -1
  15. package/lib/cjs/{components → tree-widget-react/components}/tree-header/TreeWithHeader.js +2 -2
  16. package/lib/cjs/tree-widget-react/components/tree-header/TreeWithHeader.js.map +1 -0
  17. package/lib/{esm → cjs/tree-widget-react}/components/trees/categories-tree/CategoriesTree.d.ts +2 -2
  18. package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTree.js +5 -5
  19. package/lib/cjs/tree-widget-react/components/trees/categories-tree/CategoriesTree.js.map +1 -0
  20. package/lib/{esm → cjs/tree-widget-react}/components/trees/categories-tree/CategoriesTreeButtons.d.ts +2 -2
  21. package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeButtons.js +9 -9
  22. package/lib/{esm → cjs/tree-widget-react}/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -1
  23. package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeComponent.d.ts +2 -2
  24. package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeComponent.js +19 -19
  25. package/lib/cjs/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
  26. package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeDefinition.js +2 -2
  27. package/lib/cjs/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
  28. package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/CategoriesVisibilityHandler.d.ts +1 -1
  29. package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/CategoriesVisibilityHandler.js +6 -6
  30. package/lib/cjs/tree-widget-react/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
  31. package/lib/{esm → cjs/tree-widget-react}/components/trees/categories-tree/UseCategoriesTree.d.ts +3 -3
  32. package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/UseCategoriesTree.js +12 -12
  33. package/lib/cjs/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js.map +1 -0
  34. package/lib/cjs/{components → tree-widget-react/components}/trees/common/CategoriesVisibilityUtils.js +0 -1
  35. package/lib/cjs/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
  36. package/lib/cjs/tree-widget-react/components/trees/common/FocusedInstancesContext.d.ts +35 -0
  37. package/lib/cjs/{components/trees/common/FocusedInstancesContextProvider.js → tree-widget-react/components/trees/common/FocusedInstancesContext.js} +20 -4
  38. package/lib/cjs/tree-widget-react/components/trees/common/FocusedInstancesContext.js.map +1 -0
  39. package/lib/cjs/tree-widget-react/components/trees/common/Rxjs.js.map +1 -0
  40. package/lib/{esm → cjs/tree-widget-react}/components/trees/common/Tooltip.d.ts +1 -1
  41. package/lib/cjs/{components → tree-widget-react/components}/trees/common/Tooltip.js +3 -3
  42. package/lib/cjs/tree-widget-react/components/trees/common/Tooltip.js.map +1 -0
  43. package/lib/cjs/tree-widget-react/components/trees/common/TreeErrors.js.map +1 -0
  44. package/lib/cjs/tree-widget-react/components/trees/common/UseActiveViewport.js.map +1 -0
  45. package/lib/cjs/tree-widget-react/components/trees/common/UseFiltering.js.map +1 -0
  46. package/lib/cjs/tree-widget-react/components/trees/common/UseHierarchiesLocalization.js +33 -0
  47. package/lib/cjs/tree-widget-react/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
  48. package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseHierarchyFiltering.js +8 -8
  49. package/lib/cjs/tree-widget-react/components/trees/common/UseHierarchyFiltering.js.map +1 -0
  50. package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseHierarchyVisibility.d.ts +1 -1
  51. package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseHierarchyVisibility.js +2 -2
  52. package/lib/cjs/tree-widget-react/components/trees/common/UseHierarchyVisibility.js.map +1 -0
  53. package/lib/cjs/tree-widget-react/components/trees/common/UseIModelChangeListener.js.map +1 -0
  54. package/lib/cjs/tree-widget-react/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
  55. package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseNodeHighlighting.js +4 -4
  56. package/lib/cjs/tree-widget-react/components/trees/common/UseNodeHighlighting.js.map +1 -0
  57. package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseTelemetryContext.js +3 -3
  58. package/lib/{esm → cjs/tree-widget-react}/components/trees/common/UseTelemetryContext.js.map +1 -1
  59. package/lib/cjs/tree-widget-react/components/trees/common/Utils.js.map +1 -0
  60. package/lib/cjs/tree-widget-react/components/trees/common/components/Delayed.js.map +1 -0
  61. package/lib/cjs/tree-widget-react/components/trees/common/components/ProgressOverlay.js.map +1 -0
  62. package/lib/{esm → cjs/tree-widget-react}/components/trees/common/components/Tree.d.ts +4 -4
  63. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/Tree.js +22 -22
  64. package/lib/cjs/tree-widget-react/components/trees/common/components/Tree.js.map +1 -0
  65. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/TreeNodeCheckbox.js +4 -1
  66. package/lib/cjs/tree-widget-react/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
  67. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/TreeNodeRenderer.d.ts +1 -1
  68. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/TreeNodeRenderer.js +2 -2
  69. package/lib/cjs/tree-widget-react/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
  70. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/TreeRenderer.d.ts +3 -3
  71. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/TreeRenderer.js +7 -6
  72. package/lib/cjs/tree-widget-react/components/trees/common/components/TreeRenderer.js.map +1 -0
  73. package/lib/{esm → cjs/tree-widget-react}/components/trees/common/components/VisibilityTree.d.ts +4 -4
  74. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/VisibilityTree.js +6 -6
  75. package/lib/cjs/tree-widget-react/components/trees/common/components/VisibilityTree.js.map +1 -0
  76. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/VisibilityTreeRenderer.d.ts +2 -2
  77. package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/VisibilityTreeRenderer.js +4 -4
  78. package/lib/cjs/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -0
  79. package/lib/{esm → cjs/tree-widget-react}/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +1 -1
  80. package/lib/cjs/{components → tree-widget-react/components}/trees/external-sources-tree/ExternalSourcesTree.js +6 -6
  81. package/lib/cjs/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -0
  82. package/lib/{esm → cjs/tree-widget-react}/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +1 -1
  83. package/lib/cjs/{components → tree-widget-react/components}/trees/external-sources-tree/ExternalSourcesTreeComponent.js +5 -5
  84. package/lib/cjs/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -0
  85. package/lib/cjs/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
  86. package/lib/cjs/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTree.d.ts +1 -1
  87. package/lib/cjs/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTree.js +8 -8
  88. package/lib/cjs/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -0
  89. package/lib/cjs/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +1 -1
  90. package/lib/cjs/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTreeComponent.js +5 -5
  91. package/lib/cjs/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -0
  92. package/lib/{esm → cjs/tree-widget-react}/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +1 -1
  93. package/lib/cjs/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTreeDefinition.js +3 -3
  94. package/lib/cjs/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
  95. package/lib/cjs/{components → tree-widget-react/components}/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +2 -2
  96. package/lib/cjs/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
  97. package/lib/cjs/{components → tree-widget-react/components}/trees/index.d.ts +17 -16
  98. package/lib/cjs/tree-widget-react/components/trees/index.js +39 -0
  99. package/lib/cjs/tree-widget-react/components/trees/index.js.map +1 -0
  100. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/ModelsTree.d.ts +2 -2
  101. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/ModelsTree.js +5 -5
  102. package/lib/cjs/tree-widget-react/components/trees/models-tree/ModelsTree.js.map +1 -0
  103. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeButtons.d.ts +1 -1
  104. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeButtons.js +22 -22
  105. package/lib/cjs/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
  106. package/lib/{esm → cjs/tree-widget-react}/components/trees/models-tree/ModelsTreeComponent.d.ts +8 -3
  107. package/lib/cjs/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js +106 -0
  108. package/lib/cjs/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js.map +1 -0
  109. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeDefinition.d.ts +1 -1
  110. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeDefinition.js +10 -10
  111. package/lib/cjs/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
  112. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/UseModelsTree.d.ts +4 -4
  113. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/UseModelsTree.js +27 -27
  114. package/lib/cjs/tree-widget-react/components/trees/models-tree/UseModelsTree.js.map +1 -0
  115. package/lib/cjs/tree-widget-react/components/trees/models-tree/Utils.js.map +1 -0
  116. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +2 -2
  117. package/lib/cjs/tree-widget-react/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  118. package/lib/cjs/tree-widget-react/components/trees/models-tree/internal/FilteredTree.js.map +1 -0
  119. package/lib/{esm → cjs/tree-widget-react}/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +1 -1
  120. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeIdsCache.js +2 -2
  121. package/lib/cjs/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
  122. package/lib/cjs/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
  123. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +2 -2
  124. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +72 -80
  125. package/lib/cjs/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
  126. package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/VisibilityChangeEventListener.js +0 -1
  127. package/lib/cjs/tree-widget-react/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
  128. package/lib/cjs/tree-widget-react/components/utils/IsPromiseLike.js.map +1 -0
  129. package/lib/cjs/tree-widget-react.d.ts +5 -5
  130. package/lib/cjs/tree-widget-react.js +10 -10
  131. package/lib/cjs/tree-widget-react.js.map +1 -1
  132. package/lib/esm/tree-widget-react/TreeWidget.js.map +1 -0
  133. package/lib/esm/{components → tree-widget-react/components}/SelectableTree.js +2 -3
  134. package/lib/esm/tree-widget-react/components/SelectableTree.js.map +1 -0
  135. package/lib/{cjs → esm/tree-widget-react}/components/TreeSelector.d.ts +1 -1
  136. package/lib/esm/tree-widget-react/components/TreeSelector.js.map +1 -0
  137. package/lib/esm/{components → tree-widget-react/components}/TreeWidgetUiItemsProvider.d.ts +1 -1
  138. package/lib/esm/{components → tree-widget-react/components}/TreeWidgetUiItemsProvider.js +2 -2
  139. package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js.map +1 -0
  140. package/lib/esm/{components → tree-widget-react/components}/tree-header/TreeHeader.js +2 -3
  141. package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.js.map +1 -0
  142. package/lib/esm/{components → tree-widget-react/components}/tree-header/TreeWithHeader.d.ts +1 -1
  143. package/lib/esm/{components → tree-widget-react/components}/tree-header/TreeWithHeader.js +1 -1
  144. package/lib/esm/tree-widget-react/components/tree-header/TreeWithHeader.js.map +1 -0
  145. package/lib/{cjs → esm/tree-widget-react}/components/trees/categories-tree/CategoriesTree.d.ts +2 -2
  146. package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTree.js +3 -3
  147. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js.map +1 -0
  148. package/lib/{cjs → esm/tree-widget-react}/components/trees/categories-tree/CategoriesTreeButtons.d.ts +2 -2
  149. package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeButtons.js +2 -2
  150. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
  151. package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeComponent.d.ts +2 -2
  152. package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeComponent.js +7 -7
  153. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
  154. package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeDefinition.js +1 -1
  155. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
  156. package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/CategoriesVisibilityHandler.d.ts +1 -1
  157. package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/CategoriesVisibilityHandler.js +3 -3
  158. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
  159. package/lib/{cjs → esm/tree-widget-react}/components/trees/categories-tree/UseCategoriesTree.d.ts +3 -3
  160. package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/UseCategoriesTree.js +5 -5
  161. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js.map +1 -0
  162. package/lib/esm/{components → tree-widget-react/components}/trees/common/CategoriesVisibilityUtils.js +0 -1
  163. package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
  164. package/lib/esm/tree-widget-react/components/trees/common/FocusedInstancesContext.d.ts +35 -0
  165. package/lib/esm/{components/trees/common/FocusedInstancesContextProvider.js → tree-widget-react/components/trees/common/FocusedInstancesContext.js} +18 -3
  166. package/lib/esm/tree-widget-react/components/trees/common/FocusedInstancesContext.js.map +1 -0
  167. package/lib/esm/tree-widget-react/components/trees/common/Rxjs.js.map +1 -0
  168. package/lib/{cjs → esm/tree-widget-react}/components/trees/common/Tooltip.d.ts +1 -1
  169. package/lib/esm/{components → tree-widget-react/components}/trees/common/Tooltip.js +1 -1
  170. package/lib/esm/tree-widget-react/components/trees/common/Tooltip.js.map +1 -0
  171. package/lib/esm/tree-widget-react/components/trees/common/TreeErrors.js.map +1 -0
  172. package/lib/{cjs → esm/tree-widget-react}/components/trees/common/UseActiveViewport.js.map +1 -1
  173. package/lib/esm/tree-widget-react/components/trees/common/UseFiltering.js.map +1 -0
  174. package/lib/esm/{components → tree-widget-react/components}/trees/common/UseHierarchiesLocalization.js +1 -1
  175. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
  176. package/lib/esm/{components → tree-widget-react/components}/trees/common/UseHierarchyFiltering.js +3 -3
  177. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyFiltering.js.map +1 -0
  178. package/lib/esm/{components → tree-widget-react/components}/trees/common/UseHierarchyVisibility.d.ts +1 -1
  179. package/lib/esm/{components → tree-widget-react/components}/trees/common/UseHierarchyVisibility.js +1 -1
  180. package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js.map +1 -0
  181. package/lib/esm/tree-widget-react/components/trees/common/UseIModelChangeListener.js.map +1 -0
  182. package/lib/esm/tree-widget-react/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
  183. package/lib/esm/{components → tree-widget-react/components}/trees/common/UseNodeHighlighting.js +1 -1
  184. package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.js.map +1 -0
  185. package/lib/esm/{components → tree-widget-react/components}/trees/common/UseTelemetryContext.js +1 -1
  186. package/lib/esm/tree-widget-react/components/trees/common/UseTelemetryContext.js.map +1 -0
  187. package/lib/esm/tree-widget-react/components/trees/common/Utils.js.map +1 -0
  188. package/lib/esm/tree-widget-react/components/trees/common/components/Delayed.js.map +1 -0
  189. package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.js.map +1 -0
  190. package/lib/{cjs → esm/tree-widget-react}/components/trees/common/components/Tree.d.ts +4 -4
  191. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/Tree.js +10 -10
  192. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js.map +1 -0
  193. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/TreeNodeCheckbox.js +5 -2
  194. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
  195. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/TreeNodeRenderer.d.ts +1 -1
  196. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/TreeNodeRenderer.js +1 -1
  197. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
  198. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/TreeRenderer.d.ts +3 -3
  199. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/TreeRenderer.js +5 -4
  200. package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js.map +1 -0
  201. package/lib/{cjs → esm/tree-widget-react}/components/trees/common/components/VisibilityTree.d.ts +4 -4
  202. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/VisibilityTree.js +3 -3
  203. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTree.js.map +1 -0
  204. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/VisibilityTreeRenderer.d.ts +2 -2
  205. package/lib/esm/{components → tree-widget-react/components}/trees/common/components/VisibilityTreeRenderer.js +2 -2
  206. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -0
  207. package/lib/{cjs → esm/tree-widget-react}/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +1 -1
  208. package/lib/esm/{components → tree-widget-react/components}/trees/external-sources-tree/ExternalSourcesTree.js +4 -4
  209. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -0
  210. package/lib/{cjs → esm/tree-widget-react}/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +1 -1
  211. package/lib/esm/{components → tree-widget-react/components}/trees/external-sources-tree/ExternalSourcesTreeComponent.js +3 -3
  212. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -0
  213. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
  214. package/lib/esm/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTree.d.ts +1 -1
  215. package/lib/esm/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTree.js +5 -5
  216. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -0
  217. package/lib/esm/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +1 -1
  218. package/lib/esm/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTreeComponent.js +3 -3
  219. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -0
  220. package/lib/{cjs → esm/tree-widget-react}/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +1 -1
  221. package/lib/esm/{components → tree-widget-react/components}/trees/imodel-content-tree/IModelContentTreeDefinition.js +1 -1
  222. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
  223. package/lib/esm/{components → tree-widget-react/components}/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +1 -1
  224. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
  225. package/lib/esm/{components → tree-widget-react/components}/trees/index.d.ts +17 -16
  226. package/lib/esm/{components → tree-widget-react/components}/trees/index.js +15 -14
  227. package/lib/esm/tree-widget-react/components/trees/index.js.map +1 -0
  228. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/ModelsTree.d.ts +2 -2
  229. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/ModelsTree.js +3 -3
  230. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js.map +1 -0
  231. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeButtons.d.ts +1 -1
  232. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeButtons.js +3 -3
  233. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
  234. package/lib/{cjs → esm/tree-widget-react}/components/trees/models-tree/ModelsTreeComponent.d.ts +8 -3
  235. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeComponent.js +14 -10
  236. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js.map +1 -0
  237. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeDefinition.d.ts +1 -1
  238. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/ModelsTreeDefinition.js +4 -4
  239. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
  240. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/UseModelsTree.d.ts +4 -4
  241. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/UseModelsTree.js +9 -9
  242. package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js.map +1 -0
  243. package/lib/esm/tree-widget-react/components/trees/models-tree/Utils.js.map +1 -0
  244. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +1 -1
  245. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  246. package/lib/{cjs → esm/tree-widget-react}/components/trees/models-tree/internal/FilteredTree.js.map +1 -1
  247. package/lib/{cjs → esm/tree-widget-react}/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +1 -1
  248. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeIdsCache.js +1 -1
  249. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
  250. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
  251. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +2 -2
  252. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +9 -17
  253. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
  254. package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/VisibilityChangeEventListener.js +0 -1
  255. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
  256. package/lib/esm/tree-widget-react/components/utils/IsPromiseLike.js.map +1 -0
  257. package/lib/esm/tree-widget-react.d.ts +5 -5
  258. package/lib/esm/tree-widget-react.js +5 -5
  259. package/lib/esm/tree-widget-react.js.map +1 -1
  260. package/package.json +46 -39
  261. package/lib/cjs/TreeWidget.js.map +0 -1
  262. package/lib/cjs/components/SelectableTree.js.map +0 -1
  263. package/lib/cjs/components/TreeSelector.js.map +0 -1
  264. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +0 -1
  265. package/lib/cjs/components/tree-header/TreeHeader.js.map +0 -1
  266. package/lib/cjs/components/tree-header/TreeWithHeader.js.map +0 -1
  267. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js.map +0 -1
  268. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js.map +0 -1
  269. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js.map +0 -1
  270. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js.map +0 -1
  271. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +0 -1
  272. package/lib/cjs/components/trees/categories-tree/UseCategoriesTree.js.map +0 -1
  273. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.js.map +0 -1
  274. package/lib/cjs/components/trees/common/FocusedInstancesContext.d.ts +0 -11
  275. package/lib/cjs/components/trees/common/FocusedInstancesContext.js +0 -14
  276. package/lib/cjs/components/trees/common/FocusedInstancesContext.js.map +0 -1
  277. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.d.ts +0 -7
  278. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js.map +0 -1
  279. package/lib/cjs/components/trees/common/Rxjs.js.map +0 -1
  280. package/lib/cjs/components/trees/common/Tooltip.js.map +0 -1
  281. package/lib/cjs/components/trees/common/TreeErrors.js.map +0 -1
  282. package/lib/cjs/components/trees/common/UseFiltering.js.map +0 -1
  283. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js +0 -33
  284. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js.map +0 -1
  285. package/lib/cjs/components/trees/common/UseHierarchyFiltering.js.map +0 -1
  286. package/lib/cjs/components/trees/common/UseHierarchyVisibility.js.map +0 -1
  287. package/lib/cjs/components/trees/common/UseIModelChangeListener.js.map +0 -1
  288. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js.map +0 -1
  289. package/lib/cjs/components/trees/common/UseNodeHighlighting.js.map +0 -1
  290. package/lib/cjs/components/trees/common/UseTelemetryContext.js.map +0 -1
  291. package/lib/cjs/components/trees/common/Utils.js.map +0 -1
  292. package/lib/cjs/components/trees/common/components/Delayed.js.map +0 -1
  293. package/lib/cjs/components/trees/common/components/ProgressOverlay.js.map +0 -1
  294. package/lib/cjs/components/trees/common/components/Tree.js.map +0 -1
  295. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js.map +0 -1
  296. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js.map +0 -1
  297. package/lib/cjs/components/trees/common/components/TreeRenderer.js.map +0 -1
  298. package/lib/cjs/components/trees/common/components/VisibilityTree.js.map +0 -1
  299. package/lib/cjs/components/trees/common/components/VisibilityTreeRenderer.js.map +0 -1
  300. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +0 -1
  301. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +0 -1
  302. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +0 -1
  303. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +0 -1
  304. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +0 -1
  305. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +0 -1
  306. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +0 -1
  307. package/lib/cjs/components/trees/index.js +0 -36
  308. package/lib/cjs/components/trees/index.js.map +0 -1
  309. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +0 -1
  310. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js.map +0 -1
  311. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +0 -102
  312. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +0 -1
  313. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js.map +0 -1
  314. package/lib/cjs/components/trees/models-tree/UseModelsTree.js.map +0 -1
  315. package/lib/cjs/components/trees/models-tree/Utils.js.map +0 -1
  316. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +0 -1
  317. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +0 -1
  318. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js.map +0 -1
  319. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +0 -1
  320. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +0 -1
  321. package/lib/cjs/components/utils/IsPromiseLike.js.map +0 -1
  322. package/lib/esm/TreeWidget.js.map +0 -1
  323. package/lib/esm/components/SelectableTree.js.map +0 -1
  324. package/lib/esm/components/TreeSelector.js.map +0 -1
  325. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +0 -1
  326. package/lib/esm/components/tree-header/TreeHeader.js.map +0 -1
  327. package/lib/esm/components/tree-header/TreeWithHeader.js.map +0 -1
  328. package/lib/esm/components/trees/categories-tree/CategoriesTree.js.map +0 -1
  329. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js.map +0 -1
  330. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js.map +0 -1
  331. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +0 -1
  332. package/lib/esm/components/trees/categories-tree/UseCategoriesTree.js.map +0 -1
  333. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.js.map +0 -1
  334. package/lib/esm/components/trees/common/FocusedInstancesContext.d.ts +0 -11
  335. package/lib/esm/components/trees/common/FocusedInstancesContext.js +0 -10
  336. package/lib/esm/components/trees/common/FocusedInstancesContext.js.map +0 -1
  337. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.d.ts +0 -7
  338. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js.map +0 -1
  339. package/lib/esm/components/trees/common/Rxjs.js.map +0 -1
  340. package/lib/esm/components/trees/common/Tooltip.js.map +0 -1
  341. package/lib/esm/components/trees/common/TreeErrors.js.map +0 -1
  342. package/lib/esm/components/trees/common/UseActiveViewport.js.map +0 -1
  343. package/lib/esm/components/trees/common/UseFiltering.js.map +0 -1
  344. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js.map +0 -1
  345. package/lib/esm/components/trees/common/UseHierarchyFiltering.js.map +0 -1
  346. package/lib/esm/components/trees/common/UseHierarchyVisibility.js.map +0 -1
  347. package/lib/esm/components/trees/common/UseIModelChangeListener.js.map +0 -1
  348. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js.map +0 -1
  349. package/lib/esm/components/trees/common/UseNodeHighlighting.js.map +0 -1
  350. package/lib/esm/components/trees/common/Utils.js.map +0 -1
  351. package/lib/esm/components/trees/common/components/Delayed.js.map +0 -1
  352. package/lib/esm/components/trees/common/components/ProgressOverlay.js.map +0 -1
  353. package/lib/esm/components/trees/common/components/Tree.js.map +0 -1
  354. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js.map +0 -1
  355. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js.map +0 -1
  356. package/lib/esm/components/trees/common/components/TreeRenderer.js.map +0 -1
  357. package/lib/esm/components/trees/common/components/VisibilityTree.js.map +0 -1
  358. package/lib/esm/components/trees/common/components/VisibilityTreeRenderer.js.map +0 -1
  359. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +0 -1
  360. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +0 -1
  361. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +0 -1
  362. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +0 -1
  363. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +0 -1
  364. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +0 -1
  365. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +0 -1
  366. package/lib/esm/components/trees/index.js.map +0 -1
  367. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +0 -1
  368. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js.map +0 -1
  369. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +0 -1
  370. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js.map +0 -1
  371. package/lib/esm/components/trees/models-tree/UseModelsTree.js.map +0 -1
  372. package/lib/esm/components/trees/models-tree/Utils.js.map +0 -1
  373. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +0 -1
  374. package/lib/esm/components/trees/models-tree/internal/FilteredTree.js.map +0 -1
  375. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +0 -1
  376. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js.map +0 -1
  377. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +0 -1
  378. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +0 -1
  379. package/lib/esm/components/utils/IsPromiseLike.js.map +0 -1
  380. /package/lib/cjs/{TreeWidget.d.ts → tree-widget-react/TreeWidget.d.ts} +0 -0
  381. /package/lib/cjs/{TreeWidget.js → tree-widget-react/TreeWidget.js} +0 -0
  382. /package/lib/cjs/{components → tree-widget-react/components}/SelectableTree.d.ts +0 -0
  383. /package/lib/cjs/{components → tree-widget-react/components}/SelectableTree.scss +0 -0
  384. /package/lib/cjs/{components → tree-widget-react/components}/TreeSelector.js +0 -0
  385. /package/lib/cjs/{components → tree-widget-react/components}/TreeSelector.scss +0 -0
  386. /package/lib/cjs/{components → tree-widget-react/components}/TreeWidgetUiItemsProvider.scss +0 -0
  387. /package/lib/cjs/{components → tree-widget-react/components}/tree-header/TreeHeader.d.ts +0 -0
  388. /package/lib/cjs/{components → tree-widget-react/components}/tree-header/TreeHeader.scss +0 -0
  389. /package/lib/cjs/{components → tree-widget-react/components}/tree-header/TreeWithHeader.scss +0 -0
  390. /package/lib/cjs/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeDefinition.d.ts +0 -0
  391. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/CategoriesVisibilityUtils.d.ts +0 -0
  392. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/Rxjs.d.ts +0 -0
  393. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/Rxjs.js +0 -0
  394. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/TreeErrors.d.ts +0 -0
  395. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/TreeErrors.js +0 -0
  396. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseActiveViewport.d.ts +0 -0
  397. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseActiveViewport.js +0 -0
  398. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseFiltering.d.ts +0 -0
  399. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseFiltering.js +0 -0
  400. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseHierarchiesLocalization.d.ts +0 -0
  401. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseHierarchyFiltering.d.ts +0 -0
  402. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseIModelChangeListener.d.ts +0 -0
  403. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseIModelChangeListener.js +0 -0
  404. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseMultiCheckboxHandler.d.ts +0 -0
  405. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseMultiCheckboxHandler.js +0 -0
  406. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseNodeHighlighting.d.ts +0 -0
  407. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/UseTelemetryContext.d.ts +0 -0
  408. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/Utils.d.ts +0 -0
  409. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/Utils.js +0 -0
  410. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/Delayed.d.ts +0 -0
  411. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/Delayed.js +0 -0
  412. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/ProgressOverlay.d.ts +0 -0
  413. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/ProgressOverlay.js +0 -0
  414. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/ProgressOverlay.scss +0 -0
  415. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/TreeNodeCheckbox.d.ts +0 -0
  416. /package/lib/cjs/{components → tree-widget-react/components}/trees/common/components/TreeRenderer.scss +0 -0
  417. /package/lib/cjs/{components → tree-widget-react/components}/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +0 -0
  418. /package/lib/cjs/{components → tree-widget-react/components}/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +0 -0
  419. /package/lib/cjs/{components → tree-widget-react/components}/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +0 -0
  420. /package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/Utils.d.ts +0 -0
  421. /package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/Utils.js +0 -0
  422. /package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +0 -0
  423. /package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/FilteredTree.d.ts +0 -0
  424. /package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/FilteredTree.js +0 -0
  425. /package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeNode.d.ts +0 -0
  426. /package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeNode.js +0 -0
  427. /package/lib/cjs/{components → tree-widget-react/components}/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +0 -0
  428. /package/lib/cjs/{components → tree-widget-react/components}/utils/IsPromiseLike.d.ts +0 -0
  429. /package/lib/cjs/{components → tree-widget-react/components}/utils/IsPromiseLike.js +0 -0
  430. /package/lib/esm/{TreeWidget.d.ts → tree-widget-react/TreeWidget.d.ts} +0 -0
  431. /package/lib/esm/{TreeWidget.js → tree-widget-react/TreeWidget.js} +0 -0
  432. /package/lib/esm/{components → tree-widget-react/components}/SelectableTree.d.ts +0 -0
  433. /package/lib/esm/{components → tree-widget-react/components}/SelectableTree.scss +0 -0
  434. /package/lib/esm/{components → tree-widget-react/components}/TreeSelector.js +0 -0
  435. /package/lib/esm/{components → tree-widget-react/components}/TreeSelector.scss +0 -0
  436. /package/lib/esm/{components → tree-widget-react/components}/TreeWidgetUiItemsProvider.scss +0 -0
  437. /package/lib/esm/{components → tree-widget-react/components}/tree-header/TreeHeader.d.ts +0 -0
  438. /package/lib/esm/{components → tree-widget-react/components}/tree-header/TreeHeader.scss +0 -0
  439. /package/lib/esm/{components → tree-widget-react/components}/tree-header/TreeWithHeader.scss +0 -0
  440. /package/lib/esm/{components → tree-widget-react/components}/trees/categories-tree/CategoriesTreeDefinition.d.ts +0 -0
  441. /package/lib/esm/{components → tree-widget-react/components}/trees/common/CategoriesVisibilityUtils.d.ts +0 -0
  442. /package/lib/esm/{components → tree-widget-react/components}/trees/common/Rxjs.d.ts +0 -0
  443. /package/lib/esm/{components → tree-widget-react/components}/trees/common/Rxjs.js +0 -0
  444. /package/lib/esm/{components → tree-widget-react/components}/trees/common/TreeErrors.d.ts +0 -0
  445. /package/lib/esm/{components → tree-widget-react/components}/trees/common/TreeErrors.js +0 -0
  446. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseActiveViewport.d.ts +0 -0
  447. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseActiveViewport.js +0 -0
  448. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseFiltering.d.ts +0 -0
  449. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseFiltering.js +0 -0
  450. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseHierarchiesLocalization.d.ts +0 -0
  451. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseHierarchyFiltering.d.ts +0 -0
  452. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseIModelChangeListener.d.ts +0 -0
  453. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseIModelChangeListener.js +0 -0
  454. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseMultiCheckboxHandler.d.ts +0 -0
  455. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseMultiCheckboxHandler.js +0 -0
  456. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseNodeHighlighting.d.ts +0 -0
  457. /package/lib/esm/{components → tree-widget-react/components}/trees/common/UseTelemetryContext.d.ts +0 -0
  458. /package/lib/esm/{components → tree-widget-react/components}/trees/common/Utils.d.ts +0 -0
  459. /package/lib/esm/{components → tree-widget-react/components}/trees/common/Utils.js +0 -0
  460. /package/lib/esm/{components → tree-widget-react/components}/trees/common/components/Delayed.d.ts +0 -0
  461. /package/lib/esm/{components → tree-widget-react/components}/trees/common/components/Delayed.js +0 -0
  462. /package/lib/esm/{components → tree-widget-react/components}/trees/common/components/ProgressOverlay.d.ts +0 -0
  463. /package/lib/esm/{components → tree-widget-react/components}/trees/common/components/ProgressOverlay.js +0 -0
  464. /package/lib/esm/{components → tree-widget-react/components}/trees/common/components/ProgressOverlay.scss +0 -0
  465. /package/lib/esm/{components → tree-widget-react/components}/trees/common/components/TreeNodeCheckbox.d.ts +0 -0
  466. /package/lib/esm/{components → tree-widget-react/components}/trees/common/components/TreeRenderer.scss +0 -0
  467. /package/lib/esm/{components → tree-widget-react/components}/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +0 -0
  468. /package/lib/esm/{components → tree-widget-react/components}/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +0 -0
  469. /package/lib/esm/{components → tree-widget-react/components}/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +0 -0
  470. /package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/Utils.d.ts +0 -0
  471. /package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/Utils.js +0 -0
  472. /package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +0 -0
  473. /package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/FilteredTree.d.ts +0 -0
  474. /package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/FilteredTree.js +0 -0
  475. /package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeNode.d.ts +0 -0
  476. /package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/ModelsTreeNode.js +0 -0
  477. /package/lib/esm/{components → tree-widget-react/components}/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +0 -0
  478. /package/lib/esm/{components → tree-widget-react/components}/utils/IsPromiseLike.d.ts +0 -0
  479. /package/lib/esm/{components → tree-widget-react/components}/utils/IsPromiseLike.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoriesVisibilityUtils.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.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 { QueryRowFormat } from \"@itwin/core-common\";\nimport { PerModelCategoryVisibility } from \"@itwin/core-frontend\";\n\nimport type { Viewport } from \"@itwin/core-frontend\";\n\n/**\n * Data structure that describes category.\n * @beta\n */\nexport interface CategoryInfo {\n categoryId: string;\n subCategoryIds?: string[];\n}\n\n/**\n * Toggles visibility of categories to show or hide.\n */\nexport async function toggleAllCategories(viewport: Viewport, display: boolean) {\n const ids = await getCategories(viewport);\n if (ids.length === 0) {\n return;\n }\n\n await enableCategoryDisplay(viewport, ids, display);\n}\n\n/**\n * Gets ids of all categories from specified imodel and viewport.\n */\nexport async function getCategories(viewport: Viewport) {\n const categories = await loadCategoriesFromViewport(viewport);\n return categories.map((category) => category.categoryId);\n}\n\n/**\n * Changes category display in the viewport.\n */\nexport async function enableCategoryDisplay(viewport: Viewport, ids: string[], enabled: boolean, enableAllSubCategories = true) {\n viewport.changeCategoryDisplay(ids, enabled, enableAllSubCategories);\n\n // remove category overrides per model\n const modelsContainingOverrides: string[] = [];\n for (const ovr of viewport.perModelCategoryVisibility) {\n if (ids.findIndex((id) => id === ovr.categoryId) !== -1) {\n modelsContainingOverrides.push(ovr.modelId);\n }\n }\n viewport.perModelCategoryVisibility.setOverride(modelsContainingOverrides, ids, 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(ids)).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 */\nexport function enableSubCategoryDisplay(viewport: Viewport, key: string, enabled: boolean) {\n viewport.changeSubCategoryDisplay(key, enabled);\n}\n\nexport async function loadCategoriesFromViewport(vp: Viewport) {\n // Query categories and add them to state\n const selectUsedSpatialCategoryIds =\n \"SELECT DISTINCT Category.Id as id from BisCore.GeometricElement3d WHERE Category.Id IN (SELECT ECInstanceId from BisCore.SpatialCategory)\";\n const selectUsedDrawingCategoryIds =\n \"SELECT DISTINCT Category.Id as id from BisCore.GeometricElement2d WHERE Model.Id=? AND Category.Id IN (SELECT ECInstanceId from BisCore.DrawingCategory)\";\n const ecsql = vp.view.is3d() ? selectUsedSpatialCategoryIds : selectUsedDrawingCategoryIds;\n const ecsql2 = `SELECT ECInstanceId as id FROM ${vp.view.is3d() ? \"BisCore.SpatialCategory\" : \"BisCore.DrawingCategory\"} WHERE ECInstanceId IN (${ecsql})`;\n\n const categories: CategoryInfo[] = [];\n\n const rows = await vp.iModel.createQueryReader(ecsql2, 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\n/**\n * Enable display of all given categories.\n * @public\n */\nexport async function showAllCategories(categories: string[], viewport: Viewport) {\n await enableCategoryDisplay(viewport, categories, true, true);\n}\n\n/**\n * Disable display of all given categories.\n * @public\n */\nexport async function hideAllCategories(categories: string[], viewport: Viewport) {\n await enableCategoryDisplay(viewport, categories, false, true);\n}\n\n/**\n * Invert display of all given categories.\n * @public\n */\nexport async function invertAllCategories(categories: CategoryInfo[], viewport: Viewport) {\n const enabled: string[] = [];\n const disabled: string[] = [];\n const enabledSubCategories: string[] = [];\n const disabledSubCategories: string[] = [];\n\n for (const category of categories) {\n if (!viewport.view.viewsCategory(category.categoryId)) {\n disabled.push(category.categoryId);\n continue;\n }\n // First, we need to check if at least one subcategory is disabled. If it is true, then only subcategories should change display, not categories.\n if (category.subCategoryIds?.some((subCategory) => !viewport.isSubCategoryVisible(subCategory))) {\n for (const subCategory of category.subCategoryIds) {\n viewport.isSubCategoryVisible(subCategory) ? enabledSubCategories.push(subCategory) : disabledSubCategories.push(subCategory);\n }\n } else {\n enabled.push(category.categoryId);\n }\n }\n\n // Disable enabled\n enabledSubCategories.forEach((subCategory) => enableSubCategoryDisplay(viewport, subCategory, false));\n\n await enableCategoryDisplay(viewport, enabled, false, true);\n\n // Enable disabled\n disabledSubCategories.forEach((subCategory) => enableSubCategoryDisplay(viewport, subCategory, true));\n\n await enableCategoryDisplay(viewport, disabled, true, true);\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import type { PropsWithChildren } from "react";
2
+ import type { GroupingHierarchyNode } from "@itwin/presentation-hierarchies";
3
+ import type { SelectionStorage } from "@itwin/presentation-hierarchies-react";
4
+ import type { InstanceKey } from "@itwin/presentation-shared";
5
+ /** @public */
6
+ interface FocusedInstancesContext {
7
+ /**
8
+ * A function, returning an async iterator of items that should be focused. The function is not set
9
+ * when instances focus mode is disabled or selection is empty.
10
+ */
11
+ loadFocusedItems?: () => AsyncIterableIterator<InstanceKey | GroupingHierarchyNode>;
12
+ /** A flag indicating whether instances focus mode is enabled. */
13
+ enabled: boolean;
14
+ /** Toggle enable or disable instances focus mode. */
15
+ toggle: () => void;
16
+ }
17
+ /**
18
+ * A React hook for getting focused instances context. The context must be provided
19
+ * using `FocusedInstancesContextProvider`.
20
+ *
21
+ * @public
22
+ */
23
+ export declare function useFocusedInstancesContext(): FocusedInstancesContext;
24
+ /**
25
+ * A React context provider for setting up focused instances context, which can then be acquired
26
+ * using `useFocusedInstancesContext` hook.
27
+ *
28
+ * @public
29
+ */
30
+ export declare function FocusedInstancesContextProvider({ selectionStorage, imodelKey, children, }: PropsWithChildren<{
31
+ selectionStorage: SelectionStorage;
32
+ imodelKey: string;
33
+ }>): JSX.Element;
34
+ export {};
35
+ //# sourceMappingURL=FocusedInstancesContext.d.ts.map
@@ -3,10 +3,25 @@ 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 { useEffect, useState } from "react";
6
+ import { createContext, useContext, useEffect, useState } from "react";
7
7
  import { HierarchyNode } from "@itwin/presentation-hierarchies-react";
8
8
  import { Selectable, Selectables } from "@itwin/unified-selection";
9
- import { focusedInstancesContext } from "./FocusedInstancesContext";
9
+ const focusedInstancesContext = createContext({ enabled: false, toggle: () => { } });
10
+ /**
11
+ * A React hook for getting focused instances context. The context must be provided
12
+ * using `FocusedInstancesContextProvider`.
13
+ *
14
+ * @public
15
+ */
16
+ export function useFocusedInstancesContext() {
17
+ return useContext(focusedInstancesContext);
18
+ }
19
+ /**
20
+ * A React context provider for setting up focused instances context, which can then be acquired
21
+ * using `useFocusedInstancesContext` hook.
22
+ *
23
+ * @public
24
+ */
10
25
  export function FocusedInstancesContextProvider({ selectionStorage, imodelKey, children, }) {
11
26
  const [state, setState] = useState({
12
27
  enabled: false,
@@ -63,4 +78,4 @@ export function FocusedInstancesContextProvider({ selectionStorage, imodelKey, c
63
78
  function isHierarchyNode(data) {
64
79
  return !!data && typeof data === "object" && "key" in data;
65
80
  }
66
- //# sourceMappingURL=FocusedInstancesContextProvider.js.map
81
+ //# sourceMappingURL=FocusedInstancesContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FocusedInstancesContext.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/FocusedInstancesContext.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 { createContext, useContext, useEffect, useState } from \"react\";\nimport { HierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport { Selectable, Selectables } from \"@itwin/unified-selection\";\n\nimport type { PropsWithChildren } from \"react\";\nimport type { GroupingHierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport type { SelectionStorage } from \"@itwin/presentation-hierarchies-react\";\nimport type { InstanceKey } from \"@itwin/presentation-shared\";\n\n/** @public */\ninterface FocusedInstancesContext {\n /**\n * A function, returning an async iterator of items that should be focused. The function is not set\n * when instances focus mode is disabled or selection is empty.\n */\n loadFocusedItems?: () => AsyncIterableIterator<InstanceKey | GroupingHierarchyNode>;\n\n /** A flag indicating whether instances focus mode is enabled. */\n enabled: boolean;\n\n /** Toggle enable or disable instances focus mode. */\n toggle: () => void;\n}\n\nconst focusedInstancesContext = createContext<FocusedInstancesContext>({ enabled: false, toggle: () => {} });\n\n/**\n * A React hook for getting focused instances context. The context must be provided\n * using `FocusedInstancesContextProvider`.\n *\n * @public\n */\nexport function useFocusedInstancesContext(): FocusedInstancesContext {\n return useContext(focusedInstancesContext);\n}\n\n/**\n * A React context provider for setting up focused instances context, which can then be acquired\n * using `useFocusedInstancesContext` hook.\n *\n * @public\n */\nexport function FocusedInstancesContextProvider({\n selectionStorage,\n imodelKey,\n children,\n}: PropsWithChildren<{ selectionStorage: SelectionStorage; imodelKey: string }>) {\n const [state, setState] = useState<FocusedInstancesContext>({\n enabled: false,\n toggle: () => {\n setState((prev) => ({ ...prev, enabled: !prev.enabled }));\n },\n });\n const enabled = state.enabled;\n\n useEffect(() => {\n if (!enabled) {\n setState((prev) => ({ ...prev, loadFocusedItems: undefined }));\n return;\n }\n\n const onSelectionChanged = () => {\n const selection = selectionStorage.getSelection({ imodelKey, level: 0 });\n if (Selectables.isEmpty(selection)) {\n setState((prev) => ({ ...prev, loadFocusedItems: undefined }));\n return;\n }\n\n const selected: Array<InstanceKey | GroupingHierarchyNode | (() => AsyncIterableIterator<InstanceKey>)> = [];\n Selectables.forEach(selection, (selectable) => {\n if (Selectable.isInstanceKey(selectable)) {\n selected.push(selectable);\n return;\n }\n\n if (isHierarchyNode(selectable.data) && HierarchyNode.isGroupingNode(selectable.data)) {\n selected.push(selectable.data);\n return;\n }\n\n selected.push(selectable.loadInstanceKeys);\n });\n\n const loadFocusedItems: () => AsyncIterableIterator<InstanceKey | GroupingHierarchyNode> = async function* () {\n for (const item of selected) {\n if (typeof item === \"function\") {\n yield* item();\n } else {\n yield item;\n }\n }\n };\n\n setState((prev) => ({ ...prev, loadFocusedItems }));\n };\n\n onSelectionChanged();\n return selectionStorage.selectionChangeEvent.addListener(({ imodelKey: changeImodelKey, level }) => {\n if (changeImodelKey !== imodelKey || level !== 0) {\n return;\n }\n onSelectionChanged();\n });\n }, [enabled, imodelKey, selectionStorage]);\n\n return <focusedInstancesContext.Provider value={state}>{children}</focusedInstancesContext.Provider>;\n}\n\nfunction isHierarchyNode(data: unknown): data is HierarchyNode {\n return !!data && typeof data === \"object\" && \"key\" in data;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rxjs.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/Rxjs.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAInE;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,SAAuC,EACvC,UAA4D,EAC5D,OAAqB;IAErB,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5G,CAAC,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAoB;IACtD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,GAAG,CAAC,SAAS,CAAC;YACZ,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;YACzB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,OAAO,CAAI,GAAuB;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,KAAK,EAAK,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;YAClB,IAAI,CAAC,IAAO;gBACV,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YACD,QAAQ;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;YACD,KAAK,CAAC,MAAM;gBACV,MAAM,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC;SACF,CAAC,CAAC;IACL,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 { defaultIfEmpty, from, last, scan, takeWhile } from \"rxjs\";\n\nimport type { Observable, ObservableInput, OperatorFunction } from \"rxjs\";\n\n/**\n * Applies reduce function and \"returns\" early if the predicate returns `false` for the accumulator.\n */\nexport function reduceWhile<TValue, TAccumulator>(\n predicate: (x: TAccumulator) => boolean,\n reduceFunc: (acc: TAccumulator, val: TValue) => TAccumulator,\n initial: TAccumulator,\n): OperatorFunction<TValue, TAccumulator | undefined> {\n return (obs) => {\n return obs.pipe(scan(reduceFunc, initial), takeWhile(predicate, true), defaultIfEmpty(undefined), last());\n };\n}\n\n/** Same as `firstValueFrom` except it won't throw if the observable emits no values. */\nexport async function toVoidPromise(obs: Observable<any>): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n obs.subscribe({\n complete: () => resolve(),\n error: reject,\n });\n });\n}\n\n/** Returns observable results in an array */\nexport async function collect<T>(obs: ObservableInput<T>): Promise<T[]> {\n return new Promise((resolve, reject) => {\n const arr = new Array<T>();\n from(obs).subscribe({\n next(item: T) {\n arr.push(item);\n },\n complete() {\n resolve(arr);\n },\n error(reason) {\n reject(reason);\n },\n });\n });\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { VisibilityStatus } from "./UseHierarchyVisibility";
1
+ import type { VisibilityStatus } from "./UseHierarchyVisibility.js";
2
2
  /** @internal */
3
3
  export type Visibility = "visible" | "hidden" | "partial";
4
4
  /** @internal */
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- import { TreeWidget } from "../../../TreeWidget";
5
+ import { TreeWidget } from "../../../TreeWidget.js";
6
6
  export function createVisibilityStatus(status, { useTooltip } = {}) {
7
7
  return {
8
8
  state: status === "disabled" ? "hidden" : status,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/Tooltip.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAmBpD,MAAM,UAAU,sBAAsB,CAAC,MAA+B,EAAE,EAAE,UAAU,KAA8B,EAAE;IAClH,OAAO;QACL,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QAChD,UAAU,EAAE,MAAM,KAAK,UAAU;QACjC,OAAO,EAAE,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;KAC9E,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,aAAa,CAAC,MAA+B,EAAE,eAAmC;IAChG,MAAM,cAAc,GAAG,6BAA6B,MAAM,EAAE,CAAC;IAC7D,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1D,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,YAAY,CAAC;KACrB;IAED,eAAe,GAAG,sBAAsB,eAAe,EAAE,CAAC;IAC1D,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC5D,OAAO,GAAG,YAAY,KAAK,aAAa,EAAE,CAAC;AAC7C,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 { TreeWidget } from \"../../../TreeWidget.js\";\n\nimport type { VisibilityStatus } from \"./UseHierarchyVisibility.js\";\n\n/** @internal */\nexport type Visibility = \"visible\" | \"hidden\" | \"partial\";\n\n/** @internal */\nexport type NonPartialVisibilityStatus = Omit<VisibilityStatus, \"state\"> & { state: \"visible\" | \"hidden\" };\n\ninterface VisibilityStatusOptions {\n // id of localized string to use as an additional tooltip or false to not use tooltip at all\n // if undefined tooltip will be created based only on the visibility status\n useTooltip?: string | false;\n}\n\n/** @internal */\nexport function createVisibilityStatus(status: \"visible\" | \"hidden\", options?: VisibilityStatusOptions): NonPartialVisibilityStatus;\nexport function createVisibilityStatus(status: \"visible\" | \"hidden\" | \"partial\" | \"disabled\", options?: VisibilityStatusOptions): VisibilityStatus;\nexport function createVisibilityStatus(status: Visibility | \"disabled\", { useTooltip }: VisibilityStatusOptions = {}): VisibilityStatus {\n return {\n state: status === \"disabled\" ? \"hidden\" : status,\n isDisabled: status === \"disabled\",\n tooltip: useTooltip === false ? undefined : createTooltip(status, useTooltip),\n };\n}\n\n/** @internal */\nexport function createTooltip(status: Visibility | \"disabled\", tooltipStringId: string | undefined): string {\n const statusStringId = `visibilityTooltips.status.${status}`;\n const statusString = TreeWidget.translate(statusStringId);\n if (!tooltipStringId) {\n return statusString;\n }\n\n tooltipStringId = `visibilityTooltips.${tooltipStringId}`;\n const tooltipString = TreeWidget.translate(tooltipStringId);\n return `${statusString}: ${tooltipString}`;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeErrors.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/TreeErrors.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;;GAGG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAmC,KAAa;QAC9C,KAAK,CAAC,yBAAyB,CAAC,CAAC;QADA,UAAK,GAAL,KAAK,CAAQ;IAEhD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\n/**\n * Error that is thrown when too many matches are found while filtering the tree.\n * @beta\n */\nexport class FilterLimitExceededError extends Error {\n public constructor(public readonly limit: number) {\n super(\"Too many filter matches\");\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"UseActiveViewport.js","sourceRoot":"","sources":["../../../../../src/components/trees/common/UseActiveViewport.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,iCAA4C;AAE5C,wDAAiD;AAEjD;;;GAGG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,iBAAiB,CAAC,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,yBAAS,CAAC,WAAW,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1E,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,cAAc,CAAC;AACxB,CAAC;AAVD,8CAUC","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 { useEffect, useState } from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\n\n/**\n * A copy of `useActiveViewport` from `@itwin/appui-react` package until X is fixed.\n * @internal\n */\nexport function useActiveViewport(): ScreenViewport | undefined {\n const [activeViewport, setActiveViewport] = useState(IModelApp.viewManager.selectedView);\n useEffect(() => {\n setActiveViewport(IModelApp.viewManager.selectedView);\n return IModelApp.viewManager.onSelectedViewportChanged.addListener((args) => {\n setActiveViewport(args.current);\n });\n }, []);\n\n return activeViewport;\n}\n"]}
1
+ {"version":3,"file":"UseActiveViewport.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseActiveViewport.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzF,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO,SAAS,CAAC,WAAW,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1E,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,cAAc,CAAC;AACxB,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 { useEffect, useState } from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\n\n/**\n * A copy of `useActiveViewport` from `@itwin/appui-react` package until X is fixed.\n * @internal\n */\nexport function useActiveViewport(): ScreenViewport | undefined {\n const [activeViewport, setActiveViewport] = useState(IModelApp.viewManager.selectedView);\n useEffect(() => {\n setActiveViewport(IModelApp.viewManager.selectedView);\n return IModelApp.viewManager.onSelectedViewportChanged.addListener((args) => {\n setActiveViewport(args.current);\n });\n }, []);\n\n return activeViewport;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UseFiltering.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseFiltering.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAW9C,MAAM,UAAU,YAAY;IAC1B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,SAAiB,EAAE,EAAE;QACpD,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACvB,SAAS,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACvB,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,KAAa,EAAE,OAAgB,EAAE,EAAE;QACzE,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;AAClG,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, useState } from \"react\";\n\ninterface UseFilteringResult {\n filter: string;\n activeMatchIndex: number;\n totalMatches: number;\n applyFilter: (filter: string) => void;\n clearFilter: () => void;\n onHighlightChanged: (index: number, matches?: number) => void;\n}\n\nexport function useFiltering(): UseFilteringResult {\n const [filter, setFilter] = useState(\"\");\n const [activeMatchIndex, setActiveMatchIndex] = useState(0);\n const [totalMatches, setTotalMatches] = useState(0);\n\n const applyFilter = useCallback((newFilter: string) => {\n setActiveMatchIndex(0);\n setFilter(newFilter);\n }, []);\n\n const clearFilter = useCallback(() => {\n setActiveMatchIndex(0);\n setFilter(\"\");\n }, []);\n\n const onHighlightChanged = useCallback((index: number, matches?: number) => {\n setActiveMatchIndex(index);\n matches && setTotalMatches(matches);\n }, []);\n\n return { filter, activeMatchIndex, totalMatches, applyFilter, clearFilter, onHighlightChanged };\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { useMemo } from "react";
6
- import { TreeWidget } from "../../../TreeWidget";
6
+ import { TreeWidget } from "../../../TreeWidget.js";
7
7
  export function useHierarchiesLocalization() {
8
8
  const stringValues = Object.values(getLocalizedStrings());
9
9
  const localizedStrings = useMemo(getLocalizedStrings, stringValues);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UseHierarchiesLocalization.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseHierarchiesLocalization.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AASpD,MAAM,UAAU,0BAA0B;IACxC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IACpE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,iDAAiD;QACjD,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,sCAAsC,CAAC;QACzE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,gCAAgC,CAAC;QAE7D,oDAAoD;QACpD,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,kCAAkC,CAAC;QACjE,oBAAoB,EAAE,UAAU,CAAC,SAAS,CAAC,+CAA+C,CAAC;QAC3F,yBAAyB,EAAE,UAAU,CAAC,SAAS,CAAC,oDAAoD,CAAC;QACrG,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,6CAA6C,CAAC;QACvF,mBAAmB,EAAE,UAAU,CAAC,SAAS,CAAC,8CAA8C,CAAC;QACzF,gCAAgC,EAAE,UAAU,CAAC,SAAS,CAAC,2DAA2D,CAAC;QACnH,sBAAsB,EAAE,UAAU,CAAC,SAAS,CAAC,iDAAiD,CAAC;QAC/F,mCAAmC,EAAE,UAAU,CAAC,SAAS,CAAC,8DAA8D,CAAC;QACzH,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,gCAAgC,CAAC;KAC9D,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 { TreeWidget } from \"../../../TreeWidget.js\";\n\nimport type { TreeRenderer, useIModelTree } from \"@itwin/presentation-hierarchies-react\";\n\ntype UseTreeLocalizedStrings = NonNullable<Parameters<typeof useIModelTree>[0][\"localizedStrings\"]>;\ntype TreeRendererLocalizedStrings = NonNullable<Parameters<typeof TreeRenderer>[0][\"localizedStrings\"]>;\n\ntype UseHierarchiesLocalizationResult = UseTreeLocalizedStrings & TreeRendererLocalizedStrings;\n\nexport function useHierarchiesLocalization(): UseHierarchiesLocalizationResult {\n const stringValues = Object.values(getLocalizedStrings());\n const localizedStrings = useMemo(getLocalizedStrings, stringValues);\n return localizedStrings;\n}\n\nfunction getLocalizedStrings(): UseHierarchiesLocalizationResult {\n return {\n // strings for the `useUnifiedSelectionTree` hook\n unspecified: TreeWidget.translate(\"presentation-hierarchies.unspecified\"),\n other: TreeWidget.translate(\"presentation-hierarchies.other\"),\n\n // strings for `TreeRenderer` and `TreeNodeRenderer`\n loading: TreeWidget.translate(\"presentation-hierarchies.loading\"),\n filterHierarchyLevel: TreeWidget.translate(\"presentation-hierarchies.filterHierarchyLevel\"),\n clearHierarchyLevelFilter: TreeWidget.translate(\"presentation-hierarchies.clearHierarchyLevelFilter\"),\n noFilteredChildren: TreeWidget.translate(\"presentation-hierarchies.noFilteredChildren\"),\n resultLimitExceeded: TreeWidget.translate(\"presentation-hierarchies.resultLimitExceeded\"),\n resultLimitExceededWithFiltering: TreeWidget.translate(\"presentation-hierarchies.resultLimitExceededWithFiltering\"),\n increaseHierarchyLimit: TreeWidget.translate(\"presentation-hierarchies.increaseHierarchyLimit\"),\n increaseHierarchyLimitWithFiltering: TreeWidget.translate(\"presentation-hierarchies.increaseHierarchyLimitWithFiltering\"),\n retry: TreeWidget.translate(\"presentation-hierarchies.retry\"),\n };\n}\n"]}
@@ -11,9 +11,9 @@ import { DefaultContentDisplayTypes, KeySet } from "@itwin/presentation-common";
11
11
  import { PresentationInstanceFilter, PresentationInstanceFilterDialog } from "@itwin/presentation-components";
12
12
  import { Presentation } from "@itwin/presentation-frontend";
13
13
  import { GenericInstanceFilter, RowsLimitExceededError } from "@itwin/presentation-hierarchies";
14
- import { TreeWidget } from "../../../TreeWidget";
15
- import { Delayed } from "./components/Delayed";
16
- import { useTelemetryContext } from "./UseTelemetryContext";
14
+ import { TreeWidget } from "../../../TreeWidget.js";
15
+ import { Delayed } from "./components/Delayed.js";
16
+ import { useTelemetryContext } from "./UseTelemetryContext.js";
17
17
  export function useHierarchyLevelFiltering({ imodel, defaultHierarchyLevelSizeLimit }) {
18
18
  const [filteringOptions, setFilteringOptions] = useState();
19
19
  const { onFeatureUsed } = useTelemetryContext();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UseHierarchyFiltering.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseHierarchyFiltering.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 { useCallback, useMemo, useState } from \"react\";\nimport { useDebouncedAsyncValue } from \"@itwin/components-react\";\nimport { CompressedId64Set } from \"@itwin/core-bentley\";\nimport { ProgressRadial } from \"@itwin/itwinui-react\";\nimport { DefaultContentDisplayTypes, KeySet } from \"@itwin/presentation-common\";\nimport { PresentationInstanceFilter, PresentationInstanceFilterDialog } from \"@itwin/presentation-components\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { GenericInstanceFilter, RowsLimitExceededError } from \"@itwin/presentation-hierarchies\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { Delayed } from \"./components/Delayed.js\";\nimport { useTelemetryContext } from \"./UseTelemetryContext.js\";\n\nimport type { Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ClassInfo, Descriptor } from \"@itwin/presentation-common\";\nimport type { PresentationInstanceFilterInfo, PresentationInstanceFilterPropertiesSource } from \"@itwin/presentation-components\";\nimport type { HierarchyLevelDetails } from \"@itwin/presentation-hierarchies-react\";\nimport type { InstanceKey } from \"@itwin/presentation-shared\";\n\ninterface UseHierarchyLevelFilteringProps {\n imodel: IModelConnection;\n defaultHierarchyLevelSizeLimit: number;\n}\n\nexport function useHierarchyLevelFiltering({ imodel, defaultHierarchyLevelSizeLimit }: UseHierarchyLevelFilteringProps) {\n const [filteringOptions, setFilteringOptions] = useState<HierarchyLevelDetails>();\n const { onFeatureUsed } = useTelemetryContext();\n\n const propertiesSource = useMemo<(() => Promise<PresentationInstanceFilterPropertiesSource>) | undefined>(() => {\n if (!filteringOptions) {\n return undefined;\n }\n\n return async () => {\n const keySet = await collectInstanceKeys(filteringOptions.getInstanceKeysIterator());\n if (keySet.isEmpty) {\n throw new Error(\"Hierarchy level is empty - unable to create content descriptor.\");\n }\n\n const descriptor = await Presentation.presentation.getContentDescriptor({\n imodel,\n rulesetOrId: {\n id: `Hierarchy level descriptor ruleset`,\n rules: [\n {\n ruleType: \"Content\",\n specifications: [\n {\n specType: \"SelectedNodeInstances\",\n },\n ],\n },\n ],\n },\n displayType: DefaultContentDisplayTypes.PropertyPane,\n keys: keySet,\n });\n if (!descriptor) {\n throw new Error(\"Failed to create content descriptor\");\n }\n\n return { descriptor, inputKeys: keySet };\n };\n }, [filteringOptions, imodel]);\n\n const getInitialFilter = useMemo(() => {\n const currentFilter = filteringOptions?.instanceFilter;\n if (!currentFilter) {\n return undefined;\n }\n\n return (descriptor: Descriptor) => fromGenericFilter(descriptor, currentFilter);\n }, [filteringOptions]);\n\n const filteringDialog = (\n <PresentationInstanceFilterDialog\n imodel={imodel}\n isOpen={!!filteringOptions}\n onApply={(info) => {\n if (!filteringOptions) {\n return;\n }\n onFeatureUsed({ featureId: info ? \"hierarchy-level-filtering\" : undefined, reportInteraction: true });\n filteringOptions.setInstanceFilter(toGenericFilter(info));\n setFilteringOptions(undefined);\n }}\n onClose={() => {\n setFilteringOptions(undefined);\n }}\n propertiesSource={propertiesSource}\n initialFilter={getInitialFilter}\n filterResultsCountRenderer={(filter) => {\n if (!filteringOptions) {\n return null;\n }\n\n return (\n <MatchingInstancesCount filter={filter} hierarchyLevelDetails={filteringOptions} defaultHierarchyLevelSizeLimit={defaultHierarchyLevelSizeLimit} />\n );\n }}\n />\n );\n\n return {\n onFilterClick: setFilteringOptions,\n filteringDialog,\n };\n}\n\ninterface MatchingInstancesCountProps {\n filter: PresentationInstanceFilterInfo;\n hierarchyLevelDetails: HierarchyLevelDetails;\n defaultHierarchyLevelSizeLimit: number;\n}\n\nfunction MatchingInstancesCount({ filter, defaultHierarchyLevelSizeLimit, hierarchyLevelDetails }: MatchingInstancesCountProps) {\n const { value, inProgress } = useDebouncedAsyncValue(\n useCallback(async () => {\n const instanceFilter = toGenericFilter(filter);\n try {\n const instanceCount = await countInstanceKeys(\n hierarchyLevelDetails.getInstanceKeysIterator({\n instanceFilter,\n hierarchyLevelSizeLimit: hierarchyLevelDetails.sizeLimit ?? defaultHierarchyLevelSizeLimit,\n }),\n );\n return TreeWidget.translate(\"filteringDialog.matchingInstancesCount\", {\n instanceCount: instanceCount.toLocaleString(undefined, { useGrouping: true }),\n });\n } catch (e) {\n if (e instanceof RowsLimitExceededError) {\n return TreeWidget.translate(\"filteringDialog.filterExceedsLimit\", { limit: e.limit.toLocaleString(undefined, { useGrouping: true }) });\n }\n return TreeWidget.translate(\"filteringDialog.failedToCalculateMatchingInstancesCount\");\n }\n }, [filter, hierarchyLevelDetails, defaultHierarchyLevelSizeLimit]),\n );\n\n if (inProgress) {\n return (\n <Delayed show={true}>\n {TreeWidget.translate(\"filteringDialog.matchingInstancesCount\", { instanceCount: \"\" })}\n <ProgressRadial size=\"x-small\" />\n </Delayed>\n );\n }\n\n return value ? <>{value}</> : null;\n}\n\nasync function countInstanceKeys(iterator: AsyncIterableIterator<InstanceKey>) {\n let result = 0;\n for await (const _ of iterator) {\n result++;\n }\n return result;\n}\n\nasync function collectInstanceKeys(iterator: AsyncIterableIterator<InstanceKey>) {\n const idsByClassName = new Map<Id64String, Id64Array>();\n for await (const { className, id } of iterator) {\n let idSet = idsByClassName.get(className);\n if (!idSet) {\n idSet = [];\n idsByClassName.set(className, idSet);\n }\n idSet.push(id);\n }\n\n const instanceKeys = new Array<[className: string, compressedIds: CompressedId64Set]>();\n for (const [className, ids] of idsByClassName) {\n instanceKeys.push([className.toLowerCase(), CompressedId64Set.sortAndCompress(ids)]);\n }\n return KeySet.fromJSON({ instanceKeys, nodeKeys: [] });\n}\n\nfunction fromGenericFilter(descriptor: Descriptor, filter: GenericInstanceFilter): PresentationInstanceFilterInfo {\n const presentationFilter =\n GenericInstanceFilter.isFilterRuleGroup(filter.rules) && filter.rules.rules.length === 0\n ? undefined\n : PresentationInstanceFilter.fromGenericInstanceFilter(descriptor, filter);\n return {\n filter: presentationFilter,\n usedClasses: (filter.filteredClassNames ?? [])\n .map((name) => descriptor.selectClasses.find((selectClass) => selectClass.selectClassInfo.name === name)?.selectClassInfo)\n .filter((classInfo): classInfo is ClassInfo => classInfo !== undefined),\n };\n}\n\nfunction toGenericFilter(filterInfo?: PresentationInstanceFilterInfo): GenericInstanceFilter | undefined {\n if (!filterInfo) {\n return undefined;\n }\n\n if (!filterInfo.filter) {\n return filterInfo.usedClasses.length > 0\n ? {\n propertyClassNames: [],\n relatedInstances: [],\n filteredClassNames: filterInfo.usedClasses.map((info) => info.name),\n rules: { operator: \"and\", rules: [] },\n }\n : undefined;\n }\n\n return PresentationInstanceFilter.toGenericInstanceFilter(filterInfo.filter, filterInfo.usedClasses);\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { Observable } from "rxjs";
2
2
  import type { BeEvent, IDisposable } from "@itwin/core-bentley";
3
3
  import type { HierarchyNode } from "@itwin/presentation-hierarchies-react";
4
- import type { TreeCheckboxProps } from "./components/TreeNodeCheckbox";
4
+ import type { TreeCheckboxProps } from "./components/TreeNodeCheckbox.js";
5
5
  /**
6
6
  * Data structure that describes instance visibility status.
7
7
  * @beta
@@ -4,7 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { useEffect, useRef, useState } from "react";
6
6
  import { asyncScheduler, defer, distinct, EMPTY, from, lastValueFrom, mergeMap, observeOn, onErrorResumeNextWith, Subject, takeUntil, tap, throttleTime, } from "rxjs";
7
- import { useTelemetryContext } from "./UseTelemetryContext";
7
+ import { useTelemetryContext } from "./UseTelemetryContext.js";
8
8
  export function useHierarchyVisibility({ visibilityHandlerFactory }) {
9
9
  const visibilityStatusMap = useRef(new Map());
10
10
  const [state, setState] = useState({
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UseHierarchyVisibility.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseHierarchyVisibility.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 { useEffect, useRef, useState } from \"react\";\nimport {\n asyncScheduler, defer, distinct, EMPTY, from, lastValueFrom, mergeMap, observeOn, onErrorResumeNextWith, Subject, takeUntil, tap, throttleTime,\n} from \"rxjs\";\nimport { useTelemetryContext } from \"./UseTelemetryContext.js\";\n\nimport type { Observable } from \"rxjs\";\nimport type { MutableRefObject } from \"react\";\nimport type { BeEvent, IDisposable } from \"@itwin/core-bentley\";\nimport type { HierarchyNode, PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { TreeCheckboxProps } from \"./components/TreeNodeCheckbox.js\";\n\n/**\n * Data structure that describes instance visibility status.\n * @beta\n */\nexport interface VisibilityStatus {\n /** Instance visibility state. */\n state: \"visible\" | \"partial\" | \"hidden\";\n /** Specifies whether visibility changing is disabled or not. */\n isDisabled?: boolean;\n /** Tooltip that should be displayed when hovering over the visibility checkbox. */\n tooltip?: string;\n}\n\n/**\n * Handler that can be used to determine and change visibility of instances represented by tree nodes.\n * @beta\n */\nexport interface HierarchyVisibilityHandler extends IDisposable {\n /** Event used to notify tree about visibility changes from outside. */\n readonly onVisibilityChange: BeEvent<() => void>;\n /** Returns current visibility status for tree node. */\n getVisibilityStatus(node: HierarchyNode): Promise<VisibilityStatus> | VisibilityStatus;\n /** Changes visibility of the instance represented by tree node. */\n changeVisibility(node: HierarchyNode, on: boolean): Promise<void>;\n}\n\ninterface UseHierarchyVisibilityProps {\n visibilityHandlerFactory: () => HierarchyVisibilityHandler;\n}\n\nexport function useHierarchyVisibility({ visibilityHandlerFactory }: UseHierarchyVisibilityProps): TreeCheckboxProps & { triggerRefresh: () => void } {\n const visibilityStatusMap = useRef(new Map<string, { node: PresentationHierarchyNode; status: VisibilityStatus; needsRefresh: boolean }>());\n const [state, setState] = useState<TreeCheckboxProps & { triggerRefresh: () => void }>({\n getCheckboxState: () => ({ state: \"off\", isDisabled: true }),\n onCheckboxClicked: () => {},\n triggerRefresh: () => {},\n });\n const { onFeatureUsed } = useTelemetryContext();\n\n useEffect(() => {\n visibilityStatusMap.current.clear();\n const handler = visibilityHandlerFactory();\n\n const visibilityChanged = new Subject<void>();\n const calculate = new Subject<PresentationHierarchyNode>();\n const calculateNodeStatus = (node: PresentationHierarchyNode) => {\n calculate.next(node);\n };\n\n const resetCache = () => {\n visibilityStatusMap.current.forEach((value) => {\n value.needsRefresh = true;\n });\n visibilityChanged.next();\n };\n\n const triggerCheckboxUpdate = () => {\n setState((prev) => ({\n ...prev,\n getCheckboxState: createStateGetter(visibilityStatusMap, calculateNodeStatus),\n }));\n };\n\n const subscription = calculate\n .pipe(\n distinct(undefined, visibilityChanged),\n observeOn(asyncScheduler),\n mergeMap((node) =>\n defer(async () => handler.getVisibilityStatus(node.nodeData)).pipe(\n tap({\n next: (status) => {\n visibilityStatusMap.current.set(node.id, {\n node,\n status,\n needsRefresh: false,\n });\n },\n }),\n takeUntil(visibilityChanged),\n onErrorResumeNextWith(EMPTY),\n ),\n ),\n throttleTime(100, undefined, { leading: false, trailing: true }),\n )\n .subscribe({\n next: () => {\n triggerCheckboxUpdate();\n },\n });\n\n const changeVisibility = (node: PresentationHierarchyNode, checked: boolean) => {\n onFeatureUsed({ featureId: \"visibility-change\", reportInteraction: true });\n void handler.changeVisibility(node.nodeData, checked);\n const entry = visibilityStatusMap.current.get(node.id);\n if (!entry) {\n return;\n }\n entry.status.state = checked ? \"visible\" : \"hidden\";\n entry.status.tooltip = undefined;\n triggerCheckboxUpdate();\n };\n\n setState({\n onCheckboxClicked: changeVisibility,\n getCheckboxState: createStateGetter(visibilityStatusMap, calculateNodeStatus),\n triggerRefresh: () => {\n resetCache();\n triggerCheckboxUpdate();\n },\n });\n\n const removeListener = handler.onVisibilityChange.addListener(() => {\n resetCache();\n triggerCheckboxUpdate();\n });\n\n return () => {\n subscription.unsubscribe();\n removeListener();\n handler.dispose();\n };\n }, [visibilityHandlerFactory, onFeatureUsed]);\n\n return state;\n}\n\nfunction createStateGetter(\n map: MutableRefObject<Map<string, { node: PresentationHierarchyNode; status: VisibilityStatus; needsRefresh: boolean }>>,\n calculateVisibility: (node: PresentationHierarchyNode) => void,\n): TreeCheckboxProps[\"getCheckboxState\"] {\n return (node) => {\n const entry = map.current.get(node.id);\n if (entry === undefined) {\n calculateVisibility(node);\n return { state: \"off\", isDisabled: true };\n }\n if (entry.needsRefresh) {\n calculateVisibility(node);\n }\n\n const status = entry.status;\n return {\n state: status.state === \"visible\" ? \"on\" : status.state === \"hidden\" ? \"off\" : \"partial\",\n tooltip: status.tooltip,\n isDisabled: status.isDisabled,\n };\n };\n}\n\n/**\n * Properties for an overridden method of a `HierarchyVisibilityHandler` implementation.\n * @beta\n */\nexport type HierarchyVisibilityHandlerOverridableMethodProps<TFunc> = TFunc extends (props: infer TProps) => infer TResult\n ? TProps & {\n /** A callback that produces the value from the original implementation. */\n readonly originalImplementation: () => TResult;\n /**\n * Reference to the hierarchy based handler.\n * @note Calling `getVisibility` or `changeVisibility` of this object invokes the overridden implementation as well.\n */\n readonly handler: HierarchyVisibilityHandler;\n }\n : never;\n\n/**\n * Function type for an overridden method of `HierarchyVisibilityHandler`.\n * @beta\n */\nexport type HierarchyVisibilityHandlerOverridableMethod<TFunc> = TFunc extends (...args: any[]) => infer TResult\n ? (props: HierarchyVisibilityHandlerOverridableMethodProps<TFunc>) => TResult\n : never;\n\nexport function createVisibilityHandlerResult<TResult, TOverrideProps>(\n handler: HierarchyVisibilityHandler,\n props: TOverrideProps,\n obs: Observable<TResult>,\n override: HierarchyVisibilityHandlerOverridableMethod<(props: TOverrideProps) => Promise<TResult>> | undefined,\n): Observable<TResult> {\n return override\n ? from(\n override({\n ...props,\n originalImplementation: async () => lastValueFrom(obs, { defaultValue: undefined as TResult }),\n handler,\n }),\n )\n : obs;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UseIModelChangeListener.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseIModelChangeListener.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AASxE,MAAM,UAAU,uBAAuB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAgC;IACtF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE;YACnC,OAAO;SACR;QACD,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACvB,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 { useEffect } from \"react\";\nimport { registerTxnListeners } from \"@itwin/presentation-core-interop\";\n\nimport type { IModelConnection } from \"@itwin/core-frontend\";\n\ninterface UseIModelChangeListenerProps {\n imodel: IModelConnection;\n action: () => void;\n}\n\nexport function useIModelChangeListener({ imodel, action }: UseIModelChangeListenerProps) {\n useEffect(() => {\n if (!imodel.isBriefcaseConnection()) {\n return;\n }\n return registerTxnListeners(imodel.txns, action);\n }, [imodel, action]);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UseMultiCheckboxHandler.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseMultiCheckboxHandler.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAcpF,MAAM,UAAU,uBAAuB,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAgC;IAC1G,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,WAAsC,EAAE,OAAgB,EAAE,EAAE;QAC3D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;YACnC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC9B,OAAO;SACR;QACD,SAAS,IAAI,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAChG,CAAC,EACD,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CACrC,CAAC;IAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAkC,EAClC,cAA2C,EAC3C,QAAmD;IAEnD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE;YACtC,OAAO;SACR;QACD,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC3B,QAAQ,CAAC,IAAI,CAAC,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YACzD,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;SAC9D;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 { isPresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\n\nimport type { PresentationHierarchyNode, PresentationTreeNode } from \"@itwin/presentation-hierarchies-react\";\n\ninterface UseMultiCheckboxHandlerProps {\n rootNodes: PresentationTreeNode[] | undefined;\n isNodeSelected: (nodeId: string) => boolean;\n onClick: (node: PresentationHierarchyNode, checked: boolean) => void;\n}\n\ninterface UseMultiCheckboxHandlerResult {\n onCheckboxClicked: (node: PresentationHierarchyNode, checked: boolean) => void;\n}\n\nexport function useMultiCheckboxHandler({ rootNodes, isNodeSelected, onClick }: UseMultiCheckboxHandlerProps): UseMultiCheckboxHandlerResult {\n const onCheckboxClicked = useCallback(\n (clickedNode: PresentationHierarchyNode, checked: boolean) => {\n if (!isNodeSelected(clickedNode.id)) {\n onClick(clickedNode, checked);\n return;\n }\n rootNodes && forEachSelectedNode(rootNodes, isNodeSelected, (node) => onClick(node, checked));\n },\n [rootNodes, isNodeSelected, onClick],\n );\n\n return { onCheckboxClicked };\n}\n\nfunction forEachSelectedNode(\n nodes: Array<PresentationTreeNode>,\n isNodeSelected: (nodeId: string) => boolean,\n callback: (node: PresentationHierarchyNode) => void,\n) {\n nodes.forEach((node) => {\n if (!isPresentationHierarchyNode(node)) {\n return;\n }\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"]}
@@ -5,7 +5,7 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  import { useCallback, useEffect, useRef, useState } from "react";
7
7
  import { isPresentationHierarchyNode } from "@itwin/presentation-hierarchies-react";
8
- import { useLatest } from "./Utils";
8
+ import { useLatest } from "./Utils.js";
9
9
  export function useNodeHighlighting({ rootNodes, highlight }) {
10
10
  const state = useRef({ nodeInfoMap: new Map(), totalMatches: 0 });
11
11
  const [activeNodeId, setActiveNodeId] = useState();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UseNodeHighlighting.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseNodeHighlighting.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 { useCallback, useEffect, useRef, useState } from \"react\";\nimport { isPresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport { useLatest } from \"./Utils.js\";\n\nimport type { PresentationHierarchyNode, PresentationTreeNode } from \"@itwin/presentation-hierarchies-react\";\n\n/** @beta */\nexport interface HighlightInfo {\n text: string;\n}\n\ninterface UseNodeHighlightingProps {\n rootNodes: PresentationTreeNode[] | undefined;\n // TODO: move activeMatchIndex and onHighlightChanged to HighlightInfo when it's implemented.\n highlight?: HighlightInfo & {\n activeMatchIndex?: number;\n onHighlightChanged?: (activeMatchIndex: number, matches: number) => void;\n };\n}\n\ninterface HighlightedChunk {\n start: number;\n end: number;\n}\n\ninterface NodeChunkInfo {\n chunks: HighlightedChunk[];\n activeChunkIndex?: number;\n}\n\ninterface NodeHighlightInfo {\n startIndex: number;\n matches: HighlightedChunk[];\n}\n\ninterface HighlightState {\n nodeInfoMap: Map<string, NodeHighlightInfo>;\n totalMatches: number;\n}\n\ninterface UseNodeHighlightingResult {\n activeNodeId?: string;\n getLabel: (node: PresentationHierarchyNode) => React.ReactElement;\n}\n\nexport function useNodeHighlighting({ rootNodes, highlight }: UseNodeHighlightingProps): UseNodeHighlightingResult {\n const state = useRef<HighlightState>({ nodeInfoMap: new Map(), totalMatches: 0 });\n const [activeNodeId, setActiveNodeId] = useState<string | undefined>();\n const activeMatchIndexRef = useLatest(highlight?.activeMatchIndex);\n const activeNodeIdRef = useLatest(activeNodeId);\n const onHighlightChangedRef = useLatest(highlight?.onHighlightChanged);\n const searchText = highlight?.text;\n\n useEffect(() => {\n const { state: newState, activeIndex } =\n rootNodes && searchText\n ? computeHighlightState(rootNodes, searchText, state.current, activeNodeIdRef.current, activeMatchIndexRef.current)\n : { state: { nodeInfoMap: new Map(), totalMatches: 0 }, activeIndex: 0 };\n\n state.current = newState;\n if (newState.totalMatches === 0) {\n setActiveNodeId(undefined);\n }\n onHighlightChangedRef.current?.(newState.totalMatches === 0 ? 0 : activeIndex, newState.totalMatches);\n }, [rootNodes, searchText, activeNodeIdRef, activeMatchIndexRef, onHighlightChangedRef]);\n\n useEffect(() => {\n for (const nodeId of state.current.nodeInfoMap.keys()) {\n if (getNodeChunkInfo(state.current, nodeId, highlight?.activeMatchIndex)?.activeChunkIndex !== undefined) {\n setActiveNodeId(nodeId);\n }\n }\n }, [highlight?.activeMatchIndex]);\n\n const getLabel = useCallback(\n (node: PresentationHierarchyNode) => {\n const chunkInfo = getNodeChunkInfo(state.current, node.id, highlight?.activeMatchIndex);\n if (searchText && chunkInfo) {\n return <>{markChunks(node.label, chunkInfo.chunks, chunkInfo.activeChunkIndex)}</>;\n }\n return <span>{node.label}</span>;\n },\n [searchText, highlight?.activeMatchIndex],\n );\n\n return { activeNodeId, getLabel };\n}\n\nfunction getNodeChunkInfo(state: HighlightState, nodeId: string, activeIndex?: number): NodeChunkInfo | undefined {\n const info = state.nodeInfoMap.get(nodeId);\n if (!info) {\n return undefined;\n }\n if (activeIndex === undefined) {\n return { chunks: info.matches };\n }\n const isActive = info && activeIndex >= info.startIndex && activeIndex < info.startIndex + info.matches.length;\n return isActive ? { activeChunkIndex: activeIndex - info.startIndex, chunks: info.matches } : { chunks: info.matches };\n}\n\nfunction computeHighlightState(rootNodes: PresentationTreeNode[], searchText: string, state: HighlightState, activeNodeId?: string, activeMatchIndex?: number) {\n const newState: HighlightState = { nodeInfoMap: new Map(), totalMatches: 0 };\n let newActiveIndex = activeMatchIndex ?? 0;\n\n const computeHighlightStateRecursively = (nodes: Array<PresentationTreeNode>) => {\n nodes.forEach((node) => {\n if (!isPresentationHierarchyNode(node)) {\n return;\n }\n\n const matches = findChunks(node.label, searchText);\n newState.nodeInfoMap.set(node.id, { startIndex: newState.totalMatches, matches });\n newState.totalMatches += matches.length;\n\n if (typeof node.children !== \"boolean\") {\n computeHighlightStateRecursively(node.children);\n }\n });\n };\n\n computeHighlightStateRecursively(rootNodes);\n\n // update active index to not cause active chunk jumps when hierarchy changes\n if (activeNodeId && newActiveIndex !== 0) {\n const activeNodeInfo = getNodeChunkInfo(state, activeNodeId, activeMatchIndex);\n const updatedInfo = newState.nodeInfoMap.get(activeNodeId);\n\n if (updatedInfo && activeNodeInfo?.activeChunkIndex !== undefined) {\n newActiveIndex = updatedInfo.startIndex + activeNodeInfo.activeChunkIndex;\n }\n }\n\n return { state: newState, activeIndex: newActiveIndex };\n}\n\nfunction findChunks(text: string, searchText: string): HighlightedChunk[] {\n const chunks: HighlightedChunk[] = [];\n\n const contentText = text.toLowerCase();\n const inputText = searchText.toLowerCase();\n let index = contentText.indexOf(inputText);\n\n while (index !== -1) {\n chunks.push({ start: index, end: index + inputText.length });\n index = contentText.indexOf(inputText, index + 1);\n }\n\n return chunks;\n}\n\nfunction markChunks(text: string, chunks: HighlightedChunk[], activeChunk?: number) {\n const markedText: React.ReactElement[] = [];\n let previousIndex = 0;\n\n const { mergedChunks, newActiveIndex } = mergeChunks(chunks, activeChunk);\n\n for (let i = 0; i < mergedChunks.length; i++) {\n const { start, end } = mergedChunks[i];\n\n // add unmarked text between previous chunk and current one\n const nonMarkedText = text.substring(previousIndex, start);\n nonMarkedText.length && markedText.push(<span key={previousIndex}>{nonMarkedText}</span>);\n\n // add marked chunk text\n markedText.push(\n <mark key={start} className={i === newActiveIndex ? \"tw-active-match-highlight\" : undefined}>\n {text.substring(start, end)}\n </mark>,\n );\n previousIndex = end;\n }\n\n // add unmarked text after last chunk\n const lastNonMarkedText = text.substring(previousIndex, text.length);\n lastNonMarkedText.length && markedText.push(<span key={previousIndex}>{lastNonMarkedText}</span>);\n\n return markedText;\n}\n\nfunction mergeChunks(chunks: HighlightedChunk[], activeChunk?: number) {\n const mergedChunks: HighlightedChunk[] = [];\n let lastChunk: { isActive: boolean; info: HighlightedChunk } | undefined;\n let newActiveIndex: number | undefined;\n\n for (let i = 0; i < chunks.length; i++) {\n const chunk = chunks[i];\n const isActive = i === activeChunk;\n if (lastChunk && lastChunk.info.end === chunk.start && !isActive && !lastChunk.isActive) {\n lastChunk.info.end = chunk.end;\n continue;\n }\n isActive && (newActiveIndex = mergedChunks.length);\n const newChunk = { start: chunk.start, end: chunk.end };\n lastChunk = { isActive, info: newChunk };\n mergedChunks.push(newChunk);\n }\n return { mergedChunks, newActiveIndex };\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 { createContext, useCallback, useContext, useMemo } from "react";
7
- import { useLatest } from "./Utils";
7
+ import { useLatest } from "./Utils.js";
8
8
  const telemetryContext = createContext(undefined);
9
9
  /** @beta */
10
10
  export function TelemetryContextProvider({ children, onPerformanceMeasured, onFeatureUsed, componentIdentifier, }) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UseTelemetryContext.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/UseTelemetryContext.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAkBvC,MAAM,gBAAgB,GAAG,aAAa,CAA+B,SAAS,CAAC,CAAC;AAYhF,YAAY;AACZ,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GAC8B;IACjD,MAAM,wBAAwB,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAElD,MAAM,YAAY,GAAG,OAAO,CAAmB,GAAG,EAAE;QAClD,OAAO;YACL,qBAAqB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC,GAAG,mBAAmB,IAAI,SAAS,EAAE,EAAE,QAAQ,CAAC;YACnI,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,EAAE;gBAClD,IAAI,iBAAiB,KAAK,KAAK,EAAE;oBAC/B,gBAAgB,CAAC,OAAO,EAAE,CAAC,OAAO,mBAAmB,EAAE,CAAC,CAAC;iBAC1D;gBACD,IAAI,SAAS,EAAE;oBACb,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,mBAAmB,IAAI,SAAS,EAAE,CAAC,CAAC;iBACnE;YACH,CAAC;SACF,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEtE,OAAO,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAAG,QAAQ,GAA6B,CAAC;AAChG,CAAC;AAED,MAAM,mBAAmB,GAAqB;IAC5C,qBAAqB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC/B,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;CACxB,CAAC;AAEF,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,mBAAmB,CAAC;AAC7D,CAAC;AAOD,gBAAgB;AAChB,MAAM,UAAU,kBAAkB,CAA2C,EAAE,MAAM,EAAE,SAAS,EAAoC;IAClI,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAChD,OAAO,WAAW,CAChB,CAAC,GAAG,IAAI,EAAE,EAAE;QACV,aAAa,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAClB,CAAC,EACD,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CACnC,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 { createContext, useCallback, useContext, useMemo } from \"react\";\nimport { useLatest } from \"./Utils.js\";\n\nimport type { PropsWithChildren } from \"react\";\n\ntype TrackedFeatures =\n | \"visibility-change\"\n | \"hierarchy-level-filtering\"\n | \"filtering\"\n | \"hierarchy-level-size-limit-hit\"\n | \"zoom-to-node\"\n | \"error-timeout\"\n | \"error-unknown\";\n\ninterface TelemetryContext {\n onPerformanceMeasured: (featureId: string, duration: number) => void;\n onFeatureUsed: (props: { featureId?: TrackedFeatures; reportInteraction: boolean }) => void;\n}\n\nconst telemetryContext = createContext<TelemetryContext | undefined>(undefined);\n\n/** @beta */\nexport interface TelemetryContextProviderProps {\n /** Callback that is invoked when performance of tracked feature is measured. */\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n /** Callback that is invoked when a tracked feature is used. */\n onFeatureUsed?: (featureId: string) => void;\n /** Unique identifier that is appended to feature id to help track which component used that feature. */\n componentIdentifier: string;\n}\n\n/** @beta */\nexport function TelemetryContextProvider({\n children,\n onPerformanceMeasured,\n onFeatureUsed,\n componentIdentifier,\n}: PropsWithChildren<TelemetryContextProviderProps>) {\n const onPerformanceMeasuredRef = useLatest(onPerformanceMeasured);\n const onFeatureUsedRef = useLatest(onFeatureUsed);\n\n const contextValue = useMemo<TelemetryContext>(() => {\n return {\n onPerformanceMeasured: (featureId, duration) => onPerformanceMeasuredRef.current?.(`${componentIdentifier}-${featureId}`, duration),\n onFeatureUsed: ({ featureId, reportInteraction }) => {\n if (reportInteraction !== false) {\n onFeatureUsedRef.current?.(`use-${componentIdentifier}`);\n }\n if (featureId) {\n onFeatureUsedRef.current?.(`${componentIdentifier}-${featureId}`);\n }\n },\n };\n }, [componentIdentifier, onPerformanceMeasuredRef, onFeatureUsedRef]);\n\n return <telemetryContext.Provider value={contextValue}>{children}</telemetryContext.Provider>;\n}\n\nconst defaultContextValue: TelemetryContext = {\n onPerformanceMeasured: () => {},\n onFeatureUsed: () => {},\n};\n\nexport function useTelemetryContext() {\n return useContext(telemetryContext) ?? defaultContextValue;\n}\n\ninterface UseReportingActionProps<TAction> {\n action: TAction;\n featureId?: TrackedFeatures;\n}\n\n/** @internal */\nexport function useReportingAction<TAction extends (...args: any[]) => void>({ action, featureId }: UseReportingActionProps<TAction>) {\n const { onFeatureUsed } = useTelemetryContext();\n return useCallback<(...args: Parameters<TAction>) => void>(\n (...args) => {\n onFeatureUsed({ featureId, reportInteraction: true });\n action(...args);\n },\n [action, featureId, onFeatureUsed],\n );\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/common/Utils.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 { useEffect, useRef } from \"react\";\nimport { createECSchemaProvider, createECSqlQueryExecutor } from \"@itwin/presentation-core-interop\";\nimport { createLimitingECSqlQueryExecutor } from \"@itwin/presentation-hierarchies\";\nimport { createCachingECClassHierarchyInspector } from \"@itwin/presentation-shared\";\n\nimport type { Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { SchemaContext } from \"@itwin/ecschema-metadata\";\n\n/** @beta */\nexport type FunctionProps<THook extends (props: any) => any> = Parameters<THook>[0];\n\n/** @internal */\nexport function createIdsSelector(ids: Id64Array): string {\n // Note: `json_array` function only accepts up to 127 arguments and we may have more `ids` than that. As a workaround,\n // we're creating an array of arrays\n const slices = new Array<Id64String[]>();\n for (let sliceStartIndex = 0; sliceStartIndex < ids.length; sliceStartIndex += 127) {\n let sliceEndIndex: number | undefined = sliceStartIndex + 127;\n if (sliceEndIndex > ids.length) {\n sliceEndIndex = undefined;\n }\n slices.push(ids.slice(sliceStartIndex, sliceEndIndex));\n }\n return `json_array(${slices.map((sliceIds) => `json_array(${sliceIds.map((id) => `'${id}'`).join(\",\")})`).join(\",\")})`;\n}\n\n/** @internal */\nexport function parseIdsSelectorResult(selectorResult: any): Id64Array {\n if (!Array.isArray(selectorResult)) {\n return [];\n }\n return selectorResult.reduce((arr, ids: Id64String | Id64String[]) => [...arr, ...(Array.isArray(ids) ? ids : [ids])], new Array<Id64String>());\n}\n\n/** @internal */\nexport function pushToMap<TKey, TValue>(targetMap: Map<TKey, Set<TValue>>, key: TKey, value: TValue) {\n let set = targetMap.get(key);\n if (!set) {\n set = new Set();\n targetMap.set(key, set);\n }\n set.add(value);\n}\n\n/** @internal */\nexport function createIModelAccess({ imodel, getSchemaContext }: { imodel: IModelConnection; getSchemaContext: (imodel: IModelConnection) => SchemaContext }) {\n const schemas = getSchemaContext(imodel);\n const schemaProvider = createECSchemaProvider(schemas);\n return {\n imodelKey: imodel.key,\n ...schemaProvider,\n ...createCachingECClassHierarchyInspector({ schemaProvider, cacheSize: 100 }),\n ...createLimitingECSqlQueryExecutor(createECSqlQueryExecutor(imodel), 1000),\n };\n}\n\n/** @internal */\nexport function useLatest<T>(value: T) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Delayed.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/Delayed.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIlD,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAwC;IAC9E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,IAAI,EAAE;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO;SACR;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IAED,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACzB,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 { useLayoutEffect, useState } from \"react\";\n\nimport type { PropsWithChildren } from \"react\";\n\nexport function Delayed({ show, children }: PropsWithChildren<{ show: boolean }>) {\n const [visible, setVisible] = useState(false);\n\n useLayoutEffect(() => {\n if (!show) {\n setVisible(false);\n return;\n }\n\n const timer = setTimeout(() => {\n setVisible(show);\n }, 250);\n return () => {\n clearTimeout(timer);\n };\n }, [show]);\n\n if (!visible) {\n return null;\n }\n\n return <>{children}</>;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressOverlay.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/ProgressOverlay.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,eAAK,SAAS,EAAC,+BAA+B,aAC5C,KAAC,cAAc,IAAC,aAAa,SAAG,EAChC,cAAK,SAAS,EAAC,8BAA8B,GAAG,IAC5C,CACP,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 \"./ProgressOverlay.scss\";\nimport { ProgressLinear } from \"@itwin/itwinui-react\";\n\nexport function ProgressOverlay() {\n return (\n <div className=\"tw-progress-overlay-container\">\n <ProgressLinear indeterminate />\n <div className=\"tw-progress-overlay-backdrop\" />\n </div>\n );\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import { useSelectionHandler } from "@itwin/presentation-hierarchies-react";
2
- import type { FunctionProps } from "../Utils";
2
+ import type { FunctionProps } from "../Utils.js";
3
3
  import type { ReactNode } from "react";
4
4
  import type { IModelConnection } from "@itwin/core-frontend";
5
5
  import type { SchemaContext } from "@itwin/ecschema-metadata";
6
6
  import type { PresentationHierarchyNode, SelectionStorage, useIModelTree } from "@itwin/presentation-hierarchies-react";
7
- import type { HighlightInfo } from "../UseNodeHighlighting";
8
- import type { TreeRendererProps } from "./TreeRenderer";
7
+ import type { HighlightInfo } from "../UseNodeHighlighting.js";
8
+ import type { TreeRendererProps } from "./TreeRenderer.js";
9
9
  /** @beta */
10
10
  export type TreeProps = Pick<FunctionProps<typeof useIModelTree>, "getFilteredPaths" | "getHierarchyDefinition"> & Partial<Pick<FunctionProps<typeof useSelectionHandler>, "selectionMode">> & {
11
11
  /** iModel connection that should be used to pull data from. */
@@ -38,7 +38,7 @@ export type TreeProps = Pick<FunctionProps<typeof useIModelTree>, "getFilteredPa
38
38
  };
39
39
  /**
40
40
  * Default tree component that manages tree state and renders using supplied `treeRenderer`.
41
- * @Beta
41
+ * @beta
42
42
  */
43
43
  export declare function Tree({ getSchemaContext, hierarchyLevelSizeLimit, selectionStorage, imodelAccess: providedIModelAccess, ...props }: TreeProps): JSX.Element;
44
44
  //# sourceMappingURL=Tree.d.ts.map
@@ -8,18 +8,18 @@ import { BeEvent } from "@itwin/core-bentley";
8
8
  import { Flex, ProgressRadial, Text } from "@itwin/itwinui-react";
9
9
  import { SchemaMetadataContextProvider } from "@itwin/presentation-components";
10
10
  import { UnifiedSelectionProvider, useIModelUnifiedSelectionTree, useSelectionHandler } from "@itwin/presentation-hierarchies-react";
11
- import { TreeWidget } from "../../../../TreeWidget";
12
- import { useHierarchiesLocalization } from "../UseHierarchiesLocalization";
13
- import { useHierarchyLevelFiltering } from "../UseHierarchyFiltering";
14
- import { useIModelChangeListener } from "../UseIModelChangeListener";
15
- import { useNodeHighlighting } from "../UseNodeHighlighting";
16
- import { useReportingAction, useTelemetryContext } from "../UseTelemetryContext";
17
- import { createIModelAccess } from "../Utils";
18
- import { Delayed } from "./Delayed";
19
- import { ProgressOverlay } from "./ProgressOverlay";
11
+ import { TreeWidget } from "../../../../TreeWidget.js";
12
+ import { useHierarchiesLocalization } from "../UseHierarchiesLocalization.js";
13
+ import { useHierarchyLevelFiltering } from "../UseHierarchyFiltering.js";
14
+ import { useIModelChangeListener } from "../UseIModelChangeListener.js";
15
+ import { useNodeHighlighting } from "../UseNodeHighlighting.js";
16
+ import { useReportingAction, useTelemetryContext } from "../UseTelemetryContext.js";
17
+ import { createIModelAccess } from "../Utils.js";
18
+ import { Delayed } from "./Delayed.js";
19
+ import { ProgressOverlay } from "./ProgressOverlay.js";
20
20
  /**
21
21
  * Default tree component that manages tree state and renders using supplied `treeRenderer`.
22
- * @Beta
22
+ * @beta
23
23
  */
24
24
  export function Tree({ getSchemaContext, hierarchyLevelSizeLimit, selectionStorage, imodelAccess: providedIModelAccess, ...props }) {
25
25
  const defaultHierarchyLevelSizeLimit = hierarchyLevelSizeLimit ?? 1000;
@@ -0,0 +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 { useCallback, useMemo, useState } from \"react\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { Flex, ProgressRadial, Text } from \"@itwin/itwinui-react\";\nimport { SchemaMetadataContextProvider } from \"@itwin/presentation-components\";\nimport { UnifiedSelectionProvider, useIModelUnifiedSelectionTree, useSelectionHandler } from \"@itwin/presentation-hierarchies-react\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { useHierarchiesLocalization } from \"../UseHierarchiesLocalization.js\";\nimport { useHierarchyLevelFiltering } from \"../UseHierarchyFiltering.js\";\nimport { useIModelChangeListener } from \"../UseIModelChangeListener.js\";\nimport { useNodeHighlighting } from \"../UseNodeHighlighting.js\";\nimport { useReportingAction, useTelemetryContext } from \"../UseTelemetryContext.js\";\nimport { createIModelAccess } from \"../Utils.js\";\nimport { Delayed } from \"./Delayed.js\";\nimport { ProgressOverlay } from \"./ProgressOverlay.js\";\n\nimport type { MarkRequired } from \"@itwin/core-bentley\";\nimport type { FunctionProps } from \"../Utils.js\";\nimport type { ReactNode } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { SchemaContext } from \"@itwin/ecschema-metadata\";\nimport type { PresentationHierarchyNode, SelectionStorage, useIModelTree } from \"@itwin/presentation-hierarchies-react\";\nimport type { HighlightInfo } from \"../UseNodeHighlighting.js\";\nimport type { TreeRendererProps } from \"./TreeRenderer.js\";\n\n/** @beta */\nexport type TreeProps = Pick<FunctionProps<typeof useIModelTree>, \"getFilteredPaths\" | \"getHierarchyDefinition\"> &\n Partial<Pick<FunctionProps<typeof useSelectionHandler>, \"selectionMode\">> & {\n /** iModel connection that should be used to pull data from. */\n imodel: IModelConnection;\n /** Callback for getting `SchemaContext` for specific iModel. */\n getSchemaContext: (imodel: IModelConnection) => SchemaContext;\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: (\n treeProps: Required<\n Pick<\n TreeRendererProps,\n \"rootNodes\" | \"expandNode\" | \"onNodeClick\" | \"onNodeKeyDown\" | \"onFilterClick\" | \"isNodeSelected\" | \"getHierarchyLevelDetails\" | \"size\" | \"getLabel\"\n >\n >,\n ) => 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 /** Modifies the density of tree nodes. `enlarged` tree nodes have bigger button hit boxes. */\n density?: \"default\" | \"enlarged\";\n /** Message that should be renderer if there are no tree nodes. */\n noDataMessage?: ReactNode;\n /** Callback that this invoked when tree reloads. */\n onReload?: () => void;\n /** Options for highlighting node labels. */\n highlight?: HighlightInfo;\n };\n\n/**\n * Default tree component that manages tree state and renders using supplied `treeRenderer`.\n * @beta\n */\nexport function Tree({ getSchemaContext, hierarchyLevelSizeLimit, selectionStorage, imodelAccess: providedIModelAccess, ...props }: TreeProps) {\n const defaultHierarchyLevelSizeLimit = hierarchyLevelSizeLimit ?? 1000;\n\n const imodelAccess = useMemo(() => {\n return providedIModelAccess ?? createIModelAccess({ getSchemaContext, imodel: props.imodel });\n }, [providedIModelAccess, getSchemaContext, props.imodel]);\n\n return (\n <SchemaMetadataContextProvider imodel={props.imodel} schemaContextProvider={getSchemaContext}>\n <UnifiedSelectionProvider storage={selectionStorage}>\n <TreeImpl {...props} imodelAccess={imodelAccess} defaultHierarchyLevelSizeLimit={defaultHierarchyLevelSizeLimit} />\n </UnifiedSelectionProvider>\n </SchemaMetadataContextProvider>\n );\n}\n\nfunction TreeImpl({\n imodel,\n imodelAccess,\n treeName,\n noDataMessage,\n getFilteredPaths,\n defaultHierarchyLevelSizeLimit,\n getHierarchyDefinition,\n selectionPredicate,\n selectionMode,\n onReload,\n treeRenderer,\n density,\n highlight,\n}: MarkRequired<Omit<TreeProps, \"getSchemaContext\" | \"selectionStorage\">, \"imodelAccess\"> & { defaultHierarchyLevelSizeLimit: number }) {\n const localizedStrings = useHierarchiesLocalization();\n const { onFeatureUsed, onPerformanceMeasured } = useTelemetryContext();\n const [imodelChanged] = useState(new BeEvent<() => void>());\n const {\n rootNodes,\n getNode,\n isLoading,\n selectNodes: selectNodesAction,\n setFormatter: _setFormatter,\n expandNode,\n ...treeProps\n } = useIModelUnifiedSelectionTree({\n imodelAccess,\n imodelChanged,\n getHierarchyDefinition,\n getFilteredPaths,\n sourceName: treeName,\n localizedStrings,\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({ imodel, action: useCallback(() => imodelChanged.raiseEvent(), [imodelChanged]) });\n\n const selectNodes = useSelectionPredicate({\n action: useReportingAction({ action: selectNodesAction }),\n predicate: selectionPredicate,\n getNode,\n });\n const { onNodeClick, onNodeKeyDown } = useSelectionHandler({ rootNodes, selectNodes, selectionMode: selectionMode ?? \"single\" });\n const { filteringDialog, onFilterClick } = useHierarchyLevelFiltering({\n imodel,\n defaultHierarchyLevelSizeLimit,\n });\n const reportingExpandNode = useReportingAction({ action: expandNode });\n const reportingOnFilterClicked = useReportingAction({ action: onFilterClick });\n const { getLabel } = useNodeHighlighting({ rootNodes, highlight });\n\n if (rootNodes === undefined) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\" style={{ width: \"100%\", height: \"100%\" }}>\n <Delayed show={true}>\n <ProgressRadial size=\"large\" />\n </Delayed>\n </Flex>\n );\n }\n\n if (rootNodes.length === 0 && !isLoading) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\" flexDirection=\"column\" style={{ width: \"100%\", height: \"100%\" }}>\n {noDataMessage ? noDataMessage : <Text>{TreeWidget.translate(\"baseTree.dataIsNotAvailable\")}</Text>}\n </Flex>\n );\n }\n\n const treeRendererProps: FunctionProps<TreeProps[\"treeRenderer\"]> = {\n ...treeProps,\n rootNodes,\n onNodeClick,\n onNodeKeyDown,\n expandNode: reportingExpandNode,\n onFilterClick: reportingOnFilterClicked,\n getLabel,\n size: density === \"enlarged\" ? \"default\" : \"small\",\n };\n\n return (\n <div style={{ position: \"relative\", height: \"100%\", overflow: \"hidden\" }}>\n <div id=\"tw-tree-renderer-container\" style={{ overflow: \"auto\", height: \"100%\" }}>\n {treeRenderer(treeRendererProps)}\n {filteringDialog}\n </div>\n <Delayed show={isLoading}>\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}): ReturnType<typeof useIModelUnifiedSelectionTree>[\"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,4 +1,4 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /*---------------------------------------------------------------------------------------------
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.
@@ -12,10 +12,13 @@ export function TreeNodeCheckbox({ node, onCheckboxClicked, getCheckboxState, ..
12
12
  return null;
13
13
  }
14
14
  const checkboxState = getCheckboxState(node);
15
- return (_jsx(Tooltip, { content: checkboxState.tooltip, placement: "left", children: _jsx(Checkbox, { ...props, className: cx("tw-tree-node-checkbox", props.className), checked: checkboxState.state === "on", onClick: (e) => {
15
+ return (_jsx(TooltipWrapper, { content: checkboxState.tooltip, children: _jsx(Checkbox, { ...props, className: cx("tw-tree-node-checkbox", props.className), checked: checkboxState.state === "on", onClick: (e) => {
16
16
  e.stopPropagation();
17
17
  }, onChange: (e) => {
18
18
  onCheckboxClicked(node, e.currentTarget.checked);
19
19
  }, indeterminate: checkboxState.state === "partial", disabled: checkboxState.isDisabled, "aria-label": checkboxState.tooltip }) }));
20
20
  }
21
+ function TooltipWrapper({ content, children }) {
22
+ return !!content ? (_jsx(Tooltip, { content: content, placement: "left", children: children })) : (_jsx(_Fragment, { children: children }));
23
+ }
21
24
  //# sourceMappingURL=TreeNodeCheckbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeNodeCheckbox.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeNodeCheckbox.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AA2BpF,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,KAAK,EAAsD;IAC1I,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE;QACxD,OAAO,IAAI,CAAC;KACb;IAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,CACL,KAAC,cAAc,IAAC,OAAO,EAAE,aAAa,CAAC,OAAO,YAC5C,KAAC,QAAQ,OACH,KAAK,EACT,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,SAAS,CAAC,EACvD,OAAO,EAAE,aAAa,CAAC,KAAK,KAAK,IAAI,EACrC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,CAAC,CAAC,eAAe,EAAE,CAAC;YACtB,CAAC,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC,EACD,aAAa,EAAE,aAAa,CAAC,KAAK,KAAK,SAAS,EAChD,QAAQ,EAAE,aAAa,CAAC,UAAU,gBACtB,aAAa,CAAC,OAAO,GACjC,GACa,CAClB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAoD;IAC7F,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACjB,KAAC,OAAO,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,MAAM,YACxC,QAAQ,GACD,CACX,CAAC,CAAC,CAAC,CACF,4BAAG,QAAQ,GAAI,CAChB,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 cx from \"classnames\";\nimport { Checkbox, Tooltip } from \"@itwin/itwinui-react\";\nimport { isPresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\n\nimport type { PresentationHierarchyNode, RenderedTreeNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n\n/**\n * Data structure that describes tree node checkbox state.\n * @beta\n */\ninterface TreeNodeCheckboxState {\n state: \"on\" | \"off\" | \"partial\";\n isDisabled?: boolean;\n tooltip?: string;\n}\n\n/** @beta */\nexport interface TreeCheckboxProps {\n /** Callback that should be invoked when checkbox is clicked. */\n onCheckboxClicked: (node: PresentationHierarchyNode, checked: boolean) => void;\n /** Callback that should be used to determine current checkbox state. */\n getCheckboxState: (node: PresentationHierarchyNode) => TreeNodeCheckboxState;\n}\n\n/** @internal */\ntype TreeNodeCheckboxProps = TreeCheckboxProps &\n Omit<ComponentPropsWithoutRef<typeof Checkbox>, \"onClick\" | \"checked\" | \"onChange\" | \"indeterminate\" | \"disabled\" | \"title\">;\n\n/** @internal */\nexport function TreeNodeCheckbox({ node, onCheckboxClicked, getCheckboxState, ...props }: TreeNodeCheckboxProps & { node: RenderedTreeNode }) {\n if (\"type\" in node || !isPresentationHierarchyNode(node)) {\n return null;\n }\n\n const checkboxState = getCheckboxState(node);\n return (\n <TooltipWrapper content={checkboxState.tooltip}>\n <Checkbox\n {...props}\n className={cx(\"tw-tree-node-checkbox\", props.className)}\n checked={checkboxState.state === \"on\"}\n onClick={(e) => {\n e.stopPropagation();\n }}\n onChange={(e) => {\n onCheckboxClicked(node, e.currentTarget.checked);\n }}\n indeterminate={checkboxState.state === \"partial\"}\n disabled={checkboxState.isDisabled}\n aria-label={checkboxState.tooltip}\n />\n </TooltipWrapper>\n );\n}\n\nfunction TooltipWrapper({ content, children }: { content?: string; children?: React.ReactNode }) {\n return !!content ? (\n <Tooltip content={content} placement=\"left\">\n {children}\n </Tooltip>\n ) : (\n <>{children}</>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { TreeNodeRenderer as CoreTreeNodeRenderer } from "@itwin/presentation-hierarchies-react";
2
2
  import type { ComponentPropsWithoutRef, ForwardRefExoticComponent, RefAttributes } from "react";
3
- import type { TreeCheckboxProps } from "./TreeNodeCheckbox";
3
+ import type { TreeCheckboxProps } from "./TreeNodeCheckbox.js";
4
4
  /** @beta */
5
5
  export type TreeNodeRendererProps = ComponentPropsWithoutRef<typeof CoreTreeNodeRenderer> & {
6
6
  /** Props for rendering tree node checkbox. If not provided, checkbox is not rendered. */
@@ -6,7 +6,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
6
6
  import cx from "classnames";
7
7
  import { forwardRef } from "react";
8
8
  import { TreeNodeRenderer as CoreTreeNodeRenderer } from "@itwin/presentation-hierarchies-react";
9
- import { TreeNodeCheckbox } from "./TreeNodeCheckbox";
9
+ import { TreeNodeCheckbox } from "./TreeNodeCheckbox.js";
10
10
  /** @beta */
11
11
  export const TreeNodeRenderer = forwardRef(({ checkboxProps, ...props }, forwardedRef) => {
12
12
  return (_jsx(CoreTreeNodeRenderer, { ...props, ref: forwardedRef, nodeProps: { className: cx("tw-tree-node", props.isSelected && "selected", props.className) }, actionButtonsClassName: "tw-tree-node-action-buttons", checkbox: checkboxProps ? _jsx(TreeNodeCheckbox, { ...checkboxProps, node: props.node }) : null, contentProps: { className: "tw-tree-node-content" }, checkboxProps: { className: "tw-tree-node-checkbox-container" } }));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeNodeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeNodeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAWzD,YAAY;AACZ,MAAM,CAAC,MAAM,gBAAgB,GAAqF,UAAU,CAC1H,CAAC,EAAE,aAAa,EAAE,GAAG,KAAK,EAAyB,EAAE,YAAY,EAAE,EAAE;IACnE,OAAO,CACL,KAAC,oBAAoB,OACf,KAAK,EACT,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,EAC7F,sBAAsB,EAAC,6BAA6B,EACpD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAC,gBAAgB,OAAK,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,EAC1F,YAAY,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,EACnD,aAAa,EAAE,EAAE,SAAS,EAAE,iCAAiC,EAAE,GAC/D,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AACF,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,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 cx from \"classnames\";\nimport { forwardRef } from \"react\";\nimport { TreeNodeRenderer as CoreTreeNodeRenderer } from \"@itwin/presentation-hierarchies-react\";\nimport { TreeNodeCheckbox } from \"./TreeNodeCheckbox.js\";\n\nimport type { ComponentPropsWithoutRef, ForwardRefExoticComponent, RefAttributes } from \"react\";\nimport type { TreeCheckboxProps } from \"./TreeNodeCheckbox.js\";\n\n/** @beta */\nexport type TreeNodeRendererProps = ComponentPropsWithoutRef<typeof CoreTreeNodeRenderer> & {\n /** Props for rendering tree node checkbox. If not provided, checkbox is not rendered. */\n checkboxProps?: TreeCheckboxProps;\n};\n\n/** @beta */\nexport const TreeNodeRenderer: ForwardRefExoticComponent<TreeNodeRendererProps & RefAttributes<HTMLDivElement>> = forwardRef(\n ({ checkboxProps, ...props }: TreeNodeRendererProps, forwardedRef) => {\n return (\n <CoreTreeNodeRenderer\n {...props}\n ref={forwardedRef}\n nodeProps={{ className: cx(\"tw-tree-node\", props.isSelected && \"selected\", props.className) }}\n actionButtonsClassName=\"tw-tree-node-action-buttons\"\n checkbox={checkboxProps ? <TreeNodeCheckbox {...checkboxProps} node={props.node} /> : null}\n contentProps={{ className: \"tw-tree-node-content\" }}\n checkboxProps={{ className: \"tw-tree-node-checkbox-container\" }}\n />\n );\n },\n);\nTreeNodeRenderer.displayName = \"TreeNodeRenderer\";\n"]}