@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,466 @@
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 { BeEvent } from "@itwin/core-bentley";
6
+ import { QueryRowFormat } from "@itwin/core-common";
7
+ import { PerModelCategoryVisibility } from "@itwin/core-frontend";
8
+ import { KeySet } from "@itwin/presentation-common";
9
+ import { Presentation } from "@itwin/presentation-frontend";
10
+ import { HierarchyNode } from "@itwin/presentation-hierarchies";
11
+ import { TreeWidget } from "../../../../TreeWidget";
12
+ import { CachingElementIdsContainer } from "../../models-tree/Utils";
13
+ /** @internal */
14
+ export class StatelessModelsVisibilityHandler {
15
+ constructor(props) {
16
+ this._listeners = new Array();
17
+ this.onVisibilityChange = new BeEvent();
18
+ this._viewport = props.viewport;
19
+ this._subjectModelIdsCache = new SubjectModelIdsCache(props.viewport.iModel);
20
+ this._elementIdsCache = new ElementIdsCache(props.viewport.iModel);
21
+ this._listeners.push(this._viewport.onViewedCategoriesPerModelChanged.addListener(() => this.onVisibilityChangeInternal()));
22
+ this._listeners.push(this._viewport.onViewedCategoriesChanged.addListener(() => this.onVisibilityChangeInternal()));
23
+ this._listeners.push(this._viewport.onViewedModelsChanged.addListener(() => this.onVisibilityChangeInternal()));
24
+ this._listeners.push(this._viewport.onAlwaysDrawnChanged.addListener(() => this.onVisibilityChangeInternal()));
25
+ this._listeners.push(this._viewport.onNeverDrawnChanged.addListener(() => this.onVisibilityChangeInternal()));
26
+ }
27
+ dispose() {
28
+ this._listeners.forEach((remove) => remove());
29
+ clearTimeout(this._pendingVisibilityChange);
30
+ }
31
+ /** Returns visibility status of the tree node. */
32
+ getVisibilityStatus(node) {
33
+ if (HierarchyNode.isClassGroupingNode(node)) {
34
+ return this.getElementGroupingNodeDisplayStatus(node);
35
+ }
36
+ if (!HierarchyNode.isInstancesNode(node)) {
37
+ return { state: "hidden", isDisabled: true };
38
+ }
39
+ if (isSubjectNode(node)) {
40
+ // note: subject nodes may be merged to represent multiple subject instances
41
+ return this.getSubjectNodeVisibility(node.key.instanceKeys.map((key) => key.id));
42
+ }
43
+ if (isModelNode(node)) {
44
+ return this.getModelDisplayStatus(node.key.instanceKeys[0].id);
45
+ }
46
+ if (isCategoryNode(node)) {
47
+ return this.getCategoryDisplayStatus(node.key.instanceKeys[0].id, this.getCategoryParentModelId(node));
48
+ }
49
+ return this.getElementDisplayStatus(node.key.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node));
50
+ }
51
+ /** Changes visibility of the items represented by the tree node. */
52
+ async changeVisibility(node, on) {
53
+ if (HierarchyNode.isClassGroupingNode(node)) {
54
+ await this.changeElementGroupingNodeState(node, on);
55
+ return;
56
+ }
57
+ if (!HierarchyNode.isInstancesNode(node)) {
58
+ return;
59
+ }
60
+ if (isSubjectNode(node)) {
61
+ await this.changeSubjectNodeState(node.key.instanceKeys.map((key) => key.id), on);
62
+ }
63
+ else if (isModelNode(node)) {
64
+ await this.changeModelState(node.key.instanceKeys[0].id, on);
65
+ }
66
+ else if (isCategoryNode(node)) {
67
+ this.changeCategoryState(node.key.instanceKeys[0].id, this.getCategoryParentModelId(node), on);
68
+ }
69
+ else {
70
+ await this.changeElementState(node.key.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node), on, node.children);
71
+ }
72
+ }
73
+ async getSubjectNodeVisibility(ids) {
74
+ if (!this._viewport.view.isSpatialView()) {
75
+ return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "subject.nonSpatialView") };
76
+ }
77
+ return this.getSubjectDisplayStatus(ids);
78
+ }
79
+ async getSubjectDisplayStatus(ids) {
80
+ const modelIds = await this.getSubjectModelIds(ids);
81
+ const isDisplayed = modelIds.some((modelId) => this.getModelDisplayStatus(modelId).state === "visible");
82
+ if (isDisplayed) {
83
+ return { state: "visible", tooltip: createTooltip("visible", "subject.atLeastOneModelVisible") };
84
+ }
85
+ return { state: "hidden", tooltip: createTooltip("hidden", "subject.allModelsHidden") };
86
+ }
87
+ getModelDisplayStatus(id) {
88
+ if (!this._viewport.view.isSpatialView()) {
89
+ return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "model.nonSpatialView") };
90
+ }
91
+ const isDisplayed = this._viewport.view.viewsModel(id);
92
+ return { state: isDisplayed ? "visible" : "hidden", tooltip: createTooltip(isDisplayed ? "visible" : "hidden", undefined) };
93
+ }
94
+ getCategoryDisplayStatus(id, parentModelId) {
95
+ if (parentModelId) {
96
+ if (this.getModelDisplayStatus(parentModelId).state === "hidden") {
97
+ return { state: "hidden", isDisabled: true, tooltip: createTooltip("disabled", "category.modelNotDisplayed") };
98
+ }
99
+ const override = this._viewport.perModelCategoryVisibility.getOverride(parentModelId, id);
100
+ switch (override) {
101
+ case PerModelCategoryVisibility.Override.Show:
102
+ return { state: "visible", tooltip: createTooltip("visible", "category.displayedThroughPerModelOverride") };
103
+ case PerModelCategoryVisibility.Override.Hide:
104
+ return { state: "hidden", tooltip: createTooltip("hidden", "category.hiddenThroughPerModelOverride") };
105
+ }
106
+ }
107
+ const isDisplayed = this._viewport.view.viewsCategory(id);
108
+ return {
109
+ state: isDisplayed ? "visible" : "hidden",
110
+ tooltip: isDisplayed
111
+ ? createTooltip("visible", "category.displayedThroughCategorySelector")
112
+ : createTooltip("hidden", "category.hiddenThroughCategorySelector"),
113
+ };
114
+ }
115
+ async getElementGroupingNodeDisplayStatus(node) {
116
+ const { modelId, categoryId, elementIds } = this.getGroupedElementIds(node);
117
+ if (!modelId || !this._viewport.view.viewsModel(modelId)) {
118
+ return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "element.modelNotDisplayed") };
119
+ }
120
+ if (this._viewport.alwaysDrawn !== undefined && this._viewport.alwaysDrawn.size > 0) {
121
+ let atLeastOneElementForceDisplayed = false;
122
+ for await (const elementId of elementIds()) {
123
+ if (this._viewport.alwaysDrawn.has(elementId)) {
124
+ atLeastOneElementForceDisplayed = true;
125
+ break;
126
+ }
127
+ }
128
+ if (atLeastOneElementForceDisplayed) {
129
+ return { state: "visible", tooltip: createTooltip("visible", "element.displayedThroughAlwaysDrawnList") };
130
+ }
131
+ }
132
+ if (this._viewport.alwaysDrawn !== undefined && this._viewport.alwaysDrawn.size !== 0 && this._viewport.isAlwaysDrawnExclusive) {
133
+ return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn") };
134
+ }
135
+ // istanbul ignore else
136
+ if (this._viewport.neverDrawn !== undefined && this._viewport.neverDrawn.size > 0) {
137
+ let allElementsForceHidden = true;
138
+ for await (const elementId of elementIds()) {
139
+ if (!this._viewport.neverDrawn.has(elementId)) {
140
+ allElementsForceHidden = false;
141
+ break;
142
+ }
143
+ }
144
+ if (allElementsForceHidden) {
145
+ return { state: "hidden", tooltip: createTooltip("visible", "element.hiddenThroughNeverDrawnList") };
146
+ }
147
+ }
148
+ if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible") {
149
+ return { state: "visible", tooltip: createTooltip("visible", undefined) };
150
+ }
151
+ return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughCategory") };
152
+ }
153
+ getElementDisplayStatus(elementId, modelId, categoryId) {
154
+ if (!modelId || !this._viewport.view.viewsModel(modelId)) {
155
+ return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "element.modelNotDisplayed") };
156
+ }
157
+ if (this._viewport.neverDrawn !== undefined && this._viewport.neverDrawn.has(elementId)) {
158
+ return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughNeverDrawnList") };
159
+ }
160
+ if (this._viewport.alwaysDrawn !== undefined) {
161
+ if (this._viewport.alwaysDrawn.has(elementId)) {
162
+ return { state: "visible", tooltip: createTooltip("visible", "element.displayedThroughAlwaysDrawnList") };
163
+ }
164
+ if (this._viewport.alwaysDrawn.size !== 0 && this._viewport.isAlwaysDrawnExclusive) {
165
+ return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn") };
166
+ }
167
+ }
168
+ if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible") {
169
+ return { state: "visible", tooltip: createTooltip("visible", undefined) };
170
+ }
171
+ return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughCategory") };
172
+ }
173
+ async changeSubjectNodeState(ids, on) {
174
+ if (!this._viewport.view.isSpatialView()) {
175
+ return;
176
+ }
177
+ return this.changeSubjectState(ids, on);
178
+ }
179
+ async changeSubjectState(ids, on) {
180
+ const modelIds = await this.getSubjectModelIds(ids);
181
+ return this.changeModelsVisibility(modelIds, on);
182
+ }
183
+ async changeModelState(id, on) {
184
+ if (!this._viewport.view.isSpatialView()) {
185
+ return;
186
+ }
187
+ return this.changeModelsVisibility([id], on);
188
+ }
189
+ async changeModelsVisibility(ids, visible) {
190
+ if (visible) {
191
+ return this._viewport.addViewedModels(ids);
192
+ }
193
+ else {
194
+ this._viewport.changeModelDisplay(ids, false);
195
+ }
196
+ }
197
+ changeCategoryState(categoryId, parentModelId, on) {
198
+ if (parentModelId) {
199
+ const isDisplayedInSelector = this._viewport.view.viewsCategory(categoryId);
200
+ const ovr = on === isDisplayedInSelector
201
+ ? PerModelCategoryVisibility.Override.None
202
+ : on
203
+ ? PerModelCategoryVisibility.Override.Show
204
+ : PerModelCategoryVisibility.Override.Hide;
205
+ this._viewport.perModelCategoryVisibility.setOverride(parentModelId, categoryId, ovr);
206
+ if (ovr === PerModelCategoryVisibility.Override.None && on) {
207
+ // we took off the override which means the category is displayed in selector, but
208
+ // doesn't mean all its subcategories are displayed - this call ensures that
209
+ this._viewport.changeCategoryDisplay([categoryId], true, true);
210
+ }
211
+ return;
212
+ }
213
+ this._viewport.changeCategoryDisplay([categoryId], on, on ? true : false);
214
+ }
215
+ async changeElementGroupingNodeState(node, on) {
216
+ const { modelId, categoryId, elementIds } = this.getGroupedElementIds(node);
217
+ await this.changeElementsState(modelId, categoryId, elementIds(), on);
218
+ }
219
+ async changeElementState(id, modelId, categoryId, on, hasChildren) {
220
+ const isDisplayedByDefault = this.isElementDisplayedByDefault(modelId, categoryId);
221
+ const isHiddenDueToExclusiveAlwaysDrawnElements = this.hasExclusiveAlwaysDrawnElements();
222
+ this.changeElementStateInternal(id, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);
223
+ if (!hasChildren) {
224
+ return;
225
+ }
226
+ const childElements = this.getAssemblyElementIds(id);
227
+ for await (const elementId of childElements.getElementIds()) {
228
+ this.changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);
229
+ }
230
+ }
231
+ async changeElementsState(modelId, categoryId, elementIds, on) {
232
+ const isDisplayedByDefault = this.isElementDisplayedByDefault(modelId, categoryId);
233
+ const isHiddenDueToExclusiveAlwaysDrawnElements = this.hasExclusiveAlwaysDrawnElements();
234
+ for await (const elementId of elementIds) {
235
+ this.changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);
236
+ }
237
+ }
238
+ changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements) {
239
+ let changedNeverDraw = false;
240
+ let changedAlwaysDrawn = false;
241
+ const currNeverDrawn = new Set(this._viewport.neverDrawn ? this._viewport.neverDrawn : []);
242
+ const currAlwaysDrawn = new Set(this._viewport.alwaysDrawn ? this._viewport.alwaysDrawn : /* istanbul ignore next */ []);
243
+ if (on) {
244
+ changedNeverDraw = changedNeverDraw || currNeverDrawn.delete(elementId);
245
+ if ((!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements) && !currAlwaysDrawn.has(elementId)) {
246
+ currAlwaysDrawn.add(elementId);
247
+ changedAlwaysDrawn = true;
248
+ }
249
+ }
250
+ else {
251
+ changedAlwaysDrawn = changedAlwaysDrawn || currAlwaysDrawn.delete(elementId);
252
+ if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements && !currNeverDrawn.has(elementId)) {
253
+ currNeverDrawn.add(elementId);
254
+ changedNeverDraw = true;
255
+ }
256
+ }
257
+ changedNeverDraw && this._viewport.setNeverDrawn(currNeverDrawn);
258
+ changedAlwaysDrawn && this._viewport.setAlwaysDrawn(currAlwaysDrawn, this._viewport.isAlwaysDrawnExclusive);
259
+ }
260
+ isElementDisplayedByDefault(modelId, categoryId) {
261
+ return (!!modelId &&
262
+ this.getModelDisplayStatus(modelId).state === "visible" &&
263
+ !!categoryId &&
264
+ this.getCategoryDisplayStatus(categoryId, modelId).state === "visible");
265
+ }
266
+ hasExclusiveAlwaysDrawnElements() {
267
+ return this._viewport.isAlwaysDrawnExclusive && 0 !== this._viewport.alwaysDrawn?.size;
268
+ }
269
+ onVisibilityChangeInternal() {
270
+ if (this._pendingVisibilityChange) {
271
+ return;
272
+ }
273
+ this._pendingVisibilityChange = setTimeout(() => {
274
+ this.onVisibilityChange.raiseEvent();
275
+ this._pendingVisibilityChange = undefined;
276
+ }, 0);
277
+ }
278
+ getCategoryParentModelId(categoryNode) {
279
+ return categoryNode.extendedData && categoryNode.extendedData.modelIds[0] ? categoryNode.extendedData.modelIds[0][0] : /* istanbul ignore next */ undefined;
280
+ }
281
+ getElementModelId(elementNode) {
282
+ return elementNode.extendedData ? elementNode.extendedData.modelId : /* istanbul ignore next */ undefined;
283
+ }
284
+ getElementCategoryId(elementNode) {
285
+ return elementNode.extendedData ? elementNode.extendedData.categoryId : /* istanbul ignore next */ undefined;
286
+ }
287
+ async getSubjectModelIds(subjectIds) {
288
+ return (await Promise.all(subjectIds.map(async (id) => this._subjectModelIdsCache.getSubjectModelIds(id)))).reduce((allModelIds, curr) => [...allModelIds, ...curr], []);
289
+ }
290
+ getAssemblyElementIds(assemblyId) {
291
+ return this._elementIdsCache.getAssemblyElementIds(assemblyId);
292
+ }
293
+ // istanbul ignore next
294
+ getGroupedElementIds(node) {
295
+ const modelId = this.getElementModelId(node);
296
+ const categoryId = this.getElementCategoryId(node);
297
+ const getAssemblyElementIds = (id) => this.getAssemblyElementIds(id);
298
+ return {
299
+ modelId,
300
+ categoryId,
301
+ async *elementIds() {
302
+ for (const key of node.groupedInstanceKeys) {
303
+ yield key.id;
304
+ const assemblyElements = getAssemblyElementIds(key.id);
305
+ for await (const elementId of assemblyElements.getElementIds()) {
306
+ yield elementId;
307
+ }
308
+ }
309
+ },
310
+ };
311
+ }
312
+ }
313
+ class SubjectModelIdsCache {
314
+ constructor(imodel) {
315
+ this._imodel = imodel;
316
+ }
317
+ async initSubjectModels() {
318
+ const querySubjects = async () => {
319
+ const subjectsQuery = `
320
+ SELECT ECInstanceId id, Parent.Id parentId, json_extract(JsonProperties, '$.Subject.Model.TargetPartition') targetPartitionId
321
+ FROM bis.Subject
322
+ `;
323
+ return this._imodel.createQueryReader(subjectsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }).toArray();
324
+ };
325
+ const queryModels = async () => {
326
+ const modelsQuery = `
327
+ SELECT p.ECInstanceId id, p.Parent.Id parentId
328
+ FROM bis.InformationPartitionElement p
329
+ INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId
330
+ WHERE NOT m.IsPrivate
331
+ `;
332
+ return this._imodel.createQueryReader(modelsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }).toArray();
333
+ };
334
+ function pushToMap(map, key, value) {
335
+ let list = map.get(key);
336
+ if (!list) {
337
+ list = [];
338
+ map.set(key, list);
339
+ }
340
+ list.push(value);
341
+ }
342
+ this._subjectsHierarchy = new Map();
343
+ const targetPartitionSubjects = new Map();
344
+ for (const subject of await querySubjects()) {
345
+ // istanbul ignore else
346
+ if (subject.parentId) {
347
+ pushToMap(this._subjectsHierarchy, subject.parentId, subject.id);
348
+ }
349
+ // istanbul ignore if
350
+ if (subject.targetPartitionId) {
351
+ pushToMap(targetPartitionSubjects, subject.targetPartitionId, subject.id);
352
+ }
353
+ }
354
+ this._subjectModels = new Map();
355
+ for (const model of await queryModels()) {
356
+ // istanbul ignore next
357
+ const subjectIds = targetPartitionSubjects.get(model.id) ?? [];
358
+ // istanbul ignore else
359
+ if (!subjectIds.includes(model.parentId)) {
360
+ subjectIds.push(model.parentId);
361
+ }
362
+ subjectIds.forEach((subjectId) => {
363
+ pushToMap(this._subjectModels, subjectId, model.id);
364
+ });
365
+ }
366
+ }
367
+ async initCache() {
368
+ if (!this._init) {
369
+ this._init = this.initSubjectModels().then(() => { });
370
+ }
371
+ return this._init;
372
+ }
373
+ appendSubjectModelsRecursively(modelIds, subjectId) {
374
+ const subjectModelIds = this._subjectModels.get(subjectId);
375
+ if (subjectModelIds) {
376
+ modelIds.push(...subjectModelIds);
377
+ }
378
+ const childSubjectIds = this._subjectsHierarchy.get(subjectId);
379
+ if (childSubjectIds) {
380
+ childSubjectIds.forEach((cs) => this.appendSubjectModelsRecursively(modelIds, cs));
381
+ }
382
+ }
383
+ async getSubjectModelIds(subjectId) {
384
+ await this.initCache();
385
+ const modelIds = new Array();
386
+ this.appendSubjectModelsRecursively(modelIds, subjectId);
387
+ return modelIds;
388
+ }
389
+ }
390
+ // istanbul ignore next
391
+ class ElementIdsCache {
392
+ constructor(_imodel) {
393
+ this._imodel = _imodel;
394
+ this._assemblyElementIdsCache = new Map();
395
+ }
396
+ clear() {
397
+ this._assemblyElementIdsCache.clear();
398
+ }
399
+ getAssemblyElementIds(assemblyId) {
400
+ const ids = this._assemblyElementIdsCache.get(assemblyId);
401
+ if (ids) {
402
+ return ids;
403
+ }
404
+ const container = createAssemblyElementIdsContainer(this._imodel, assemblyId);
405
+ this._assemblyElementIdsCache.set(assemblyId, container);
406
+ return container;
407
+ }
408
+ }
409
+ // istanbul ignore next
410
+ async function* createInstanceIdsGenerator(imodel, displayType, inputKeys) {
411
+ const res = await Presentation.presentation.getContentInstanceKeys({
412
+ imodel,
413
+ rulesetOrId: {
414
+ id: "AssemblyElements",
415
+ rules: [
416
+ {
417
+ ruleType: "Content",
418
+ specifications: [
419
+ {
420
+ specType: "ContentRelatedInstances",
421
+ relationshipPaths: [
422
+ {
423
+ direction: "Forward",
424
+ relationship: {
425
+ schemaName: "BisCore",
426
+ className: "ElementOwnsChildElements",
427
+ },
428
+ count: "*",
429
+ },
430
+ ],
431
+ },
432
+ ],
433
+ },
434
+ ],
435
+ },
436
+ displayType,
437
+ keys: new KeySet(inputKeys),
438
+ });
439
+ for await (const key of res.items()) {
440
+ yield key.id;
441
+ }
442
+ }
443
+ // istanbul ignore next
444
+ function createAssemblyElementIdsContainer(imodel, assemblyId) {
445
+ return new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, "AssemblyElementsRequest", [{ className: "BisCore:Element", id: assemblyId }]));
446
+ }
447
+ const createTooltip = (status, tooltipStringId) => {
448
+ const statusStringId = `modelTree.status.${status}`;
449
+ const statusString = TreeWidget.translate(statusStringId);
450
+ if (!tooltipStringId) {
451
+ return statusString;
452
+ }
453
+ tooltipStringId = `modelTree.tooltips.${tooltipStringId}`;
454
+ const tooltipString = TreeWidget.translate(tooltipStringId);
455
+ return `${statusString}: ${tooltipString}`;
456
+ };
457
+ function isSubjectNode(node) {
458
+ return node.extendedData && node.extendedData.isSubject;
459
+ }
460
+ function isModelNode(node) {
461
+ return node.extendedData && node.extendedData.isModel;
462
+ }
463
+ function isCategoryNode(node) {
464
+ return node.extendedData && node.extendedData.isCategory;
465
+ }
466
+ //# sourceMappingURL=ModelsVisibilityHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelsVisibilityHandler.js","sourceRoot":"","sources":["../../../../../../src/components/trees/stateless/models-tree/ModelsVisibilityHandler.ts"],"names":[],"mappings":"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","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 { BeEvent } from \"@itwin/core-bentley\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\nimport { PerModelCategoryVisibility } from \"@itwin/core-frontend\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { HierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport { TreeWidget } from \"../../../../TreeWidget\";\nimport { CachingElementIdsContainer } from \"../../models-tree/Utils\";\n\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type { IModelConnection, Viewport } from \"@itwin/core-frontend\";\nimport type { Keys } from \"@itwin/presentation-common\";\nimport type { GroupingHierarchyNode, GroupingNodeKey } from \"@itwin/presentation-hierarchies\";\nimport type { VisibilityChangeListener, VisibilityStatus } from \"../../VisibilityTreeEventHandler\";\n\ninterface StatelessModelsVisibilityHandlerProps {\n viewport: Viewport;\n}\n\n/** @internal */\nexport class StatelessModelsVisibilityHandler {\n private _viewport: Viewport;\n private _pendingVisibilityChange: any | undefined;\n private _subjectModelIdsCache: SubjectModelIdsCache;\n private _elementIdsCache: ElementIdsCache;\n private _listeners = new Array<() => void>();\n\n constructor(props: StatelessModelsVisibilityHandlerProps) {\n this._viewport = props.viewport;\n this._subjectModelIdsCache = new SubjectModelIdsCache(props.viewport.iModel);\n this._elementIdsCache = new ElementIdsCache(props.viewport.iModel);\n this._listeners.push(this._viewport.onViewedCategoriesPerModelChanged.addListener(() => this.onVisibilityChangeInternal()));\n this._listeners.push(this._viewport.onViewedCategoriesChanged.addListener(() => this.onVisibilityChangeInternal()));\n this._listeners.push(this._viewport.onViewedModelsChanged.addListener(() => this.onVisibilityChangeInternal()));\n this._listeners.push(this._viewport.onAlwaysDrawnChanged.addListener(() => this.onVisibilityChangeInternal()));\n this._listeners.push(this._viewport.onNeverDrawnChanged.addListener(() => this.onVisibilityChangeInternal()));\n }\n\n public dispose() {\n this._listeners.forEach((remove) => remove());\n clearTimeout(this._pendingVisibilityChange);\n }\n\n public onVisibilityChange = new BeEvent<VisibilityChangeListener>();\n\n /** Returns visibility status of the tree node. */\n public getVisibilityStatus(node: HierarchyNode): Promise<VisibilityStatus> | VisibilityStatus {\n if (HierarchyNode.isClassGroupingNode(node)) {\n return this.getElementGroupingNodeDisplayStatus(node);\n }\n\n if (!HierarchyNode.isInstancesNode(node)) {\n return { state: \"hidden\", isDisabled: true };\n }\n\n if (isSubjectNode(node)) {\n // note: subject nodes may be merged to represent multiple subject instances\n return this.getSubjectNodeVisibility(node.key.instanceKeys.map((key) => key.id));\n }\n if (isModelNode(node)) {\n return this.getModelDisplayStatus(node.key.instanceKeys[0].id);\n }\n if (isCategoryNode(node)) {\n return this.getCategoryDisplayStatus(node.key.instanceKeys[0].id, this.getCategoryParentModelId(node));\n }\n return this.getElementDisplayStatus(node.key.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node));\n }\n\n /** Changes visibility of the items represented by the tree node. */\n public async changeVisibility(node: HierarchyNode, on: boolean) {\n if (HierarchyNode.isClassGroupingNode(node)) {\n await this.changeElementGroupingNodeState(node, on);\n return;\n }\n\n if (!HierarchyNode.isInstancesNode(node)) {\n return;\n }\n\n if (isSubjectNode(node)) {\n await this.changeSubjectNodeState(\n node.key.instanceKeys.map((key) => key.id),\n on,\n );\n } else if (isModelNode(node)) {\n await this.changeModelState(node.key.instanceKeys[0].id, on);\n } else if (isCategoryNode(node)) {\n this.changeCategoryState(node.key.instanceKeys[0].id, this.getCategoryParentModelId(node), on);\n } else {\n await this.changeElementState(node.key.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node), on, node.children);\n }\n }\n\n private async getSubjectNodeVisibility(ids: Id64String[]): Promise<VisibilityStatus> {\n if (!this._viewport.view.isSpatialView()) {\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"subject.nonSpatialView\") };\n }\n\n return this.getSubjectDisplayStatus(ids);\n }\n\n private async getSubjectDisplayStatus(ids: Id64String[]): Promise<VisibilityStatus> {\n const modelIds = await this.getSubjectModelIds(ids);\n const isDisplayed = modelIds.some((modelId) => this.getModelDisplayStatus(modelId).state === \"visible\");\n if (isDisplayed) {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"subject.atLeastOneModelVisible\") };\n }\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"subject.allModelsHidden\") };\n }\n\n private getModelDisplayStatus(id: Id64String): VisibilityStatus {\n if (!this._viewport.view.isSpatialView()) {\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"model.nonSpatialView\") };\n }\n const isDisplayed = this._viewport.view.viewsModel(id);\n return { state: isDisplayed ? \"visible\" : \"hidden\", tooltip: createTooltip(isDisplayed ? \"visible\" : \"hidden\", undefined) };\n }\n\n private getCategoryDisplayStatus(id: Id64String, parentModelId: Id64String | undefined): VisibilityStatus {\n if (parentModelId) {\n if (this.getModelDisplayStatus(parentModelId).state === \"hidden\") {\n return { state: \"hidden\", isDisabled: true, tooltip: createTooltip(\"disabled\", \"category.modelNotDisplayed\") };\n }\n\n const override = this._viewport.perModelCategoryVisibility.getOverride(parentModelId, id);\n switch (override) {\n case PerModelCategoryVisibility.Override.Show:\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"category.displayedThroughPerModelOverride\") };\n case PerModelCategoryVisibility.Override.Hide:\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"category.hiddenThroughPerModelOverride\") };\n }\n }\n const isDisplayed = this._viewport.view.viewsCategory(id);\n return {\n state: isDisplayed ? \"visible\" : \"hidden\",\n tooltip: isDisplayed\n ? createTooltip(\"visible\", \"category.displayedThroughCategorySelector\")\n : createTooltip(\"hidden\", \"category.hiddenThroughCategorySelector\"),\n };\n }\n\n private async getElementGroupingNodeDisplayStatus(node: GroupingHierarchyNode & { key: GroupingNodeKey }): Promise<VisibilityStatus> {\n const { modelId, categoryId, elementIds } = this.getGroupedElementIds(node);\n\n if (!modelId || !this._viewport.view.viewsModel(modelId)) {\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"element.modelNotDisplayed\") };\n }\n\n if (this._viewport.alwaysDrawn !== undefined && this._viewport.alwaysDrawn.size > 0) {\n let atLeastOneElementForceDisplayed = false;\n for await (const elementId of elementIds()) {\n if (this._viewport.alwaysDrawn.has(elementId)) {\n atLeastOneElementForceDisplayed = true;\n break;\n }\n }\n if (atLeastOneElementForceDisplayed) {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"element.displayedThroughAlwaysDrawnList\") };\n }\n }\n\n if (this._viewport.alwaysDrawn !== undefined && this._viewport.alwaysDrawn.size !== 0 && this._viewport.isAlwaysDrawnExclusive) {\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn\") };\n }\n\n // istanbul ignore else\n if (this._viewport.neverDrawn !== undefined && this._viewport.neverDrawn.size > 0) {\n let allElementsForceHidden = true;\n for await (const elementId of elementIds()) {\n if (!this._viewport.neverDrawn.has(elementId)) {\n allElementsForceHidden = false;\n break;\n }\n }\n if (allElementsForceHidden) {\n return { state: \"hidden\", tooltip: createTooltip(\"visible\", \"element.hiddenThroughNeverDrawnList\") };\n }\n }\n\n if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\") {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", undefined) };\n }\n\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughCategory\") };\n }\n\n private getElementDisplayStatus(elementId: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined): VisibilityStatus {\n if (!modelId || !this._viewport.view.viewsModel(modelId)) {\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"element.modelNotDisplayed\") };\n }\n if (this._viewport.neverDrawn !== undefined && this._viewport.neverDrawn.has(elementId)) {\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughNeverDrawnList\") };\n }\n if (this._viewport.alwaysDrawn !== undefined) {\n if (this._viewport.alwaysDrawn.has(elementId)) {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"element.displayedThroughAlwaysDrawnList\") };\n }\n if (this._viewport.alwaysDrawn.size !== 0 && this._viewport.isAlwaysDrawnExclusive) {\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn\") };\n }\n }\n if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\") {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", undefined) };\n }\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughCategory\") };\n }\n\n private async changeSubjectNodeState(ids: Id64String[], on: boolean) {\n if (!this._viewport.view.isSpatialView()) {\n return;\n }\n\n return this.changeSubjectState(ids, on);\n }\n\n private async changeSubjectState(ids: Id64String[], on: boolean) {\n const modelIds = await this.getSubjectModelIds(ids);\n return this.changeModelsVisibility(modelIds, on);\n }\n\n private async changeModelState(id: Id64String, on: boolean) {\n if (!this._viewport.view.isSpatialView()) {\n return;\n }\n\n return this.changeModelsVisibility([id], on);\n }\n\n private async changeModelsVisibility(ids: Id64String[], visible: boolean) {\n if (visible) {\n return this._viewport.addViewedModels(ids);\n } else {\n this._viewport.changeModelDisplay(ids, false);\n }\n }\n\n private changeCategoryState(categoryId: Id64String, parentModelId: Id64String | undefined, on: boolean) {\n if (parentModelId) {\n const isDisplayedInSelector = this._viewport.view.viewsCategory(categoryId);\n const ovr =\n on === isDisplayedInSelector\n ? PerModelCategoryVisibility.Override.None\n : on\n ? PerModelCategoryVisibility.Override.Show\n : PerModelCategoryVisibility.Override.Hide;\n this._viewport.perModelCategoryVisibility.setOverride(parentModelId, categoryId, ovr);\n if (ovr === PerModelCategoryVisibility.Override.None && on) {\n // we took off the override which means the category is displayed in selector, but\n // doesn't mean all its subcategories are displayed - this call ensures that\n this._viewport.changeCategoryDisplay([categoryId], true, true);\n }\n return;\n }\n this._viewport.changeCategoryDisplay([categoryId], on, on ? true : false);\n }\n\n private async changeElementGroupingNodeState(node: GroupingHierarchyNode & { key: GroupingNodeKey }, on: boolean) {\n const { modelId, categoryId, elementIds } = this.getGroupedElementIds(node);\n await this.changeElementsState(modelId, categoryId, elementIds(), on);\n }\n\n private async changeElementState(id: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined, on: boolean, hasChildren: boolean) {\n const isDisplayedByDefault = this.isElementDisplayedByDefault(modelId, categoryId);\n const isHiddenDueToExclusiveAlwaysDrawnElements = this.hasExclusiveAlwaysDrawnElements();\n this.changeElementStateInternal(id, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);\n\n if (!hasChildren) {\n return;\n }\n\n const childElements = this.getAssemblyElementIds(id);\n for await (const elementId of childElements.getElementIds()) {\n this.changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);\n }\n }\n\n private async changeElementsState(modelId: Id64String | undefined, categoryId: Id64String | undefined, elementIds: AsyncGenerator<Id64String>, on: boolean) {\n const isDisplayedByDefault = this.isElementDisplayedByDefault(modelId, categoryId);\n const isHiddenDueToExclusiveAlwaysDrawnElements = this.hasExclusiveAlwaysDrawnElements();\n for await (const elementId of elementIds) {\n this.changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);\n }\n }\n\n private changeElementStateInternal(elementId: Id64String, on: boolean, isDisplayedByDefault: boolean, isHiddenDueToExclusiveAlwaysDrawnElements: boolean) {\n let changedNeverDraw = false;\n let changedAlwaysDrawn = false;\n\n const currNeverDrawn = new Set(this._viewport.neverDrawn ? this._viewport.neverDrawn : []);\n const currAlwaysDrawn = new Set(this._viewport.alwaysDrawn ? this._viewport.alwaysDrawn : /* istanbul ignore next */ []);\n\n if (on) {\n changedNeverDraw = changedNeverDraw || currNeverDrawn.delete(elementId);\n if ((!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements) && !currAlwaysDrawn.has(elementId)) {\n currAlwaysDrawn.add(elementId);\n changedAlwaysDrawn = true;\n }\n } else {\n changedAlwaysDrawn = changedAlwaysDrawn || currAlwaysDrawn.delete(elementId);\n if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements && !currNeverDrawn.has(elementId)) {\n currNeverDrawn.add(elementId);\n changedNeverDraw = true;\n }\n }\n\n changedNeverDraw && this._viewport.setNeverDrawn(currNeverDrawn);\n changedAlwaysDrawn && this._viewport.setAlwaysDrawn(currAlwaysDrawn, this._viewport.isAlwaysDrawnExclusive);\n }\n\n private isElementDisplayedByDefault(modelId: Id64String | undefined, categoryId: Id64String | undefined) {\n return (\n !!modelId &&\n this.getModelDisplayStatus(modelId).state === \"visible\" &&\n !!categoryId &&\n this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\"\n );\n }\n\n private hasExclusiveAlwaysDrawnElements() {\n return this._viewport.isAlwaysDrawnExclusive && 0 !== this._viewport.alwaysDrawn?.size;\n }\n\n private onVisibilityChangeInternal() {\n if (this._pendingVisibilityChange) {\n return;\n }\n\n this._pendingVisibilityChange = setTimeout(() => {\n this.onVisibilityChange.raiseEvent();\n this._pendingVisibilityChange = undefined;\n }, 0);\n }\n\n private getCategoryParentModelId(categoryNode: HierarchyNode): Id64String | undefined {\n return categoryNode.extendedData && categoryNode.extendedData.modelIds[0] ? categoryNode.extendedData.modelIds[0][0] : /* istanbul ignore next */ undefined;\n }\n\n private getElementModelId(elementNode: HierarchyNode): Id64String | undefined {\n return elementNode.extendedData ? elementNode.extendedData.modelId : /* istanbul ignore next */ undefined;\n }\n\n private getElementCategoryId(elementNode: HierarchyNode): Id64String | undefined {\n return elementNode.extendedData ? elementNode.extendedData.categoryId : /* istanbul ignore next */ undefined;\n }\n\n private async getSubjectModelIds(subjectIds: Id64String[]) {\n return (await Promise.all(subjectIds.map(async (id) => this._subjectModelIdsCache.getSubjectModelIds(id)))).reduce(\n (allModelIds: Id64String[], curr: Id64String[]) => [...allModelIds, ...curr],\n [],\n );\n }\n\n private getAssemblyElementIds(assemblyId: Id64String) {\n return this._elementIdsCache.getAssemblyElementIds(assemblyId);\n }\n\n // istanbul ignore next\n private getGroupedElementIds(node: GroupingHierarchyNode) {\n const modelId = this.getElementModelId(node);\n const categoryId = this.getElementCategoryId(node);\n\n const getAssemblyElementIds = (id: Id64String) => this.getAssemblyElementIds(id);\n\n return {\n modelId,\n categoryId,\n async *elementIds() {\n for (const key of node.groupedInstanceKeys) {\n yield key.id;\n const assemblyElements = getAssemblyElementIds(key.id);\n for await (const elementId of assemblyElements.getElementIds()) {\n yield elementId;\n }\n }\n },\n };\n }\n}\n\nclass SubjectModelIdsCache {\n private _imodel: IModelConnection;\n private _subjectsHierarchy: Map<Id64String, Id64String[]> | undefined;\n private _subjectModels: Map<Id64String, Id64String[]> | undefined;\n private _init: Promise<void> | undefined;\n\n constructor(imodel: IModelConnection) {\n this._imodel = imodel;\n }\n\n private async initSubjectModels() {\n const querySubjects = async (): Promise<Array<{ id: Id64String; parentId?: Id64String; targetPartitionId?: Id64String }>> => {\n const subjectsQuery = `\n SELECT ECInstanceId id, Parent.Id parentId, json_extract(JsonProperties, '$.Subject.Model.TargetPartition') targetPartitionId\n FROM bis.Subject\n `;\n return this._imodel.createQueryReader(subjectsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }).toArray();\n };\n const queryModels = async (): Promise<Array<{ id: Id64String; parentId: Id64String }>> => {\n const modelsQuery = `\n SELECT p.ECInstanceId id, p.Parent.Id parentId\n FROM bis.InformationPartitionElement p\n INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId\n WHERE NOT m.IsPrivate\n `;\n return this._imodel.createQueryReader(modelsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }).toArray();\n };\n\n function pushToMap<TKey, TValue>(map: Map<TKey, TValue[]>, key: TKey, value: TValue) {\n let list = map.get(key);\n if (!list) {\n list = [];\n map.set(key, list);\n }\n list.push(value);\n }\n\n this._subjectsHierarchy = new Map();\n const targetPartitionSubjects = new Map<Id64String, Id64String[]>();\n for (const subject of await querySubjects()) {\n // istanbul ignore else\n if (subject.parentId) {\n pushToMap(this._subjectsHierarchy, subject.parentId, subject.id);\n }\n // istanbul ignore if\n if (subject.targetPartitionId) {\n pushToMap(targetPartitionSubjects, subject.targetPartitionId, subject.id);\n }\n }\n\n this._subjectModels = new Map();\n for (const model of await queryModels()) {\n // istanbul ignore next\n const subjectIds = targetPartitionSubjects.get(model.id) ?? [];\n // istanbul ignore else\n if (!subjectIds.includes(model.parentId)) {\n subjectIds.push(model.parentId);\n }\n\n subjectIds.forEach((subjectId) => {\n pushToMap(this._subjectModels!, subjectId, model.id);\n });\n }\n }\n\n private async initCache() {\n if (!this._init) {\n this._init = this.initSubjectModels().then(() => {});\n }\n return this._init;\n }\n\n private appendSubjectModelsRecursively(modelIds: Id64String[], subjectId: Id64String) {\n const subjectModelIds = this._subjectModels!.get(subjectId);\n if (subjectModelIds) {\n modelIds.push(...subjectModelIds);\n }\n\n const childSubjectIds = this._subjectsHierarchy!.get(subjectId);\n if (childSubjectIds) {\n childSubjectIds.forEach((cs) => this.appendSubjectModelsRecursively(modelIds, cs));\n }\n }\n\n public async getSubjectModelIds(subjectId: Id64String): Promise<Id64String[]> {\n await this.initCache();\n const modelIds = new Array<Id64String>();\n this.appendSubjectModelsRecursively(modelIds, subjectId);\n return modelIds;\n }\n}\n\n// istanbul ignore next\nclass ElementIdsCache {\n private _assemblyElementIdsCache = new Map<string, CachingElementIdsContainer>();\n\n constructor(private _imodel: IModelConnection) {}\n\n public clear() {\n this._assemblyElementIdsCache.clear();\n }\n\n public getAssemblyElementIds(assemblyId: Id64String) {\n const ids = this._assemblyElementIdsCache.get(assemblyId);\n if (ids) {\n return ids;\n }\n\n const container = createAssemblyElementIdsContainer(this._imodel, assemblyId);\n this._assemblyElementIdsCache.set(assemblyId, container);\n return container;\n }\n}\n\n// istanbul ignore next\nasync function* createInstanceIdsGenerator(imodel: IModelConnection, displayType: string, inputKeys: Keys) {\n const res = await Presentation.presentation.getContentInstanceKeys({\n imodel,\n rulesetOrId: {\n id: \"AssemblyElements\",\n rules: [\n {\n ruleType: \"Content\",\n specifications: [\n {\n specType: \"ContentRelatedInstances\",\n relationshipPaths: [\n {\n direction: \"Forward\",\n relationship: {\n schemaName: \"BisCore\",\n className: \"ElementOwnsChildElements\",\n },\n count: \"*\",\n },\n ],\n },\n ],\n },\n ],\n },\n displayType,\n keys: new KeySet(inputKeys),\n });\n for await (const key of res.items()) {\n yield key.id;\n }\n}\n\n// istanbul ignore next\nfunction createAssemblyElementIdsContainer(imodel: IModelConnection, assemblyId: Id64String) {\n return new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, \"AssemblyElementsRequest\", [{ className: \"BisCore:Element\", id: assemblyId }]));\n}\n\nconst createTooltip = (status: \"visible\" | \"hidden\" | \"disabled\", tooltipStringId: string | undefined): string => {\n const statusStringId = `modelTree.status.${status}`;\n const statusString = TreeWidget.translate(statusStringId);\n if (!tooltipStringId) {\n return statusString;\n }\n\n tooltipStringId = `modelTree.tooltips.${tooltipStringId}`;\n const tooltipString = TreeWidget.translate(tooltipStringId);\n return `${statusString}: ${tooltipString}`;\n};\n\nfunction isSubjectNode(node: HierarchyNode) {\n return node.extendedData && node.extendedData.isSubject;\n}\n\nfunction isModelNode(node: HierarchyNode) {\n return node.extendedData && node.extendedData.isModel;\n}\n\nfunction isCategoryNode(node: HierarchyNode) {\n return node.extendedData && node.extendedData.isCategory;\n}\n"]}
@@ -61,5 +61,26 @@
61
61
  "close": "Close",
