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