@itwin/tree-widget-react 2.3.2 → 3.0.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/README.md +232 -147
  3. package/lib/cjs/TreeWidget.d.ts +2 -4
  4. package/lib/cjs/TreeWidget.js +0 -6
  5. package/lib/cjs/TreeWidget.js.map +1 -1
  6. package/lib/cjs/components/SelectableTree.d.ts +3 -9
  7. package/lib/cjs/components/SelectableTree.js +1 -1
  8. package/lib/cjs/components/SelectableTree.js.map +1 -1
  9. package/lib/cjs/components/TreeSelector.d.ts +2 -2
  10. package/lib/cjs/components/TreeSelector.js.map +1 -1
  11. package/lib/cjs/components/TreeWidgetUiItemsProvider.d.ts +14 -25
  12. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +43 -45
  13. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
  14. package/lib/cjs/components/tree-header/TreeHeader.js +17 -9
  15. package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -1
  16. package/lib/cjs/components/tree-header/TreeHeader.scss +7 -41
  17. package/lib/cjs/components/trees/Tree.scss +23 -0
  18. package/lib/cjs/components/trees/categories-tree/CategoriesTree.d.ts +22 -0
  19. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js +78 -0
  20. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js.map +1 -0
  21. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.d.ts +21 -0
  22. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js +37 -0
  23. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
  24. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.d.ts +55 -0
  25. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js +75 -0
  26. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
  27. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +23 -0
  28. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js +185 -0
  29. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
  30. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +36 -0
  31. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js +94 -0
  32. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
  33. package/lib/cjs/components/trees/categories-tree/UseCategories.d.ts +8 -0
  34. package/lib/cjs/components/trees/categories-tree/UseCategories.js +22 -0
  35. package/lib/cjs/components/trees/categories-tree/UseCategories.js.map +1 -0
  36. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.d.ts +46 -0
  37. package/lib/cjs/components/trees/{CategoriesVisibilityUtils.js → common/CategoriesVisibilityUtils.js} +56 -8
  38. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
  39. package/lib/cjs/components/trees/common/FocusedInstancesContext.d.ts +14 -0
  40. package/lib/cjs/components/trees/common/FocusedInstancesContext.js +16 -0
  41. package/lib/cjs/components/trees/common/FocusedInstancesContext.js.map +1 -0
  42. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.d.ts +8 -0
  43. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js +71 -0
  44. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js.map +1 -0
  45. package/lib/cjs/components/trees/common/Rxjs.d.ts +10 -0
  46. package/lib/cjs/components/trees/common/Rxjs.js +46 -0
  47. package/lib/cjs/components/trees/common/Rxjs.js.map +1 -0
  48. package/lib/cjs/components/trees/common/UseFeatureReporting.d.ts +11 -0
  49. package/lib/cjs/components/trees/common/UseFeatureReporting.js +10 -1
  50. package/lib/cjs/components/trees/common/UseFeatureReporting.js.map +1 -1
  51. package/lib/cjs/components/trees/common/UseFiltering.d.ts +12 -0
  52. package/lib/cjs/components/trees/common/UseFiltering.js +29 -0
  53. package/lib/cjs/components/trees/common/UseFiltering.js.map +1 -0
  54. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.d.ts +8 -0
  55. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js +33 -0
  56. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
  57. package/lib/cjs/components/trees/common/UseHierarchyFiltering.d.ts +19 -0
  58. package/lib/cjs/components/trees/common/UseHierarchyFiltering.js +157 -0
  59. package/lib/cjs/components/trees/common/UseHierarchyFiltering.js.map +1 -0
  60. package/lib/cjs/components/trees/common/UseHierarchyVisibility.d.ts +30 -0
  61. package/lib/cjs/components/trees/common/UseHierarchyVisibility.js +98 -0
  62. package/lib/cjs/components/trees/common/UseHierarchyVisibility.js.map +1 -0
  63. package/lib/cjs/components/trees/common/UseIModelChangeListener.d.ts +9 -0
  64. package/lib/cjs/components/trees/common/UseIModelChangeListener.js +20 -0
  65. package/lib/cjs/components/trees/common/UseIModelChangeListener.js.map +1 -0
  66. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.d.ts +13 -0
  67. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js +35 -0
  68. package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
  69. package/lib/cjs/components/trees/common/UseNodeHighlighting.d.ts +16 -0
  70. package/lib/cjs/components/trees/common/UseNodeHighlighting.js +140 -0
  71. package/lib/cjs/components/trees/common/UseNodeHighlighting.js.map +1 -0
  72. package/lib/cjs/components/trees/common/Utils.d.ts +16 -6
  73. package/lib/cjs/components/trees/common/Utils.js +38 -34
  74. package/lib/cjs/components/trees/common/Utils.js.map +1 -1
  75. package/lib/cjs/components/trees/common/components/BaseTree.d.ts +34 -0
  76. package/lib/cjs/components/trees/common/components/BaseTree.js +77 -0
  77. package/lib/cjs/components/trees/common/components/BaseTree.js.map +1 -0
  78. package/lib/cjs/components/trees/common/components/Delayed.d.ts +6 -0
  79. package/lib/cjs/components/trees/common/components/Delayed.js +31 -0
  80. package/lib/cjs/components/trees/common/components/Delayed.js.map +1 -0
  81. package/lib/cjs/components/trees/common/components/ProgressOverlay.d.ts +5 -0
  82. package/lib/cjs/components/trees/common/components/ProgressOverlay.js +16 -0
  83. package/lib/cjs/components/trees/common/components/ProgressOverlay.js.map +1 -0
  84. package/lib/cjs/components/trees/common/components/ProgressOverlay.scss +21 -0
  85. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.d.ts +20 -0
  86. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js +28 -0
  87. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
  88. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.d.ts +13 -0
  89. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js +20 -0
  90. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
  91. package/lib/cjs/components/trees/common/components/TreeRenderer.d.ts +19 -0
  92. package/lib/cjs/components/trees/common/components/TreeRenderer.js +30 -0
  93. package/lib/cjs/components/trees/common/components/TreeRenderer.js.map +1 -0
  94. package/lib/cjs/components/trees/common/components/TreeRenderer.scss +62 -0
  95. package/lib/cjs/components/trees/common/components/VisibilityTree.d.ts +14 -0
  96. package/lib/cjs/components/trees/common/components/VisibilityTree.js +41 -0
  97. package/lib/cjs/components/trees/common/components/VisibilityTree.js.map +1 -0
  98. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +11 -35
  99. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js +29 -83
  100. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  101. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -14
  102. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +12 -12
  103. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  104. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +24 -0
  105. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +262 -0
  106. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
  107. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.d.ts +11 -35
  108. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js +41 -79
  109. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  110. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -14
  111. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js +12 -12
  112. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  113. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +28 -0
  114. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +619 -0
  115. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
  116. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +26 -0
  117. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +203 -0
  118. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
  119. package/lib/cjs/components/trees/index.d.ts +4 -16
  120. package/lib/cjs/components/trees/index.js +9 -30
  121. package/lib/cjs/components/trees/index.js.map +1 -1
  122. package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +17 -72
  123. package/lib/cjs/components/trees/models-tree/ModelsTree.js +196 -135
  124. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -1
  125. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.d.ts +33 -0
  126. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js +101 -0
  127. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
  128. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.d.ts +14 -35
  129. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +40 -83
  130. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  131. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.d.ts +67 -0
  132. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js +617 -0
  133. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
  134. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +24 -0
  135. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +121 -0
  136. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  137. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +44 -0
  138. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js +325 -0
  139. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
  140. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.d.ts +31 -0
  141. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js +40 -0
  142. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
  143. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +122 -0
  144. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +757 -0
  145. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
  146. package/lib/cjs/components/trees/models-tree/internal/Tooltip.d.ts +13 -0
  147. package/lib/cjs/components/trees/models-tree/internal/Tooltip.js +29 -0
  148. package/lib/cjs/components/trees/models-tree/internal/Tooltip.js.map +1 -0
  149. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +10 -0
  150. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js +43 -0
  151. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
  152. package/lib/cjs/tree-widget-react.d.ts +3 -4
  153. package/lib/cjs/tree-widget-react.js +8 -4
  154. package/lib/cjs/tree-widget-react.js.map +1 -1
  155. package/lib/esm/TreeWidget.d.ts +2 -4
  156. package/lib/esm/TreeWidget.js +0 -6
  157. package/lib/esm/TreeWidget.js.map +1 -1
  158. package/lib/esm/components/SelectableTree.d.ts +3 -9
  159. package/lib/esm/components/SelectableTree.js +1 -1
  160. package/lib/esm/components/SelectableTree.js.map +1 -1
  161. package/lib/esm/components/TreeSelector.d.ts +2 -2
  162. package/lib/esm/components/TreeSelector.js.map +1 -1
  163. package/lib/esm/components/TreeWidgetUiItemsProvider.d.ts +14 -25
  164. package/lib/esm/components/TreeWidgetUiItemsProvider.js +42 -44
  165. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
  166. package/lib/esm/components/tree-header/TreeHeader.js +17 -9
  167. package/lib/esm/components/tree-header/TreeHeader.js.map +1 -1
  168. package/lib/esm/components/tree-header/TreeHeader.scss +7 -41
  169. package/lib/esm/components/trees/Tree.scss +23 -0
  170. package/lib/esm/components/trees/categories-tree/CategoriesTree.d.ts +22 -0
  171. package/lib/esm/components/trees/categories-tree/CategoriesTree.js +74 -0
  172. package/lib/esm/components/trees/categories-tree/CategoriesTree.js.map +1 -0
  173. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.d.ts +21 -0
  174. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js +31 -0
  175. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
  176. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.d.ts +55 -0
  177. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js +68 -0
  178. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
  179. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +23 -0
  180. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js +181 -0
  181. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
  182. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +36 -0
  183. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js +90 -0
  184. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
  185. package/lib/esm/components/trees/categories-tree/UseCategories.d.ts +8 -0
  186. package/lib/esm/components/trees/categories-tree/UseCategories.js +18 -0
  187. package/lib/esm/components/trees/categories-tree/UseCategories.js.map +1 -0
  188. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.d.ts +46 -0
  189. package/lib/esm/components/trees/{CategoriesVisibilityUtils.js → common/CategoriesVisibilityUtils.js} +51 -6
  190. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
  191. package/lib/esm/components/trees/common/FocusedInstancesContext.d.ts +14 -0
  192. package/lib/esm/components/trees/common/FocusedInstancesContext.js +12 -0
  193. package/lib/esm/components/trees/common/FocusedInstancesContext.js.map +1 -0
  194. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.d.ts +8 -0
  195. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js +67 -0
  196. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js.map +1 -0
  197. package/lib/esm/components/trees/common/Rxjs.d.ts +10 -0
  198. package/lib/esm/components/trees/common/Rxjs.js +40 -0
  199. package/lib/esm/components/trees/common/Rxjs.js.map +1 -0
  200. package/lib/esm/components/trees/common/UseFeatureReporting.d.ts +11 -0
  201. package/lib/esm/components/trees/common/UseFeatureReporting.js +8 -0
  202. package/lib/esm/components/trees/common/UseFeatureReporting.js.map +1 -1
  203. package/lib/esm/components/trees/common/UseFiltering.d.ts +12 -0
  204. package/lib/esm/components/trees/common/UseFiltering.js +25 -0
  205. package/lib/esm/components/trees/common/UseFiltering.js.map +1 -0
  206. package/lib/esm/components/trees/common/UseHierarchiesLocalization.d.ts +8 -0
  207. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js +29 -0
  208. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
  209. package/lib/esm/components/trees/common/UseHierarchyFiltering.d.ts +19 -0
  210. package/lib/esm/components/trees/common/UseHierarchyFiltering.js +153 -0
  211. package/lib/esm/components/trees/common/UseHierarchyFiltering.js.map +1 -0
  212. package/lib/esm/components/trees/common/UseHierarchyVisibility.d.ts +30 -0
  213. package/lib/esm/components/trees/common/UseHierarchyVisibility.js +94 -0
  214. package/lib/esm/components/trees/common/UseHierarchyVisibility.js.map +1 -0
  215. package/lib/esm/components/trees/common/UseIModelChangeListener.d.ts +9 -0
  216. package/lib/esm/components/trees/common/UseIModelChangeListener.js +16 -0
  217. package/lib/esm/components/trees/common/UseIModelChangeListener.js.map +1 -0
  218. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.d.ts +13 -0
  219. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js +31 -0
  220. package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
  221. package/lib/esm/components/trees/common/UseNodeHighlighting.d.ts +16 -0
  222. package/lib/esm/components/trees/common/UseNodeHighlighting.js +136 -0
  223. package/lib/esm/components/trees/common/UseNodeHighlighting.js.map +1 -0
  224. package/lib/esm/components/trees/common/Utils.d.ts +16 -6
  225. package/lib/esm/components/trees/common/Utils.js +33 -29
  226. package/lib/esm/components/trees/common/Utils.js.map +1 -1
  227. package/lib/esm/components/trees/common/components/BaseTree.d.ts +34 -0
  228. package/lib/esm/components/trees/common/components/BaseTree.js +73 -0
  229. package/lib/esm/components/trees/common/components/BaseTree.js.map +1 -0
  230. package/lib/esm/components/trees/common/components/Delayed.d.ts +6 -0
  231. package/lib/esm/components/trees/common/components/Delayed.js +27 -0
  232. package/lib/esm/components/trees/common/components/Delayed.js.map +1 -0
  233. package/lib/esm/components/trees/common/components/ProgressOverlay.d.ts +5 -0
  234. package/lib/esm/components/trees/common/components/ProgressOverlay.js +12 -0
  235. package/lib/esm/components/trees/common/components/ProgressOverlay.js.map +1 -0
  236. package/lib/esm/components/trees/common/components/ProgressOverlay.scss +21 -0
  237. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.d.ts +20 -0
  238. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js +21 -0
  239. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
  240. package/lib/esm/components/trees/common/components/TreeNodeRenderer.d.ts +13 -0
  241. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js +13 -0
  242. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
  243. package/lib/esm/components/trees/common/components/TreeRenderer.d.ts +19 -0
  244. package/lib/esm/components/trees/common/components/TreeRenderer.js +26 -0
  245. package/lib/esm/components/trees/common/components/TreeRenderer.js.map +1 -0
  246. package/lib/esm/components/trees/common/components/TreeRenderer.scss +62 -0
  247. package/lib/esm/components/trees/common/components/VisibilityTree.d.ts +14 -0
  248. package/lib/esm/components/trees/common/components/VisibilityTree.js +37 -0
  249. package/lib/esm/components/trees/common/components/VisibilityTree.js.map +1 -0
  250. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +11 -35
  251. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js +27 -58
  252. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  253. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -14
  254. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +12 -12
  255. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  256. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +24 -0
  257. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +258 -0
  258. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
  259. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.d.ts +11 -35
  260. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js +39 -54
  261. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  262. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -14
  263. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js +12 -12
  264. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  265. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +28 -0
  266. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +615 -0
  267. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
  268. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +26 -0
  269. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +199 -0
  270. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
  271. package/lib/esm/components/trees/index.d.ts +4 -16
  272. package/lib/esm/components/trees/index.js +4 -16
  273. package/lib/esm/components/trees/index.js.map +1 -1
  274. package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +17 -72
  275. package/lib/esm/components/trees/models-tree/ModelsTree.js +196 -132
  276. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -1
  277. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.d.ts +33 -0
  278. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js +92 -0
  279. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
  280. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.d.ts +14 -35
  281. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +38 -81
  282. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  283. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.d.ts +67 -0
  284. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js +613 -0
  285. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
  286. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +24 -0
  287. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +117 -0
  288. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
  289. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +44 -0
  290. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js +321 -0
  291. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
  292. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.d.ts +31 -0
  293. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js +37 -0
  294. package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
  295. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +122 -0
  296. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +748 -0
  297. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
  298. package/lib/esm/components/trees/models-tree/internal/Tooltip.d.ts +13 -0
  299. package/lib/esm/components/trees/models-tree/internal/Tooltip.js +24 -0
  300. package/lib/esm/components/trees/models-tree/internal/Tooltip.js.map +1 -0
  301. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +10 -0
  302. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js +39 -0
  303. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
  304. package/lib/esm/tree-widget-react.d.ts +3 -4
  305. package/lib/esm/tree-widget-react.js +3 -4
  306. package/lib/esm/tree-widget-react.js.map +1 -1
  307. package/lib/public/locales/en/TreeWidget.json +126 -42
  308. package/package.json +19 -6
  309. package/lib/cjs/components/TreeFilteringState.d.ts +0 -18
  310. package/lib/cjs/components/TreeFilteringState.js +0 -46
  311. package/lib/cjs/components/TreeFilteringState.js.map +0 -1
  312. package/lib/cjs/components/trees/CategoriesVisibilityUtils.d.ts +0 -25
  313. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js.map +0 -1
  314. package/lib/cjs/components/trees/VisibilityTreeBase.scss +0 -82
  315. package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +0 -67
  316. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +0 -158
  317. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +0 -1
  318. package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +0 -100
  319. package/lib/cjs/components/trees/VisibilityTreeRenderer.js +0 -98
  320. package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +0 -1
  321. package/lib/cjs/components/trees/category-tree/Categories.json +0 -99
  322. package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +0 -60
  323. package/lib/cjs/components/trees/category-tree/CategoriesTree.js +0 -141
  324. package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +0 -1
  325. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.d.ts +0 -71
  326. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js +0 -123
  327. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +0 -1
  328. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +0 -72
  329. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +0 -172
  330. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +0 -1
  331. package/lib/cjs/components/trees/common/ContextMenu.d.ts +0 -39
  332. package/lib/cjs/components/trees/common/ContextMenu.js +0 -44
  333. package/lib/cjs/components/trees/common/ContextMenu.js.map +0 -1
  334. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.d.ts +0 -27
  335. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.js +0 -51
  336. package/lib/cjs/components/trees/common/ReportingTreeEventHandler.js.map +0 -1
  337. package/lib/cjs/components/trees/common/TreeNodeRenderer.d.ts +0 -61
  338. package/lib/cjs/components/trees/common/TreeNodeRenderer.js +0 -50
  339. package/lib/cjs/components/trees/common/TreeNodeRenderer.js.map +0 -1
  340. package/lib/cjs/components/trees/common/TreeRenderer.d.ts +0 -55
  341. package/lib/cjs/components/trees/common/TreeRenderer.js +0 -67
  342. package/lib/cjs/components/trees/common/TreeRenderer.js.map +0 -1
  343. package/lib/cjs/components/trees/common/TreeRenderer.scss +0 -149
  344. package/lib/cjs/components/trees/common/Types.d.ts +0 -57
  345. package/lib/cjs/components/trees/common/Types.js +0 -21
  346. package/lib/cjs/components/trees/common/Types.js.map +0 -1
  347. package/lib/cjs/components/trees/common/UseVisibilityTreeState.d.ts +0 -43
  348. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js +0 -49
  349. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js.map +0 -1
  350. package/lib/cjs/components/trees/external-sources-tree/ExternalSources.json +0 -228
  351. package/lib/cjs/components/trees/imodel-content-tree/IModelContent.json +0 -443
  352. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.d.ts +0 -19
  353. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js +0 -36
  354. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js.map +0 -1
  355. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.d.ts +0 -130
  356. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +0 -651
  357. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +0 -1
  358. package/lib/cjs/components/trees/models-tree/Utils.d.ts +0 -29
  359. package/lib/cjs/components/trees/models-tree/Utils.js +0 -556
  360. package/lib/cjs/components/trees/models-tree/Utils.js.map +0 -1
  361. package/lib/cjs/components/utils/UseTreeTransientState.d.ts +0 -19
  362. package/lib/cjs/components/utils/UseTreeTransientState.js +0 -33
  363. package/lib/cjs/components/utils/UseTreeTransientState.js.map +0 -1
  364. package/lib/esm/components/TreeFilteringState.d.ts +0 -18
  365. package/lib/esm/components/TreeFilteringState.js +0 -42
  366. package/lib/esm/components/TreeFilteringState.js.map +0 -1
  367. package/lib/esm/components/trees/CategoriesVisibilityUtils.d.ts +0 -25
  368. package/lib/esm/components/trees/CategoriesVisibilityUtils.js.map +0 -1
  369. package/lib/esm/components/trees/VisibilityTreeBase.scss +0 -82
  370. package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +0 -67
  371. package/lib/esm/components/trees/VisibilityTreeEventHandler.js +0 -154
  372. package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +0 -1
  373. package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +0 -100
  374. package/lib/esm/components/trees/VisibilityTreeRenderer.js +0 -86
  375. package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +0 -1
  376. package/lib/esm/components/trees/category-tree/Categories.json +0 -99
  377. package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +0 -60
  378. package/lib/esm/components/trees/category-tree/CategoriesTree.js +0 -111
  379. package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +0 -1
  380. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.d.ts +0 -71
  381. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js +0 -116
  382. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +0 -1
  383. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +0 -72
  384. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +0 -164
  385. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +0 -1
  386. package/lib/esm/components/trees/common/ContextMenu.d.ts +0 -39
  387. package/lib/esm/components/trees/common/ContextMenu.js +0 -39
  388. package/lib/esm/components/trees/common/ContextMenu.js.map +0 -1
  389. package/lib/esm/components/trees/common/ReportingTreeEventHandler.d.ts +0 -27
  390. package/lib/esm/components/trees/common/ReportingTreeEventHandler.js +0 -47
  391. package/lib/esm/components/trees/common/ReportingTreeEventHandler.js.map +0 -1
  392. package/lib/esm/components/trees/common/TreeNodeRenderer.d.ts +0 -61
  393. package/lib/esm/components/trees/common/TreeNodeRenderer.js +0 -44
  394. package/lib/esm/components/trees/common/TreeNodeRenderer.js.map +0 -1
  395. package/lib/esm/components/trees/common/TreeRenderer.d.ts +0 -55
  396. package/lib/esm/components/trees/common/TreeRenderer.js +0 -59
  397. package/lib/esm/components/trees/common/TreeRenderer.js.map +0 -1
  398. package/lib/esm/components/trees/common/TreeRenderer.scss +0 -149
  399. package/lib/esm/components/trees/common/Types.d.ts +0 -57
  400. package/lib/esm/components/trees/common/Types.js +0 -18
  401. package/lib/esm/components/trees/common/Types.js.map +0 -1
  402. package/lib/esm/components/trees/common/UseVisibilityTreeState.d.ts +0 -43
  403. package/lib/esm/components/trees/common/UseVisibilityTreeState.js +0 -45
  404. package/lib/esm/components/trees/common/UseVisibilityTreeState.js.map +0 -1
  405. package/lib/esm/components/trees/external-sources-tree/ExternalSources.json +0 -228
  406. package/lib/esm/components/trees/imodel-content-tree/IModelContent.json +0 -443
  407. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.d.ts +0 -19
  408. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js +0 -32
  409. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js.map +0 -1
  410. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.d.ts +0 -130
  411. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +0 -641
  412. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +0 -1
  413. package/lib/esm/components/trees/models-tree/Utils.d.ts +0 -29
  414. package/lib/esm/components/trees/models-tree/Utils.js +0 -548
  415. package/lib/esm/components/trees/models-tree/Utils.js.map +0 -1
  416. package/lib/esm/components/utils/UseTreeTransientState.d.ts +0 -19
  417. package/lib/esm/components/utils/UseTreeTransientState.js +0 -29
  418. package/lib/esm/components/utils/UseTreeTransientState.js.map +0 -1
