@itwin/tree-widget-react 3.2.4 → 3.3.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 (227) hide show
  1. package/CHANGELOG.md +15 -2
  2. package/lib/cjs/components/SelectableTree.js +4 -5
  3. package/lib/cjs/components/SelectableTree.js.map +1 -1
  4. package/lib/cjs/components/TreeSelector.d.ts +1 -1
  5. package/lib/cjs/components/TreeSelector.js.map +1 -1
  6. package/lib/cjs/components/TreeWidgetUiItemsProvider.d.ts +1 -1
  7. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +5 -5
  8. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
  9. package/lib/cjs/components/tree-header/TreeHeader.js +8 -9
  10. package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -1
  11. package/lib/cjs/components/tree-header/TreeWithHeader.d.ts +1 -1
  12. package/lib/cjs/components/tree-header/TreeWithHeader.js +2 -2
  13. package/lib/cjs/components/tree-header/TreeWithHeader.js.map +1 -1
  14. package/lib/cjs/components/trees/categories-tree/CategoriesTree.d.ts +2 -2
  15. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js +5 -5
  16. package/lib/cjs/components/trees/categories-tree/CategoriesTree.js.map +1 -1
  17. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.d.ts +2 -2
  18. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js +9 -9
  19. package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -1
  20. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.d.ts +2 -2
  21. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js +19 -19
  22. package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -1
  23. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js +2 -2
  24. package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -1
  25. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +1 -1
  26. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js +6 -6
  27. package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -1
  28. package/lib/cjs/components/trees/categories-tree/UseCategoriesTree.d.ts +3 -3
  29. package/lib/cjs/components/trees/categories-tree/UseCategoriesTree.js +12 -12
  30. package/lib/cjs/components/trees/categories-tree/UseCategoriesTree.js.map +1 -1
  31. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.js +0 -1
  32. package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.js.map +1 -1
  33. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js +2 -2
  34. package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js.map +1 -1
  35. package/lib/cjs/components/trees/common/Tooltip.d.ts +1 -1
  36. package/lib/cjs/components/trees/common/Tooltip.js +3 -3
  37. package/lib/cjs/components/trees/common/Tooltip.js.map +1 -1
  38. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js +12 -12
  39. package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js.map +1 -1
  40. package/lib/cjs/components/trees/common/UseHierarchyFiltering.js +8 -8
  41. package/lib/cjs/components/trees/common/UseHierarchyFiltering.js.map +1 -1
  42. package/lib/cjs/components/trees/common/UseHierarchyVisibility.d.ts +1 -1
  43. package/lib/cjs/components/trees/common/UseHierarchyVisibility.js +2 -2
  44. package/lib/cjs/components/trees/common/UseHierarchyVisibility.js.map +1 -1
  45. package/lib/cjs/components/trees/common/UseNodeHighlighting.js +4 -4
  46. package/lib/cjs/components/trees/common/UseNodeHighlighting.js.map +1 -1
  47. package/lib/cjs/components/trees/common/UseTelemetryContext.js +3 -3
  48. package/lib/cjs/components/trees/common/UseTelemetryContext.js.map +1 -1
  49. package/lib/cjs/components/trees/common/components/Tree.d.ts +3 -3
  50. package/lib/cjs/components/trees/common/components/Tree.js +21 -21
  51. package/lib/cjs/components/trees/common/components/Tree.js.map +1 -1
  52. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js +4 -1
  53. package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js.map +1 -1
  54. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.d.ts +1 -1
  55. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js +2 -2
  56. package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js.map +1 -1
  57. package/lib/cjs/components/trees/common/components/TreeRenderer.d.ts +1 -1
  58. package/lib/cjs/components/trees/common/components/TreeRenderer.js +4 -4
  59. package/lib/cjs/components/trees/common/components/TreeRenderer.js.map +1 -1
  60. package/lib/cjs/components/trees/common/components/VisibilityTree.d.ts +4 -4
  61. package/lib/cjs/components/trees/common/components/VisibilityTree.js +6 -6
  62. package/lib/cjs/components/trees/common/components/VisibilityTree.js.map +1 -1
  63. package/lib/cjs/components/trees/common/components/VisibilityTreeRenderer.d.ts +2 -2
  64. package/lib/cjs/components/trees/common/components/VisibilityTreeRenderer.js +4 -4
  65. package/lib/cjs/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -1
  66. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +1 -1
  67. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js +6 -6
  68. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  69. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +1 -1
  70. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +5 -5
  71. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  72. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.d.ts +1 -1
  73. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js +8 -8
  74. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  75. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +1 -1
  76. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js +5 -5
  77. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  78. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +1 -1
  79. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +3 -3
  80. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -1
  81. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +2 -2
  82. package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -1
  83. package/lib/cjs/components/trees/index.d.ts +16 -16
  84. package/lib/cjs/components/trees/index.js +28 -28
  85. package/lib/cjs/components/trees/index.js.map +1 -1
  86. package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +2 -2
  87. package/lib/cjs/components/trees/models-tree/ModelsTree.js +5 -5
  88. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -1
  89. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.d.ts +1 -1
  90. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js +22 -22
  91. package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
  92. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.d.ts +2 -2
  93. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +29 -29
  94. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  95. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.d.ts +1 -1
  96. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js +10 -10
  97. package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -1
  98. package/lib/cjs/components/trees/models-tree/UseModelsTree.d.ts +4 -4
  99. package/lib/cjs/components/trees/models-tree/UseModelsTree.js +27 -27
  100. package/lib/cjs/components/trees/models-tree/UseModelsTree.js.map +1 -1
  101. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +2 -2
  102. package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -1
  103. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +1 -1
  104. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js +2 -2
  105. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -1
  106. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +2 -2
  107. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +72 -80
  108. package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -1
  109. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js +0 -1
  110. package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -1
  111. package/lib/cjs/package.json +1 -0
  112. package/lib/cjs/tree-widget-react.d.ts +5 -5
  113. package/lib/cjs/tree-widget-react.js +10 -10
  114. package/lib/cjs/tree-widget-react.js.map +1 -1
  115. package/lib/esm/components/SelectableTree.js +2 -3
  116. package/lib/esm/components/SelectableTree.js.map +1 -1
  117. package/lib/esm/components/TreeSelector.d.ts +1 -1
  118. package/lib/esm/components/TreeSelector.js.map +1 -1
  119. package/lib/esm/components/TreeWidgetUiItemsProvider.d.ts +1 -1
  120. package/lib/esm/components/TreeWidgetUiItemsProvider.js +2 -2
  121. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
  122. package/lib/esm/components/tree-header/TreeHeader.js +2 -3
  123. package/lib/esm/components/tree-header/TreeHeader.js.map +1 -1
  124. package/lib/esm/components/tree-header/TreeWithHeader.d.ts +1 -1
  125. package/lib/esm/components/tree-header/TreeWithHeader.js +1 -1
  126. package/lib/esm/components/tree-header/TreeWithHeader.js.map +1 -1
  127. package/lib/esm/components/trees/categories-tree/CategoriesTree.d.ts +2 -2
  128. package/lib/esm/components/trees/categories-tree/CategoriesTree.js +3 -3
  129. package/lib/esm/components/trees/categories-tree/CategoriesTree.js.map +1 -1
  130. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.d.ts +2 -2
  131. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js +2 -2
  132. package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -1
  133. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.d.ts +2 -2
  134. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js +7 -7
  135. package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -1
  136. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js +1 -1
  137. package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -1
  138. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +1 -1
  139. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js +3 -3
  140. package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -1
  141. package/lib/esm/components/trees/categories-tree/UseCategoriesTree.d.ts +3 -3
  142. package/lib/esm/components/trees/categories-tree/UseCategoriesTree.js +5 -5
  143. package/lib/esm/components/trees/categories-tree/UseCategoriesTree.js.map +1 -1
  144. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.js +0 -1
  145. package/lib/esm/components/trees/common/CategoriesVisibilityUtils.js.map +1 -1
  146. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js +1 -1
  147. package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js.map +1 -1
  148. package/lib/esm/components/trees/common/Tooltip.d.ts +1 -1
  149. package/lib/esm/components/trees/common/Tooltip.js +1 -1
  150. package/lib/esm/components/trees/common/Tooltip.js.map +1 -1
  151. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js +1 -1
  152. package/lib/esm/components/trees/common/UseHierarchiesLocalization.js.map +1 -1
  153. package/lib/esm/components/trees/common/UseHierarchyFiltering.js +3 -3
  154. package/lib/esm/components/trees/common/UseHierarchyFiltering.js.map +1 -1
  155. package/lib/esm/components/trees/common/UseHierarchyVisibility.d.ts +1 -1
  156. package/lib/esm/components/trees/common/UseHierarchyVisibility.js +1 -1
  157. package/lib/esm/components/trees/common/UseHierarchyVisibility.js.map +1 -1
  158. package/lib/esm/components/trees/common/UseNodeHighlighting.js +1 -1
  159. package/lib/esm/components/trees/common/UseNodeHighlighting.js.map +1 -1
  160. package/lib/esm/components/trees/common/UseTelemetryContext.js +1 -1
  161. package/lib/esm/components/trees/common/UseTelemetryContext.js.map +1 -1
  162. package/lib/esm/components/trees/common/components/Tree.d.ts +3 -3
  163. package/lib/esm/components/trees/common/components/Tree.js +9 -9
  164. package/lib/esm/components/trees/common/components/Tree.js.map +1 -1
  165. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js +5 -2
  166. package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js.map +1 -1
  167. package/lib/esm/components/trees/common/components/TreeNodeRenderer.d.ts +1 -1
  168. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js +1 -1
  169. package/lib/esm/components/trees/common/components/TreeNodeRenderer.js.map +1 -1
  170. package/lib/esm/components/trees/common/components/TreeRenderer.d.ts +1 -1
  171. package/lib/esm/components/trees/common/components/TreeRenderer.js +2 -2
  172. package/lib/esm/components/trees/common/components/TreeRenderer.js.map +1 -1
  173. package/lib/esm/components/trees/common/components/VisibilityTree.d.ts +4 -4
  174. package/lib/esm/components/trees/common/components/VisibilityTree.js +3 -3
  175. package/lib/esm/components/trees/common/components/VisibilityTree.js.map +1 -1
  176. package/lib/esm/components/trees/common/components/VisibilityTreeRenderer.d.ts +2 -2
  177. package/lib/esm/components/trees/common/components/VisibilityTreeRenderer.js +2 -2
  178. package/lib/esm/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -1
  179. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +1 -1
  180. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js +4 -4
  181. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  182. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +1 -1
  183. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +3 -3
  184. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  185. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.d.ts +1 -1
  186. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js +5 -5
  187. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  188. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +1 -1
  189. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js +3 -3
  190. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  191. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +1 -1
  192. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +1 -1
  193. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -1
  194. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +1 -1
  195. package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -1
  196. package/lib/esm/components/trees/index.d.ts +16 -16
  197. package/lib/esm/components/trees/index.js +14 -14
  198. package/lib/esm/components/trees/index.js.map +1 -1
  199. package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +2 -2
  200. package/lib/esm/components/trees/models-tree/ModelsTree.js +3 -3
  201. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -1
  202. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.d.ts +1 -1
  203. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js +3 -3
  204. package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
  205. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.d.ts +2 -2
  206. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +9 -9
  207. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  208. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.d.ts +1 -1
  209. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js +4 -4
  210. package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -1
  211. package/lib/esm/components/trees/models-tree/UseModelsTree.d.ts +4 -4
  212. package/lib/esm/components/trees/models-tree/UseModelsTree.js +9 -9
  213. package/lib/esm/components/trees/models-tree/UseModelsTree.js.map +1 -1
  214. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +1 -1
  215. package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -1
  216. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +1 -1
  217. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js +1 -1
  218. package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -1
  219. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +2 -2
  220. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +9 -17
  221. package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -1
  222. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js +0 -1
  223. package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -1
  224. package/lib/esm/tree-widget-react.d.ts +5 -5
  225. package/lib/esm/tree-widget-react.js +5 -5
  226. package/lib/esm/tree-widget-react.js.map +1 -1
  227. package/package.json +46 -40
