@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
@@ -1 +1 @@
1
- {"version":3,"file":"IModelContentTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/imodel-content-tree/IModelContentTreeComponent.tsx"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAEhG,sCAAoC;AACpC,oDAA+D;AAC/D,oDAAiD;AACjD,qDAAkD;AAClD,2DAAwD;AAUxD;;;GAGG;AACI,MAAM,0BAA0B,GAAG,CAAC,KAAsC,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,IAAA,uCAAyB,GAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,uBAAC,qBAAS,cAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,uBAAC,qCAAiB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GAAa,CAAC;AACxI,CAAC,CAAC;AARW,QAAA,0BAA0B,8BAQrC;AAEF;;;GAGG;AACH,kCAA0B,CAAC,EAAE,GAAG,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,kCAA0B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,uBAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport \"../VisibilityTreeBase.scss\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { AutoSizer } from \"../../utils/AutoSizer\";\nimport { IModelContentTree } from \"./IModelContentTree\";\n\nimport type { IModelContentTreeProps } from \"./IModelContentTree\";\n\n/**\n * Props for [[IModelContentTreeComponent]].\n * @public\n */\nexport type IModelContentTreeComponentProps = Omit<IModelContentTreeProps, \"iModel\" | \"width\" | \"height\">;\n\n/**\n * A component that renders [[IModelContentTree]]\n * @public\n */\nexport const IModelContentTreeComponent = (props: IModelContentTreeComponentProps) => {\n const iModel = useActiveIModelConnection();\n\n if (!iModel) {\n return null;\n }\n\n return <AutoSizer>{({ width, height }) => <IModelContentTree {...props} iModel={iModel} width={width} height={height} />}</AutoSizer>;\n};\n\n/**\n * Id of the component. May be used when a creating a [[TreeDefinition]] for [[SelectableTree]].\n * @public\n */\nIModelContentTreeComponent.id = \"imodel-content-tree\";\n\n/**\n * Label of the component. May be used when a creating a [[TreeDefinition]] for [[SelectableTree]].\n * @public\n */\nIModelContentTreeComponent.getLabel = () => TreeWidget.translate(\"imodelContent\");\n"]}
1
+ {"version":3,"file":"IModelContentTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/imodel-content-tree/IModelContentTreeComponent.tsx"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAEhG,oDAA+D;AAC/D,0FAAiF;AACjF,oDAAiD;AACjD,qDAAkD;AAClD,2DAAwD;AAWxD;;;GAGG;AACI,MAAM,0BAA0B,GAAG,CAAC,KAAsC,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,IAAA,uCAAyB,GAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,uBAAC,yDAAwB,IAAC,OAAO,EAAE,KAAK,CAAC,gBAAgB,YACvD,uBAAC,qBAAS,cAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,uBAAC,qCAAiB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GAAa,GACrG,CAC5B,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,0BAA0B,8BAYrC;AAEF;;;GAGG;AACH,kCAA0B,CAAC,EAAE,GAAG,wBAAwB,CAAC;AAEzD;;;GAGG;AACH,kCAA0B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,uBAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { UnifiedSelectionProvider } from \"@itwin/presentation-hierarchies-react\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { AutoSizer } from \"../../utils/AutoSizer\";\nimport { IModelContentTree } from \"./IModelContentTree\";\n\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport type { SelectionStorage } from \"@itwin/presentation-hierarchies-react\";\n\ntype IModelContentTreeProps = ComponentPropsWithoutRef<typeof IModelContentTree>;\ninterface IModelContentTreeComponentProps\n extends Pick<IModelContentTreeProps, \"getSchemaContext\" | \"density\" | \"hierarchyLevelConfig\" | \"selectionMode\" | \"onPerformanceMeasured\" | \"onFeatureUsed\"> {\n selectionStorage: SelectionStorage;\n}\n\n/**\n * A component that renders `IModelContentTree`.\n * @beta\n */\nexport const IModelContentTreeComponent = (props: IModelContentTreeComponentProps) => {\n const imodel = useActiveIModelConnection();\n\n if (!imodel) {\n return null;\n }\n\n return (\n <UnifiedSelectionProvider storage={props.selectionStorage}>\n <AutoSizer>{({ width, height }) => <IModelContentTree {...props} imodel={imodel} width={width} height={height} />}</AutoSizer>\n </UnifiedSelectionProvider>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nIModelContentTreeComponent.id = \"imodel-content-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nIModelContentTreeComponent.getLabel = () => TreeWidget.translate(\"imodelContentTree.label\");\n"]}
@@ -0,0 +1,28 @@
1
+ import type { ECClassHierarchyInspector, ECSchemaProvider } from "@itwin/presentation-shared";
2
+ import type { DefineHierarchyLevelProps, HierarchyDefinition, HierarchyLevelDefinition, ProcessedHierarchyNode } from "@itwin/presentation-hierarchies";
3
+ import type { IModelContentTreeIdsCache } from "./internal/IModelContentTreeIdsCache";
4
+ interface IModelContentTreeDefinitionProps {
5
+ imodelAccess: ECSchemaProvider & ECClassHierarchyInspector;
6
+ idsCache: IModelContentTreeIdsCache;
7
+ }
8
+ export declare class IModelContentTreeDefinition implements HierarchyDefinition {
9
+ private _impl;
10
+ private _idsCache;
11
+ private _selectQueryFactory;
12
+ private _nodeLabelSelectClauseFactory;
13
+ constructor(props: IModelContentTreeDefinitionProps);
14
+ postProcessNode(node: ProcessedHierarchyNode): Promise<ProcessedHierarchyNode>;
15
+ defineHierarchyLevel(props: DefineHierarchyLevelProps): Promise<HierarchyLevelDefinition>;
16
+ private createRootHierarchyLevelDefinition;
17
+ private createSubjectChildrenQuery;
18
+ private createISubModeledElementChildrenQuery;
19
+ private createGeometricModelChildrenQuery;
20
+ private createCategoryChildrenQuery;
21
+ private createModelChildrenQuery;
22
+ private createGroupInformationElementChildElementsQuery;
23
+ private createChildrenNodeChildrenQuery;
24
+ private createGroupInformationElementMemberElementsQuery;
25
+ private createElementChildrenQuery;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=IModelContentTreeDefinition.d.ts.map
@@ -0,0 +1,619 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.IModelContentTreeDefinition = void 0;
8
+ const presentation_hierarchies_1 = require("@itwin/presentation-hierarchies");
9
+ const presentation_shared_1 = require("@itwin/presentation-shared");
10
+ const Utils_1 = require("../common/Utils");
11
+ class IModelContentTreeDefinition {
12
+ constructor(props) {
13
+ this._idsCache = props.idsCache;
14
+ this._impl = (0, presentation_hierarchies_1.createClassBasedHierarchyDefinition)({
15
+ classHierarchyInspector: props.imodelAccess,
16
+ hierarchy: {
17
+ rootNodes: async (requestProps) => this.createRootHierarchyLevelDefinition(requestProps),
18
+ childNodes: [
19
+ {
20
+ parentNodeClassName: "BisCore.Subject",
21
+ definitions: async (requestProps) => this.createSubjectChildrenQuery(requestProps),
22
+ },
23
+ {
24
+ parentNodeClassName: "BisCore.ISubModeledElement",
25
+ definitions: async (requestProps) => this.createISubModeledElementChildrenQuery(requestProps),
26
+ },
27
+ {
28
+ parentNodeClassName: "BisCore.GeometricModel3d",
29
+ definitions: async (requestProps) => this.createGeometricModelChildrenQuery({ ...requestProps, viewType: "3d" }),
30
+ },
31
+ {
32
+ parentNodeClassName: "BisCore.GeometricModel2d",
33
+ definitions: async (requestProps) => this.createGeometricModelChildrenQuery({ ...requestProps, viewType: "2d" }),
34
+ },
35
+ {
36
+ parentNodeClassName: "BisCore.SpatialCategory",
37
+ definitions: async (requestProps) => this.createCategoryChildrenQuery({ ...requestProps, viewType: "3d" }),
38
+ },
39
+ {
40
+ parentNodeClassName: "BisCore.DrawingCategory",
41
+ definitions: async (requestProps) => this.createCategoryChildrenQuery({ ...requestProps, viewType: "2d" }),
42
+ },
43
+ {
44
+ parentNodeClassName: "BisCore.Model",
45
+ onlyIfNotHandled: true,
46
+ definitions: async (requestProps) => this.createModelChildrenQuery(requestProps),
47
+ },
48
+ {
49
+ parentNodeClassName: "BisCore.GroupInformationElement",
50
+ definitions: async (requestProps) => this.createGroupInformationElementChildElementsQuery(requestProps),
51
+ },
52
+ {
53
+ customParentNodeKey: "ChildrenNode",
54
+ definitions: async (requestProps) => this.createChildrenNodeChildrenQuery(requestProps),
55
+ },
56
+ {
57
+ customParentNodeKey: "MembersNode",
58
+ definitions: async (requestProps) => this.createGroupInformationElementMemberElementsQuery(requestProps),
59
+ },
60
+ {
61
+ parentNodeClassName: "BisCore.Element",
62
+ onlyIfNotHandled: true,
63
+ definitions: async (requestProps) => this.createElementChildrenQuery(requestProps),
64
+ },
65
+ ],
66
+ },
67
+ });
68
+ this._selectQueryFactory = (0, presentation_hierarchies_1.createNodesQueryClauseFactory)({ imodelAccess: props.imodelAccess });
69
+ this._nodeLabelSelectClauseFactory = (0, presentation_shared_1.createBisInstanceLabelSelectClauseFactory)({ classHierarchyInspector: props.imodelAccess });
70
+ }
71
+ async postProcessNode(node) {
72
+ if (presentation_hierarchies_1.HierarchyNode.isClassGroupingNode(node)) {
73
+ const label = node.children.length ? `${node.label} (${node.children.length})` : node.label;
74
+ return { ...node, label, extendedData: { ...node.extendedData, imageId: "icon-ec-class" } };
75
+ }
76
+ return node;
77
+ }
78
+ async defineHierarchyLevel(props) {
79
+ return this._impl.defineHierarchyLevel(props);
80
+ }
81
+ async createRootHierarchyLevelDefinition(props) {
82
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
83
+ filter: props.instanceFilter,
84
+ contentClass: { fullName: "BisCore.Subject", alias: "this" },
85
+ });
86
+ return [
87
+ {
88
+ fullClassName: "BisCore.Subject",
89
+ query: {
90
+ ecsql: `
91
+ SELECT
92
+ ${await this._selectQueryFactory.createSelectClause({
93
+ ecClassId: { selector: presentation_shared_1.ECSql.createRawPropertyValueSelector("this", "ECClassId") },
94
+ ecInstanceId: { selector: "this.ECInstanceId" },
95
+ nodeLabel: {
96
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
97
+ classAlias: "this",
98
+ className: "BisCore.Subject",
99
+ }),
100
+ },
101
+ extendedData: {
102
+ imageId: "icon-imodel-hollow-2",
103
+ },
104
+ autoExpand: true,
105
+ supportsFiltering: true,
106
+ })}
107
+ FROM ${instanceFilterClauses.from} this
108
+ ${instanceFilterClauses.joins}
109
+ WHERE
110
+ this.Parent IS NULL
111
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
112
+ `,
113
+ },
114
+ },
115
+ ];
116
+ }
117
+ async createSubjectChildrenQuery({ parentNodeInstanceIds: subjectIds, instanceFilter, }) {
118
+ const [subjectFilterClauses, modelFilterClauses] = await Promise.all([
119
+ this._selectQueryFactory.createFilterClauses({
120
+ filter: instanceFilter,
121
+ contentClass: { fullName: "BisCore.Subject", alias: "this" },
122
+ }),
123
+ this._selectQueryFactory.createFilterClauses({
124
+ filter: instanceFilter,
125
+ contentClass: { fullName: "BisCore.Model", alias: "this" },
126
+ }),
127
+ ]);
128
+ const [childSubjectIds, childModelIds] = await Promise.all([
129
+ this._idsCache.getChildSubjectIds(subjectIds),
130
+ this._idsCache.getChildSubjectModelIds(subjectIds),
131
+ ]);
132
+ const defs = new Array();
133
+ childSubjectIds.length &&
134
+ defs.push({
135
+ fullClassName: "BisCore.Subject",
136
+ query: {
137
+ ecsql: `
138
+ SELECT
139
+ ${await this._selectQueryFactory.createSelectClause({
140
+ ecClassId: { selector: "this.ECClassId" },
141
+ ecInstanceId: { selector: "this.ECInstanceId" },
142
+ nodeLabel: {
143
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
144
+ classAlias: "this",
145
+ className: "BisCore.Subject",
146
+ }),
147
+ },
148
+ hasChildren: { selector: `InVirtualSet(?, this.ECInstanceId)` },
149
+ grouping: { byLabel: { action: "merge", groupId: "subject" } },
150
+ extendedData: {
151
+ imageId: "icon-folder",
152
+ },
153
+ supportsFiltering: true,
154
+ })}
155
+ FROM ${subjectFilterClauses.from} this
156
+ ${subjectFilterClauses.joins}
157
+ WHERE
158
+ this.ECInstanceId IN (${childSubjectIds.map(() => "?").join(",")})
159
+ ${subjectFilterClauses.where ? `AND ${subjectFilterClauses.where}` : ""}
160
+ `,
161
+ bindings: [
162
+ { type: "idset", value: await this._idsCache.getParentSubjectIds() },
163
+ ...childSubjectIds.map((id) => ({ type: "id", value: id })),
164
+ ],
165
+ },
166
+ });
167
+ childModelIds.length &&
168
+ defs.push({
169
+ fullClassName: "BisCore.Model",
170
+ query: {
171
+ ecsql: `
172
+ SELECT model.ECInstanceId AS ECInstanceId, model.*
173
+ FROM (
174
+ SELECT
175
+ ${await this._selectQueryFactory.createSelectClause({
176
+ ecClassId: { selector: "m.ECClassId" },
177
+ ecInstanceId: { selector: "m.ECInstanceId" },
178
+ nodeLabel: {
179
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
180
+ classAlias: "partition",
181
+ className: "BisCore.InformationPartitionElement",
182
+ }),
183
+ },
184
+ hideNodeInHierarchy: {
185
+ selector: `
186
+ CASE
187
+ WHEN (
188
+ json_extract([partition].JsonProperties, '$.PhysicalPartition.Model.Content') IS NOT NULL
189
+ OR json_extract([partition].JsonProperties, '$.GraphicalPartition3d.Model.Content') IS NOT NULL
190
+ ) THEN 1
191
+ ELSE 0
192
+ END
193
+ `,
194
+ },
195
+ extendedData: {
196
+ imageId: "icon-model",
197
+ },
198
+ supportsFiltering: true,
199
+ })}
200
+ FROM BisCore.Model m
201
+ JOIN BisCore.InformationPartitionElement [partition] ON [partition].ECInstanceId = m.ModeledElement.Id
202
+ WHERE
203
+ m.ECInstanceId IN (${childModelIds.map(() => "?").join(",")})
204
+ ) model
205
+ JOIN ${modelFilterClauses.from} this ON this.ECInstanceId = model.ECInstanceId
206
+ ${modelFilterClauses.joins}
207
+ ${modelFilterClauses.where ? `WHERE (model.${presentation_hierarchies_1.NodeSelectClauseColumnNames.HideNodeInHierarchy} OR ${modelFilterClauses.where})` : ""}
208
+ `,
209
+ bindings: childModelIds.map((id) => ({ type: "id", value: id })),
210
+ },
211
+ });
212
+ return defs;
213
+ }
214
+ async createISubModeledElementChildrenQuery({ parentNodeInstanceIds: elementIds, }) {
215
+ // note: we do not apply hierarchy level filtering on this hierarchy level, because it's always
216
+ // hidden - the filter will get applied on the child hierarchy levels
217
+ return [
218
+ {
219
+ fullClassName: "BisCore.Model",
220
+ query: {
221
+ ecsql: `
222
+ SELECT
223
+ ${await this._selectQueryFactory.createSelectClause({
224
+ ecClassId: { selector: "this.ECClassId" },
225
+ ecInstanceId: { selector: "this.ECInstanceId" },
226
+ nodeLabel: "",
227
+ hideNodeInHierarchy: true,
228
+ })}
229
+ FROM BisCore.Model this
230
+ WHERE
231
+ this.ModeledElement.Id IN (${elementIds.map(() => "?").join(",")})
232
+ AND NOT this.IsPrivate
233
+ `,
234
+ bindings: [...elementIds.map((id) => ({ type: "id", value: id }))],
235
+ },
236
+ },
237
+ ];
238
+ }
239
+ async createGeometricModelChildrenQuery({ parentNodeInstanceIds: modelIds, instanceFilter, viewType, }) {
240
+ const childCategoryIds = await this._idsCache.getModelCategories(modelIds);
241
+ const { categoryClass } = getClassNameByViewType(viewType);
242
+ const categoryFilterClauses = await this._selectQueryFactory.createFilterClauses({
243
+ filter: instanceFilter,
244
+ contentClass: { fullName: categoryClass, alias: "this" },
245
+ });
246
+ const informationContentElementFilterClauses = await this._selectQueryFactory.createFilterClauses({
247
+ filter: instanceFilter,
248
+ contentClass: { fullName: "BisCore.InformationContentElement", alias: "this" },
249
+ });
250
+ const defs = new Array();
251
+ childCategoryIds.length &&
252
+ defs.push({
253
+ fullClassName: categoryClass,
254
+ query: {
255
+ ecsql: `
256
+ SELECT
257
+ ${await this._selectQueryFactory.createSelectClause({
258
+ ecClassId: { selector: "this.ECClassId" },
259
+ ecInstanceId: { selector: "this.ECInstanceId" },
260
+ nodeLabel: {
261
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
262
+ classAlias: "this",
263
+ className: categoryClass,
264
+ }),
265
+ },
266
+ grouping: { byLabel: { action: "merge", groupId: "category" } },
267
+ extendedData: {
268
+ imageId: "icon-layers",
269
+ modelIds: { selector: (0, Utils_1.createIdsSelector)(modelIds) },
270
+ },
271
+ hasChildren: true,
272
+ supportsFiltering: true,
273
+ })}
274
+ FROM ${categoryFilterClauses.from} this
275
+ ${categoryFilterClauses.joins}
276
+ WHERE
277
+ this.ECInstanceId IN (${childCategoryIds.map(() => "?").join(",")})
278
+ ${categoryFilterClauses.where ? `AND ${categoryFilterClauses.where}` : ""}
279
+ `,
280
+ bindings: childCategoryIds.map((id) => ({ type: "id", value: id })),
281
+ },
282
+ });
283
+ defs.push({
284
+ fullClassName: "BisCore.InformationContentElement",
285
+ query: {
286
+ ecsql: `
287
+ SELECT
288
+ ${await this._selectQueryFactory.createSelectClause({
289
+ ecClassId: { selector: "this.ECClassId" },
290
+ ecInstanceId: { selector: "this.ECInstanceId" },
291
+ nodeLabel: {
292
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
293
+ classAlias: "this",
294
+ className: "BisCore.InformationContentElement",
295
+ }),
296
+ },
297
+ hasChildren: true,
298
+ grouping: {
299
+ byClass: true,
300
+ },
301
+ supportsFiltering: true,
302
+ })}
303
+ FROM ${informationContentElementFilterClauses.from} this
304
+ ${informationContentElementFilterClauses.joins}
305
+ WHERE
306
+ this.Model.Id IN (${modelIds.map(() => "?").join(",")})
307
+ ${informationContentElementFilterClauses.where ? `AND ${informationContentElementFilterClauses.where}` : ""}
308
+ `,
309
+ bindings: modelIds.map((id) => ({ type: "id", value: id })),
310
+ },
311
+ });
312
+ return defs;
313
+ }
314
+ async createCategoryChildrenQuery(props) {
315
+ const { parentNodeInstanceIds: categoryIds, parentNode, instanceFilter, viewType } = props;
316
+ const modelIds = (0, Utils_1.parseIdsSelectorResult)(parentNode.extendedData?.modelIds);
317
+ // We only want to handle a category added as a child of `GeometricModel2d` or `GeometricModel3d`.
318
+ // ModelIds is not empty only if parent node is a geometric model.
319
+ if (modelIds.length === 0) {
320
+ return this.createElementChildrenQuery(props);
321
+ }
322
+ const { elementClass, modelClass } = getClassNameByViewType(viewType);
323
+ return Promise.all(getElementsSelectProps({ modelClass, elementClass }).map(async ({ selectProps, whereClause }) => {
324
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
325
+ filter: instanceFilter,
326
+ contentClass: { fullName: elementClass, alias: "this" },
327
+ });
328
+ return {
329
+ fullClassName: elementClass,
330
+ query: {
331
+ ecsql: `
332
+ SELECT
333
+ ${await this._selectQueryFactory.createSelectClause({
334
+ ecClassId: { selector: "this.ECClassId" },
335
+ ecInstanceId: { selector: "this.ECInstanceId" },
336
+ nodeLabel: {
337
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
338
+ classAlias: "this",
339
+ className: elementClass,
340
+ }),
341
+ },
342
+ grouping: {
343
+ byClass: true,
344
+ },
345
+ extendedData: {
346
+ imageId: "icon-item",
347
+ },
348
+ hasChildren: selectProps.hasChildren,
349
+ supportsFiltering: selectProps.supportsFiltering,
350
+ })}
351
+ FROM ${instanceFilterClauses.from} this
352
+ ${instanceFilterClauses.joins}
353
+ WHERE
354
+ this.Category.Id IN (${categoryIds.map(() => "?").join(",")})
355
+ AND this.Model.Id IN (${modelIds.map(() => "?").join(",")})
356
+ AND this.Parent IS NULL
357
+ ${whereClause ? `AND ${whereClause}` : ""}
358
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
359
+ `,
360
+ bindings: [...categoryIds.map((id) => ({ type: "id", value: id })), ...modelIds.map((id) => ({ type: "id", value: id }))],
361
+ },
362
+ };
363
+ }));
364
+ }
365
+ async createModelChildrenQuery({ parentNodeInstanceIds: modelIds, instanceFilter, }) {
366
+ return Promise.all(getElementsSelectProps().map(async ({ classFullName, whereClause, selectProps }) => {
367
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
368
+ filter: instanceFilter,
369
+ contentClass: { fullName: classFullName, alias: "this" },
370
+ });
371
+ return {
372
+ fullClassName: classFullName,
373
+ query: {
374
+ ecsql: `
375
+ SELECT
376
+ ${await this._selectQueryFactory.createSelectClause({
377
+ ecClassId: { selector: "this.ECClassId" },
378
+ ecInstanceId: { selector: "this.ECInstanceId" },
379
+ nodeLabel: {
380
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
381
+ classAlias: "this",
382
+ className: classFullName,
383
+ }),
384
+ },
385
+ grouping: {
386
+ byClass: true,
387
+ },
388
+ extendedData: {
389
+ imageId: "icon-item",
390
+ },
391
+ hasChildren: selectProps?.hasChildren,
392
+ supportsFiltering: selectProps?.supportsFiltering,
393
+ })}
394
+ FROM ${instanceFilterClauses.from} this
395
+ ${instanceFilterClauses.joins}
396
+ WHERE
397
+ this.Parent IS NULL
398
+ AND this.Model.Id IN (${modelIds.map(() => "?").join(",")})
399
+ ${whereClause ? `AND ${whereClause}` : ""}
400
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
401
+ `,
402
+ bindings: modelIds.map((id) => ({ type: "id", value: id })),
403
+ },
404
+ };
405
+ }));
406
+ }
407
+ async createGroupInformationElementChildElementsQuery({ parentNodeInstanceIds: groupIds, }) {
408
+ return [
409
+ {
410
+ node: {
411
+ key: "ChildrenNode",
412
+ label: "Children",
413
+ extendedData: {
414
+ groupIds,
415
+ imageId: "icon-hierarchy-tree",
416
+ },
417
+ supportsFiltering: true,
418
+ processingParams: {
419
+ hideIfNoChildren: true,
420
+ },
421
+ },
422
+ },
423
+ {
424
+ node: {
425
+ key: "MembersNode",
426
+ label: "Members",
427
+ extendedData: {
428
+ groupIds,
429
+ imageId: "icon-group",
430
+ },
431
+ supportsFiltering: true,
432
+ processingParams: {
433
+ hideIfNoChildren: true,
434
+ },
435
+ },
436
+ },
437
+ ];
438
+ }
439
+ async createChildrenNodeChildrenQuery({ parentNode, instanceFilter }) {
440
+ const groupIds = parentNode.extendedData?.groupIds;
441
+ return Promise.all(getElementsSelectProps().map(async ({ classFullName, whereClause, selectProps }) => {
442
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
443
+ filter: instanceFilter,
444
+ contentClass: { fullName: classFullName, alias: "this" },
445
+ });
446
+ return {
447
+ fullClassName: classFullName,
448
+ query: {
449
+ ecsql: `
450
+ SELECT
451
+ ${await this._selectQueryFactory.createSelectClause({
452
+ ecClassId: { selector: "this.ECClassId" },
453
+ ecInstanceId: { selector: "this.ECInstanceId" },
454
+ nodeLabel: {
455
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
456
+ classAlias: "this",
457
+ className: classFullName,
458
+ }),
459
+ },
460
+ extendedData: {
461
+ imageId: "icon-item",
462
+ },
463
+ grouping: { byClass: true },
464
+ hasChildren: selectProps.hasChildren,
465
+ supportsFiltering: selectProps.supportsFiltering,
466
+ })}
467
+ FROM ${instanceFilterClauses.from} this
468
+ ${instanceFilterClauses.joins}
469
+ WHERE
470
+ this.Parent.Id IN (${groupIds.map(() => "?").join(",")})
471
+ ${whereClause ? `AND ${whereClause}` : ""}
472
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
473
+ `,
474
+ bindings: groupIds.map((id) => ({ type: "id", value: id })),
475
+ },
476
+ };
477
+ }));
478
+ }
479
+ async createGroupInformationElementMemberElementsQuery({ parentNode, instanceFilter, }) {
480
+ const groupIds = parentNode.extendedData?.groupIds;
481
+ return Promise.all(getElementsSelectProps().map(async ({ classFullName, whereClause, selectProps }) => {
482
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
483
+ filter: instanceFilter,
484
+ contentClass: { fullName: classFullName, alias: "this" },
485
+ });
486
+ return {
487
+ fullClassName: classFullName,
488
+ query: {
489
+ ecsql: `
490
+ SELECT
491
+ ${await this._selectQueryFactory.createSelectClause({
492
+ ecClassId: { selector: "this.ECClassId" },
493
+ ecInstanceId: { selector: "this.ECInstanceId" },
494
+ nodeLabel: {
495
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
496
+ classAlias: "this",
497
+ className: classFullName,
498
+ }),
499
+ },
500
+ grouping: { byClass: true },
501
+ extendedData: {
502
+ imageId: "icon-item",
503
+ },
504
+ hasChildren: selectProps.hasChildren,
505
+ supportsFiltering: selectProps.supportsFiltering,
506
+ })}
507
+ FROM ${instanceFilterClauses.from} this
508
+ JOIN BisCore.ElementGroupsMembers egm ON egm.TargetECInstanceId = this.ECInstanceId
509
+ ${instanceFilterClauses.joins}
510
+ WHERE
511
+ egm.SourceECInstanceId IN (${groupIds.map(() => "?").join(",")})
512
+ ${whereClause ? `AND ${whereClause}` : ""}
513
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
514
+ `,
515
+ bindings: groupIds.map((id) => ({ type: "id", value: id })),
516
+ },
517
+ };
518
+ }));
519
+ }
520
+ async createElementChildrenQuery({ parentNodeInstanceIds: elementIds, instanceFilter, }) {
521
+ return Promise.all(getElementsSelectProps().map(async ({ classFullName, whereClause, selectProps }) => {
522
+ const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
523
+ filter: instanceFilter,
524
+ contentClass: { fullName: classFullName, alias: "this" },
525
+ });
526
+ return {
527
+ fullClassName: classFullName,
528
+ query: {
529
+ ecsql: `
530
+ SELECT
531
+ ${await this._selectQueryFactory.createSelectClause({
532
+ ecClassId: { selector: "this.ECClassId" },
533
+ ecInstanceId: { selector: "this.ECInstanceId" },
534
+ nodeLabel: {
535
+ selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
536
+ classAlias: "this",
537
+ className: classFullName,
538
+ }),
539
+ },
540
+ grouping: { byClass: true },
541
+ extendedData: {
542
+ imageId: "icon-item",
543
+ },
544
+ hasChildren: selectProps.hasChildren,
545
+ supportsFiltering: selectProps.supportsFiltering,
546
+ })}
547
+ FROM ${instanceFilterClauses.from} this
548
+ JOIN BisCore.Element p ON p.ECInstanceId = this.Parent.Id
549
+ ${instanceFilterClauses.joins}
550
+ WHERE
551
+ p.ECInstanceId IN (${elementIds.map(() => "?").join(",")})
552
+ ${whereClause ? `AND ${whereClause}` : ""}
553
+ ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
554
+ `,
555
+ bindings: elementIds.map((id) => ({ type: "id", value: id })),
556
+ },
557
+ };
558
+ }));
559
+ }
560
+ }
561
+ exports.IModelContentTreeDefinition = IModelContentTreeDefinition;
562
+ function getClassNameByViewType(view) {
563
+ if (view === "2d") {
564
+ return { categoryClass: "BisCore.DrawingCategory", elementClass: "BisCore.GeometricElement2d", modelClass: "BisCore.GeometricModel2d" };
565
+ }
566
+ return { categoryClass: "BisCore.SpatialCategory", elementClass: "BisCore.GeometricElement3d", modelClass: "BisCore.GeometricModel3d" };
567
+ }
568
+ function getElementsSelectProps(props) {
569
+ const modelClassFullName = props?.modelClass ?? "BisCore.Model";
570
+ const elementClassFullName = props?.elementClass ?? "BisCore.Element";
571
+ const result = [
572
+ {
573
+ classFullName: elementClassFullName,
574
+ whereClause: "this.ECClassId IS NOT (BisCore.GroupInformationElement)",
575
+ selectProps: {
576
+ hasChildren: {
577
+ selector: `
578
+ IFNULL((
579
+ SELECT 1
580
+ FROM (
581
+ SELECT Parent.Id ParentId FROM ${elementClassFullName}
582
+ UNION ALL
583
+ SELECT sm.ModeledElement.Id ParentId FROM ${modelClassFullName} sm WHERE EXISTS (SELECT 1 FROM ${elementClassFullName} WHERE Model.Id = sm.ECInstanceId)
584
+ )
585
+ WHERE ParentId = this.ECInstanceId
586
+ LIMIT 1
587
+ ), 0)
588
+ `,
589
+ },
590
+ supportsFiltering: true,
591
+ },
592
+ },
593
+ ];
594
+ if (!props?.elementClass) {
595
+ result.push({
596
+ classFullName: "BisCore.GroupInformationElement",
597
+ whereClause: "",
598
+ selectProps: {
599
+ hasChildren: {
600
+ selector: `
601
+ IFNULL((
602
+ SELECT 1
603
+ FROM (
604
+ SELECT Parent.Id ParentId FROM BisCore.Element
605
+ UNION ALL
606
+ SELECT SourceECInstanceId ParentId FROM BisCore.ElementGroupsMembers
607
+ )
608
+ WHERE ParentId = this.ECInstanceId
609
+ LIMIT 1
610
+ ), 0)
611
+ `,
612
+ },
613
+ supportsFiltering: false,
614
+ },
615
+ });
616
+ }
617
+ return result;
618
+ }
619
+ //# sourceMappingURL=IModelContentTreeDefinition.js.map