@@ -0,0 +1,615 @@
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 { createClassBasedHierarchyDefinition, createNodesQueryClauseFactory, HierarchyNode, NodeSelectClauseColumnNames, } from "@itwin/presentation-hierarchies";
6
+ import { createBisInstanceLabelSelectClauseFactory, ECSql } from "@itwin/presentation-shared";
7
+ import { createIdsSelector, parseIdsSelectorResult } from "../common/Utils";
8
+ export class IModelContentTreeDefinition {
9
+ constructor(props) {
10
+ this._idsCache = props.idsCache;
11
+ this._impl = createClassBasedHierarchyDefinition({
12
+ classHierarchyInspector: props.imodelAccess,
13
+ hierarchy: {
14
+ rootNodes: async (requestProps) => this.createRootHierarchyLevelDefinition(requestProps),
15
+ childNodes: [
16
+ {
17
+ parentNodeClassName: "BisCore.Subject",
18
+ definitions: async (requestProps) => this.createSubjectChildrenQuery(requestProps),
19
+ },
20
+ {
21
+ parentNodeClassName: "BisCore.ISubModeledElement",
22
+ definitions: async (requestProps) => this.createISubModeledElementChildrenQuery(requestProps),
23
+ },
24
+ {
25
+ parentNodeClassName: "BisCore.GeometricModel3d",
26
+ definitions: async (requestProps) => this.createGeometricModelChildrenQuery({ ...requestProps, viewType: "3d" }),
27
+ },
28
+ {
29
+ parentNodeClassName: "BisCore.GeometricModel2d",
30
+ definitions: async (requestProps) => this.createGeometricModelChildrenQuery({ ...requestProps, viewType: "2d" }),
31
+ },
32
+ {
33
+ parentNodeClassName: "BisCore.SpatialCategory",
34
+ definitions: async (requestProps) => this.createCategoryChildrenQuery({ ...requestProps, viewType: "3d" }),
35
+ },
36
+ {
37
+ parentNodeClassName: "BisCore.DrawingCategory",
38
+ definitions: async (requestProps) => this.createCategoryChildrenQuery({ ...requestProps, viewType: "2d" }),
39
+ },
40
+ {
41
+ parentNodeClassName: "BisCore.Model",
42
+ onlyIfNotHandled: true,
43
+ definitions: async (requestProps) => this.createModelChildrenQuery(requestProps),
44
+ },
45
+ {
46
+ parentNodeClassName: "BisCore.GroupInformationElement",
47
+ definitions: async (requestProps) => this.createGroupInformationElementChildElementsQuery(requestProps),
48
+ },
49
+ {
50
+ customParentNodeKey: "ChildrenNode",
51
+ definitions: async (requestProps) => this.createChildrenNodeChildrenQuery(requestProps),
52
+ },
53
+ {
54
+ customParentNodeKey: "MembersNode",
55
+ definitions: async (requestProps) => this.createGroupInformationElementMemberElementsQuery(requestProps),
56
+ },
57
+ {
58
+ parentNodeClassName: "BisCore.Element",
59
+ onlyIfNotHandled: true,
60
+ definitions: async (requestProps) => this.createElementChildrenQuery(requestProps),
61
+ },
62
+ ],
63
+ },
64
+ });
65
+ this._selectQueryFactory = createNodesQueryClauseFactory({ imodelAccess: props.imodelAccess });
66
+ this._nodeLabelSelectClauseFactory = createBisInstanceLabelSelectClauseFactory({ classHierarchyInspector: props.imodelAccess });
67
+ }
68
+ async postProcessNode(node) {
69
+ if (HierarchyNode.isClassGroupingNode(node)) {
70
+ const label = node.children.length ? `${node.label} (${node.children.length})` : node.label;
71
+ return { ...node, label, extendedData: { ...node.extendedData, imageId: "icon-ec-class" } };
72
+ }
73
+ return node;
74
+ }
75
+ async defineHierarchyLevel(props) {
76
+ return this._impl.defineHierarchyLevel(props);
77
+ }
78
+ async createRootHierarchyLevelDefinition(props) {
79
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
80
+ filter: props.instanceFilter,
81
+ contentClass: { fullName: "BisCore.Subject", alias: "this" },
82
+ });
83
+ return [
84
+ {
85
+ fullClassName: "BisCore.Subject",
86
+ query: {
87
+ ecsql: `
88
+ SELECT
89
+ ${await this._selectQueryFactory.createSelectClause({
90
+ ecClassId: { selector: ECSql.createRawPropertyValueSelector("this", "ECClassId") },
91
+ ecInstanceId: { selector: "this.ECInstanceId" },
92
+ nodeLabel: {
93
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
94
+ classAlias: "this",
95
+ className: "BisCore.Subject",
96
+ }),
97
+ },
98
+ extendedData: {
99
+ imageId: "icon-imodel-hollow-2",
100
+ },
101
+ autoExpand: true,
102
+ supportsFiltering: true,
103
+ })}
104
+ FROM ${instanceFilterClauses.from} this
105
+ ${instanceFilterClauses.joins}
106
+ WHERE
107
+ this.Parent IS NULL
108
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
109
+ `,
110
+ },
111
+ },
112
+ ];
113
+ }
114
+ async createSubjectChildrenQuery({ parentNodeInstanceIds: subjectIds, instanceFilter, }) {
115
+ const [subjectFilterClauses, modelFilterClauses] = await Promise.all([
116
+ this._selectQueryFactory.createFilterClauses({
117
+ filter: instanceFilter,
118
+ contentClass: { fullName: "BisCore.Subject", alias: "this" },
119
+ }),
120
+ this._selectQueryFactory.createFilterClauses({
121
+ filter: instanceFilter,
122
+ contentClass: { fullName: "BisCore.Model", alias: "this" },
123
+ }),
124
+ ]);
125
+ const [childSubjectIds, childModelIds] = await Promise.all([
126
+ this._idsCache.getChildSubjectIds(subjectIds),
127
+ this._idsCache.getChildSubjectModelIds(subjectIds),
128
+ ]);
129
+ const defs = new Array();
130
+ childSubjectIds.length &&
131
+ defs.push({
132
+ fullClassName: "BisCore.Subject",
133
+ query: {
134
+ ecsql: `
135
+ SELECT
136
+ ${await this._selectQueryFactory.createSelectClause({
137
+ ecClassId: { selector: "this.ECClassId" },
138
+ ecInstanceId: { selector: "this.ECInstanceId" },
139
+ nodeLabel: {
140
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
141
+ classAlias: "this",
142
+ className: "BisCore.Subject",
143
+ }),
144
+ },
145
+ hasChildren: { selector: `InVirtualSet(?, this.ECInstanceId)` },
146
+ grouping: { byLabel: { action: "merge", groupId: "subject" } },
147
+ extendedData: {
148
+ imageId: "icon-folder",
149
+ },
150
+ supportsFiltering: true,
151
+ })}
152
+ FROM ${subjectFilterClauses.from} this
153
+ ${subjectFilterClauses.joins}
154
+ WHERE
155
+ this.ECInstanceId IN (${childSubjectIds.map(() => "?").join(",")})
156
+ ${subjectFilterClauses.where ? `AND ${subjectFilterClauses.where}` : ""}
157
+ `,
158
+ bindings: [
159
+ { type: "idset", value: await this._idsCache.getParentSubjectIds() },
160
+ ...childSubjectIds.map((id) => ({ type: "id", value: id })),
161
+ ],
162
+ },
163
+ });
164
+ childModelIds.length &&
165
+ defs.push({
166
+ fullClassName: "BisCore.Model",
167
+ query: {
168
+ ecsql: `
169
+ SELECT model.ECInstanceId AS ECInstanceId, model.*
170
+ FROM (
171
+ SELECT
172
+ ${await this._selectQueryFactory.createSelectClause({
173
+ ecClassId: { selector: "m.ECClassId" },
174
+ ecInstanceId: { selector: "m.ECInstanceId" },
175
+ nodeLabel: {
176
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
177
+ classAlias: "partition",
178
+ className: "BisCore.InformationPartitionElement",
179
+ }),
180
+ },
181
+ hideNodeInHierarchy: {
182
+ selector: `
183
+ CASE
184
+ WHEN (
185
+ json_extract([partition].JsonProperties, '$.PhysicalPartition.Model.Content') IS NOT NULL
186
+ OR json_extract([partition].JsonProperties, '$.GraphicalPartition3d.Model.Content') IS NOT NULL
187
+ ) THEN 1
188
+ ELSE 0
189
+ END
190
+ `,
191
+ },
192
+ extendedData: {
193
+ imageId: "icon-model",
194
+ },
195
+ supportsFiltering: true,
196
+ })}
197
+ FROM BisCore.Model m
198
+ JOIN BisCore.InformationPartitionElement [partition] ON [partition].ECInstanceId = m.ModeledElement.Id
199
+ WHERE
200
+ m.ECInstanceId IN (${childModelIds.map(() => "?").join(",")})
201
+ ) model
202
+ JOIN ${modelFilterClauses.from} this ON this.ECInstanceId = model.ECInstanceId
203
+ ${modelFilterClauses.joins}
204
+ ${modelFilterClauses.where ? `WHERE (model.${NodeSelectClauseColumnNames.HideNodeInHierarchy} OR ${modelFilterClauses.where})` : ""}
205
+ `,
206
+ bindings: childModelIds.map((id) => ({ type: "id", value: id })),
207
+ },
208
+ });
209
+ return defs;
210
+ }
211
+ async createISubModeledElementChildrenQuery({ parentNodeInstanceIds: elementIds, }) {
212
+ // note: we do not apply hierarchy level filtering on this hierarchy level, because it's always
213
+ // hidden - the filter will get applied on the child hierarchy levels
214
+ return [
215
+ {
216
+ fullClassName: "BisCore.Model",
217
+ query: {
218
+ ecsql: `
219
+ SELECT
220
+ ${await this._selectQueryFactory.createSelectClause({
221
+ ecClassId: { selector: "this.ECClassId" },
222
+ ecInstanceId: { selector: "this.ECInstanceId" },
223
+ nodeLabel: "",
224
+ hideNodeInHierarchy: true,
225
+ })}
226
+ FROM BisCore.Model this
227
+ WHERE
228
+ this.ModeledElement.Id IN (${elementIds.map(() => "?").join(",")})
229
+ AND NOT this.IsPrivate
230
+ `,
231
+ bindings: [...elementIds.map((id) => ({ type: "id", value: id }))],
232
+ },
233
+ },
234
+ ];
235
+ }
236
+ async createGeometricModelChildrenQuery({ parentNodeInstanceIds: modelIds, instanceFilter, viewType, }) {
237
+ const childCategoryIds = await this._idsCache.getModelCategories(modelIds);
238
+ const { categoryClass } = getClassNameByViewType(viewType);
239
+ const categoryFilterClauses = await this._selectQueryFactory.createFilterClauses({
240
+ filter: instanceFilter,
241
+ contentClass: { fullName: categoryClass, alias: "this" },
242
+ });
243
+ const informationContentElementFilterClauses = await this._selectQueryFactory.createFilterClauses({
244
+ filter: instanceFilter,
245
+ contentClass: { fullName: "BisCore.InformationContentElement", alias: "this" },
246
+ });
247
+ const defs = new Array();
248
+ childCategoryIds.length &&
249
+ defs.push({
250
+ fullClassName: categoryClass,
251
+ query: {
252
+ ecsql: `
253
+ SELECT
254
+ ${await this._selectQueryFactory.createSelectClause({
255
+ ecClassId: { selector: "this.ECClassId" },
256
+ ecInstanceId: { selector: "this.ECInstanceId" },
257
+ nodeLabel: {
258
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
259
+ classAlias: "this",
260
+ className: categoryClass,
261
+ }),
262
+ },
263
+ grouping: { byLabel: { action: "merge", groupId: "category" } },
264
+ extendedData: {
265
+ imageId: "icon-layers",
266
+ modelIds: { selector: createIdsSelector(modelIds) },
267
+ },
268
+ hasChildren: true,
269
+ supportsFiltering: true,
270
+ })}
271
+ FROM ${categoryFilterClauses.from} this
272
+ ${categoryFilterClauses.joins}
273
+ WHERE
274
+ this.ECInstanceId IN (${childCategoryIds.map(() => "?").join(",")})
275
+ ${categoryFilterClauses.where ? `AND ${categoryFilterClauses.where}` : ""}
276
+ `,
277
+ bindings: childCategoryIds.map((id) => ({ type: "id", value: id })),
278
+ },
279
+ });
280
+ defs.push({
281
+ fullClassName: "BisCore.InformationContentElement",
282
+ query: {
283
+ ecsql: `
284
+ SELECT
285
+ ${await this._selectQueryFactory.createSelectClause({
286
+ ecClassId: { selector: "this.ECClassId" },
287
+ ecInstanceId: { selector: "this.ECInstanceId" },
288
+ nodeLabel: {
289
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
290
+ classAlias: "this",
291
+ className: "BisCore.InformationContentElement",
292
+ }),
293
+ },
294
+ hasChildren: true,
295
+ grouping: {
296
+ byClass: true,
297
+ },
298
+ supportsFiltering: true,
299
+ })}
300
+ FROM ${informationContentElementFilterClauses.from} this
301
+ ${informationContentElementFilterClauses.joins}
302
+ WHERE
303
+ this.Model.Id IN (${modelIds.map(() => "?").join(",")})
304
+ ${informationContentElementFilterClauses.where ? `AND ${informationContentElementFilterClauses.where}` : ""}
305
+ `,
306
+ bindings: modelIds.map((id) => ({ type: "id", value: id })),
307
+ },
308
+ });
309
+ return defs;
310
+ }
311
+ async createCategoryChildrenQuery(props) {
312
+ const { parentNodeInstanceIds: categoryIds, parentNode, instanceFilter, viewType } = props;
313
+ const modelIds = parseIdsSelectorResult(parentNode.extendedData?.modelIds);
314
+ // We only want to handle a category added as a child of `GeometricModel2d` or `GeometricModel3d`.
315
+ // ModelIds is not empty only if parent node is a geometric model.
316
+ if (modelIds.length === 0) {
317
+ return this.createElementChildrenQuery(props);
318
+ }
319
+ const { elementClass, modelClass } = getClassNameByViewType(viewType);
320
+ return Promise.all(getElementsSelectProps({ modelClass, elementClass }).map(async ({ selectProps, whereClause }) => {
321
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
322
+ filter: instanceFilter,
323
+ contentClass: { fullName: elementClass, alias: "this" },
324
+ });
325
+ return {
326
+ fullClassName: elementClass,
327
+ query: {
328
+ ecsql: `
329
+ SELECT
330
+ ${await this._selectQueryFactory.createSelectClause({
331
+ ecClassId: { selector: "this.ECClassId" },
332
+ ecInstanceId: { selector: "this.ECInstanceId" },
333
+ nodeLabel: {
334
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
335
+ classAlias: "this",
336
+ className: elementClass,
337
+ }),
338
+ },
339
+ grouping: {
340
+ byClass: true,
341
+ },
342
+ extendedData: {
343
+ imageId: "icon-item",
344
+ },
345
+ hasChildren: selectProps.hasChildren,
346
+ supportsFiltering: selectProps.supportsFiltering,
347
+ })}
348
+ FROM ${instanceFilterClauses.from} this
349
+ ${instanceFilterClauses.joins}
350
+ WHERE
351
+ this.Category.Id IN (${categoryIds.map(() => "?").join(",")})
352
+ AND this.Model.Id IN (${modelIds.map(() => "?").join(",")})
353
+ AND this.Parent IS NULL
354
+ ${whereClause ? `AND ${whereClause}` : ""}
355
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
356
+ `,
357
+ bindings: [...categoryIds.map((id) => ({ type: "id", value: id })), ...modelIds.map((id) => ({ type: "id", value: id }))],
358
+ },
359
+ };
360
+ }));
361
+ }
362
+ async createModelChildrenQuery({ parentNodeInstanceIds: modelIds, instanceFilter, }) {
363
+ return Promise.all(getElementsSelectProps().map(async ({ classFullName, whereClause, selectProps }) => {
364
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
365
+ filter: instanceFilter,
366
+ contentClass: { fullName: classFullName, alias: "this" },
367
+ });
368
+ return {
369
+ fullClassName: classFullName,
370
+ query: {
371
+ ecsql: `
372
+ SELECT
373
+ ${await this._selectQueryFactory.createSelectClause({
374
+ ecClassId: { selector: "this.ECClassId" },
375
+ ecInstanceId: { selector: "this.ECInstanceId" },
376
+ nodeLabel: {
377
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
378
+ classAlias: "this",
379
+ className: classFullName,
380
+ }),
381
+ },
382
+ grouping: {
383
+ byClass: true,
384
+ },
385
+ extendedData: {
386
+ imageId: "icon-item",
387
+ },
388
+ hasChildren: selectProps?.hasChildren,
389
+ supportsFiltering: selectProps?.supportsFiltering,
390
+ })}
391
+ FROM ${instanceFilterClauses.from} this
392
+ ${instanceFilterClauses.joins}
393
+ WHERE
394
+ this.Parent IS NULL
395
+ AND this.Model.Id IN (${modelIds.map(() => "?").join(",")})
396
+ ${whereClause ? `AND ${whereClause}` : ""}
397
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
398
+ `,
399
+ bindings: modelIds.map((id) => ({ type: "id", value: id })),
400
+ },
401
+ };
402
+ }));
403
+ }
404
+ async createGroupInformationElementChildElementsQuery({ parentNodeInstanceIds: groupIds, }) {
405
+ return [
406
+ {
407
+ node: {
408
+ key: "ChildrenNode",
409
+ label: "Children",
410
+ extendedData: {
411
+ groupIds,
412
+ imageId: "icon-hierarchy-tree",
413
+ },
414
+ supportsFiltering: true,
415
+ processingParams: {
416
+ hideIfNoChildren: true,
417
+ },
418
+ },
419
+ },
420
+ {
421
+ node: {
422
+ key: "MembersNode",
423
+ label: "Members",
424
+ extendedData: {
425
+ groupIds,
426
+ imageId: "icon-group",
427
+ },
428
+ supportsFiltering: true,
429
+ processingParams: {
430
+ hideIfNoChildren: true,
431
+ },
432
+ },
433
+ },
434
+ ];
435
+ }
436
+ async createChildrenNodeChildrenQuery({ parentNode, instanceFilter }) {
437
+ const groupIds = parentNode.extendedData?.groupIds;
438
+ return Promise.all(getElementsSelectProps().map(async ({ classFullName, whereClause, selectProps }) => {
439
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
440
+ filter: instanceFilter,
441
+ contentClass: { fullName: classFullName, alias: "this" },
442
+ });
443
+ return {
444
+ fullClassName: classFullName,
445
+ query: {
446
+ ecsql: `
447
+ SELECT
448
+ ${await this._selectQueryFactory.createSelectClause({
449
+ ecClassId: { selector: "this.ECClassId" },
450
+ ecInstanceId: { selector: "this.ECInstanceId" },
451
+ nodeLabel: {
452
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
453
+ classAlias: "this",
454
+ className: classFullName,
455
+ }),
456
+ },
457
+ extendedData: {
458
+ imageId: "icon-item",
459
+ },
460
+ grouping: { byClass: true },
461
+ hasChildren: selectProps.hasChildren,
462
+ supportsFiltering: selectProps.supportsFiltering,
463
+ })}
464
+ FROM ${instanceFilterClauses.from} this
465
+ ${instanceFilterClauses.joins}
466
+ WHERE
467
+ this.Parent.Id IN (${groupIds.map(() => "?").join(",")})
468
+ ${whereClause ? `AND ${whereClause}` : ""}
469
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
470
+ `,
471
+ bindings: groupIds.map((id) => ({ type: "id", value: id })),
472
+ },
473
+ };
474
+ }));
475
+ }
476
+ async createGroupInformationElementMemberElementsQuery({ parentNode, instanceFilter, }) {
477
+ const groupIds = parentNode.extendedData?.groupIds;
478
+ return Promise.all(getElementsSelectProps().map(async ({ classFullName, whereClause, selectProps }) => {
479
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
480
+ filter: instanceFilter,
481
+ contentClass: { fullName: classFullName, alias: "this" },
482
+ });
483
+ return {
484
+ fullClassName: classFullName,
485
+ query: {
486
+ ecsql: `
487
+ SELECT
488
+ ${await this._selectQueryFactory.createSelectClause({
489
+ ecClassId: { selector: "this.ECClassId" },
490
+ ecInstanceId: { selector: "this.ECInstanceId" },
491
+ nodeLabel: {
492
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
493
+ classAlias: "this",
494
+ className: classFullName,
495
+ }),
496
+ },
497
+ grouping: { byClass: true },
498
+ extendedData: {
499
+ imageId: "icon-item",
500
+ },
501
+ hasChildren: selectProps.hasChildren,
502
+ supportsFiltering: selectProps.supportsFiltering,
503
+ })}
504
+ FROM ${instanceFilterClauses.from} this
505
+ JOIN BisCore.ElementGroupsMembers egm ON egm.TargetECInstanceId = this.ECInstanceId
506
+ ${instanceFilterClauses.joins}
507
+ WHERE
508
+ egm.SourceECInstanceId IN (${groupIds.map(() => "?").join(",")})
509
+ ${whereClause ? `AND ${whereClause}` : ""}
510
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
511
+ `,
512
+ bindings: groupIds.map((id) => ({ type: "id", value: id })),
513
+ },
514
+ };
515
+ }));
516
+ }
517
+ async createElementChildrenQuery({ parentNodeInstanceIds: elementIds, instanceFilter, }) {
518
+ return Promise.all(getElementsSelectProps().map(async ({ classFullName, whereClause, selectProps }) => {
519
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
520
+ filter: instanceFilter,
521
+ contentClass: { fullName: classFullName, alias: "this" },
522
+ });
523
+ return {
524
+ fullClassName: classFullName,
525
+ query: {
526
+ ecsql: `
527
+ SELECT
528
+ ${await this._selectQueryFactory.createSelectClause({
529
+ ecClassId: { selector: "this.ECClassId" },
530
+ ecInstanceId: { selector: "this.ECInstanceId" },
531
+ nodeLabel: {
532
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
533
+ classAlias: "this",
534
+ className: classFullName,
535
+ }),
536
+ },
537
+ grouping: { byClass: true },
538
+ extendedData: {
539
+ imageId: "icon-item",
540
+ },
541
+ hasChildren: selectProps.hasChildren,
542
+ supportsFiltering: selectProps.supportsFiltering,
543
+ })}
544
+ FROM ${instanceFilterClauses.from} this
545
+ JOIN BisCore.Element p ON p.ECInstanceId = this.Parent.Id
546
+ ${instanceFilterClauses.joins}
547
+ WHERE
548
+ p.ECInstanceId IN (${elementIds.map(() => "?").join(",")})
549
+ ${whereClause ? `AND ${whereClause}` : ""}
550
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
551
+ `,
552
+ bindings: elementIds.map((id) => ({ type: "id", value: id })),
553
+ },
554
+ };
555
+ }));
556
+ }
557
+ }
558
+ function getClassNameByViewType(view) {
559
+ if (view === "2d") {
560
+ return { categoryClass: "BisCore.DrawingCategory", elementClass: "BisCore.GeometricElement2d", modelClass: "BisCore.GeometricModel2d" };
561
+ }
562
+ return { categoryClass: "BisCore.SpatialCategory", elementClass: "BisCore.GeometricElement3d", modelClass: "BisCore.GeometricModel3d" };
563
+ }
564
+ function getElementsSelectProps(props) {
565
+ const modelClassFullName = props?.modelClass ?? "BisCore.Model";
566
+ const elementClassFullName = props?.elementClass ?? "BisCore.Element";
567
+ const result = [
568
+ {
569
+ classFullName: elementClassFullName,
570
+ whereClause: "this.ECClassId IS NOT (BisCore.GroupInformationElement)",
571
+ selectProps: {
572
+ hasChildren: {
573
+ selector: `
574
+ IFNULL((
575
+ SELECT 1
576
+ FROM (
577
+ SELECT Parent.Id ParentId FROM ${elementClassFullName}
578
+ UNION ALL
579
+ SELECT sm.ModeledElement.Id ParentId FROM ${modelClassFullName} sm WHERE EXISTS (SELECT 1 FROM ${elementClassFullName} WHERE Model.Id = sm.ECInstanceId)
580
+ )
581
+ WHERE ParentId = this.ECInstanceId
582
+ LIMIT 1
583
+ ), 0)
584
+ `,
585
+ },
586
+ supportsFiltering: true,
587
+ },
588
+ },
589
+ ];
590
+ if (!props?.elementClass) {
591
+ result.push({
592
+ classFullName: "BisCore.GroupInformationElement",
593
+ whereClause: "",
594
+ selectProps: {
595
+ hasChildren: {
596
+ selector: `
597
+ IFNULL((
598
+ SELECT 1
599
+ FROM (
600
+ SELECT Parent.Id ParentId FROM BisCore.Element
601
+ UNION ALL
602
+ SELECT SourceECInstanceId ParentId FROM BisCore.ElementGroupsMembers
603
+ )
604
+ WHERE ParentId = this.ECInstanceId
605
+ LIMIT 1
606
+ ), 0)
607
+ `,
608
+ },
609
+ supportsFiltering: false,
610
+ },
611
+ });
612
+ }
613
+ return result;
614
+ }
615
+ //# sourceMappingURL=IModelContentTreeDefinition.js.map