@itwin/tree-widget-react 3.0.0-dev.0 → 3.0.0-dev.2

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 (548) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +232 -147
  3. package/lib/cjs/TreeWidget.d.ts +0 -1
  4. package/lib/cjs/TreeWidget.js +0 -6
  5. package/lib/cjs/TreeWidget.js.map +1 -1
  6. package/lib/cjs/components/SelectableTree.d.ts +3 -9
  7. package/lib/cjs/components/SelectableTree.js +1 -1
  8. package/lib/cjs/components/SelectableTree.js.map +1 -1
  9. package/lib/cjs/components/TreeSelector.d.ts +2 -2
  10. package/lib/cjs/components/TreeSelector.js.map +1 -1
  11. package/lib/cjs/components/TreeWidgetUiItemsProvider.d.ts +14 -25
  12. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +43 -45
  13. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
  14. package/lib/cjs/components/tree-header/TreeHeader.js +10 -10
  15. package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -1
  16. package/lib/cjs/components/tree-header/TreeHeader.scss +7 -41
  17. package/lib/cjs/components/trees/Tree.scss +23 -0
  18. package/lib/cjs/components/trees/categories-tree/CategoriesTree.d.ts +22 -0
  19. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js +78 -0
  20. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js.map +1 -0
  21. package/lib/{esm/components/trees/category-tree → cjs/components/trees/categories-tree}/CategoriesTreeButtons.d.ts +2 -9
  22. package/lib/cjs/components/trees/{category-tree → categories-tree}/CategoriesTreeButtons.js +10 -11
  23. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
  24. package/lib/{esm/components/trees/category-tree → cjs/components/trees/categories-tree}/CategoriesTreeComponent.d.ts +11 -12
  25. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js +75 -0
  26. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
  27. package/lib/cjs/components/trees/{stateless/categories-tree → categories-tree}/CategoriesTreeDefinition.js +7 -2
  28. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
  29. package/lib/cjs/components/trees/{stateless/categories-tree → categories-tree}/CategoriesVisibilityHandler.d.ts +6 -6
  30. package/lib/cjs/components/trees/{stateless/categories-tree → categories-tree}/CategoriesVisibilityHandler.js +10 -10
  31. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
  32. package/lib/cjs/components/trees/categories-tree/UseCategories.d.ts +8 -0
  33. package/lib/cjs/components/trees/categories-tree/UseCategories.js +22 -0
  34. package/lib/cjs/components/trees/categories-tree/UseCategories.js.map +1 -0
  35. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.d.ts +46 -0
  36. package/lib/cjs/components/trees/{CategoriesVisibilityUtils.js → common/CategoriesVisibilityUtils.js} +56 -8
  37. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
  38. package/lib/{esm/components/trees/stateless → cjs/components/trees}/common/FocusedInstancesContext.d.ts +2 -1
  39. package/lib/cjs/components/trees/common/FocusedInstancesContext.js.map +1 -0
  40. package/lib/{esm/components/trees/stateless → cjs/components/trees}/common/FocusedInstancesContextProvider.d.ts +1 -1
  41. package/lib/cjs/components/trees/{stateless/common → common}/FocusedInstancesContextProvider.js +30 -6
  42. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js.map +1 -0
  43. package/lib/cjs/components/trees/common/Rxjs.d.ts +10 -0
  44. package/lib/cjs/components/trees/common/Rxjs.js +46 -0
  45. package/lib/cjs/components/trees/common/Rxjs.js.map +1 -0
  46. package/lib/cjs/components/trees/common/UseFeatureReporting.d.ts +11 -0
  47. package/lib/cjs/components/trees/common/UseFeatureReporting.js +10 -1
  48. package/lib/cjs/components/trees/common/UseFeatureReporting.js.map +1 -1
  49. package/lib/cjs/components/trees/common/UseFiltering.d.ts +12 -0
  50. package/lib/cjs/components/trees/common/UseFiltering.js +29 -0
  51. package/lib/cjs/components/trees/common/UseFiltering.js.map +1 -0
  52. package/lib/{esm/components/trees/stateless → cjs/components/trees}/common/UseHierarchiesLocalization.d.ts +2 -2
  53. package/lib/cjs/components/trees/{stateless/common → common}/UseHierarchiesLocalization.js +12 -11
  54. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
  55. package/lib/cjs/components/trees/common/UseHierarchyFiltering.d.ts +19 -0
  56. package/lib/cjs/components/trees/{stateless/common → common}/UseHierarchyFiltering.js +44 -26
  57. package/lib/cjs/components/trees/common/UseHierarchyFiltering.js.map +1 -0
  58. package/lib/cjs/components/trees/common/UseHierarchyVisibility.d.ts +30 -0
  59. package/lib/cjs/components/trees/{stateless/common → common}/UseHierarchyVisibility.js +45 -29
  60. package/lib/cjs/components/trees/common/UseHierarchyVisibility.js.map +1 -0
  61. package/lib/cjs/components/trees/common/UseIModelChangeListener.d.ts +9 -0
  62. package/lib/cjs/components/trees/common/UseIModelChangeListener.js +20 -0
  63. package/lib/cjs/components/trees/common/UseIModelChangeListener.js.map +1 -0
  64. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js +35 -0
  65. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
  66. package/lib/cjs/components/trees/common/UseNodeHighlighting.d.ts +16 -0
  67. package/lib/cjs/components/trees/common/UseNodeHighlighting.js +140 -0
  68. package/lib/cjs/components/trees/common/UseNodeHighlighting.js.map +1 -0
  69. package/lib/cjs/components/trees/common/Utils.d.ts +16 -6
  70. package/lib/cjs/components/trees/common/Utils.js +38 -34
  71. package/lib/cjs/components/trees/common/Utils.js.map +1 -1
  72. package/lib/cjs/components/trees/common/components/BaseTree.d.ts +34 -0
  73. package/lib/cjs/components/trees/common/components/BaseTree.js +78 -0
  74. package/lib/cjs/components/trees/common/components/BaseTree.js.map +1 -0
  75. package/lib/cjs/components/trees/common/components/Delayed.js.map +1 -0
  76. package/lib/cjs/components/trees/common/components/ProgressOverlay.js.map +1 -0
  77. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.d.ts +20 -0
  78. package/lib/cjs/components/trees/{stateless/common/components/VisibilityTreeNodeCheckbox.js → common/components/TreeNodeCheckbox.js} +11 -7
  79. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
  80. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.d.ts +13 -0
  81. package/lib/cjs/components/trees/{stateless/common/components/VisibilityTreeNodeRenderer.js → common/components/TreeNodeRenderer.js} +6 -6
  82. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
  83. package/lib/cjs/components/trees/common/components/TreeRenderer.d.ts +17 -0
  84. package/lib/cjs/components/trees/common/components/TreeRenderer.js +44 -0
  85. package/lib/cjs/components/trees/common/components/TreeRenderer.js.map +1 -0
  86. package/lib/cjs/components/trees/common/components/TreeRenderer.scss +62 -0
  87. package/lib/cjs/components/trees/common/components/VisibilityTree.d.ts +14 -0
  88. package/lib/cjs/components/trees/common/components/VisibilityTree.js +41 -0
  89. package/lib/cjs/components/trees/common/components/VisibilityTree.js.map +1 -0
  90. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +11 -35
  91. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js +29 -83
  92. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  93. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -14
  94. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +12 -12
  95. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  96. package/lib/{esm/components/trees/stateless → cjs/components/trees}/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +6 -2
  97. package/lib/cjs/components/trees/{stateless/external-sources-tree → external-sources-tree}/ExternalSourcesTreeDefinition.js +55 -37
  98. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
  99. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.d.ts +11 -35
  100. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js +41 -55
  101. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  102. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -14
  103. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js +12 -12
  104. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  105. package/lib/cjs/components/trees/{stateless/imodel-content-tree → imodel-content-tree}/IModelContentTreeDefinition.d.ts +3 -0
  106. package/lib/cjs/components/trees/{stateless/imodel-content-tree → imodel-content-tree}/IModelContentTreeDefinition.js +248 -268
  107. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
  108. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +26 -0
  109. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +203 -0
  110. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
  111. package/lib/cjs/components/trees/index.d.ts +4 -19
  112. package/lib/cjs/components/trees/index.js +9 -31
  113. package/lib/cjs/components/trees/index.js.map +1 -1
  114. package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +17 -72
  115. package/lib/cjs/components/trees/models-tree/ModelsTree.js +196 -135
  116. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -1
  117. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.d.ts +1 -1
  118. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js +40 -25
  119. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
  120. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.d.ts +13 -12
  121. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +35 -26
  122. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  123. package/lib/{esm/components/trees/stateless → cjs/components/trees}/models-tree/ModelsTreeDefinition.d.ts +36 -4
  124. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js +617 -0
  125. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
  126. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +24 -0
  127. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +121 -0
  128. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  129. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +44 -0
  130. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js +325 -0
  131. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
  132. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.d.ts +31 -0
  133. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js +40 -0
  134. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
  135. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +122 -0
  136. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +757 -0
  137. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
  138. package/lib/cjs/components/trees/models-tree/internal/Tooltip.d.ts +13 -0
  139. package/lib/cjs/components/trees/models-tree/internal/Tooltip.js +29 -0
  140. package/lib/cjs/components/trees/models-tree/internal/Tooltip.js.map +1 -0
  141. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +10 -0
  142. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js +43 -0
  143. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
  144. package/lib/cjs/tree-widget-react.d.ts +3 -4
  145. package/lib/cjs/tree-widget-react.js +8 -4
  146. package/lib/cjs/tree-widget-react.js.map +1 -1
  147. package/lib/esm/TreeWidget.d.ts +0 -1
  148. package/lib/esm/TreeWidget.js +0 -6
  149. package/lib/esm/TreeWidget.js.map +1 -1
  150. package/lib/esm/components/SelectableTree.d.ts +3 -9
  151. package/lib/esm/components/SelectableTree.js +1 -1
  152. package/lib/esm/components/SelectableTree.js.map +1 -1
  153. package/lib/esm/components/TreeSelector.d.ts +2 -2
  154. package/lib/esm/components/TreeSelector.js.map +1 -1
  155. package/lib/esm/components/TreeWidgetUiItemsProvider.d.ts +14 -25
  156. package/lib/esm/components/TreeWidgetUiItemsProvider.js +42 -44
  157. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
  158. package/lib/esm/components/tree-header/TreeHeader.js +10 -10
  159. package/lib/esm/components/tree-header/TreeHeader.js.map +1 -1
  160. package/lib/esm/components/tree-header/TreeHeader.scss +7 -41
  161. package/lib/esm/components/trees/Tree.scss +23 -0
  162. package/lib/esm/components/trees/categories-tree/CategoriesTree.d.ts +22 -0
  163. package/lib/esm/components/trees/categories-tree/CategoriesTree.js +74 -0
  164. package/lib/esm/components/trees/categories-tree/CategoriesTree.js.map +1 -0
  165. package/lib/{cjs/components/trees/category-tree → esm/components/trees/categories-tree}/CategoriesTreeButtons.d.ts +2 -9
  166. package/lib/esm/components/trees/{category-tree → categories-tree}/CategoriesTreeButtons.js +7 -8
  167. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
  168. package/lib/{cjs/components/trees/category-tree → esm/components/trees/categories-tree}/CategoriesTreeComponent.d.ts +11 -12
  169. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js +68 -0
  170. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
  171. package/lib/esm/components/trees/{stateless/categories-tree → categories-tree}/CategoriesTreeDefinition.js +7 -2
  172. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
  173. package/lib/esm/components/trees/{stateless/categories-tree → categories-tree}/CategoriesVisibilityHandler.d.ts +6 -6
  174. package/lib/esm/components/trees/{stateless/categories-tree → categories-tree}/CategoriesVisibilityHandler.js +8 -8
  175. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
  176. package/lib/esm/components/trees/categories-tree/UseCategories.d.ts +8 -0
  177. package/lib/esm/components/trees/categories-tree/UseCategories.js +18 -0
  178. package/lib/esm/components/trees/categories-tree/UseCategories.js.map +1 -0
  179. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.d.ts +46 -0
  180. package/lib/esm/components/trees/{CategoriesVisibilityUtils.js → common/CategoriesVisibilityUtils.js} +51 -6
  181. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
  182. package/lib/{cjs/components/trees/stateless → esm/components/trees}/common/FocusedInstancesContext.d.ts +2 -1
  183. package/lib/esm/components/trees/common/FocusedInstancesContext.js.map +1 -0
  184. package/lib/{cjs/components/trees/stateless → esm/components/trees}/common/FocusedInstancesContextProvider.d.ts +1 -1
  185. package/lib/esm/components/trees/{stateless/common → common}/FocusedInstancesContextProvider.js +30 -6
  186. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js.map +1 -0
  187. package/lib/esm/components/trees/common/Rxjs.d.ts +10 -0
  188. package/lib/esm/components/trees/common/Rxjs.js +40 -0
  189. package/lib/esm/components/trees/common/Rxjs.js.map +1 -0
  190. package/lib/esm/components/trees/common/UseFeatureReporting.d.ts +11 -0
  191. package/lib/esm/components/trees/common/UseFeatureReporting.js +8 -0
  192. package/lib/esm/components/trees/common/UseFeatureReporting.js.map +1 -1
  193. package/lib/esm/components/trees/common/UseFiltering.d.ts +12 -0
  194. package/lib/esm/components/trees/common/UseFiltering.js +25 -0
  195. package/lib/esm/components/trees/common/UseFiltering.js.map +1 -0
  196. package/lib/{cjs/components/trees/stateless → esm/components/trees}/common/UseHierarchiesLocalization.d.ts +2 -2
  197. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js +30 -0
  198. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
  199. package/lib/esm/components/trees/common/UseHierarchyFiltering.d.ts +19 -0
  200. package/lib/esm/components/trees/{stateless/common → common}/UseHierarchyFiltering.js +45 -27
  201. package/lib/esm/components/trees/common/UseHierarchyFiltering.js.map +1 -0
  202. package/lib/esm/components/trees/common/UseHierarchyVisibility.d.ts +30 -0
  203. package/lib/esm/components/trees/{stateless/common → common}/UseHierarchyVisibility.js +45 -29
  204. package/lib/esm/components/trees/common/UseHierarchyVisibility.js.map +1 -0
  205. package/lib/esm/components/trees/common/UseIModelChangeListener.d.ts +9 -0
  206. package/lib/esm/components/trees/common/UseIModelChangeListener.js +16 -0
  207. package/lib/esm/components/trees/common/UseIModelChangeListener.js.map +1 -0
  208. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js +31 -0
  209. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
  210. package/lib/esm/components/trees/common/UseNodeHighlighting.d.ts +16 -0
  211. package/lib/esm/components/trees/common/UseNodeHighlighting.js +136 -0
  212. package/lib/esm/components/trees/common/UseNodeHighlighting.js.map +1 -0
  213. package/lib/esm/components/trees/common/Utils.d.ts +16 -6
  214. package/lib/esm/components/trees/common/Utils.js +33 -29
  215. package/lib/esm/components/trees/common/Utils.js.map +1 -1
  216. package/lib/esm/components/trees/common/components/BaseTree.d.ts +34 -0
  217. package/lib/esm/components/trees/common/components/BaseTree.js +74 -0
  218. package/lib/esm/components/trees/common/components/BaseTree.js.map +1 -0
  219. package/lib/esm/components/trees/common/components/Delayed.js.map +1 -0
  220. package/lib/esm/components/trees/common/components/ProgressOverlay.js.map +1 -0
  221. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.d.ts +20 -0
  222. package/lib/esm/components/trees/{stateless/common/components/VisibilityTreeNodeCheckbox.js → common/components/TreeNodeCheckbox.js} +6 -5
  223. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
  224. package/lib/esm/components/trees/common/components/TreeNodeRenderer.d.ts +13 -0
  225. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js +13 -0
  226. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
  227. package/lib/esm/components/trees/common/components/TreeRenderer.d.ts +17 -0
  228. package/lib/esm/components/trees/common/components/TreeRenderer.js +40 -0
  229. package/lib/esm/components/trees/common/components/TreeRenderer.js.map +1 -0
  230. package/lib/esm/components/trees/common/components/TreeRenderer.scss +62 -0
  231. package/lib/esm/components/trees/common/components/VisibilityTree.d.ts +14 -0
  232. package/lib/esm/components/trees/common/components/VisibilityTree.js +37 -0
  233. package/lib/esm/components/trees/common/components/VisibilityTree.js.map +1 -0
  234. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +11 -35
  235. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js +27 -58
  236. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  237. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -14
  238. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +12 -12
  239. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  240. package/lib/{cjs/components/trees/stateless → esm/components/trees}/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +6 -2
  241. package/lib/esm/components/trees/{stateless/external-sources-tree → external-sources-tree}/ExternalSourcesTreeDefinition.js +55 -37
  242. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
  243. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.d.ts +11 -35
  244. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js +39 -53
  245. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  246. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -14
  247. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js +12 -12
  248. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  249. package/lib/esm/components/trees/{stateless/imodel-content-tree → imodel-content-tree}/IModelContentTreeDefinition.d.ts +3 -0
  250. package/lib/esm/components/trees/{stateless/imodel-content-tree → imodel-content-tree}/IModelContentTreeDefinition.js +249 -269
  251. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
  252. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +26 -0
  253. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +199 -0
  254. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
  255. package/lib/esm/components/trees/index.d.ts +4 -19
  256. package/lib/esm/components/trees/index.js +4 -17
  257. package/lib/esm/components/trees/index.js.map +1 -1
  258. package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +17 -72
  259. package/lib/esm/components/trees/models-tree/ModelsTree.js +196 -132
  260. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -1
  261. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.d.ts +1 -1
  262. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js +30 -15
  263. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
  264. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.d.ts +13 -12
  265. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +36 -27
  266. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  267. package/lib/{cjs/components/trees/stateless → esm/components/trees}/models-tree/ModelsTreeDefinition.d.ts +36 -4
  268. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js +613 -0
  269. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
  270. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +24 -0
  271. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +117 -0
  272. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  273. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +44 -0
  274. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js +321 -0
  275. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
  276. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.d.ts +31 -0
  277. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js +37 -0
  278. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
  279. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +122 -0
  280. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +748 -0
  281. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
  282. package/lib/esm/components/trees/models-tree/internal/Tooltip.d.ts +13 -0
  283. package/lib/esm/components/trees/models-tree/internal/Tooltip.js +24 -0
  284. package/lib/esm/components/trees/models-tree/internal/Tooltip.js.map +1 -0
  285. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +10 -0
  286. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js +39 -0
  287. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
  288. package/lib/esm/tree-widget-react.d.ts +3 -4
  289. package/lib/esm/tree-widget-react.js +3 -4
  290. package/lib/esm/tree-widget-react.js.map +1 -1
  291. package/lib/public/locales/en/TreeWidget.json +126 -62
  292. package/package.json +18 -11
  293. package/lib/cjs/components/TreeFilteringState.d.ts +0 -18
  294. package/lib/cjs/components/TreeFilteringState.js +0 -46
  295. package/lib/cjs/components/TreeFilteringState.js.map +0 -1
  296. package/lib/cjs/components/trees/CategoriesVisibilityUtils.d.ts +0 -25
  297. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js.map +0 -1
  298. package/lib/cjs/components/trees/VisibilityTreeBase.scss +0 -82
  299. package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +0 -67
  300. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +0 -158
  301. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +0 -1
  302. package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +0 -100
  303. package/lib/cjs/components/trees/VisibilityTreeRenderer.js +0 -98
  304. package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +0 -1
  305. package/lib/cjs/components/trees/category-tree/Categories.json +0 -99
  306. package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +0 -60
  307. package/lib/cjs/components/trees/category-tree/CategoriesTree.js +0 -117
  308. package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +0 -1
  309. package/lib/cjs/components/trees/category-tree/CategoriesTreeButtons.js.map +0 -1
  310. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js +0 -104
  311. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +0 -1
  312. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +0 -65
  313. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +0 -172
  314. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +0 -1
  315. package/lib/cjs/components/trees/common/ContextMenu.d.ts +0 -39
  316. package/lib/cjs/components/trees/common/ContextMenu.js +0 -44
  317. package/lib/cjs/components/trees/common/ContextMenu.js.map +0 -1
  318. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.d.ts +0 -27
  319. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.js +0 -51
  320. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.js.map +0 -1
  321. package/lib/cjs/components/trees/common/TreeNodeRenderer.d.ts +0 -61
  322. package/lib/cjs/components/trees/common/TreeNodeRenderer.js +0 -50
  323. package/lib/cjs/components/trees/common/TreeNodeRenderer.js.map +0 -1
  324. package/lib/cjs/components/trees/common/TreeRenderer.d.ts +0 -55
  325. package/lib/cjs/components/trees/common/TreeRenderer.js +0 -67
  326. package/lib/cjs/components/trees/common/TreeRenderer.js.map +0 -1
  327. package/lib/cjs/components/trees/common/TreeRenderer.scss +0 -149
  328. package/lib/cjs/components/trees/common/Types.d.ts +0 -57
  329. package/lib/cjs/components/trees/common/Types.js +0 -21
  330. package/lib/cjs/components/trees/common/Types.js.map +0 -1
  331. package/lib/cjs/components/trees/common/UseVisibilityTreeState.d.ts +0 -43
  332. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js +0 -49
  333. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js.map +0 -1
  334. package/lib/cjs/components/trees/external-sources-tree/ExternalSources.json +0 -228
  335. package/lib/cjs/components/trees/imodel-content-tree/IModelContent.json +0 -443
  336. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.d.ts +0 -19
  337. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js +0 -36
  338. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js.map +0 -1
  339. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.d.ts +0 -130
  340. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +0 -651
  341. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +0 -1
  342. package/lib/cjs/components/trees/models-tree/Utils.d.ts +0 -29
  343. package/lib/cjs/components/trees/models-tree/Utils.js +0 -556
  344. package/lib/cjs/components/trees/models-tree/Utils.js.map +0 -1
  345. package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTree.d.ts +0 -20
  346. package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTree.js +0 -61
  347. package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTree.js.map +0 -1
  348. package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeComponent.d.ts +0 -16
  349. package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeComponent.js +0 -43
  350. package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeComponent.js.map +0 -1
  351. package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeDefinition.js.map +0 -1
  352. package/lib/cjs/components/trees/stateless/categories-tree/CategoriesVisibilityHandler.js.map +0 -1
  353. package/lib/cjs/components/trees/stateless/common/FocusedInstancesContext.js.map +0 -1
  354. package/lib/cjs/components/trees/stateless/common/FocusedInstancesContextProvider.js.map +0 -1
  355. package/lib/cjs/components/trees/stateless/common/UseHierarchiesLocalization.js.map +0 -1
  356. package/lib/cjs/components/trees/stateless/common/UseHierarchyFiltering.d.ts +0 -16
  357. package/lib/cjs/components/trees/stateless/common/UseHierarchyFiltering.js.map +0 -1
  358. package/lib/cjs/components/trees/stateless/common/UseHierarchyVisibility.d.ts +0 -21
  359. package/lib/cjs/components/trees/stateless/common/UseHierarchyVisibility.js.map +0 -1
  360. package/lib/cjs/components/trees/stateless/common/UseMultiCheckboxHandler.js +0 -34
  361. package/lib/cjs/components/trees/stateless/common/UseMultiCheckboxHandler.js.map +0 -1
  362. package/lib/cjs/components/trees/stateless/common/Utils.d.ts +0 -3
  363. package/lib/cjs/components/trees/stateless/common/Utils.js +0 -23
  364. package/lib/cjs/components/trees/stateless/common/Utils.js.map +0 -1
  365. package/lib/cjs/components/trees/stateless/common/components/Delayed.js.map +0 -1
  366. package/lib/cjs/components/trees/stateless/common/components/FilterableTree.d.ts +0 -23
  367. package/lib/cjs/components/trees/stateless/common/components/FilterableTree.js +0 -66
  368. package/lib/cjs/components/trees/stateless/common/components/FilterableTree.js.map +0 -1
  369. package/lib/cjs/components/trees/stateless/common/components/ProgressOverlay.js.map +0 -1
  370. package/lib/cjs/components/trees/stateless/common/components/VisibilityTree.d.ts +0 -26
  371. package/lib/cjs/components/trees/stateless/common/components/VisibilityTree.js +0 -68
  372. package/lib/cjs/components/trees/stateless/common/components/VisibilityTree.js.map +0 -1
  373. package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.d.ts +0 -12
  374. package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.js.map +0 -1
  375. package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.d.ts +0 -10
  376. package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.js.map +0 -1
  377. package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeRenderer.d.ts +0 -16
  378. package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeRenderer.js +0 -23
  379. package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeRenderer.js.map +0 -1
  380. package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeRenderer.scss +0 -41
  381. package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTree.d.ts +0 -13
  382. package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTree.js +0 -40
  383. package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTree.js.map +0 -1
  384. package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.d.ts +0 -14
  385. package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.js +0 -25
  386. package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.js.map +0 -1
  387. package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeDefinition.js.map +0 -1
  388. package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTree.d.ts +0 -13
  389. package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTree.js +0 -48
  390. package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTree.js.map +0 -1
  391. package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.d.ts +0 -14
  392. package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.js +0 -25
  393. package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.js.map +0 -1
  394. package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeDefinition.js.map +0 -1
  395. package/lib/cjs/components/trees/stateless/index.d.ts +0 -5
  396. package/lib/cjs/components/trees/stateless/index.js +0 -16
  397. package/lib/cjs/components/trees/stateless/index.js.map +0 -1
  398. package/lib/cjs/components/trees/stateless/models-tree/ModelsTree.d.ts +0 -16
  399. package/lib/cjs/components/trees/stateless/models-tree/ModelsTree.js +0 -77
  400. package/lib/cjs/components/trees/stateless/models-tree/ModelsTree.js.map +0 -1
  401. package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeComponent.d.ts +0 -17
  402. package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeComponent.js +0 -55
  403. package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeComponent.js.map +0 -1
  404. package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeDefinition.js +0 -856
  405. package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeDefinition.js.map +0 -1
  406. package/lib/cjs/components/trees/stateless/models-tree/ModelsVisibilityHandler.d.ts +0 -48
  407. package/lib/cjs/components/trees/stateless/models-tree/ModelsVisibilityHandler.js +0 -470
  408. package/lib/cjs/components/trees/stateless/models-tree/ModelsVisibilityHandler.js.map +0 -1
  409. package/lib/cjs/components/utils/UseTreeTransientState.d.ts +0 -19
  410. package/lib/cjs/components/utils/UseTreeTransientState.js +0 -33
  411. package/lib/cjs/components/utils/UseTreeTransientState.js.map +0 -1
  412. package/lib/esm/components/TreeFilteringState.d.ts +0 -18
  413. package/lib/esm/components/TreeFilteringState.js +0 -42
  414. package/lib/esm/components/TreeFilteringState.js.map +0 -1
  415. package/lib/esm/components/trees/CategoriesVisibilityUtils.d.ts +0 -25
  416. package/lib/esm/components/trees/CategoriesVisibilityUtils.js.map +0 -1
  417. package/lib/esm/components/trees/VisibilityTreeBase.scss +0 -82
  418. package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +0 -67
  419. package/lib/esm/components/trees/VisibilityTreeEventHandler.js +0 -154
  420. package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +0 -1
  421. package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +0 -100
  422. package/lib/esm/components/trees/VisibilityTreeRenderer.js +0 -86
  423. package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +0 -1
  424. package/lib/esm/components/trees/category-tree/Categories.json +0 -99
  425. package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +0 -60
  426. package/lib/esm/components/trees/category-tree/CategoriesTree.js +0 -110
  427. package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +0 -1
  428. package/lib/esm/components/trees/category-tree/CategoriesTreeButtons.js.map +0 -1
  429. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js +0 -97
  430. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +0 -1
  431. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +0 -65
  432. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +0 -164
  433. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +0 -1
  434. package/lib/esm/components/trees/common/ContextMenu.d.ts +0 -39
  435. package/lib/esm/components/trees/common/ContextMenu.js +0 -39
  436. package/lib/esm/components/trees/common/ContextMenu.js.map +0 -1
  437. package/lib/esm/components/trees/common/ReportingTreeEventHandler.d.ts +0 -27
  438. package/lib/esm/components/trees/common/ReportingTreeEventHandler.js +0 -47
  439. package/lib/esm/components/trees/common/ReportingTreeEventHandler.js.map +0 -1
  440. package/lib/esm/components/trees/common/TreeNodeRenderer.d.ts +0 -61
  441. package/lib/esm/components/trees/common/TreeNodeRenderer.js +0 -44
  442. package/lib/esm/components/trees/common/TreeNodeRenderer.js.map +0 -1
  443. package/lib/esm/components/trees/common/TreeRenderer.d.ts +0 -55
  444. package/lib/esm/components/trees/common/TreeRenderer.js +0 -59
  445. package/lib/esm/components/trees/common/TreeRenderer.js.map +0 -1
  446. package/lib/esm/components/trees/common/TreeRenderer.scss +0 -149
  447. package/lib/esm/components/trees/common/Types.d.ts +0 -57
  448. package/lib/esm/components/trees/common/Types.js +0 -18
  449. package/lib/esm/components/trees/common/Types.js.map +0 -1
  450. package/lib/esm/components/trees/common/UseVisibilityTreeState.d.ts +0 -43
  451. package/lib/esm/components/trees/common/UseVisibilityTreeState.js +0 -45
  452. package/lib/esm/components/trees/common/UseVisibilityTreeState.js.map +0 -1
  453. package/lib/esm/components/trees/external-sources-tree/ExternalSources.json +0 -228
  454. package/lib/esm/components/trees/imodel-content-tree/IModelContent.json +0 -443
  455. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.d.ts +0 -19
  456. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js +0 -32
  457. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js.map +0 -1
  458. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.d.ts +0 -130
  459. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +0 -641
  460. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +0 -1
  461. package/lib/esm/components/trees/models-tree/Utils.d.ts +0 -29
  462. package/lib/esm/components/trees/models-tree/Utils.js +0 -548
  463. package/lib/esm/components/trees/models-tree/Utils.js.map +0 -1
  464. package/lib/esm/components/trees/stateless/categories-tree/CategoriesTree.d.ts +0 -20
  465. package/lib/esm/components/trees/stateless/categories-tree/CategoriesTree.js +0 -57
  466. package/lib/esm/components/trees/stateless/categories-tree/CategoriesTree.js.map +0 -1
  467. package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeComponent.d.ts +0 -16
  468. package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeComponent.js +0 -39
  469. package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeComponent.js.map +0 -1
  470. package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeDefinition.js.map +0 -1
  471. package/lib/esm/components/trees/stateless/categories-tree/CategoriesVisibilityHandler.js.map +0 -1
  472. package/lib/esm/components/trees/stateless/common/FocusedInstancesContext.js.map +0 -1
  473. package/lib/esm/components/trees/stateless/common/FocusedInstancesContextProvider.js.map +0 -1
  474. package/lib/esm/components/trees/stateless/common/UseHierarchiesLocalization.js +0 -29
  475. package/lib/esm/components/trees/stateless/common/UseHierarchiesLocalization.js.map +0 -1
  476. package/lib/esm/components/trees/stateless/common/UseHierarchyFiltering.d.ts +0 -16
  477. package/lib/esm/components/trees/stateless/common/UseHierarchyFiltering.js.map +0 -1
  478. package/lib/esm/components/trees/stateless/common/UseHierarchyVisibility.d.ts +0 -21
  479. package/lib/esm/components/trees/stateless/common/UseHierarchyVisibility.js.map +0 -1
  480. package/lib/esm/components/trees/stateless/common/UseMultiCheckboxHandler.js +0 -30
  481. package/lib/esm/components/trees/stateless/common/UseMultiCheckboxHandler.js.map +0 -1
  482. package/lib/esm/components/trees/stateless/common/Utils.d.ts +0 -3
  483. package/lib/esm/components/trees/stateless/common/Utils.js +0 -19
  484. package/lib/esm/components/trees/stateless/common/Utils.js.map +0 -1
  485. package/lib/esm/components/trees/stateless/common/components/Delayed.js.map +0 -1
  486. package/lib/esm/components/trees/stateless/common/components/FilterableTree.d.ts +0 -23
  487. package/lib/esm/components/trees/stateless/common/components/FilterableTree.js +0 -62
  488. package/lib/esm/components/trees/stateless/common/components/FilterableTree.js.map +0 -1
  489. package/lib/esm/components/trees/stateless/common/components/ProgressOverlay.js.map +0 -1
  490. package/lib/esm/components/trees/stateless/common/components/VisibilityTree.d.ts +0 -26
  491. package/lib/esm/components/trees/stateless/common/components/VisibilityTree.js +0 -64
  492. package/lib/esm/components/trees/stateless/common/components/VisibilityTree.js.map +0 -1
  493. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.d.ts +0 -12
  494. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.js.map +0 -1
  495. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.d.ts +0 -10
  496. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.js +0 -13
  497. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.js.map +0 -1
  498. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeRenderer.d.ts +0 -16
  499. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeRenderer.js +0 -19
  500. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeRenderer.js.map +0 -1
  501. package/lib/esm/components/trees/stateless/common/components/VisibilityTreeRenderer.scss +0 -41
  502. package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTree.d.ts +0 -13
  503. package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTree.js +0 -36
  504. package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTree.js.map +0 -1
  505. package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.d.ts +0 -14
  506. package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.js +0 -21
  507. package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.js.map +0 -1
  508. package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeDefinition.js.map +0 -1
  509. package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTree.d.ts +0 -13
  510. package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTree.js +0 -44
  511. package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTree.js.map +0 -1
  512. package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.d.ts +0 -14
  513. package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.js +0 -21
  514. package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.js.map +0 -1
  515. package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeDefinition.js.map +0 -1
  516. package/lib/esm/components/trees/stateless/index.d.ts +0 -5
  517. package/lib/esm/components/trees/stateless/index.js +0 -9
  518. package/lib/esm/components/trees/stateless/index.js.map +0 -1
  519. package/lib/esm/components/trees/stateless/models-tree/ModelsTree.d.ts +0 -16
  520. package/lib/esm/components/trees/stateless/models-tree/ModelsTree.js +0 -73
  521. package/lib/esm/components/trees/stateless/models-tree/ModelsTree.js.map +0 -1
  522. package/lib/esm/components/trees/stateless/models-tree/ModelsTreeComponent.d.ts +0 -17
  523. package/lib/esm/components/trees/stateless/models-tree/ModelsTreeComponent.js +0 -51
  524. package/lib/esm/components/trees/stateless/models-tree/ModelsTreeComponent.js.map +0 -1
  525. package/lib/esm/components/trees/stateless/models-tree/ModelsTreeDefinition.js +0 -852
  526. package/lib/esm/components/trees/stateless/models-tree/ModelsTreeDefinition.js.map +0 -1
  527. package/lib/esm/components/trees/stateless/models-tree/ModelsVisibilityHandler.d.ts +0 -48
  528. package/lib/esm/components/trees/stateless/models-tree/ModelsVisibilityHandler.js +0 -466
  529. package/lib/esm/components/trees/stateless/models-tree/ModelsVisibilityHandler.js.map +0 -1
  530. package/lib/esm/components/utils/UseTreeTransientState.d.ts +0 -19
  531. package/lib/esm/components/utils/UseTreeTransientState.js +0 -29
  532. package/lib/esm/components/utils/UseTreeTransientState.js.map +0 -1
  533. /package/lib/cjs/components/trees/{stateless/categories-tree → categories-tree}/CategoriesTreeDefinition.d.ts +0 -0
  534. /package/lib/cjs/components/trees/{stateless/common → common}/FocusedInstancesContext.js +0 -0
  535. /package/lib/cjs/components/trees/{stateless/common → common}/UseMultiCheckboxHandler.d.ts +0 -0
  536. /package/lib/cjs/components/trees/{stateless/common → common}/components/Delayed.d.ts +0 -0
  537. /package/lib/cjs/components/trees/{stateless/common → common}/components/Delayed.js +0 -0
  538. /package/lib/cjs/components/trees/{stateless/common → common}/components/ProgressOverlay.d.ts +0 -0
  539. /package/lib/cjs/components/trees/{stateless/common → common}/components/ProgressOverlay.js +0 -0
  540. /package/lib/cjs/components/trees/{stateless/common → common}/components/ProgressOverlay.scss +0 -0
  541. /package/lib/esm/components/trees/{stateless/categories-tree → categories-tree}/CategoriesTreeDefinition.d.ts +0 -0
  542. /package/lib/esm/components/trees/{stateless/common → common}/FocusedInstancesContext.js +0 -0
  543. /package/lib/esm/components/trees/{stateless/common → common}/UseMultiCheckboxHandler.d.ts +0 -0
  544. /package/lib/esm/components/trees/{stateless/common → common}/components/Delayed.d.ts +0 -0
  545. /package/lib/esm/components/trees/{stateless/common → common}/components/Delayed.js +0 -0
  546. /package/lib/esm/components/trees/{stateless/common → common}/components/ProgressOverlay.d.ts +0 -0
  547. /package/lib/esm/components/trees/{stateless/common → common}/components/ProgressOverlay.js +0 -0
  548. /package/lib/esm/components/trees/{stateless/common → common}/components/ProgressOverlay.scss +0 -0
