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

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