@@ -9,9 +9,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
9
9
  const react_1 = require("react");
10
10
  const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
11
11
  const itwinui_react_1 = require("@itwin/itwinui-react");
12
- const TreeWidget_1 = require("../../../TreeWidget");
13
- const FocusedInstancesContext_1 = require("../common/FocusedInstancesContext");
14
- const ModelsTreeVisibilityHandler_1 = require("./internal/ModelsTreeVisibilityHandler");
12
+ const TreeWidget_js_1 = require("../../../TreeWidget.js");
13
+ const FocusedInstancesContext_js_1 = require("../common/FocusedInstancesContext.js");
14
+ const ModelsTreeVisibilityHandler_js_1 = require("./internal/ModelsTreeVisibilityHandler.js");
15
15
  /**
16
16
  * Custom hook that creates props required to render `ModelsTreeComponent` header button.
17
17
  *
@@ -75,25 +75,25 @@ async function queryModelsForHeaderActions(iModel) {
75
75
  }
76
76
  /** @public */
77
77
  function ShowAllButton(props) {
78
- return ((0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", label: TreeWidget_1.TreeWidget.translate("modelsTree.buttons.showAll.tooltip"), onClick: () => {
78
+ return ((0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", label: TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.showAll.tooltip"), onClick: () => {
79
79
  props.onFeatureUsed?.("models-tree-showall");
80
- void (0, ModelsTreeVisibilityHandler_1.showAllModels)(props.models.map((model) => model.id), props.viewport);
80
+ void (0, ModelsTreeVisibilityHandler_js_1.showAllModels)(props.models.map((model) => model.id), props.viewport);
81
81
  }, children: (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityShow, {}) }));
82
82
  }
83
83
  exports.ShowAllButton = ShowAllButton;
84
84
  /** @public */
85
85
  function HideAllButton(props) {
86
- return ((0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", label: TreeWidget_1.TreeWidget.translate("modelsTree.buttons.hideAll.tooltip"), onClick: () => {
86
+ return ((0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", label: TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.hideAll.tooltip"), onClick: () => {
87
87
  props.onFeatureUsed?.("models-tree-hideall");
88
- void (0, ModelsTreeVisibilityHandler_1.hideAllModels)(props.models.map((model) => model.id), props.viewport);
88
+ void (0, ModelsTreeVisibilityHandler_js_1.hideAllModels)(props.models.map((model) => model.id), props.viewport);
89
89
  }, children: (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityHide, {}) }));
90
90
  }
91
91
  exports.HideAllButton = HideAllButton;
92
92
  /** @public */
93
93
  function InvertButton(props) {
94
- return ((0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", label: TreeWidget_1.TreeWidget.translate("modelsTree.buttons.invert.tooltip"), onClick: () => {
94
+ return ((0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", label: TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.invert.tooltip"), onClick: () => {
95
95
  props.onFeatureUsed?.("models-tree-invert");
96
- void (0, ModelsTreeVisibilityHandler_1.invertAllModels)(props.models.map((model) => model.id), props.viewport);
96
+ void (0, ModelsTreeVisibilityHandler_js_1.invertAllModels)(props.models.map((model) => model.id), props.viewport);
97
97
  }, children: (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityHalf, {}) }));
98
98
  }
99
99
  exports.InvertButton = InvertButton;
@@ -104,13 +104,13 @@ function View2DButton(props) {
104
104
  }, [props.models]);
105
105
  const [is2dToggleActive, setIs2dToggleActive] = (0, react_1.useState)(false);
106
106
  (0, react_1.useEffect)(() => {
107
- setIs2dToggleActive((0, ModelsTreeVisibilityHandler_1.areAllModelsVisible)(models2d, props.viewport));
108
- return props.viewport.onViewedModelsChanged.addListener((vp) => setIs2dToggleActive((0, ModelsTreeVisibilityHandler_1.areAllModelsVisible)(models2d, vp)));
107
+ setIs2dToggleActive((0, ModelsTreeVisibilityHandler_js_1.areAllModelsVisible)(models2d, props.viewport));
108
+ return props.viewport.onViewedModelsChanged.addListener((vp) => setIs2dToggleActive((0, ModelsTreeVisibilityHandler_js_1.areAllModelsVisible)(models2d, vp)));
109
109
  }, [models2d, props.viewport]);
110
- return ((0, jsx_runtime_1.jsx)(itwinui_react_1.Tooltip, { content: TreeWidget_1.TreeWidget.translate("modelsTree.buttons.toggle2d.tooltip"), children: (0, jsx_runtime_1.jsx)(itwinui_react_1.Button, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", onClick: () => {
110
+ return ((0, jsx_runtime_1.jsx)(itwinui_react_1.Tooltip, { content: TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.toggle2d.tooltip"), children: (0, jsx_runtime_1.jsx)(itwinui_react_1.Button, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", onClick: () => {
111
111
  props.onFeatureUsed?.("models-tree-view2d");
112
- void (0, ModelsTreeVisibilityHandler_1.toggleModels)(models2d, is2dToggleActive, props.viewport);
113
- }, disabled: models2d.length === 0, endIcon: is2dToggleActive ? (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityShow, {}) : (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityHide, {}), children: TreeWidget_1.TreeWidget.translate("modelsTree.buttons.toggle2d.label") }) }));
112
+ void (0, ModelsTreeVisibilityHandler_js_1.toggleModels)(models2d, is2dToggleActive, props.viewport);
113
+ }, disabled: models2d.length === 0, endIcon: is2dToggleActive ? (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityShow, {}) : (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityHide, {}), children: TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.toggle2d.label") }) }));
114
114
  }
115
115
  exports.View2DButton = View2DButton;
116
116
  /** @public */
@@ -120,21 +120,21 @@ function View3DButton(props) {
120
120
  }, [props.models]);
121
121
  const [is3dToggleActive, setIs3dToggleActive] = (0, react_1.useState)(false);