62
62
  "next": "Next",
63
63
  "previous": "Previous"
64
+ },
65
+ "stateless": {
66
+ "enableInstanceFocus": "Enable Instance Focus",
67
+ "disableInstanceFocus": "Disable Instance Focus",
68
+ "noNodesMatchFilter": "There are no nodes matching filter - \"{{filter}}\"",
69
+ "failedToCalculateMatchingInstances": "Failed to calculate matching instances count",
70
+ "matchingInstancesCount": "Current filter matching instances count: {{count}}",
71
+ "filterExceedsLimit": "Current filter exceeds instances count of {{limit}}",
72
+ "dataIsNotAvailable": "The data required for this tree layout is not available in this iModel.",
73
+ "hierarchies": {
74
+ "unspecified": "Unspecified",
75
+ "other": "Other",
76
+ "loading": "Loading...",
77
+ "filterHierarchyLevel": "Apply filter",
78
+ "clearHierarchyLevelFilter": "Clear active filter",
79
+ "noFilteredChildren": "No child nodes match current filter",
80
+ "resultLimitExceeded": "There are more items than allowed limit of {{limit}}.",
81
+ "resultLimitExceededWithFiltering": "Please provide <link>additional filtering</link> - there are more items than allowed limit of {{limit}}.",
82
+ "increaseHierarchyLimit": "<link>Increase the hierarchy level size limit to {{limit}}.</link>",
83
+ "increaseHierarchyLimitWithFiltering": "Or, <link>increase the hierarchy level size limit to {{limit}}.</link>"
84
+ }
64
85
  }