@@ -0,0 +1,613 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { defer, EMPTY, from, map, merge, mergeAll, mergeMap } from "rxjs";
6
+ import { createClassBasedHierarchyDefinition, createNodesQueryClauseFactory, HierarchyNode, NodeSelectClauseColumnNames, } from "@itwin/presentation-hierarchies";
7
+ import { createBisInstanceLabelSelectClauseFactory, ECSql } from "@itwin/presentation-shared";
8
+ import { collect } from "../common/Rxjs";
9
+ import { createIdsSelector, parseIdsSelectorResult } from "../common/Utils";
10
+ const MAX_FILTERING_INSTANCE_KEY_COUNT = 100;
11
+ export const defaultHierarchyConfiguration = {
12
+ elementClassGrouping: "enable",
13
+ elementClassSpecification: "BisCore.GeometricElement3d",
14
+ showEmptyModels: false,
15
+ };
16
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
17
+ export var ModelsTreeInstanceKeyPathsProps;
18
+ (function (ModelsTreeInstanceKeyPathsProps) {
19
+ function isLabelProps(props) {
20
+ return !!props.label;
21
+ }
22
+ ModelsTreeInstanceKeyPathsProps.isLabelProps = isLabelProps;
23
+ })(ModelsTreeInstanceKeyPathsProps || (ModelsTreeInstanceKeyPathsProps = {}));
24
+ export class ModelsTreeDefinition {
25
+ constructor(props) {
26
+ this._impl = createClassBasedHierarchyDefinition({
27
+ classHierarchyInspector: props.imodelAccess,
28
+ hierarchy: {
29
+ rootNodes: async (requestProps) => this.createRootHierarchyLevelDefinition(requestProps),
30
+ childNodes: [
31
+ {
32
+ parentNodeClassName: "BisCore.Subject",
33
+ definitions: async (requestProps) => this.createSubjectChildrenQuery(requestProps),
34
+ },
35
+ {
36
+ parentNodeClassName: "BisCore.ISubModeledElement",
37
+ definitions: async (requestProps) => this.createISubModeledElementChildrenQuery(requestProps),
38
+ },
39
+ {
40
+ parentNodeClassName: "BisCore.GeometricModel3d",
41
+ definitions: async (requestProps) => this.createGeometricModel3dChildrenQuery(requestProps),
42
+ },
43
+ {
44
+ parentNodeClassName: "BisCore.SpatialCategory",
45
+ definitions: async (requestProps) => this.createSpatialCategoryChildrenQuery(requestProps),
46
+ },
47
+ {
48
+ parentNodeClassName: "BisCore.GeometricElement3d",
49
+ definitions: async (requestProps) => this.createGeometricElement3dChildrenQuery(requestProps),
50
+ },
51
+ ],
52
+ },
53
+ });
54
+ this._idsCache = props.idsCache;
55
+ this._queryExecutor = props.imodelAccess;
56
+ this._hierarchyConfig = props.hierarchyConfig;
57
+ this._selectQueryFactory = createNodesQueryClauseFactory({ imodelAccess: props.imodelAccess });
58
+ this._nodeLabelSelectClauseFactory = createBisInstanceLabelSelectClauseFactory({ classHierarchyInspector: props.imodelAccess });
59
+ }
60
+ async postProcessNode(node) {
61
+ if (HierarchyNode.isClassGroupingNode(node)) {
62
+ return {
63
+ ...node,
64
+ label: this._hierarchyConfig.elementClassGrouping === "enableWithCounts" ? `${node.label} (${node.children.length})` : node.label,
65
+ extendedData: {
66
+ ...node.extendedData,
67
+ // add `modelId` and `categoryId` from the first grouped element
68
+ ...node.children[0].extendedData,
69
+ // `imageId` is assigned to instance nodes at query time, but grouping ones need to
70
+ // be handled during post-processing
71
+ imageId: "icon-ec-class",
72
+ },
73
+ };
74
+ }
75
+ return node;
76
+ }
77
+ async defineHierarchyLevel(props) {
78
+ if (this._isSupported === undefined) {
79
+ this._isSupported = this.isSupported();
80
+ }
81
+ if ((await this._isSupported) === false) {
82
+ return [];
83
+ }
84
+ return this._impl.defineHierarchyLevel(props);
85
+ }
86
+ async createRootHierarchyLevelDefinition(props) {
87
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
88
+ filter: props.instanceFilter,
89
+ contentClass: { fullName: "BisCore.Subject", alias: "this" },
90
+ });
91
+ return [
92
+ {
93
+ fullClassName: "BisCore.Subject",
94
+ query: {
95
+ ecsql: `
96
+ SELECT
97
+ ${await this._selectQueryFactory.createSelectClause({
98
+ ecClassId: { selector: ECSql.createRawPropertyValueSelector("this", "ECClassId") },
99
+ ecInstanceId: { selector: "this.ECInstanceId" },
100
+ nodeLabel: {
101
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
102
+ classAlias: "this",
103
+ className: "BisCore.Subject",
104
+ }),
105
+ },
106
+ extendedData: {
107
+ imageId: "icon-imodel-hollow-2",
108
+ isSubject: true,
109
+ },
110
+ autoExpand: true,
111
+ supportsFiltering: true,
112
+ })}
113
+ FROM ${instanceFilterClauses.from} this
114
+ ${instanceFilterClauses.joins}
115
+ WHERE
116
+ this.Parent IS NULL
117
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
118
+ `,
119
+ },
120
+ },
121
+ ];
122
+ }
123
+ async createSubjectChildrenQuery({ parentNodeInstanceIds: subjectIds, instanceFilter, }) {
124
+ const [subjectFilterClauses, modelFilterClauses] = await Promise.all([
125
+ this._selectQueryFactory.createFilterClauses({
126
+ filter: instanceFilter,
127
+ contentClass: { fullName: "BisCore.Subject", alias: "this" },
128
+ }),
129
+ this._selectQueryFactory.createFilterClauses({
130
+ filter: instanceFilter,
131
+ contentClass: { fullName: "BisCore.GeometricModel3d", alias: "this" },
132
+ }),
133
+ ]);
134
+ const [childSubjectIds, childModelIds] = await Promise.all([
135
+ this._idsCache.getChildSubjectIds(subjectIds),
136
+ this._idsCache.getChildSubjectModelIds(subjectIds),
137
+ ]);
138
+ const defs = new Array();
139
+ childSubjectIds.length &&
140
+ defs.push({
141
+ fullClassName: "BisCore.Subject",
142
+ query: {
143
+ ecsql: `
144
+ SELECT
145
+ ${await this._selectQueryFactory.createSelectClause({
146
+ ecClassId: { selector: "this.ECClassId" },
147
+ ecInstanceId: { selector: "this.ECInstanceId" },
148
+ nodeLabel: {
149
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
150
+ classAlias: "this",
151
+ className: "BisCore.Subject",
152
+ }),
153
+ },
154
+ hideIfNoChildren: true,
155
+ hasChildren: { selector: `InVirtualSet(?, this.ECInstanceId)` },
156
+ grouping: { byLabel: { action: "merge", groupId: "subject" } },
157
+ extendedData: {
158
+ imageId: "icon-folder",
159
+ isSubject: true,
160
+ },
161
+ supportsFiltering: true,
162
+ })}
163
+ FROM ${subjectFilterClauses.from} this
164
+ ${subjectFilterClauses.joins}
165
+ WHERE
166
+ this.ECInstanceId IN (${childSubjectIds.map(() => "?").join(",")})
167
+ ${subjectFilterClauses.where ? `AND ${subjectFilterClauses.where}` : ""}
168
+ `,
169
+ bindings: [
170
+ { type: "idset", value: await this._idsCache.getParentSubjectIds() },
171
+ ...childSubjectIds.map((id) => ({ type: "id", value: id })),
172
+ ],
173
+ },
174
+ });
175
+ childModelIds.length &&
176
+ defs.push({
177
+ fullClassName: "BisCore.GeometricModel3d",
178
+ query: {
179
+ ecsql: `
180
+ SELECT model.ECInstanceId AS ECInstanceId, model.*
181
+ FROM (
182
+ SELECT
183
+ ${await this._selectQueryFactory.createSelectClause({
184
+ ecClassId: { selector: "m.ECClassId" },
185
+ ecInstanceId: { selector: "m.ECInstanceId" },
186
+ nodeLabel: {
187
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
188
+ classAlias: "partition",
189
+ className: "BisCore.InformationPartitionElement",
190
+ }),
191
+ },
192
+ hideNodeInHierarchy: {
193
+ selector: `
194
+ CASE
195
+ WHEN (
196
+ json_extract([partition].JsonProperties, '$.PhysicalPartition.Model.Content') IS NOT NULL
197
+ OR json_extract([partition].JsonProperties, '$.GraphicalPartition3d.Model.Content') IS NOT NULL
198
+ ) THEN 1
199
+ ELSE 0
200
+ END
201
+ `,
202
+ },
203
+ hasChildren: this._hierarchyConfig.showEmptyModels
204
+ ? {
205
+ selector: `
206
+ IFNULL((
207
+ SELECT 1
208
+ FROM ${this._hierarchyConfig.elementClassSpecification} e
209
+ WHERE e.Model.Id = m.ECInstanceId
210
+ LIMIT 1
211
+ ), 0)
212
+ `,
213
+ }
214
+ : true,
215
+ extendedData: {
216
+ imageId: "icon-model",
217
+ isModel: true,
218
+ },
219
+ supportsFiltering: true,
220
+ })}
221
+ FROM Bis.GeometricModel3d m
222
+ JOIN bis.InformationPartitionElement [partition] ON [partition].ECInstanceId = m.ModeledElement.Id
223
+ WHERE
224
+ m.ECInstanceId IN (${childModelIds.map(() => "?").join(",")})
225
+ ) model
226
+ JOIN ${modelFilterClauses.from} this ON this.ECInstanceId = model.ECInstanceId
227
+ ${modelFilterClauses.joins}
228
+ ${modelFilterClauses.where ? `AND (model.${NodeSelectClauseColumnNames.HideNodeInHierarchy} OR ${modelFilterClauses.where})` : ""}
229
+ `,
230
+ bindings: childModelIds.map((id) => ({ type: "id", value: id })),
231
+ },
232
+ });
233
+ return defs;
234
+ }
235
+ async createISubModeledElementChildrenQuery({ parentNodeInstanceIds: elementIds, }) {
236
+ // note: we do not apply hierarchy level filtering on this hierarchy level, because it's always
237
+ // hidden - the filter will get applied on the child hierarchy levels
238
+ return [
239
+ {
240
+ fullClassName: "BisCore.GeometricModel3d",
241
+ query: {
242
+ ecsql: `
243
+ SELECT
244
+ ${await this._selectQueryFactory.createSelectClause({
245
+ ecClassId: { selector: "this.ECClassId" },
246
+ ecInstanceId: { selector: "this.ECInstanceId" },
247
+ nodeLabel: "",
248
+ hideNodeInHierarchy: true,
249
+ })}
250
+ FROM BisCore.GeometricModel3d this
251
+ WHERE
252
+ this.ModeledElement.Id IN (${elementIds.map(() => "?").join(",")})
253
+ AND NOT this.IsPrivate
254
+ AND this.ECInstanceId IN (SELECT Model.Id FROM ${this._hierarchyConfig.elementClassSpecification})
255
+ `,
256
+ bindings: [...elementIds.map((id) => ({ type: "id", value: id }))],
257
+ },
258
+ },
259
+ ];
260
+ }
261
+ async createGeometricModel3dChildrenQuery({ parentNodeInstanceIds: modelIds, instanceFilter, }) {
262
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
263
+ filter: instanceFilter,
264
+ contentClass: { fullName: "BisCore.SpatialCategory", alias: "this" },
265
+ });
266
+ return [
267
+ {
268
+ fullClassName: "BisCore.SpatialCategory",
269
+ query: {
270
+ ecsql: `
271
+ SELECT
272
+ ${await this._selectQueryFactory.createSelectClause({
273
+ ecClassId: { selector: "this.ECClassId" },
274
+ ecInstanceId: { selector: "this.ECInstanceId" },
275
+ nodeLabel: {
276
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
277
+ classAlias: "this",
278
+ className: "BisCore.SpatialCategory",
279
+ }),
280
+ },
281
+ grouping: { byLabel: { action: "merge", groupId: "category" } },
282
+ hasChildren: true,
283
+ extendedData: {
284
+ imageId: "icon-layers",
285
+ isCategory: true,
286
+ modelIds: { selector: createIdsSelector(modelIds) },
287
+ },
288
+ supportsFiltering: true,
289
+ })}
290
+ FROM ${instanceFilterClauses.from} this
291
+ ${instanceFilterClauses.joins}
292
+ WHERE
293
+ EXISTS (
294
+ SELECT 1
295
+ FROM ${this._hierarchyConfig.elementClassSpecification} element
296
+ WHERE
297
+ element.Model.Id IN (${modelIds.map(() => "?").join(",")})
298
+ AND element.Category.Id = +this.ECInstanceId
299
+ AND element.Parent IS NULL
300
+ )
301
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
302
+ `,
303
+ bindings: modelIds.map((id) => ({ type: "id", value: id })),
304
+ },
305
+ },
306
+ ];
307
+ }
308
+ async createSpatialCategoryChildrenQuery({ parentNodeInstanceIds: categoryIds, parentNode, instanceFilter, }) {
309
+ const modelIds = parseIdsSelectorResult(parentNode.extendedData?.modelIds);
310
+ if (modelIds.length === 0) {
311
+ throw new Error(`Invalid category node "${parentNode.label}" - missing model information.`);
312
+ }
313
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
314
+ filter: instanceFilter,
315
+ contentClass: { fullName: this._hierarchyConfig.elementClassSpecification, alias: "this" },
316
+ });
317
+ return [
318
+ {
319
+ fullClassName: this._hierarchyConfig.elementClassSpecification,
320
+ query: {
321
+ ecsql: `
322
+ SELECT
323
+ ${await this._selectQueryFactory.createSelectClause({
324
+ ecClassId: { selector: "this.ECClassId" },
325
+ ecInstanceId: { selector: "this.ECInstanceId" },
326
+ nodeLabel: {
327
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
328
+ classAlias: "this",
329
+ className: this._hierarchyConfig.elementClassSpecification,
330
+ }),
331
+ },
332
+ grouping: {
333
+ byClass: this._hierarchyConfig.elementClassGrouping !== "disable",
334
+ },
335
+ hasChildren: {
336
+ selector: `
337
+ IFNULL((
338
+ SELECT 1
339
+ FROM (
340
+ SELECT Parent.Id ParentId FROM ${this._hierarchyConfig.elementClassSpecification}
341
+ UNION ALL
342
+ SELECT ModeledElement.Id ParentId FROM bis.GeometricModel3d
343
+ )
344
+ WHERE ParentId = this.ECInstanceId
345
+ LIMIT 1
346
+ ), 0)
347
+ `,
348
+ },
349
+ extendedData: {
350
+ modelId: { selector: "IdToHex(this.Model.Id)" },
351
+ categoryId: { selector: "IdToHex(this.Category.Id)" },
352
+ imageId: "icon-item",
353
+ },
354
+ supportsFiltering: true,
355
+ })}
356
+ FROM ${instanceFilterClauses.from} this
357
+ ${instanceFilterClauses.joins}
358
+ WHERE
359
+ this.Category.Id IN (${categoryIds.map(() => "?").join(",")})
360
+ AND this.Model.Id IN (${modelIds.map(() => "?").join(",")})
361
+ AND this.Parent IS NULL
362
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
363
+ `,
364
+ bindings: [...categoryIds.map((id) => ({ type: "id", value: id })), ...modelIds.map((id) => ({ type: "id", value: id }))],
365
+ },
366
+ },
367
+ ];
368
+ }
369
+ async createGeometricElement3dChildrenQuery({ parentNodeInstanceIds: elementIds, instanceFilter, }) {
370
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
371
+ filter: instanceFilter,
372
+ contentClass: { fullName: this._hierarchyConfig.elementClassSpecification, alias: "this" },
373
+ });
374
+ return [
375
+ {
376
+ fullClassName: this._hierarchyConfig.elementClassSpecification,
377
+ query: {
378
+ ecsql: `
379
+ SELECT
380
+ ${await this._selectQueryFactory.createSelectClause({
381
+ ecClassId: { selector: "this.ECClassId" },
382
+ ecInstanceId: { selector: "this.ECInstanceId" },
383
+ nodeLabel: {
384
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
385
+ classAlias: "this",
386
+ className: this._hierarchyConfig.elementClassSpecification,
387
+ }),
388
+ },
389
+ grouping: {
390
+ byClass: this._hierarchyConfig.elementClassGrouping !== "disable",
391
+ },
392
+ hasChildren: {
393
+ selector: `
394
+ IFNULL((
395
+ SELECT 1
396
+ FROM (
397
+ SELECT Parent.Id ParentId FROM ${this._hierarchyConfig.elementClassSpecification}
398
+ UNION ALL
399
+ SELECT ModeledElement.Id ParentId FROM bis.GeometricModel3d
400
+ )
401
+ WHERE ParentId = this.ECInstanceId
402
+ LIMIT 1
403
+ ), 0)
404
+ `,
405
+ },
406
+ extendedData: {
407
+ modelId: { selector: "IdToHex(this.Model.Id)" },
408
+ categoryId: { selector: "IdToHex(this.Category.Id)" },
409
+ imageId: "icon-item",
410
+ },
411
+ supportsFiltering: true,
412
+ })}
413
+ FROM ${instanceFilterClauses.from} this
414
+ ${instanceFilterClauses.joins}
415
+ WHERE
416
+ this.Parent.Id IN (${elementIds.map(() => "?").join(",")})
417
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
418
+ `,
419
+ bindings: elementIds.map((id) => ({ type: "id", value: id })),
420
+ },
421
+ },
422
+ ];
423
+ }
424
+ static async createInstanceKeyPaths(props) {
425
+ if (ModelsTreeInstanceKeyPathsProps.isLabelProps(props)) {
426
+ const labelsFactory = createBisInstanceLabelSelectClauseFactory({ classHierarchyInspector: props.imodelAccess });
427
+ return createInstanceKeyPathsFromInstanceLabel({ ...props, labelsFactory });
428
+ }
429
+ return createInstanceKeyPathsFromInstanceKeys(props);
430
+ }
431
+ async isSupported() {
432
+ const [schemaName, className] = this._hierarchyConfig.elementClassSpecification.split(/[\.:]/);
433
+ if (!schemaName || !className) {
434
+ throw new Error(`Provided class specification ${this._hierarchyConfig.elementClassSpecification} should be in format {SchemaName}:{ClassName} or {SchemaName}.{ClassName}`);
435
+ }
436
+ const query = {
437
+ ecsql: `
438
+ SELECT 1
439
+ FROM ECDbMeta.ECSchemaDef s
440
+ JOIN ECDbMeta.ECClassDef c ON c.Schema.Id = s.ECInstanceId
441
+ WHERE s.Name = ? AND c.Name = ? AND c.ECInstanceId IS (BisCore.GeometricElement3d)
442
+ `,
443
+ bindings: [
444
+ { type: "string", value: schemaName },
445
+ { type: "string", value: className },
446
+ ],
447
+ };
448
+ for await (const _row of this._queryExecutor.createQueryReader(query)) {
449
+ return true;
450
+ }
451
+ return false;
452
+ }
453
+ }
454
+ function createSubjectInstanceKeysPath(subjectId, idsCache) {
455
+ return from(idsCache.getSubjectAncestorsPath(subjectId)).pipe(map((idsPath) => idsPath.map((id) => ({ className: "BisCore.Subject", id }))));
456
+ }
457
+ function createModelInstanceKeyPaths(modelId, idsCache) {
458
+ return from(idsCache.getModelSubjects(modelId)).pipe(mergeAll(), mergeMap((modelSubjectId) => createSubjectInstanceKeysPath(modelSubjectId, idsCache).pipe(map((subjectPath) => [...subjectPath, { className: "BisCore.GeometricModel3d", id: modelId }]))));
459
+ }
460
+ function createCategoryInstanceKeyPaths(categoryId, idsCache) {
461
+ return from(idsCache.getCategoryModels(categoryId)).pipe(mergeAll(), mergeMap((categoryModelId) => createModelInstanceKeyPaths(categoryModelId, idsCache).pipe(map((modelPath) => [...modelPath, { className: "BisCore.SpatialCategory", id: categoryId }]))));
462
+ }
463
+ function createGeometricElementInstanceKeyPaths(imodelAccess, idsCache, hierarchyConfig, elementInfos) {
464
+ return defer(() => {
465
+ const elementIds = elementInfos.filter((info) => typeof info === "string");
466
+ const groupInfos = elementInfos.filter((info) => typeof info !== "string");
467
+ const elementsClause = elementIds.length > 0 ? `e.ECInstanceId IN (${elementIds.map(() => "?").join(",")})` : undefined;
468
+ const createParentElementClause = (parent) => `e.Parent.Id IN (${parent.ids.map(() => "?").join(",")})`;
469
+ const createParentCategoryClause = ({ ids, modelIds }) => `e.Category.Id IN (${ids.map(() => "?").join(",")}) AND e.Model.Id IN (${modelIds.map(() => "?").join(",")})`;
470
+ const classClause = groupInfos.map(({ parent, classes }) => `(${parent.type === "element" ? createParentElementClause(parent) : createParentCategoryClause(parent)} AND e.ECClassId IS (${classes.join(",")}))`);
471
+ const whereClause = [...(elementsClause ? [elementsClause] : []), ...(classClause ?? [])].join(" OR ");
472
+ const ctes = [
473
+ `ModelsCategoriesElementsHierarchy(ECInstanceId, ParentId, ModelId, Path) AS (
474
+ SELECT
475
+ e.ECInstanceId,
476
+ e.Parent.Id,
477
+ e.Model.Id,
478
+ json_array(
479
+ ${createECInstanceKeySelectClause({ alias: "e" })},
480
+ IIF(e.Parent.Id IS NULL, ${createECInstanceKeySelectClause({ alias: "c" })}, NULL),
481
+ IIF(e.Parent.Id IS NULL, ${createECInstanceKeySelectClause({ alias: "m" })}, NULL)
482
+ )
483
+ FROM ${hierarchyConfig.elementClassSpecification} e
484
+ JOIN bis.GeometricModel3d m ON m.ECInstanceId = e.Model.Id
485
+ JOIN bis.SpatialCategory c ON c.ECInstanceId = e.Category.Id
486
+ WHERE ${whereClause}
487
+
488
+ UNION ALL
489
+
490
+ SELECT
491
+ pe.ECInstanceId,
492
+ pe.Parent.Id,
493
+ pe.Model.Id,
494
+ json_insert(
495
+ ce.Path,
496
+ '$[#]', ${createECInstanceKeySelectClause({ alias: "pe" })},
497
+ '$[#]', IIF(pe.Parent.Id IS NULL, ${createECInstanceKeySelectClause({ alias: "c" })}, NULL),
498
+ '$[#]', IIF(pe.Parent.Id IS NULL, ${createECInstanceKeySelectClause({ alias: "m" })}, NULL)
499
+ )
500
+ FROM ModelsCategoriesElementsHierarchy ce
501
+ JOIN ${hierarchyConfig.elementClassSpecification} pe ON (pe.ECInstanceId = ce.ParentId OR pe.ECInstanceId = ce.ModelId AND ce.ParentId IS NULL)
502
+ JOIN bis.GeometricModel3d m ON m.ECInstanceId = pe.Model.Id
503
+ JOIN bis.SpatialCategory c ON c.ECInstanceId = pe.Category.Id
504
+ )`,
505
+ ];
506
+ const ecsql = `
507
+ SELECT mce.ModelId, mce.Path
508
+ FROM ModelsCategoriesElementsHierarchy mce
509
+ WHERE mce.ParentId IS NULL
510
+ `;
511
+ const createIdBinding = (id) => ({ type: "id", value: id });
512
+ const createCategoryElementsBindings = ({ ids, modelIds }) => [
513
+ ...ids.map(createIdBinding),
514
+ ...modelIds.map(createIdBinding),
515
+ ];
516
+ return imodelAccess.createQueryReader({
517
+ ctes,
518
+ ecsql,
519
+ bindings: [
520
+ ...elementIds.map(createIdBinding),
521
+ ...groupInfos.flatMap((info) => info.parent.type === "element" ? info.parent.ids.map(createIdBinding) : createCategoryElementsBindings(info.parent)),
522
+ ],
523
+ }, { rowFormat: "Indexes" });
524
+ }).pipe(map((row) => ({
525
+ modelId: row[0],
526
+ elementHierarchyPath: flatten(JSON.parse(row[1])).reverse(),
527
+ })), mergeMap(({ modelId, elementHierarchyPath }) => createModelInstanceKeyPaths(modelId, idsCache).pipe(map((modelPath) => {
528
+ modelPath.pop(); // model is already included in the element hierarchy path
529
+ return [...modelPath, ...elementHierarchyPath.filter((x) => !!x)];
530
+ }))));
531
+ }
532
+ async function createInstanceKeyPathsFromInstanceKeys(props) {
533
+ if (props.keys.length > MAX_FILTERING_INSTANCE_KEY_COUNT) {
534
+ throw new Error(`Filter matches more than ${MAX_FILTERING_INSTANCE_KEY_COUNT} items`);
535
+ }
536
+ const ids = {
537
+ models: new Array(),
538
+ categories: new Array(),
539
+ subjects: new Array(),
540
+ elements: new Array(),
541
+ };
542
+ await Promise.all(props.keys.map(async (key) => {
543
+ if ("parent" in key) {
544
+ ids.elements.push(key);
545
+ }
546
+ else if (await props.imodelAccess.classDerivesFrom(key.className, "BisCore.Subject")) {
547
+ ids.subjects.push(key.id);
548
+ }
549
+ else if (await props.imodelAccess.classDerivesFrom(key.className, "BisCore.Model")) {
550
+ ids.models.push(key.id);
551
+ }
552
+ else if (await props.imodelAccess.classDerivesFrom(key.className, "BisCore.SpatialCategory")) {
553
+ ids.categories.push(key.id);
554
+ }
555
+ else {
556
+ ids.elements.push(key.id);
557
+ }
558
+ }));
559
+ return collect(merge(from(ids.subjects).pipe(mergeMap((id) => createSubjectInstanceKeysPath(id, props.idsCache))), from(ids.models).pipe(mergeMap((id) => createModelInstanceKeyPaths(id, props.idsCache))), from(ids.categories).pipe(mergeMap((id) => createCategoryInstanceKeyPaths(id, props.idsCache))), ids.elements.length ? createGeometricElementInstanceKeyPaths(props.imodelAccess, props.idsCache, props.hierarchyConfig, ids.elements) : EMPTY));
560
+ }
561
+ async function createInstanceKeyPathsFromInstanceLabel(props) {
562
+ const elementLabelSelectClause = await props.labelsFactory.createSelectClause({
563
+ classAlias: "e",
564
+ className: "BisCore.Element",
565
+ // eslint-disable-next-line @typescript-eslint/unbound-method
566
+ selectorsConcatenator: ECSql.createConcatenatedValueStringSelector,
567
+ });
568
+ const targetsReader = props.imodelAccess.createQueryReader({
569
+ ecsql: `
570
+ SELECT *
571
+ FROM (
572
+ SELECT
573
+ ec_classname(e.ECClassId, 's.c'),
574
+ e.ECInstanceId,
575
+ ${elementLabelSelectClause} Label
576
+ FROM BisCore.Element e
577
+ WHERE e.ECClassId IS (BisCore.Subject, BisCore.SpatialCategory, ${props.hierarchyConfig.elementClassSpecification})
578
+
579
+ UNION ALL
580
+
581
+ SELECT
582
+ ec_classname(m.ECClassId, 's.c'),
583
+ m.ECInstanceId,
584
+ ${elementLabelSelectClause} Label
585
+ FROM BisCore.GeometricModel3d m
586
+ JOIN BisCore.Element e ON e.ECInstanceId = m.ModeledElement.Id
587
+ WHERE NOT m.IsPrivate
588
+ ${props.hierarchyConfig.showEmptyModels ? "" : `AND EXISTS (SELECT 1 FROM ${props.hierarchyConfig.elementClassSpecification} WHERE Model.Id = m.ECInstanceId)`}
589
+ AND json_extract(e.JsonProperties, '$.PhysicalPartition.Model.Content') IS NULL
590
+ AND json_extract(e.JsonProperties, '$.GraphicalPartition3d.Model.Content') IS NULL
591
+ )
592
+ WHERE Label LIKE '%' || ? || '%' ESCAPE '\\'
593
+ LIMIT ${MAX_FILTERING_INSTANCE_KEY_COUNT + 1}
594
+ `,
595
+ bindings: [{ type: "string", value: props.label.replace(/[%_\\]/g, "\\$&") }],
596
+ }, { rowFormat: "Indexes", restartToken: "tree-widget/models-tree/filter-by-label-query" });
597
+ const targetKeys = new Array();
598
+ for await (const row of targetsReader) {
599
+ targetKeys.push({ className: row[0], id: row[1] });
600
+ }
601
+ return createInstanceKeyPathsFromInstanceKeys({ ...props, keys: targetKeys });
602
+ }
603
+ function createECInstanceKeySelectClause(props) {
604
+ const classIdSelector = `[${props.alias}].[ECClassId]`;
605
+ const instanceHexIdSelector = `IdToHex([${props.alias}].[ECInstanceId])`;
606
+ return `json_object('className', ec_classname(${classIdSelector}, 's.c'), 'id', ${instanceHexIdSelector})`;
607
+ }
608
+ function flatten(source) {
609
+ return source.reduce((flat, item) => {
610
+ return [...flat, ...(Array.isArray(item) ? flatten(item) : [item])];
611
+ }, new Array());
612
+ }
613
+ //# sourceMappingURL=ModelsTreeDefinition.js.map