122
122
  (0, react_1.useEffect)(() => {
123
- setIs3dToggleActive((0, ModelsTreeVisibilityHandler_1.areAllModelsVisible)(models3d, props.viewport));
124
- return props.viewport.onViewedModelsChanged.addListener((vp) => setIs3dToggleActive((0, ModelsTreeVisibilityHandler_1.areAllModelsVisible)(models3d, vp)));
123
+ setIs3dToggleActive((0, ModelsTreeVisibilityHandler_js_1.areAllModelsVisible)(models3d, props.viewport));
124
+ return props.viewport.onViewedModelsChanged.addListener((vp) => setIs3dToggleActive((0, ModelsTreeVisibilityHandler_js_1.areAllModelsVisible)(models3d, vp)));
125
125
  }, [models3d, props.viewport]);
126
- return ((0, jsx_runtime_1.jsx)(itwinui_react_1.Tooltip, { content: TreeWidget_1.TreeWidget.translate("modelsTree.buttons.toggle3d.tooltip"), children: (0, jsx_runtime_1.jsx)(itwinui_react_1.Button, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", onClick: () => {
126
+ return ((0, jsx_runtime_1.jsx)(itwinui_react_1.Tooltip, { content: TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.toggle3d.tooltip"), children: (0, jsx_runtime_1.jsx)(itwinui_react_1.Button, { size: props.density === "enlarged" ? "large" : "small", styleType: "borderless", onClick: () => {
127
127
  props.onFeatureUsed?.("models-tree-view3d");
128
- void (0, ModelsTreeVisibilityHandler_1.toggleModels)(models3d, is3dToggleActive, props.viewport);
129
- }, disabled: models3d.length === 0, endIcon: is3dToggleActive ? (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityShow, {}) : (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityHide, {}), children: TreeWidget_1.TreeWidget.translate("modelsTree.buttons.toggle3d.label") }) }));
128
+ void (0, ModelsTreeVisibilityHandler_js_1.toggleModels)(models3d, is3dToggleActive, props.viewport);
129
+ }, disabled: models3d.length === 0, endIcon: is3dToggleActive ? (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityShow, {}) : (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgVisibilityHide, {}), children: TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.toggle3d.label") }) }));
130
130
  }
131
131
  exports.View3DButton = View3DButton;
132
132
  /** @public */