65
86
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/tree-widget-react",
3
- "version": "2.3.0",
3
+ "version": "3.0.0-dev.0",
4
4
  "description": "Tree Widget React",
5
5
  "keywords": [
6
6
  "Bentley",
@@ -51,6 +51,7 @@
51
51
  "@itwin/components-react": "^4.10.0",
52
52
  "@itwin/core-frontend": "^4.0.0",
53
53
  "@itwin/core-react": "^4.10.0",
54
+ "@itwin/ecschema-metadata": "^4.0.0",
54
55
  "@itwin/presentation-components": "^5.0.0",
55
56
  "react": "^17.0.0 || ^18.0.0",
56
57
  "react-dom": "^17.0.0 || ^18.0.0"
@@ -60,6 +61,11 @@
60
61
  "@itwin/itwinui-icons-react": "^2.8.0",
61
62
  "@itwin/itwinui-illustrations-react": "^2.1.0",
62
63
  "@itwin/itwinui-react": "^3.5.0",
64
+ "@itwin/presentation-core-interop": "^0.1.2",
65
+ "@itwin/presentation-hierarchies": "^0.1.1",
66
+ "@itwin/presentation-hierarchies-react": "^0.2.0",
67
+ "@itwin/presentation-shared": "^0.1.1",
68
+ "@itwin/unified-selection": "^0.4.1",
63
69
  "classnames": "^2.3.1",
64
70
  "i18next": "^10.2.2",
65
71
  "react-error-boundary": "^4.0.10",