133
133
  function ToggleInstancesFocusButton({ density, onFeatureUsed }) {
134
- const { enabled, toggle } = (0, FocusedInstancesContext_1.useFocusedInstancesContext)();
134
+ const { enabled, toggle } = (0, FocusedInstancesContext_js_1.useFocusedInstancesContext)();
135
135
  const label = enabled
136
- ? TreeWidget_1.TreeWidget.translate("modelsTree.buttons.toggleFocusMode.disable.tooltip")
137
- : TreeWidget_1.TreeWidget.translate("modelsTree.buttons.toggleFocusMode.enable.tooltip");
136
+ ? TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.toggleFocusMode.disable.tooltip")
137
+ : TreeWidget_js_1.TreeWidget.translate("modelsTree.buttons.toggleFocusMode.enable.tooltip");
138
138
  return ((0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { styleType: "borderless", size: density === "enlarged" ? "large" : "small", label: label, onClick: () => {
139
139
  onFeatureUsed?.("models-tree-instancesfocus");
140
140
  toggle();
@@ -1 +1 @@
1
- {"version":3,"file":"ModelsTreeButtons.js","sourceRoot":"","sources":["../../../../../src/components/trees/models-tree/ModelsTreeButtons.tsx"],"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 { useEffect, useMemo, useState } from \"react\";\nimport { SvgCursorClick, SvgVisibilityHalf, SvgVisibilityHide, SvgVisibilityShow } from \"@itwin/itwinui-icons-react\";\nimport { Button, IconButton, Tooltip } from \"@itwin/itwinui-react\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { useFocusedInstancesContext } from \"../common/FocusedInstancesContext\";\nimport { areAllModelsVisible, hideAllModels, invertAllModels, showAllModels, toggleModels } from \"./internal/ModelsTreeVisibilityHandler\";\n\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type { GeometricModel3dProps, ModelQueryParams } from \"@itwin/core-common\";\nimport type { IModelConnection, Viewport } from \"@itwin/core-frontend\";\nimport type { TreeHeaderButtonProps } from \"../../tree-header/TreeHeader\";\n\n/**\n * Information about a single Model.\n * @public\n */\nexport interface ModelInfo {\n id: string;\n isPlanProjection?: boolean;\n}\n\n/**\n * Props that get passed to `ModelsTreeComponent` header button renderer.\n * @see ModelTreeComponentProps.headerButtons\n * @public\n */\nexport interface ModelsTreeHeaderButtonProps extends TreeHeaderButtonProps {\n /** A list of models available in the iModel. */\n models: ModelInfo[];\n}\n\n/**\n * Custom hook that creates props required to render `ModelsTreeComponent` header button.\n *\n * Example:\n * ```tsx\n * const { buttonProps, onModelsFiltered } = useModelsTreeButtonProps({ imodel, viewport });\n * <TreeWithHeader\n * buttons={[\n * <ModelsTreeComponent.ShowAllButton {...buttonProps} />,\n * <ModelsTreeComponent.HideAllButton {...buttonProps} />,\n * ]}\n * >\n * <ModelsTree {...treeProps} onModelsFiltered={onModelsFiltered} />\n * </TreeWithHeader>\n * ```\n *\n *\n * @public\n */\nexport function useModelsTreeButtonProps({ imodel, viewport }: { imodel: IModelConnection; viewport: Viewport }): {\n buttonProps: Pick<ModelsTreeHeaderButtonProps, \"models\" | \"viewport\">;\n onModelsFiltered: (models: Id64String[] | undefined) => void;\n} {\n const [filteredModels, setFilteredModels] = useState<Id64String[] | undefined>();\n const models = useAvailableModels(imodel);\n const availableModels = useMemo(() => (!filteredModels ? models : models.filter((model) => filteredModels.includes(model.id))), [models, filteredModels]);\n return {\n buttonProps: {\n models: availableModels,\n viewport,\n },\n onModelsFiltered: setFilteredModels,\n };\n}\n\nfunction useAvailableModels(imodel: IModelConnection): ModelInfo[] {\n const [availableModels, setAvailableModels] = useState<ModelInfo[]>([]);\n\n useEffect(() => {\n queryModelsForHeaderActions(imodel)\n .then((modelInfos: ModelInfo[]) => {\n setAvailableModels(modelInfos);\n })\n .catch(() => {\n setAvailableModels([]);\n });\n }, [imodel]);\n\n return availableModels;\n}\n\nasync function queryModelsForHeaderActions(iModel: IModelConnection) {\n const queryParams: ModelQueryParams = {\n from: \"BisCore.GeometricModel3d\",\n where: `\n EXISTS (\n SELECT 1\n FROM BisCore.Element e\n WHERE e.ECClassId IS (BisCore.GeometricElement3d, BisCore.InformationPartitionElement)\n AND e.ECInstanceId = GeometricModel3d.ModeledElement.Id\n )\n `,\n wantPrivate: false,\n };\n\n const modelProps = await iModel.models.queryProps(queryParams);\n return modelProps.map(({ id, isPlanProjection }: GeometricModel3dProps) => ({ id, isPlanProjection })).filter(({ id }) => id) as ModelInfo[];\n}\n\n/** @public */\nexport type ModelsTreeHeaderButtonType = (props: ModelsTreeHeaderButtonProps) => JSX.Element | null;\n\n/** @public */\nexport function ShowAllButton(props: ModelsTreeHeaderButtonProps) {\n return (\n <IconButton\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n label={TreeWidget.translate(\"modelsTree.buttons.showAll.tooltip\")}\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-showall\");\n void showAllModels(\n props.models.map((model) => model.id),\n props.viewport,\n );\n }}\n >\n <SvgVisibilityShow />\n </IconButton>\n );\n}\n\n/** @public */\nexport function HideAllButton(props: ModelsTreeHeaderButtonProps) {\n return (\n <IconButton\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n label={TreeWidget.translate(\"modelsTree.buttons.hideAll.tooltip\")}\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-hideall\");\n void hideAllModels(\n props.models.map((model) => model.id),\n props.viewport,\n );\n }}\n >\n <SvgVisibilityHide />\n </IconButton>\n );\n}\n\n/** @public */\nexport function InvertButton(props: ModelsTreeHeaderButtonProps) {\n return (\n <IconButton\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n label={TreeWidget.translate(\"modelsTree.buttons.invert.tooltip\")}\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-invert\");\n void invertAllModels(\n props.models.map((model) => model.id),\n props.viewport,\n );\n }}\n >\n <SvgVisibilityHalf />\n </IconButton>\n );\n}\n\n/** @public */\nexport function View2DButton(props: ModelsTreeHeaderButtonProps) {\n const models2d = useMemo(() => {\n return props.models.filter((model) => model.isPlanProjection).map((model) => model.id);\n }, [props.models]);\n\n const [is2dToggleActive, setIs2dToggleActive] = useState(false);\n\n useEffect(() => {\n setIs2dToggleActive(areAllModelsVisible(models2d, props.viewport));\n return props.viewport.onViewedModelsChanged.addListener((vp: Viewport) => setIs2dToggleActive(areAllModelsVisible(models2d, vp)));\n }, [models2d, props.viewport]);\n\n return (\n <Tooltip content={TreeWidget.translate(\"modelsTree.buttons.toggle2d.tooltip\")}>\n <Button\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-view2d\");\n void toggleModels(models2d, is2dToggleActive, props.viewport);\n }}\n disabled={models2d.length === 0}\n endIcon={is2dToggleActive ? <SvgVisibilityShow /> : <SvgVisibilityHide />}\n >\n {TreeWidget.translate(\"modelsTree.buttons.toggle2d.label\")}\n </Button>\n </Tooltip>\n );\n}\n\n/** @public */\nexport function View3DButton(props: ModelsTreeHeaderButtonProps) {\n const models3d = useMemo(() => {\n return props.models.filter((model) => !model.isPlanProjection).map((model) => model.id);\n }, [props.models]);\n\n const [is3dToggleActive, setIs3dToggleActive] = useState(false);\n\n useEffect(() => {\n setIs3dToggleActive(areAllModelsVisible(models3d, props.viewport));\n return props.viewport.onViewedModelsChanged.addListener((vp: Viewport) => setIs3dToggleActive(areAllModelsVisible(models3d, vp)));\n }, [models3d, props.viewport]);\n\n return (\n <Tooltip content={TreeWidget.translate(\"modelsTree.buttons.toggle3d.tooltip\")}>\n <Button\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-view3d\");\n void toggleModels(models3d, is3dToggleActive, props.viewport);\n }}\n disabled={models3d.length === 0}\n endIcon={is3dToggleActive ? <SvgVisibilityShow /> : <SvgVisibilityHide />}\n >\n {TreeWidget.translate(\"modelsTree.buttons.toggle3d.label\")}\n </Button>\n </Tooltip>\n );\n}\n\n/** @public */\nexport function ToggleInstancesFocusButton({ density, onFeatureUsed }: { density?: \"default\" | \"enlarged\"; onFeatureUsed?: (feature: string) => void }) {\n const { enabled, toggle } = useFocusedInstancesContext();\n const label = enabled\n ? TreeWidget.translate(\"modelsTree.buttons.toggleFocusMode.disable.tooltip\")\n : TreeWidget.translate(\"modelsTree.buttons.toggleFocusMode.enable.tooltip\");\n return (\n <IconButton\n styleType=\"borderless\"\n size={density === \"enlarged\" ? \"large\" : \"small\"}\n label={label}\n onClick={() => {\n onFeatureUsed?.(\"models-tree-instancesfocus\");\n toggle();\n }}\n isActive={enabled}\n >\n <SvgCursorClick />\n </IconButton>\n );\n}\n"]}
1
+ {"version":3,"file":"ModelsTreeButtons.js","sourceRoot":"","sources":["../../../../../src/components/trees/models-tree/ModelsTreeButtons.tsx"],"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 { useEffect, useMemo, useState } from \"react\";\nimport { SvgCursorClick, SvgVisibilityHalf, SvgVisibilityHide, SvgVisibilityShow } from \"@itwin/itwinui-icons-react\";\nimport { Button, IconButton, Tooltip } from \"@itwin/itwinui-react\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { useFocusedInstancesContext } from \"../common/FocusedInstancesContext.js\";\nimport { areAllModelsVisible, hideAllModels, invertAllModels, showAllModels, toggleModels } from \"./internal/ModelsTreeVisibilityHandler.js\";\n\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type { GeometricModel3dProps, ModelQueryParams } from \"@itwin/core-common\";\nimport type { IModelConnection, Viewport } from \"@itwin/core-frontend\";\nimport type { TreeHeaderButtonProps } from \"../../tree-header/TreeHeader.js\";\n\n/**\n * Information about a single Model.\n * @public\n */\nexport interface ModelInfo {\n id: string;\n isPlanProjection?: boolean;\n}\n\n/**\n * Props that get passed to `ModelsTreeComponent` header button renderer.\n * @see ModelTreeComponentProps.headerButtons\n * @public\n */\nexport interface ModelsTreeHeaderButtonProps extends TreeHeaderButtonProps {\n /** A list of models available in the iModel. */\n models: ModelInfo[];\n}\n\n/**\n * Custom hook that creates props required to render `ModelsTreeComponent` header button.\n *\n * Example:\n * ```tsx\n * const { buttonProps, onModelsFiltered } = useModelsTreeButtonProps({ imodel, viewport });\n * <TreeWithHeader\n * buttons={[\n * <ModelsTreeComponent.ShowAllButton {...buttonProps} />,\n * <ModelsTreeComponent.HideAllButton {...buttonProps} />,\n * ]}\n * >\n * <ModelsTree {...treeProps} onModelsFiltered={onModelsFiltered} />\n * </TreeWithHeader>\n * ```\n *\n *\n * @public\n */\nexport function useModelsTreeButtonProps({ imodel, viewport }: { imodel: IModelConnection; viewport: Viewport }): {\n buttonProps: Pick<ModelsTreeHeaderButtonProps, \"models\" | \"viewport\">;\n onModelsFiltered: (models: Id64String[] | undefined) => void;\n} {\n const [filteredModels, setFilteredModels] = useState<Id64String[] | undefined>();\n const models = useAvailableModels(imodel);\n const availableModels = useMemo(() => (!filteredModels ? models : models.filter((model) => filteredModels.includes(model.id))), [models, filteredModels]);\n return {\n buttonProps: {\n models: availableModels,\n viewport,\n },\n onModelsFiltered: setFilteredModels,\n };\n}\n\nfunction useAvailableModels(imodel: IModelConnection): ModelInfo[] {\n const [availableModels, setAvailableModels] = useState<ModelInfo[]>([]);\n\n useEffect(() => {\n queryModelsForHeaderActions(imodel)\n .then((modelInfos: ModelInfo[]) => {\n setAvailableModels(modelInfos);\n })\n .catch(() => {\n setAvailableModels([]);\n });\n }, [imodel]);\n\n return availableModels;\n}\n\nasync function queryModelsForHeaderActions(iModel: IModelConnection) {\n const queryParams: ModelQueryParams = {\n from: \"BisCore.GeometricModel3d\",\n where: `\n EXISTS (\n SELECT 1\n FROM BisCore.Element e\n WHERE e.ECClassId IS (BisCore.GeometricElement3d, BisCore.InformationPartitionElement)\n AND e.ECInstanceId = GeometricModel3d.ModeledElement.Id\n )\n `,\n wantPrivate: false,\n };\n\n const modelProps = await iModel.models.queryProps(queryParams);\n return modelProps.map(({ id, isPlanProjection }: GeometricModel3dProps) => ({ id, isPlanProjection })).filter(({ id }) => id) as ModelInfo[];\n}\n\n/** @public */\nexport type ModelsTreeHeaderButtonType = (props: ModelsTreeHeaderButtonProps) => JSX.Element | null;\n\n/** @public */\nexport function ShowAllButton(props: ModelsTreeHeaderButtonProps) {\n return (\n <IconButton\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n label={TreeWidget.translate(\"modelsTree.buttons.showAll.tooltip\")}\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-showall\");\n void showAllModels(\n props.models.map((model) => model.id),\n props.viewport,\n );\n }}\n >\n <SvgVisibilityShow />\n </IconButton>\n );\n}\n\n/** @public */\nexport function HideAllButton(props: ModelsTreeHeaderButtonProps) {\n return (\n <IconButton\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n label={TreeWidget.translate(\"modelsTree.buttons.hideAll.tooltip\")}\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-hideall\");\n void hideAllModels(\n props.models.map((model) => model.id),\n props.viewport,\n );\n }}\n >\n <SvgVisibilityHide />\n </IconButton>\n );\n}\n\n/** @public */\nexport function InvertButton(props: ModelsTreeHeaderButtonProps) {\n return (\n <IconButton\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n label={TreeWidget.translate(\"modelsTree.buttons.invert.tooltip\")}\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-invert\");\n void invertAllModels(\n props.models.map((model) => model.id),\n props.viewport,\n );\n }}\n >\n <SvgVisibilityHalf />\n </IconButton>\n );\n}\n\n/** @public */\nexport function View2DButton(props: ModelsTreeHeaderButtonProps) {\n const models2d = useMemo(() => {\n return props.models.filter((model) => model.isPlanProjection).map((model) => model.id);\n }, [props.models]);\n\n const [is2dToggleActive, setIs2dToggleActive] = useState(false);\n\n useEffect(() => {\n setIs2dToggleActive(areAllModelsVisible(models2d, props.viewport));\n return props.viewport.onViewedModelsChanged.addListener((vp: Viewport) => setIs2dToggleActive(areAllModelsVisible(models2d, vp)));\n }, [models2d, props.viewport]);\n\n return (\n <Tooltip content={TreeWidget.translate(\"modelsTree.buttons.toggle2d.tooltip\")}>\n <Button\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-view2d\");\n void toggleModels(models2d, is2dToggleActive, props.viewport);\n }}\n disabled={models2d.length === 0}\n endIcon={is2dToggleActive ? <SvgVisibilityShow /> : <SvgVisibilityHide />}\n >\n {TreeWidget.translate(\"modelsTree.buttons.toggle2d.label\")}\n </Button>\n </Tooltip>\n );\n}\n\n/** @public */\nexport function View3DButton(props: ModelsTreeHeaderButtonProps) {\n const models3d = useMemo(() => {\n return props.models.filter((model) => !model.isPlanProjection).map((model) => model.id);\n }, [props.models]);\n\n const [is3dToggleActive, setIs3dToggleActive] = useState(false);\n\n useEffect(() => {\n setIs3dToggleActive(areAllModelsVisible(models3d, props.viewport));\n return props.viewport.onViewedModelsChanged.addListener((vp: Viewport) => setIs3dToggleActive(areAllModelsVisible(models3d, vp)));\n }, [models3d, props.viewport]);\n\n return (\n <Tooltip content={TreeWidget.translate(\"modelsTree.buttons.toggle3d.tooltip\")}>\n <Button\n size={props.density === \"enlarged\" ? \"large\" : \"small\"}\n styleType=\"borderless\"\n onClick={() => {\n props.onFeatureUsed?.(\"models-tree-view3d\");\n void toggleModels(models3d, is3dToggleActive, props.viewport);\n }}\n disabled={models3d.length === 0}\n endIcon={is3dToggleActive ? <SvgVisibilityShow /> : <SvgVisibilityHide />}\n >\n {TreeWidget.translate(\"modelsTree.buttons.toggle3d.label\")}\n </Button>\n </Tooltip>\n );\n}\n\n/** @public */\nexport function ToggleInstancesFocusButton({ density, onFeatureUsed }: { density?: \"default\" | \"enlarged\"; onFeatureUsed?: (feature: string) => void }) {\n const { enabled, toggle } = useFocusedInstancesContext();\n const label = enabled\n ? TreeWidget.translate(\"modelsTree.buttons.toggleFocusMode.disable.tooltip\")\n : TreeWidget.translate(\"modelsTree.buttons.toggleFocusMode.enable.tooltip\");\n return (\n <IconButton\n styleType=\"borderless\"\n size={density === \"enlarged\" ? \"large\" : \"small\"}\n label={label}\n onClick={() => {\n onFeatureUsed?.(\"models-tree-instancesfocus\");\n toggle();\n }}\n isActive={enabled}\n >\n <SvgCursorClick />\n </IconButton>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- import type { ModelsTreeProps } from "./ModelsTree";
3
- import type { ModelsTreeHeaderButtonProps, ModelsTreeHeaderButtonType } from "./ModelsTreeButtons";
2
+ import type { ModelsTreeProps } from "./ModelsTree.js";
3
+ import type { ModelsTreeHeaderButtonProps, ModelsTreeHeaderButtonType } from "./ModelsTreeButtons.js";
4
4
  /** @public */
5
5
  interface ModelsTreeComponentProps extends Pick<ModelsTreeProps, "getSchemaContext" | "selectionStorage" | "density" | "hierarchyLevelConfig" | "selectionMode" | "selectionPredicate" | "hierarchyConfig" | "visibilityHandlerOverrides" | "getFilteredPaths"> {
6
6
  /**
@@ -9,15 +9,15 @@ const jsx_runtime_1 = require("react/jsx-runtime");
9
9
  *--------------------------------------------------------------------------------------------*/
10
10
  const react_2 = require("react");
11
11
  const appui_react_1 = require("@itwin/appui-react");
12
- const TreeWidget_1 = require("../../../TreeWidget");
13
- const TreeWithHeader_1 = require("../../tree-header/TreeWithHeader");
14
- const FocusedInstancesContext_1 = require("../common/FocusedInstancesContext");
15
- const FocusedInstancesContextProvider_1 = require("../common/FocusedInstancesContextProvider");
16
- const UseActiveViewport_1 = require("../common/UseActiveViewport");
17
- const UseFiltering_1 = require("../common/UseFiltering");
18
- const UseTelemetryContext_1 = require("../common/UseTelemetryContext");
19
- const ModelsTree_1 = require("./ModelsTree");
20
- const ModelsTreeButtons_1 = require("./ModelsTreeButtons");
12
+ const TreeWidget_js_1 = require("../../../TreeWidget.js");
13
+ const TreeWithHeader_js_1 = require("../../tree-header/TreeWithHeader.js");
14
+ const FocusedInstancesContext_js_1 = require("../common/FocusedInstancesContext.js");
15
+ const FocusedInstancesContextProvider_js_1 = require("../common/FocusedInstancesContextProvider.js");
16
+ const UseActiveViewport_js_1 = require("../common/UseActiveViewport.js");
17
+ const UseFiltering_js_1 = require("../common/UseFiltering.js");
18
+ const UseTelemetryContext_js_1 = require("../common/UseTelemetryContext.js");
19
+ const ModelsTree_js_1 = require("./ModelsTree.js");
20
+ const ModelsTreeButtons_js_1 = require("./ModelsTreeButtons.js");
21
21
  /**
22
22
  * A component that renders `ModelsTree` and a header with filtering capabilities
23
23
  * and header buttons.
@@ -26,43 +26,43 @@ const ModelsTreeButtons_1 = require("./ModelsTreeButtons");
26
26
  */
27
27
  const ModelsTreeComponent = (props) => {
28
28
  const iModel = (0, appui_react_1.useActiveIModelConnection)();
29
- const viewport = (0, UseActiveViewport_1.useActiveViewport)();
29
+ const viewport = (0, UseActiveViewport_js_1.useActiveViewport)();
30
30
  if (!iModel || !viewport) {
31
31
  return null;
32
32
  }
33
- return ((0, jsx_runtime_1.jsx)(FocusedInstancesContextProvider_1.FocusedInstancesContextProvider, { selectionStorage: props.selectionStorage, imodelKey: iModel.key, children: (0, jsx_runtime_1.jsx)(ModelsTreeComponentImpl, { ...props, iModel: iModel, viewport: viewport }) }));
33
+ return ((0, jsx_runtime_1.jsx)(FocusedInstancesContextProvider_js_1.FocusedInstancesContextProvider, { selectionStorage: props.selectionStorage, imodelKey: iModel.key, children: (0, jsx_runtime_1.jsx)(ModelsTreeComponentImpl, { ...props, iModel: iModel, viewport: viewport }) }));
34
34
  };
35
35
  exports.ModelsTreeComponent = ModelsTreeComponent;
36
36
  /**
37
37
  * Renders a "Show all" button that enables display of all models.
38
38
  * @public
39
39
  */
40
- exports.ModelsTreeComponent.ShowAllButton = ModelsTreeButtons_1.ShowAllButton;
40
+ exports.ModelsTreeComponent.ShowAllButton = ModelsTreeButtons_js_1.ShowAllButton;
41
41
  /**
42
42
  * Renders a "Hide all" button that disables display of all models.
43
43
  * @public
44
44
  */
45
- exports.ModelsTreeComponent.HideAllButton = ModelsTreeButtons_1.HideAllButton;
45
+ exports.ModelsTreeComponent.HideAllButton = ModelsTreeButtons_js_1.HideAllButton;
46
46
  /**
47
47
  * Renders an "Invert all" button that inverts display of all models.
48
48
  * @public
49
49
  */
50
- exports.ModelsTreeComponent.InvertButton = ModelsTreeButtons_1.InvertButton;
50
+ exports.ModelsTreeComponent.InvertButton = ModelsTreeButtons_js_1.InvertButton;
51
51
  /**
52
52
  * Renders a "View 2D" button that enables display of all plan projection models and disables all others.
53
53
  * @public
54
54
  */
55
- exports.ModelsTreeComponent.View2DButton = ModelsTreeButtons_1.View2DButton;
55
+ exports.ModelsTreeComponent.View2DButton = ModelsTreeButtons_js_1.View2DButton;
56
56
  /**
57
57
  * Renders a "View 3D" button that enables display of all non-plan projection models and disables all plan projection ones.
58
58
  * @public
59
59
  */
60
- exports.ModelsTreeComponent.View3DButton = ModelsTreeButtons_1.View3DButton;
60
+ exports.ModelsTreeComponent.View3DButton = ModelsTreeButtons_js_1.View3DButton;
61
61
  /**
62
62
  * Renders a "Enable/Disable instances focus" button that enables/disables instances focusing mode.
63
63
  * @public
64
64
  */
65
- exports.ModelsTreeComponent.ToggleInstancesFocusButton = ModelsTreeButtons_1.ToggleInstancesFocusButton;
65
+ exports.ModelsTreeComponent.ToggleInstancesFocusButton = ModelsTreeButtons_js_1.ToggleInstancesFocusButton;
66
66
  /**
67
67
  * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.
68
68
  * @public
@@ -72,31 +72,31 @@ exports.ModelsTreeComponent.id = "models-tree-v2";
72
72
  * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.
73
73
  * @public
74
74
  */
75
- exports.ModelsTreeComponent.getLabel = () => TreeWidget_1.TreeWidget.translate("modelsTree.label");
75
+ exports.ModelsTreeComponent.getLabel = () => TreeWidget_js_1.TreeWidget.translate("modelsTree.label");
76
76
  function ModelsTreeComponentImpl({ iModel, viewport, headerButtons, onFeatureUsed, onPerformanceMeasured, ...treeProps }) {
77
- const { buttonProps, onModelsFiltered } = (0, ModelsTreeButtons_1.useModelsTreeButtonProps)({ imodel: iModel, viewport });
78
- const { filter, applyFilter, clearFilter } = (0, UseFiltering_1.useFiltering)();
79
- const { enabled: instanceFocusEnabled } = (0, FocusedInstancesContext_1.useFocusedInstancesContext)();
77
+ const { buttonProps, onModelsFiltered } = (0, ModelsTreeButtons_js_1.useModelsTreeButtonProps)({ imodel: iModel, viewport });
78
+ const { filter, applyFilter, clearFilter } = (0, UseFiltering_js_1.useFiltering)();
79
+ const { enabled: instanceFocusEnabled } = (0, FocusedInstancesContext_js_1.useFocusedInstancesContext)();
80
80
  const density = treeProps.density;
81
81
  const buttons = headerButtons
82
82
  ? headerButtons.map((btn, index) => (0, jsx_runtime_1.jsx)(react_2.Fragment, { children: btn({ ...buttonProps, onFeatureUsed }) }, index))
83
83
  : [
84
- (0, react_1.createElement)(ModelsTreeButtons_1.ShowAllButton, { ...buttonProps, key: "show-all-btn", density: density, onFeatureUsed: onFeatureUsed }),
85
- (0, react_1.createElement)(ModelsTreeButtons_1.HideAllButton, { ...buttonProps, key: "hide-all-btn", density: density, onFeatureUsed: onFeatureUsed }),
86
- (0, react_1.createElement)(ModelsTreeButtons_1.InvertButton, { ...buttonProps, key: "invert-all-btn", density: density, onFeatureUsed: onFeatureUsed }),
87
- (0, react_1.createElement)(ModelsTreeButtons_1.View2DButton, { ...buttonProps, key: "view-2d-btn", density: density, onFeatureUsed: onFeatureUsed }),
88
- (0, react_1.createElement)(ModelsTreeButtons_1.View3DButton, { ...buttonProps, key: "view-3d-btn", density: density, onFeatureUsed: onFeatureUsed }),
89
- (0, jsx_runtime_1.jsx)(ModelsTreeButtons_1.ToggleInstancesFocusButton, { density: density, onFeatureUsed: onFeatureUsed }, "toggle-instances-focus-btn"),
84
+ (0, react_1.createElement)(ModelsTreeButtons_js_1.ShowAllButton, { ...buttonProps, key: "show-all-btn", density: density, onFeatureUsed: onFeatureUsed }),
85
+ (0, react_1.createElement)(ModelsTreeButtons_js_1.HideAllButton, { ...buttonProps, key: "hide-all-btn", density: density, onFeatureUsed: onFeatureUsed }),
86
+ (0, react_1.createElement)(ModelsTreeButtons_js_1.InvertButton, { ...buttonProps, key: "invert-all-btn", density: density, onFeatureUsed: onFeatureUsed }),
87
+ (0, react_1.createElement)(ModelsTreeButtons_js_1.View2DButton, { ...buttonProps, key: "view-2d-btn", density: density, onFeatureUsed: onFeatureUsed }),
88
+ (0, react_1.createElement)(ModelsTreeButtons_js_1.View3DButton, { ...buttonProps, key: "view-3d-btn", density: density, onFeatureUsed: onFeatureUsed }),
89
+ (0, jsx_runtime_1.jsx)(ModelsTreeButtons_js_1.ToggleInstancesFocusButton, { density: density, onFeatureUsed: onFeatureUsed }, "toggle-instances-focus-btn"),
90
90
  ];
91
91
  (0, react_2.useEffect)(() => {
92
92
  if (instanceFocusEnabled) {
93
93
  clearFilter();
94
94
  }
95
95
  }, [instanceFocusEnabled, clearFilter]);
96
- return ((0, jsx_runtime_1.jsx)(UseTelemetryContext_1.TelemetryContextProvider, { componentIdentifier: exports.ModelsTreeComponent.id, onFeatureUsed: onFeatureUsed, onPerformanceMeasured: onPerformanceMeasured, children: (0, jsx_runtime_1.jsx)(TreeWithHeader_1.TreeWithHeader, { filteringProps: {
96
+ return ((0, jsx_runtime_1.jsx)(UseTelemetryContext_js_1.TelemetryContextProvider, { componentIdentifier: exports.ModelsTreeComponent.id, onFeatureUsed: onFeatureUsed, onPerformanceMeasured: onPerformanceMeasured, children: (0, jsx_runtime_1.jsx)(TreeWithHeader_js_1.TreeWithHeader, { filteringProps: {
97
97
  onFilterStart: applyFilter,
98
98
  onFilterClear: clearFilter,
99
99
  isDisabled: instanceFocusEnabled || !!treeProps.getFilteredPaths,
100
- }, buttons: buttons, density: density, children: (0, jsx_runtime_1.jsx)(ModelsTree_1.ModelsTree, { ...treeProps, imodel: iModel, activeView: viewport, filter: filter, onModelsFiltered: onModelsFiltered }) }) }));
100
+ }, buttons: buttons, density: density, children: (0, jsx_runtime_1.jsx)(ModelsTree_js_1.ModelsTree, { ...treeProps, imodel: iModel, activeView: viewport, filter: filter, onModelsFiltered: onModelsFiltered }) }) }));
101
101
  }
102
102
  //# sourceMappingURL=ModelsTreeComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelsTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/models-tree/ModelsTreeComponent.tsx"],"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 { Fragment, useEffect } from \"react\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { TreeWithHeader } from \"../../tree-header/TreeWithHeader\";\nimport { useFocusedInstancesContext } from \"../common/FocusedInstancesContext\";\nimport { FocusedInstancesContextProvider } from \"../common/FocusedInstancesContextProvider\";\nimport { useActiveViewport } from \"../common/UseActiveViewport\";\nimport { useFiltering } from \"../common/UseFiltering\";\nimport { TelemetryContextProvider } from \"../common/UseTelemetryContext\";\nimport { ModelsTree } from \"./ModelsTree\";\nimport {\n HideAllButton,\n InvertButton,\n ShowAllButton,\n ToggleInstancesFocusButton,\n useModelsTreeButtonProps,\n View2DButton,\n View3DButton,\n} from \"./ModelsTreeButtons\";\n\nimport type { ModelsTreeProps } from \"./ModelsTree\";\nimport type { ReactNode } from \"react\";\nimport type { IModelConnection, ScreenViewport } from \"@itwin/core-frontend\";\nimport type { ModelsTreeHeaderButtonProps, ModelsTreeHeaderButtonType } from \"./ModelsTreeButtons\";\n\n/** @public */\ninterface ModelsTreeComponentProps\n extends Pick<\n ModelsTreeProps,\n | \"getSchemaContext\"\n | \"selectionStorage\"\n | \"density\"\n | \"hierarchyLevelConfig\"\n | \"selectionMode\"\n | \"selectionPredicate\"\n | \"hierarchyConfig\"\n | \"visibilityHandlerOverrides\"\n | \"getFilteredPaths\"\n > {\n /**\n * Renderers of header buttons. Defaults to:\n * ```ts\n * [\n * ModelsTreeComponent.ShowAllButton,\n * ModelsTreeComponent.HideAllButton,\n * ModelsTreeComponent.InvertButton,\n * ModelsTreeComponent.View2DButton,\n * ModelsTreeComponent.View3DButton,\n * ModelsTreeComponent.ToggleInstancesFocusButton,\n * ]\n * ```\n */\n headerButtons?: Array<(props: ModelsTreeHeaderButtonProps) => React.ReactNode>;\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders `ModelsTree` and a header with filtering capabilities\n * and header buttons.\n *\n * @public\n */\nexport const ModelsTreeComponent = (props: ModelsTreeComponentProps) => {\n const iModel = useActiveIModelConnection();\n const viewport = useActiveViewport();\n\n if (!iModel || !viewport) {\n return null;\n }\n\n return (\n <FocusedInstancesContextProvider selectionStorage={props.selectionStorage} imodelKey={iModel.key}>\n <ModelsTreeComponentImpl {...props} iModel={iModel} viewport={viewport} />\n </FocusedInstancesContextProvider>\n );\n};\n\n/**\n * Renders a \"Show all\" button that enables display of all models.\n * @public\n */\nModelsTreeComponent.ShowAllButton = ShowAllButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders a \"Hide all\" button that disables display of all models.\n * @public\n */\nModelsTreeComponent.HideAllButton = HideAllButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders an \"Invert all\" button that inverts display of all models.\n * @public\n */\nModelsTreeComponent.InvertButton = InvertButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders a \"View 2D\" button that enables display of all plan projection models and disables all others.\n * @public\n */\nModelsTreeComponent.View2DButton = View2DButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders a \"View 3D\" button that enables display of all non-plan projection models and disables all plan projection ones.\n * @public\n */\nModelsTreeComponent.View3DButton = View3DButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders a \"Enable/Disable instances focus\" button that enables/disables instances focusing mode.\n * @public\n */\nModelsTreeComponent.ToggleInstancesFocusButton = ToggleInstancesFocusButton as ModelsTreeHeaderButtonType;\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @public\n */\nModelsTreeComponent.id = \"models-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @public\n */\nModelsTreeComponent.getLabel = () => TreeWidget.translate(\"modelsTree.label\");\n\nfunction ModelsTreeComponentImpl({\n iModel,\n viewport,\n headerButtons,\n onFeatureUsed,\n onPerformanceMeasured,\n ...treeProps\n}: ModelsTreeComponentProps & { iModel: IModelConnection; viewport: ScreenViewport }) {\n const { buttonProps, onModelsFiltered } = useModelsTreeButtonProps({ imodel: iModel, viewport });\n const { filter, applyFilter, clearFilter } = useFiltering();\n const { enabled: instanceFocusEnabled } = useFocusedInstancesContext();\n const density = treeProps.density;\n\n const buttons: ReactNode = headerButtons\n ? headerButtons.map((btn, index) => <Fragment key={index}>{btn({ ...buttonProps, onFeatureUsed })}</Fragment>)\n : [\n <ShowAllButton {...buttonProps} key=\"show-all-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <HideAllButton {...buttonProps} key=\"hide-all-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <InvertButton {...buttonProps} key=\"invert-all-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <View2DButton {...buttonProps} key=\"view-2d-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <View3DButton {...buttonProps} key=\"view-3d-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <ToggleInstancesFocusButton key=\"toggle-instances-focus-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n ];\n\n useEffect(() => {\n if (instanceFocusEnabled) {\n clearFilter();\n }\n }, [instanceFocusEnabled, clearFilter]);\n\n return (\n <TelemetryContextProvider componentIdentifier={ModelsTreeComponent.id} onFeatureUsed={onFeatureUsed} onPerformanceMeasured={onPerformanceMeasured}>\n <TreeWithHeader\n filteringProps={{\n onFilterStart: applyFilter,\n onFilterClear: clearFilter,\n isDisabled: instanceFocusEnabled || !!treeProps.getFilteredPaths,\n }}\n buttons={buttons}\n density={density}\n >\n <ModelsTree {...treeProps} imodel={iModel} activeView={viewport} filter={filter} onModelsFiltered={onModelsFiltered} />\n </TreeWithHeader>\n </TelemetryContextProvider>\n );\n}\n"]}
1
+ {"version":3,"file":"ModelsTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/models-tree/ModelsTreeComponent.tsx"],"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 { Fragment, useEffect } from \"react\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { TreeWithHeader } from \"../../tree-header/TreeWithHeader.js\";\nimport { useFocusedInstancesContext } from \"../common/FocusedInstancesContext.js\";\nimport { FocusedInstancesContextProvider } from \"../common/FocusedInstancesContextProvider.js\";\nimport { useActiveViewport } from \"../common/UseActiveViewport.js\";\nimport { useFiltering } from \"../common/UseFiltering.js\";\nimport { TelemetryContextProvider } from \"../common/UseTelemetryContext.js\";\nimport { ModelsTree } from \"./ModelsTree.js\";\nimport {\n HideAllButton, InvertButton, ShowAllButton, ToggleInstancesFocusButton, useModelsTreeButtonProps, View2DButton, View3DButton,\n} from \"./ModelsTreeButtons.js\";\n\nimport type { ModelsTreeProps } from \"./ModelsTree.js\";\nimport type { ReactNode } from \"react\";\nimport type { IModelConnection, ScreenViewport } from \"@itwin/core-frontend\";\nimport type { ModelsTreeHeaderButtonProps, ModelsTreeHeaderButtonType } from \"./ModelsTreeButtons.js\";\n\n/** @public */\ninterface ModelsTreeComponentProps\n extends Pick<\n ModelsTreeProps,\n | \"getSchemaContext\"\n | \"selectionStorage\"\n | \"density\"\n | \"hierarchyLevelConfig\"\n | \"selectionMode\"\n | \"selectionPredicate\"\n | \"hierarchyConfig\"\n | \"visibilityHandlerOverrides\"\n | \"getFilteredPaths\"\n > {\n /**\n * Renderers of header buttons. Defaults to:\n * ```ts\n * [\n * ModelsTreeComponent.ShowAllButton,\n * ModelsTreeComponent.HideAllButton,\n * ModelsTreeComponent.InvertButton,\n * ModelsTreeComponent.View2DButton,\n * ModelsTreeComponent.View3DButton,\n * ModelsTreeComponent.ToggleInstancesFocusButton,\n * ]\n * ```\n */\n headerButtons?: Array<(props: ModelsTreeHeaderButtonProps) => React.ReactNode>;\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders `ModelsTree` and a header with filtering capabilities\n * and header buttons.\n *\n * @public\n */\nexport const ModelsTreeComponent = (props: ModelsTreeComponentProps) => {\n const iModel = useActiveIModelConnection();\n const viewport = useActiveViewport();\n\n if (!iModel || !viewport) {\n return null;\n }\n\n return (\n <FocusedInstancesContextProvider selectionStorage={props.selectionStorage} imodelKey={iModel.key}>\n <ModelsTreeComponentImpl {...props} iModel={iModel} viewport={viewport} />\n </FocusedInstancesContextProvider>\n );\n};\n\n/**\n * Renders a \"Show all\" button that enables display of all models.\n * @public\n */\nModelsTreeComponent.ShowAllButton = ShowAllButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders a \"Hide all\" button that disables display of all models.\n * @public\n */\nModelsTreeComponent.HideAllButton = HideAllButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders an \"Invert all\" button that inverts display of all models.\n * @public\n */\nModelsTreeComponent.InvertButton = InvertButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders a \"View 2D\" button that enables display of all plan projection models and disables all others.\n * @public\n */\nModelsTreeComponent.View2DButton = View2DButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders a \"View 3D\" button that enables display of all non-plan projection models and disables all plan projection ones.\n * @public\n */\nModelsTreeComponent.View3DButton = View3DButton as ModelsTreeHeaderButtonType;\n\n/**\n * Renders a \"Enable/Disable instances focus\" button that enables/disables instances focusing mode.\n * @public\n */\nModelsTreeComponent.ToggleInstancesFocusButton = ToggleInstancesFocusButton as ModelsTreeHeaderButtonType;\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @public\n */\nModelsTreeComponent.id = \"models-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @public\n */\nModelsTreeComponent.getLabel = () => TreeWidget.translate(\"modelsTree.label\");\n\nfunction ModelsTreeComponentImpl({\n iModel,\n viewport,\n headerButtons,\n onFeatureUsed,\n onPerformanceMeasured,\n ...treeProps\n}: ModelsTreeComponentProps & { iModel: IModelConnection; viewport: ScreenViewport }) {\n const { buttonProps, onModelsFiltered } = useModelsTreeButtonProps({ imodel: iModel, viewport });\n const { filter, applyFilter, clearFilter } = useFiltering();\n const { enabled: instanceFocusEnabled } = useFocusedInstancesContext();\n const density = treeProps.density;\n\n const buttons: ReactNode = headerButtons\n ? headerButtons.map((btn, index) => <Fragment key={index}>{btn({ ...buttonProps, onFeatureUsed })}</Fragment>)\n : [\n <ShowAllButton {...buttonProps} key=\"show-all-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <HideAllButton {...buttonProps} key=\"hide-all-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <InvertButton {...buttonProps} key=\"invert-all-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <View2DButton {...buttonProps} key=\"view-2d-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <View3DButton {...buttonProps} key=\"view-3d-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n <ToggleInstancesFocusButton key=\"toggle-instances-focus-btn\" density={density} onFeatureUsed={onFeatureUsed} />,\n ];\n\n useEffect(() => {\n if (instanceFocusEnabled) {\n clearFilter();\n }\n }, [instanceFocusEnabled, clearFilter]);\n\n return (\n <TelemetryContextProvider componentIdentifier={ModelsTreeComponent.id} onFeatureUsed={onFeatureUsed} onPerformanceMeasured={onPerformanceMeasured}>\n <TreeWithHeader\n filteringProps={{\n onFilterStart: applyFilter,\n onFilterClear: clearFilter,\n isDisabled: instanceFocusEnabled || !!treeProps.getFilteredPaths,\n }}\n buttons={buttons}\n density={density}\n >\n <ModelsTree {...treeProps} imodel={iModel} activeView={viewport} filter={filter} onModelsFiltered={onModelsFiltered} />\n </TreeWithHeader>\n </TelemetryContextProvider>\n );\n}\n"]}
@@ -2,7 +2,7 @@ import { ProcessedHierarchyNode } from "@itwin/presentation-hierarchies";
2
2
  import type { Id64String } from "@itwin/core-bentley";
3
3
  import type { ECClassHierarchyInspector, ECSchemaProvider, InstanceKey } from "@itwin/presentation-shared";
4
4
  import type { ClassGroupingNodeKey, DefineHierarchyLevelProps, GroupingHierarchyNode, HierarchyDefinition, HierarchyLevelDefinition, LimitingECSqlQueryExecutor } from "@itwin/presentation-hierarchies";
5
- import type { ModelsTreeIdsCache } from "./internal/ModelsTreeIdsCache";
5
+ import type { ModelsTreeIdsCache } from "./internal/ModelsTreeIdsCache.js";
6
6
  /** @beta */
7
7
  export type ClassGroupingHierarchyNode = GroupingHierarchyNode & {
8
8
  key: ClassGroupingNodeKey;
@@ -8,10 +8,10 @@ exports.ModelsTreeDefinition = exports.ModelsTreeInstanceKeyPathsProps = exports
8
8
  const rxjs_1 = require("rxjs");
9
9
  const presentation_hierarchies_1 = require("@itwin/presentation-hierarchies");
10
10
  const presentation_shared_1 = require("@itwin/presentation-shared");
11
- const Rxjs_1 = require("../common/Rxjs");
12
- const TreeErrors_1 = require("../common/TreeErrors");
13
- const Utils_1 = require("../common/Utils");
14
- const Utils_2 = require("./Utils");
11
+ const Rxjs_js_1 = require("../common/Rxjs.js");
12
+ const TreeErrors_js_1 = require("../common/TreeErrors.js");
13
+ const Utils_js_1 = require("../common/Utils.js");
14
+ const Utils_js_2 = require("./Utils.js");
15
15
  const MAX_FILTERING_INSTANCE_KEY_COUNT = 100;
16
16
  exports.defaultHierarchyConfiguration = {
17
17
  elementClassGrouping: "enable",
@@ -291,7 +291,7 @@ class ModelsTreeDefinition {
291
291
  extendedData: {
292
292
  imageId: "icon-layers",
293
293
  isCategory: true,
294
- modelIds: { selector: (0, Utils_1.createIdsSelector)(modelIds) },
294
+ modelIds: { selector: (0, Utils_js_1.createIdsSelector)(modelIds) },
295
295
  },
296
296
  supportsFiltering: true,
297
297
  })}
@@ -314,7 +314,7 @@ class ModelsTreeDefinition {
314
314
  ];
315
315
  }
316
316
  async createSpatialCategoryChildrenQuery({ parentNodeInstanceIds: categoryIds, parentNode, instanceFilter, }) {
317
- const modelIds = (0, Utils_1.parseIdsSelectorResult)(parentNode.extendedData?.modelIds);
317
+ const modelIds = (0, Utils_js_1.parseIdsSelectorResult)(parentNode.extendedData?.modelIds);
318
318
  if (modelIds.length === 0) {
319
319
  throw new Error(`Invalid category node "${parentNode.label}" - missing model information.`);
320
320
  }
@@ -521,7 +521,7 @@ function createGeometricElementInstanceKeyPaths(imodelAccess, idsCache, hierarch
521
521
  WHERE mce.ParentId IS NULL
522
522
  `;
523
523
  return imodelAccess.createQueryReader({ ctes, ecsql }, { rowFormat: "Indexes", limit: "unbounded" });
524
- }).pipe((0, Utils_2.releaseMainThreadOnItemsCount)(300), (0, rxjs_1.map)((row) => parseQueryRow(row, groupInfos, separator, hierarchyConfig.elementClassSpecification)), (0, rxjs_1.mergeMap)(({ modelId, elementHierarchyPath, groupingNode }) => (0, rxjs_1.from)(idsCache.createModelInstanceKeyPaths(modelId)).pipe((0, rxjs_1.mergeAll)(), (0, rxjs_1.map)((modelPath) => {
524
+ }).pipe((0, Utils_js_2.releaseMainThreadOnItemsCount)(300), (0, rxjs_1.map)((row) => parseQueryRow(row, groupInfos, separator, hierarchyConfig.elementClassSpecification)), (0, rxjs_1.mergeMap)(({ modelId, elementHierarchyPath, groupingNode }) => (0, rxjs_1.from)(idsCache.createModelInstanceKeyPaths(modelId)).pipe((0, rxjs_1.mergeAll)(), (0, rxjs_1.map)((modelPath) => {
525
525
  // We dont want to modify the original path, we create a copy that we can modify
526
526
  const newModelPath = [...modelPath];
527
527
  newModelPath.pop(); // model is already included in the element hierarchy path
@@ -564,9 +564,9 @@ function parseQueryRow(row, groupInfos, separator, elementClassName) {
564
564
  }
565
565
  async function createInstanceKeyPathsFromTargetItems({ targetItems, imodelAccess, hierarchyConfig, idsCache, limit, }) {
566
566
  if (limit !== "unbounded" && targetItems.length > (limit ?? MAX_FILTERING_INSTANCE_KEY_COUNT)) {
567
- throw new TreeErrors_1.FilterLimitExceededError(limit ?? MAX_FILTERING_INSTANCE_KEY_COUNT);
567
+ throw new TreeErrors_js_1.FilterLimitExceededError(limit ?? MAX_FILTERING_INSTANCE_KEY_COUNT);
568
568
  }
569
- return (0, rxjs_1.lastValueFrom)((0, rxjs_1.from)(targetItems).pipe((0, Utils_2.releaseMainThreadOnItemsCount)(2000), (0, rxjs_1.mergeMap)(async (key) => {
569
+ return (0, rxjs_1.lastValueFrom)((0, rxjs_1.from)(targetItems).pipe((0, Utils_js_2.releaseMainThreadOnItemsCount)(2000), (0, rxjs_1.mergeMap)(async (key) => {
570
570
  if ("parent" in key) {
571
571
  return { key, type: 0 };
572
572
  }
@@ -602,7 +602,7 @@ async function createInstanceKeyPathsFromTargetItems({ targetItems, imodelAccess
602
602
  elements: new Array(),
603
603
  }), (0, rxjs_1.switchMap)(async (ids) => {
604
604
  const elementsLength = ids.elements.length;
605
- return (0, Rxjs_1.collect)((0, rxjs_1.merge)((0, rxjs_1.from)(ids.subjects).pipe((0, rxjs_1.mergeMap)((id) => (0, rxjs_1.from)(idsCache.createSubjectInstanceKeysPath(id)))), (0, rxjs_1.from)(ids.models).pipe((0, rxjs_1.mergeMap)((id) => (0, rxjs_1.from)(idsCache.createModelInstanceKeyPaths(id)).pipe((0, rxjs_1.mergeAll)()))), (0, rxjs_1.from)(ids.categories).pipe((0, rxjs_1.mergeMap)((id) => (0, rxjs_1.from)(idsCache.createCategoryInstanceKeyPaths(id)).pipe((0, rxjs_1.mergeAll)()))), (0, rxjs_1.from)(ids.elements).pipe((0, rxjs_1.bufferCount)(Math.ceil(elementsLength / Math.ceil(elementsLength / 5000))), (0, Utils_2.releaseMainThreadOnItemsCount)(1), (0, rxjs_1.mergeMap)((block) => createGeometricElementInstanceKeyPaths(imodelAccess, idsCache, hierarchyConfig, block), 10))));
605
+ return (0, Rxjs_js_1.collect)((0, rxjs_1.merge)((0, rxjs_1.from)(ids.subjects).pipe((0, rxjs_1.mergeMap)((id) => (0, rxjs_1.from)(idsCache.createSubjectInstanceKeysPath(id)))), (0, rxjs_1.from)(ids.models).pipe((0, rxjs_1.mergeMap)((id) => (0, rxjs_1.from)(idsCache.createModelInstanceKeyPaths(id)).pipe((0, rxjs_1.mergeAll)()))), (0, rxjs_1.from)(ids.categories).pipe((0, rxjs_1.mergeMap)((id) => (0, rxjs_1.from)(idsCache.createCategoryInstanceKeyPaths(id)).pipe((0, rxjs_1.mergeAll)()))), (0, rxjs_1.from)(ids.elements).pipe((0, rxjs_1.bufferCount)(Math.ceil(elementsLength / Math.ceil(elementsLength / 5000))), (0, Utils_js_2.releaseMainThreadOnItemsCount)(1), (0, rxjs_1.mergeMap)((block) => createGeometricElementInstanceKeyPaths(imodelAccess, idsCache, hierarchyConfig, block), 10))));
606
606
  })));
607
607
  }
608
608
  async function createInstanceKeyPathsFromInstanceLabel(props) {