@itwin/appui-react 4.3.1 → 4.5.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 (302) hide show
  1. package/CHANGELOG.md +22 -4
  2. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  3. package/lib/cjs/appui-react/UiFramework.js +14 -16
  4. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  5. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +1 -2
  6. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  7. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +1 -1
  8. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  9. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  10. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  11. package/lib/cjs/appui-react/configurableui/TimeTracker.js +1 -2
  12. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  13. package/lib/cjs/appui-react/content/ContentLayout.js +9 -12
  14. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  15. package/lib/cjs/appui-react/content/DefaultViewOverlay.js +3 -4
  16. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  17. package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -2
  18. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  19. package/lib/cjs/appui-react/content/IModelViewport.js +3 -6
  20. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  21. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +1 -2
  22. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  23. package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
  24. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  25. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +10 -12
  26. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  27. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts +1 -1
  28. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  29. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +6 -6
  30. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  31. package/lib/cjs/appui-react/dialog/ContentDialog.js +3 -6
  32. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  33. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -3
  34. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  35. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +5 -7
  36. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  37. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +2 -3
  38. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  39. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
  40. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  41. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
  42. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  43. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
  44. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  45. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +8 -13
  46. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  47. package/lib/cjs/appui-react/messages/ActivityMessage.js +5 -7
  48. package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
  49. package/lib/cjs/appui-react/pickers/ViewSelector.js +5 -6
  50. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  51. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +1 -2
  52. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  53. package/lib/cjs/appui-react/popup/PopupManager.js +1 -2
  54. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  55. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.d.ts.map +1 -1
  56. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +3 -0
  57. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  58. package/lib/cjs/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  59. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +12 -8
  60. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  61. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
  62. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  63. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +5 -7
  64. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  65. package/lib/cjs/appui-react/statusbar/Indicator.js +1 -2
  66. package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
  67. package/lib/cjs/appui-react/statusbar/StatusBar.js +3 -5
  68. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  69. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  70. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  71. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -4
  72. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  73. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +49 -78
  74. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  75. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts +11 -1
  76. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  77. package/lib/cjs/appui-react/toolbar/Toolbar.js +3 -2
  78. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  79. package/lib/cjs/appui-react/toolbar/ToolbarComposer.d.ts +2 -1
  80. package/lib/cjs/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  81. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js +45 -129
  82. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  83. package/lib/cjs/appui-react/toolbar/ToolbarHelper.d.ts +6 -3
  84. package/lib/cjs/appui-react/toolbar/ToolbarHelper.d.ts.map +1 -1
  85. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js +53 -80
  86. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  87. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts +2 -2
  88. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/toolbar/ToolbarItem.js +2 -2
  90. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  91. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.d.ts +1 -0
  92. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.d.ts.map +1 -1
  93. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js +12 -2
  94. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  95. package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.d.ts +3 -2
  96. package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  97. package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.js +5 -9
  98. package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  99. package/lib/cjs/appui-react/toolbar/useActiveStageProvidedToolbarItems.d.ts +11 -0
  100. package/lib/cjs/appui-react/toolbar/useActiveStageProvidedToolbarItems.d.ts.map +1 -0
  101. package/lib/cjs/appui-react/toolbar/useActiveStageProvidedToolbarItems.js +46 -0
  102. package/lib/cjs/appui-react/toolbar/useActiveStageProvidedToolbarItems.js.map +1 -0
  103. package/lib/cjs/appui-react/toolbar/useActiveToolIdSynchedItems.d.ts +25 -0
  104. package/lib/cjs/appui-react/toolbar/useActiveToolIdSynchedItems.d.ts.map +1 -0
  105. package/lib/cjs/appui-react/toolbar/useActiveToolIdSynchedItems.js +63 -0
  106. package/lib/cjs/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +1 -0
  107. package/lib/cjs/appui-react/toolbar/useDefaultToolbarItems.d.ts +1 -0
  108. package/lib/cjs/appui-react/toolbar/useDefaultToolbarItems.d.ts.map +1 -1
  109. package/lib/cjs/appui-react/toolbar/useDefaultToolbarItems.js +4 -1
  110. package/lib/cjs/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  111. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.d.ts +2 -1
  112. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.d.ts.map +1 -1
  113. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js +12 -30
  114. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
  115. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +10 -17
  116. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  117. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
  118. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  119. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +12 -14
  120. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  121. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
  122. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  123. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
  124. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  125. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +8 -14
  126. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  127. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  128. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  129. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +1 -1
  130. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  131. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +3 -3
  132. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  133. package/lib/cjs/appui-react/widget-panels/Content.js +8 -9
  134. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  135. package/lib/cjs/appui-react/widget-panels/Frontstage.js +43 -45
  136. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  137. package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
  138. package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
  139. package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
  140. package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
  141. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  142. package/lib/cjs/appui-react/widget-panels/ToolSettings.js +21 -23
  143. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  144. package/lib/cjs/appui-react/widget-panels/Toolbars.js +2 -3
  145. package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
  146. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  147. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  148. package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -1
  149. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  150. package/lib/cjs/appui-react/widgets/WidgetHost.js +2 -3
  151. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  152. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  153. package/lib/esm/appui-react/UiFramework.js +14 -16
  154. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  155. package/lib/esm/appui-react/backstage/BackstageComposerItem.js +1 -2
  156. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  157. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +1 -1
  158. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  159. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  160. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  161. package/lib/esm/appui-react/configurableui/TimeTracker.js +1 -2
  162. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  163. package/lib/esm/appui-react/content/ContentLayout.js +9 -12
  164. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  165. package/lib/esm/appui-react/content/DefaultViewOverlay.js +3 -4
  166. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  167. package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -2
  168. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  169. package/lib/esm/appui-react/content/IModelViewport.js +3 -6
  170. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  171. package/lib/esm/appui-react/content/InternalContentLayoutManager.js +1 -2
  172. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  173. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -1
  174. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  175. package/lib/esm/appui-react/content/split-pane/SplitPane.js +10 -12
  176. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  177. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts +1 -1
  178. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  179. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +6 -6
  180. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  181. package/lib/esm/appui-react/dialog/ContentDialog.js +3 -6
  182. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  183. package/lib/esm/appui-react/dialog/DialogManagerBase.js +2 -3
  184. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  185. package/lib/esm/appui-react/frontstage/FrontstageDef.js +5 -7
  186. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  187. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -3
  188. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  189. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
  190. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  191. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
  192. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  193. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
  194. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  195. package/lib/esm/appui-react/hooks/useSolarDataProvider.js +8 -13
  196. package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  197. package/lib/esm/appui-react/messages/ActivityMessage.js +5 -7
  198. package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
  199. package/lib/esm/appui-react/pickers/ViewSelector.js +5 -6
  200. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  201. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +1 -2
  202. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  203. package/lib/esm/appui-react/popup/PopupManager.js +1 -2
  204. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  205. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.d.ts.map +1 -1
  206. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +3 -0
  207. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  208. package/lib/esm/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  209. package/lib/esm/appui-react/selection/SelectionContextItemDef.js +12 -8
  210. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  211. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
  212. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  213. package/lib/esm/appui-react/stagepanels/StagePanelDef.js +5 -7
  214. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  215. package/lib/esm/appui-react/statusbar/Indicator.js +1 -2
  216. package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
  217. package/lib/esm/appui-react/statusbar/StatusBar.js +3 -5
  218. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  219. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  220. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  221. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -4
  222. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  223. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +49 -78
  224. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  225. package/lib/esm/appui-react/toolbar/Toolbar.d.ts +11 -1
  226. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  227. package/lib/esm/appui-react/toolbar/Toolbar.js +3 -2
  228. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  229. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts +2 -1
  230. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  231. package/lib/esm/appui-react/toolbar/ToolbarComposer.js +45 -129
  232. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  233. package/lib/esm/appui-react/toolbar/ToolbarHelper.d.ts +6 -3
  234. package/lib/esm/appui-react/toolbar/ToolbarHelper.d.ts.map +1 -1
  235. package/lib/esm/appui-react/toolbar/ToolbarHelper.js +53 -80
  236. package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  237. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts +2 -2
  238. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  239. package/lib/esm/appui-react/toolbar/ToolbarItem.js +2 -2
  240. package/lib/esm/appui-react/toolbar/ToolbarItem.js.map +1 -1
  241. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.d.ts +1 -0
  242. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.d.ts.map +1 -1
  243. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js +12 -2
  244. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  245. package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.d.ts +3 -2
  246. package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  247. package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.js +5 -9
  248. package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  249. package/lib/esm/appui-react/toolbar/useActiveStageProvidedToolbarItems.d.ts +11 -0
  250. package/lib/esm/appui-react/toolbar/useActiveStageProvidedToolbarItems.d.ts.map +1 -0
  251. package/lib/esm/appui-react/toolbar/useActiveStageProvidedToolbarItems.js +42 -0
  252. package/lib/esm/appui-react/toolbar/useActiveStageProvidedToolbarItems.js.map +1 -0
  253. package/lib/esm/appui-react/toolbar/useActiveToolIdSynchedItems.d.ts +25 -0
  254. package/lib/esm/appui-react/toolbar/useActiveToolIdSynchedItems.d.ts.map +1 -0
  255. package/lib/esm/appui-react/toolbar/useActiveToolIdSynchedItems.js +59 -0
  256. package/lib/esm/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +1 -0
  257. package/lib/esm/appui-react/toolbar/useDefaultToolbarItems.d.ts +1 -0
  258. package/lib/esm/appui-react/toolbar/useDefaultToolbarItems.d.ts.map +1 -1
  259. package/lib/esm/appui-react/toolbar/useDefaultToolbarItems.js +4 -1
  260. package/lib/esm/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  261. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.d.ts +2 -1
  262. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.d.ts.map +1 -1
  263. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js +12 -30
  264. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
  265. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +10 -17
  266. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  267. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
  268. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  269. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +12 -14
  270. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  271. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
  272. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  273. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
  274. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  275. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +8 -14
  276. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  277. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  278. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  279. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +1 -1
  280. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  281. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +3 -3
  282. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  283. package/lib/esm/appui-react/widget-panels/Content.js +8 -9
  284. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  285. package/lib/esm/appui-react/widget-panels/Frontstage.js +43 -45
  286. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  287. package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
  288. package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
  289. package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
  290. package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
  291. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  292. package/lib/esm/appui-react/widget-panels/ToolSettings.js +21 -23
  293. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  294. package/lib/esm/appui-react/widget-panels/Toolbars.js +2 -3
  295. package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
  296. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  297. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  298. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -1
  299. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  300. package/lib/esm/appui-react/widgets/WidgetHost.js +2 -3
  301. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  302. package/package.json +14 -15
@@ -168,6 +168,7 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
168
168
  */
169
169
  static clearEmphasize(vp) {
170
170
  if (vp) {
171
+ core_frontend_1.EmphasizeElements.getOrCreate(vp).clearEmphasizedElements(vp);
171
172
  core_frontend_1.EmphasizeElements.clear(vp);
172
173
  }
173
174
  }
@@ -345,6 +346,8 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
345
346
  if (undefined !== emphasizeElementsProvider &&
346
347
  emphasizeElementsProvider.isActive(vp))
347
348
  return true;
349
+ else if (vp.neverDrawn && vp.neverDrawn.size > 0)
350
+ return true;
348
351
  const modelOverrideProvider = vp.findFeatureOverrideProviderOfType(ModelOverrideProvider);
349
352
  if (undefined !== modelOverrideProvider &&
350
353
  modelOverrideProvider.modelIds.length > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"HideIsolateEmphasizeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/selection/HideIsolateEmphasizeManager.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/** @packageDocumentation\n * @module Tools\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { GeometricElementProps } from \"@itwin/core-common\";\nimport { FeatureAppearance } from \"@itwin/core-common\";\nimport type {\n FeatureOverrideProvider,\n FeatureSymbology,\n IModelConnection,\n ScreenViewport,\n Viewport,\n} from \"@itwin/core-frontend\";\nimport { EmphasizeElements, IModelApp } from \"@itwin/core-frontend\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\n\n/** Supported Hide, Isolate, and Emphasize Actions. These also serve as FeatureTracking Ids.\n * @public\n */\nexport enum HideIsolateEmphasizeAction {\n EmphasizeSelectedElements = \"EmphasizeSelectedElements\",\n IsolateSelectedElements = \"IsolateSelectedElements\",\n IsolateSelectedCategories = \"IsolateSelectedCategories\",\n IsolateSelectedModels = \"IsolateSelectedModels\",\n HideSelectedElements = \"HideSelectedElements\",\n HideSelectedModels = \"HideSelectedModels\",\n HideSelectedCategories = \"HideSelectedCategories\",\n ClearHiddenIsolatedEmphasized = \"ClearHiddenIsolatedEmphasized\",\n ClearOverrideModels = \"ClearOverrideModels\",\n ClearOverrideCategories = \"ClearOverrideCategories\",\n}\n\n/** Selection Context Action Event Argument\n * @public\n */\nexport interface EmphasizeElementsChangedArgs {\n /** viewport where action was performed */\n readonly viewport: ScreenViewport;\n /** action being performed */\n readonly action: HideIsolateEmphasizeAction;\n}\n\n/** Overrides given models to provide emphasize functionality\n * @public\n */\n// istanbul ignore next\nclass ModelOverrideProvider implements FeatureOverrideProvider {\n constructor(\n public modelIds: string[],\n public defaultAppearance: FeatureAppearance\n ) {}\n\n public addFeatureOverrides(\n overrides: FeatureSymbology.Overrides,\n _viewport: Viewport\n ): void {\n overrides.setDefaultOverrides(this.defaultAppearance, true);\n // Override with nothing so that we keep the model looking normal and override the default appearance of everything else\n const appearance = FeatureAppearance.fromJSON({});\n this.modelIds.forEach((modelId: string) => {\n overrides.override({ modelId, appearance, onConflict: \"replace\" });\n });\n }\n}\n\n/** Overrides given categories to provide emphasize functionality\n * @public\n */\n// istanbul ignore next\nclass SubCategoryOverrideProvider implements FeatureOverrideProvider {\n constructor(\n public subCategoryIds: string[],\n public defaultAppearance: FeatureAppearance\n ) {}\n\n public addFeatureOverrides(\n overrides: FeatureSymbology.Overrides,\n _viewport: Viewport\n ): void {\n overrides.setDefaultOverrides(this.defaultAppearance, true);\n // Override with nothing so that we keep the category looking normal and override the default appearance of everything else\n const appearance = FeatureAppearance.fromJSON({});\n this.subCategoryIds.forEach((subCategoryId: string) => {\n overrides.override({ subCategoryId, appearance, onConflict: \"replace\" });\n });\n }\n}\n\n/**\n * Interface for class that handles Hide, Isolate, and Emphasize Actions\n * @public\n */\nexport abstract class HideIsolateEmphasizeActionHandler {\n public static emphasizeElementsChanged = new BeEvent<\n (args: EmphasizeElementsChangedArgs) => void\n >();\n\n /** String Id sent to allow UI to refresh its display state. */\n public static get hideIsolateEmphasizeUiSyncId() {\n return \"selection-context-emphasize-elements-changed\";\n }\n\n /**\n * Function run when `IsolateSelectedElementsModel` tool button is pressed\n */\n public abstract processIsolateSelectedElementsModel(): Promise<void>;\n /**\n * Function run when `IsolateSelectedElementsModel` tool button is pressed\n */\n\n public abstract processIsolateSelectedElementsCategory(): Promise<void>;\n\n /**\n * Function run when `HideSelectedElementsModel` tool button is pressed\n */\n public abstract processIsolateSelected(): Promise<void>;\n\n /**\n * Function run when `HideSelectedElementsModel` tool button is pressed\n */\n public abstract processHideSelectedElementsModel(): Promise<void>;\n\n /**\n * Function that is run when `HideSelectedElementsCategory` tool button is pressed\n */\n public abstract processHideSelectedElementsCategory(): Promise<void>;\n\n /**\n * Function that is run when `HideSelected` tool button is pressed\n */\n public abstract processHideSelected(): Promise<void>;\n\n /**\n * Function that is run when `EmphasizeSelected` tool button is pressed\n */\n public abstract processEmphasizeSelected(): Promise<void>;\n\n /**\n * Function that is run when `ClearEmphasize` tool button is pressed\n */\n public abstract processClearEmphasize(): Promise<void>;\n\n /**\n * Function that informs called if Hide, Isolate, or Emphasize of elements is active.\n */\n public abstract areFeatureOverridesActive(vp: Viewport): boolean;\n\n /**\n * Function run when `ClearOverrideCategories` tool button is pressed\n */\n public abstract processClearOverrideCategories(): Promise<void>;\n\n /**\n * Function run when `ClearOverrideModels` tool button is pressed\n */\n public abstract processClearOverrideModels(): Promise<void>;\n}\n\n/** Provides helper functions for doing commands on logical selection like categories and subjects.\n * @public\n */\n// istanbul ignore next\nexport class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {\n private static _overrideCategoryIds = new Map<Viewport, Set<string>>();\n private static _overrideModelIds = new Map<Viewport, Set<string>>();\n\n /** Returns true if there is only a category hilited. */\n private static categorySelected(vp: Viewport) {\n const subcategories = vp.iModel.hilited.subcategories;\n return subcategories.size === 1;\n }\n\n /** Returns true if only a model is hilited. */\n private static modelSelected(vp: Viewport) {\n const models = vp.iModel.hilited.models;\n return models.size === 1;\n }\n\n /**\n * Hide the hilited categories.\n * @param vp Viewport to affect\n */\n private static hideSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Set();\n vp.changeCategoryDisplay(ids, false);\n }\n\n /** Get sub categories that relate to the category Id */\n private static async _getSubCategories(\n iModelConnection: IModelConnection,\n categoryIds: string[]\n ) {\n const allSubcats: string[] = [];\n const request = iModelConnection.subcategories.load(categoryIds);\n if (request) await request.promise;\n\n for (const categoryId of categoryIds) {\n const subcats =\n iModelConnection.subcategories.getSubCategories(categoryId);\n if (subcats) allSubcats.push(...subcats);\n }\n return allSubcats;\n }\n\n /**\n * Emphasize hilited categories.\n * @param vp Viewport to affect\n */\n public static async emphasizeSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Array();\n if (ids.length === 0) return;\n\n const defaultAppearance =\n EmphasizeElements.getOrCreate(vp).createDefaultAppearance();\n EmphasizeElements.clear(vp);\n const subcats = await HideIsolateEmphasizeManager._getSubCategories(\n vp.iModel,\n ids\n );\n vp.addFeatureOverrideProvider(\n new SubCategoryOverrideProvider(subcats, defaultAppearance)\n );\n }\n\n /**\n * Hide the selected model\n * @param vp Viewport to affect\n */\n private static hideSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n vp.changeModelDisplay(ids, false);\n }\n\n /**\n * Isolate the selected model\n * @param vp Viewport to affect\n */\n private static emphasizeSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n const defaultAppearance =\n EmphasizeElements.getOrCreate(vp).createDefaultAppearance();\n EmphasizeElements.clear(vp);\n vp.addFeatureOverrideProvider(\n new ModelOverrideProvider(ids, defaultAppearance)\n );\n }\n\n /**\n * Isolate the selected elements\n * @param vp Viewport to affect\n */\n public static isolateSelected(vp: Viewport) {\n EmphasizeElements.getOrCreate(vp).isolateSelectedElements(vp, true, false); // Isolate selected elements\n }\n\n /**\n * Hide the selected elements\n * @param vp Viewport to affect\n */\n public static hideSelected(vp: Viewport) {\n EmphasizeElements.getOrCreate(vp).hideSelectedElements(vp, false, false); // Hide all selected elements\n }\n\n /**\n * Clear Hidden,Isolated, or Emphasized elements in specified view\n * @param vp Viewport to affect\n *\n */\n public static clearEmphasize(vp: Viewport | undefined) {\n if (vp) {\n EmphasizeElements.clear(vp);\n }\n }\n\n /**\n * Emphasize the selected elements from either presentation layer's logical selection or selected graphics\n * @param vp Viewport to affect\n * @param emphasisSilhouette defaults to true\n */\n public static async emphasizeSelected(\n vp: Viewport,\n emphasisSilhouette = true\n ) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n await HideIsolateEmphasizeManager.emphasizeSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n HideIsolateEmphasizeManager.emphasizeSelectedModel(vp);\n return;\n }\n\n const ee = EmphasizeElements.getOrCreate(vp);\n ee.wantEmphasis = emphasisSilhouette;\n\n ee.emphasizeSelectedElements(vp, undefined, true, false); // Emphasize elements by making all others grey/transparent\n vp.isFadeOutActive = true; // Enable flat alpha for greyed out elements…\n }\n\n /**\n * Isolate hilited models.\n * @param vp Viewport to affect\n */\n public static async isolateSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n await vp.replaceViewedModels(ids);\n }\n\n /**\n * Isolate hilited categories.\n * @param vp Viewport to affect\n */\n private static isolateSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Set();\n const categoriesToDrop: string[] = [];\n vp.view.categorySelector.categories.forEach((categoryId: string) => {\n if (!ids.has(categoryId)) categoriesToDrop.push(categoryId);\n });\n vp.changeCategoryDisplay(categoriesToDrop, false);\n vp.changeCategoryDisplay(ids, true);\n }\n\n private static async getSelectionSetElementModels(iModel: IModelConnection) {\n const props = await iModel.elements.getProps(iModel.selectionSet.elements);\n const modelIds = new Set<string>();\n for (const prop of props) if (prop.model) modelIds.add(prop.model);\n return modelIds;\n }\n\n private static async getSelectionSetElementCategories(\n iModel: IModelConnection\n ) {\n const props = (await iModel.elements.getProps(\n iModel.selectionSet.elements\n )) as GeometricElementProps[];\n const categoryIds = new Set<string>();\n for (const prop of props) if (prop.category) categoryIds.add(prop.category);\n return categoryIds;\n }\n\n /**\n * Isolate either based on Presentation selection, if defined, else the selected graphic elements\n * @param vp Viewport to affect\n */\n public static async isolateCommand(vp: Viewport) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n HideIsolateEmphasizeManager.isolateSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n await HideIsolateEmphasizeManager.isolateSelectedModel(vp);\n return;\n }\n }\n\n /**\n * Isolate model from selected elements\n * @param vp Viewport to affect\n */\n public static async isolateSelectedElementsModel(vp: Viewport) {\n const modelsToKeep = new Set(\n await HideIsolateEmphasizeManager.getSelectionSetElementModels(vp.iModel)\n );\n\n if (vp.view.isSpatialView()) {\n const modelsToTurnOff = [...vp.view.modelSelector.models].filter(\n (modelId: string) => !modelsToKeep.has(modelId)\n );\n this.updateModelOverride(vp, modelsToTurnOff);\n }\n\n await vp.replaceViewedModels(modelsToKeep);\n }\n\n /**\n * Isolate the selected category found in SelectionSet elements\n * @param vp Viewport to affect\n */\n public static async isolateSelectedElementsCategory(vp: Viewport) {\n const categoriesToKeep = new Set(\n await HideIsolateEmphasizeManager.getSelectionSetElementCategories(\n vp.iModel\n )\n );\n const categoriesToTurnOff = [...vp.view.categorySelector.categories].filter(\n (categoryId: string) => !categoriesToKeep.has(categoryId)\n );\n vp.changeCategoryDisplay(categoriesToTurnOff, false);\n vp.changeCategoryDisplay(categoriesToKeep, true);\n this.updateCategoryOverride(vp, categoriesToTurnOff);\n }\n\n /**\n * Hide either based on Presentation selection, if defined, else the selected graphic elements\n * @param vp Viewport to affect\n */\n public static async hideCommand(vp: Viewport) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n HideIsolateEmphasizeManager.hideSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n HideIsolateEmphasizeManager.hideSelectedModel(vp);\n return;\n }\n EmphasizeElements.getOrCreate(vp).hideSelectedElements(vp, false, false); // Hide selected elements\n }\n\n /**\n * Hide the models defined by the elements in the current SelectionSet\n * @param vp Viewport to affect\n */\n public static async hideSelectedElementsModel(vp: Viewport) {\n const modelIds =\n await HideIsolateEmphasizeManager.getSelectionSetElementModels(vp.iModel);\n vp.changeModelDisplay(modelIds, false);\n this.updateModelOverride(vp, [...modelIds]);\n }\n\n /**\n * Clear (restore) the previously hidden/isolated models hidden by hideSelectedElementsModel\n * @param vp Viewport to affect\n */\n public static clearOverrideModels(vp: Viewport) {\n const ids = this._overrideModelIds.get(vp);\n if (ids) {\n vp.changeModelDisplay([...ids], true);\n this.clearModelOverride(vp);\n }\n }\n\n /**\n * Determine if models are hidden by hideSelectedElementsModel or isolateSelectedElementsModel\n * @param vp Viewport to affect\n */\n public static isOverrideModels(vp: Viewport): boolean {\n const ids = this._overrideModelIds.get(vp);\n return ids ? [...ids].length > 0 : false;\n }\n\n /**\n * Determine if categories are hidden by hideSelectedElementsCategory or isolateSelectedElementsCategory\n * @param vp Viewport to affect\n */\n public static isOverrideCategories(vp: Viewport): boolean {\n const ids = this._overrideCategoryIds.get(vp);\n return ids ? [...ids].length > 0 : false;\n }\n\n /**\n * Hide the categories defined by the elements in the current SelectionSet\n * @param vp Viewport to affect\n */\n public static async hideSelectedElementsCategory(vp: Viewport) {\n const categoryIds =\n await HideIsolateEmphasizeManager.getSelectionSetElementCategories(\n vp.iModel\n );\n vp.changeCategoryDisplay(categoryIds, false);\n this.updateCategoryOverride(vp, [...categoryIds]);\n }\n\n /**\n * Clear (restore) the previously hidden categories hidden by hideSelectedElementsCategory\n * @param vp Viewport to affect\n */\n public static clearOverrideCategories(vp: Viewport) {\n const ids = this._overrideCategoryIds.get(vp);\n if (ids) {\n vp.changeCategoryDisplay([...ids], true);\n this.clearCategoryOverride(vp);\n }\n }\n\n /** Checks to see if any featureOverrideProviders are active */\n public areFeatureOverridesActive(vp: Viewport): boolean {\n // Check all the emphasize possibilities\n const emphasizeElementsProvider =\n vp.findFeatureOverrideProviderOfType<EmphasizeElements>(\n EmphasizeElements\n );\n if (\n undefined !== emphasizeElementsProvider &&\n emphasizeElementsProvider.isActive(vp)\n )\n return true;\n\n const modelOverrideProvider =\n vp.findFeatureOverrideProviderOfType<ModelOverrideProvider>(\n ModelOverrideProvider\n );\n if (\n undefined !== modelOverrideProvider &&\n modelOverrideProvider.modelIds.length > 0\n )\n return true;\n\n const subCategoryOverrideProvider =\n vp.findFeatureOverrideProviderOfType<SubCategoryOverrideProvider>(\n SubCategoryOverrideProvider\n );\n if (\n undefined !== subCategoryOverrideProvider &&\n subCategoryOverrideProvider.subCategoryIds.length > 0\n )\n return true;\n\n // Check hide/isolate possibilities\n if (HideIsolateEmphasizeManager.isOverrideCategories(vp)) return true;\n\n if (HideIsolateEmphasizeManager.isOverrideModels(vp)) return true;\n\n return false;\n }\n\n /**\n * Function that is run when `IsolateSelectedElementsModel` tool button is pressed\n */\n public async processIsolateSelectedElementsModel(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.isolateSelectedElementsModel(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedModels,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `IsolateSelectedElementsCategory` tool button is pressed\n */\n public async processIsolateSelectedElementsCategory(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.isolateSelectedElementsCategory(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedCategories,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `IsolateSelected` tool button is pressed\n */\n public async processIsolateSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.isolateSelected(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedElements,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `HideSelectedElementsModel` tool button is pressed\n */\n public async processHideSelectedElementsModel(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.hideSelectedElementsModel(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedModels,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `HideSelectedElementsCategory` tool button is pressed\n */\n public async processHideSelectedElementsCategory(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.hideSelectedElementsCategory(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedCategories,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `HideSelected` tool button is pressed\n */\n public async processHideSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n HideIsolateEmphasizeManager.hideSelected(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedElements,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `EmphasizeSelected` tool button is pressed\n */\n public async processEmphasizeSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.emphasizeSelected(vp);\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.EmphasizeSelectedElements,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `ClearEmphasize` tool button is pressed\n */\n public async processClearEmphasize(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearEmphasize(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `ClearOverrideModels` tool button is pressed\n */\n public async processClearOverrideModels(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearOverrideModels(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearOverrideModels,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `ClearOverrideCategories` tool button is pressed\n */\n public async processClearOverrideCategories(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearOverrideCategories(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearOverrideCategories,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Add category ids to the category override cache (hidden or isolated categories)\n */\n public static updateCategoryOverride(vp: Viewport, ids: string[]) {\n const prevIds = this._overrideCategoryIds.get(vp);\n const newIds = [...(prevIds || []), ...ids];\n this._overrideCategoryIds.set(vp, new Set(newIds));\n }\n\n /**\n * Add model ids to the model override cache (hidden or isolated models)\n */\n public static updateModelOverride(vp: Viewport, ids: string[]) {\n const prevIds = this._overrideModelIds.get(vp);\n const newIds = [...(prevIds || []), ...ids];\n this._overrideModelIds.set(vp, new Set(newIds));\n }\n\n /**\n * Return the list of category overrides (hidden or isolated categories)\n */\n public static getCategoryOverrides(vp: Viewport) {\n return this._overrideCategoryIds.get(vp);\n }\n\n /**\n * Return the list of model overrides (hidden or isolated models)\n */\n public static getModelOverrides(vp: Viewport) {\n return this._overrideModelIds.get(vp);\n }\n\n /**\n * Clear the category override cache (hidden or isolated categories)\n */\n private static clearCategoryOverride(vp: Viewport) {\n this._overrideCategoryIds.delete(vp);\n }\n\n /**\n * Clear the model override cache (hidden or isolated models)\n */\n private static clearModelOverride(vp: Viewport) {\n this._overrideModelIds.delete(vp);\n }\n}\n"]}
1
+ {"version":3,"file":"HideIsolateEmphasizeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/selection/HideIsolateEmphasizeManager.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/** @packageDocumentation\n * @module Tools\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { GeometricElementProps } from \"@itwin/core-common\";\nimport { FeatureAppearance } from \"@itwin/core-common\";\nimport type {\n FeatureOverrideProvider,\n FeatureSymbology,\n IModelConnection,\n ScreenViewport,\n Viewport,\n} from \"@itwin/core-frontend\";\nimport { EmphasizeElements, IModelApp } from \"@itwin/core-frontend\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\n\n/** Supported Hide, Isolate, and Emphasize Actions. These also serve as FeatureTracking Ids.\n * @public\n */\nexport enum HideIsolateEmphasizeAction {\n EmphasizeSelectedElements = \"EmphasizeSelectedElements\",\n IsolateSelectedElements = \"IsolateSelectedElements\",\n IsolateSelectedCategories = \"IsolateSelectedCategories\",\n IsolateSelectedModels = \"IsolateSelectedModels\",\n HideSelectedElements = \"HideSelectedElements\",\n HideSelectedModels = \"HideSelectedModels\",\n HideSelectedCategories = \"HideSelectedCategories\",\n ClearHiddenIsolatedEmphasized = \"ClearHiddenIsolatedEmphasized\",\n ClearOverrideModels = \"ClearOverrideModels\",\n ClearOverrideCategories = \"ClearOverrideCategories\",\n}\n\n/** Selection Context Action Event Argument\n * @public\n */\nexport interface EmphasizeElementsChangedArgs {\n /** viewport where action was performed */\n readonly viewport: ScreenViewport;\n /** action being performed */\n readonly action: HideIsolateEmphasizeAction;\n}\n\n/** Overrides given models to provide emphasize functionality\n * @public\n */\n// istanbul ignore next\nclass ModelOverrideProvider implements FeatureOverrideProvider {\n constructor(\n public modelIds: string[],\n public defaultAppearance: FeatureAppearance\n ) {}\n\n public addFeatureOverrides(\n overrides: FeatureSymbology.Overrides,\n _viewport: Viewport\n ): void {\n overrides.setDefaultOverrides(this.defaultAppearance, true);\n // Override with nothing so that we keep the model looking normal and override the default appearance of everything else\n const appearance = FeatureAppearance.fromJSON({});\n this.modelIds.forEach((modelId: string) => {\n overrides.override({ modelId, appearance, onConflict: \"replace\" });\n });\n }\n}\n\n/** Overrides given categories to provide emphasize functionality\n * @public\n */\n// istanbul ignore next\nclass SubCategoryOverrideProvider implements FeatureOverrideProvider {\n constructor(\n public subCategoryIds: string[],\n public defaultAppearance: FeatureAppearance\n ) {}\n\n public addFeatureOverrides(\n overrides: FeatureSymbology.Overrides,\n _viewport: Viewport\n ): void {\n overrides.setDefaultOverrides(this.defaultAppearance, true);\n // Override with nothing so that we keep the category looking normal and override the default appearance of everything else\n const appearance = FeatureAppearance.fromJSON({});\n this.subCategoryIds.forEach((subCategoryId: string) => {\n overrides.override({ subCategoryId, appearance, onConflict: \"replace\" });\n });\n }\n}\n\n/**\n * Interface for class that handles Hide, Isolate, and Emphasize Actions\n * @public\n */\nexport abstract class HideIsolateEmphasizeActionHandler {\n public static emphasizeElementsChanged = new BeEvent<\n (args: EmphasizeElementsChangedArgs) => void\n >();\n\n /** String Id sent to allow UI to refresh its display state. */\n public static get hideIsolateEmphasizeUiSyncId() {\n return \"selection-context-emphasize-elements-changed\";\n }\n\n /**\n * Function run when `IsolateSelectedElementsModel` tool button is pressed\n */\n public abstract processIsolateSelectedElementsModel(): Promise<void>;\n /**\n * Function run when `IsolateSelectedElementsModel` tool button is pressed\n */\n\n public abstract processIsolateSelectedElementsCategory(): Promise<void>;\n\n /**\n * Function run when `HideSelectedElementsModel` tool button is pressed\n */\n public abstract processIsolateSelected(): Promise<void>;\n\n /**\n * Function run when `HideSelectedElementsModel` tool button is pressed\n */\n public abstract processHideSelectedElementsModel(): Promise<void>;\n\n /**\n * Function that is run when `HideSelectedElementsCategory` tool button is pressed\n */\n public abstract processHideSelectedElementsCategory(): Promise<void>;\n\n /**\n * Function that is run when `HideSelected` tool button is pressed\n */\n public abstract processHideSelected(): Promise<void>;\n\n /**\n * Function that is run when `EmphasizeSelected` tool button is pressed\n */\n public abstract processEmphasizeSelected(): Promise<void>;\n\n /**\n * Function that is run when `ClearEmphasize` tool button is pressed\n */\n public abstract processClearEmphasize(): Promise<void>;\n\n /**\n * Function that informs called if Hide, Isolate, or Emphasize of elements is active.\n */\n public abstract areFeatureOverridesActive(vp: Viewport): boolean;\n\n /**\n * Function run when `ClearOverrideCategories` tool button is pressed\n */\n public abstract processClearOverrideCategories(): Promise<void>;\n\n /**\n * Function run when `ClearOverrideModels` tool button is pressed\n */\n public abstract processClearOverrideModels(): Promise<void>;\n}\n\n/** Provides helper functions for doing commands on logical selection like categories and subjects.\n * @public\n */\n// istanbul ignore next\nexport class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {\n private static _overrideCategoryIds = new Map<Viewport, Set<string>>();\n private static _overrideModelIds = new Map<Viewport, Set<string>>();\n\n /** Returns true if there is only a category hilited. */\n private static categorySelected(vp: Viewport) {\n const subcategories = vp.iModel.hilited.subcategories;\n return subcategories.size === 1;\n }\n\n /** Returns true if only a model is hilited. */\n private static modelSelected(vp: Viewport) {\n const models = vp.iModel.hilited.models;\n return models.size === 1;\n }\n\n /**\n * Hide the hilited categories.\n * @param vp Viewport to affect\n */\n private static hideSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Set();\n vp.changeCategoryDisplay(ids, false);\n }\n\n /** Get sub categories that relate to the category Id */\n private static async _getSubCategories(\n iModelConnection: IModelConnection,\n categoryIds: string[]\n ) {\n const allSubcats: string[] = [];\n const request = iModelConnection.subcategories.load(categoryIds);\n if (request) await request.promise;\n\n for (const categoryId of categoryIds) {\n const subcats =\n iModelConnection.subcategories.getSubCategories(categoryId);\n if (subcats) allSubcats.push(...subcats);\n }\n return allSubcats;\n }\n\n /**\n * Emphasize hilited categories.\n * @param vp Viewport to affect\n */\n public static async emphasizeSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Array();\n if (ids.length === 0) return;\n\n const defaultAppearance =\n EmphasizeElements.getOrCreate(vp).createDefaultAppearance();\n EmphasizeElements.clear(vp);\n const subcats = await HideIsolateEmphasizeManager._getSubCategories(\n vp.iModel,\n ids\n );\n vp.addFeatureOverrideProvider(\n new SubCategoryOverrideProvider(subcats, defaultAppearance)\n );\n }\n\n /**\n * Hide the selected model\n * @param vp Viewport to affect\n */\n private static hideSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n vp.changeModelDisplay(ids, false);\n }\n\n /**\n * Isolate the selected model\n * @param vp Viewport to affect\n */\n private static emphasizeSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n const defaultAppearance =\n EmphasizeElements.getOrCreate(vp).createDefaultAppearance();\n EmphasizeElements.clear(vp);\n vp.addFeatureOverrideProvider(\n new ModelOverrideProvider(ids, defaultAppearance)\n );\n }\n\n /**\n * Isolate the selected elements\n * @param vp Viewport to affect\n */\n public static isolateSelected(vp: Viewport) {\n EmphasizeElements.getOrCreate(vp).isolateSelectedElements(vp, true, false); // Isolate selected elements\n }\n\n /**\n * Hide the selected elements\n * @param vp Viewport to affect\n */\n public static hideSelected(vp: Viewport) {\n EmphasizeElements.getOrCreate(vp).hideSelectedElements(vp, false, false); // Hide all selected elements\n }\n\n /**\n * Clear Hidden,Isolated, or Emphasized elements in specified view\n * @param vp Viewport to affect\n *\n */\n public static clearEmphasize(vp: Viewport | undefined) {\n if (vp) {\n EmphasizeElements.getOrCreate(vp).clearEmphasizedElements(vp);\n EmphasizeElements.clear(vp);\n }\n }\n\n /**\n * Emphasize the selected elements from either presentation layer's logical selection or selected graphics\n * @param vp Viewport to affect\n * @param emphasisSilhouette defaults to true\n */\n public static async emphasizeSelected(\n vp: Viewport,\n emphasisSilhouette = true\n ) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n await HideIsolateEmphasizeManager.emphasizeSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n HideIsolateEmphasizeManager.emphasizeSelectedModel(vp);\n return;\n }\n\n const ee = EmphasizeElements.getOrCreate(vp);\n ee.wantEmphasis = emphasisSilhouette;\n\n ee.emphasizeSelectedElements(vp, undefined, true, false); // Emphasize elements by making all others grey/transparent\n vp.isFadeOutActive = true; // Enable flat alpha for greyed out elements…\n }\n\n /**\n * Isolate hilited models.\n * @param vp Viewport to affect\n */\n public static async isolateSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n await vp.replaceViewedModels(ids);\n }\n\n /**\n * Isolate hilited categories.\n * @param vp Viewport to affect\n */\n private static isolateSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Set();\n const categoriesToDrop: string[] = [];\n vp.view.categorySelector.categories.forEach((categoryId: string) => {\n if (!ids.has(categoryId)) categoriesToDrop.push(categoryId);\n });\n vp.changeCategoryDisplay(categoriesToDrop, false);\n vp.changeCategoryDisplay(ids, true);\n }\n\n private static async getSelectionSetElementModels(iModel: IModelConnection) {\n const props = await iModel.elements.getProps(iModel.selectionSet.elements);\n const modelIds = new Set<string>();\n for (const prop of props) if (prop.model) modelIds.add(prop.model);\n return modelIds;\n }\n\n private static async getSelectionSetElementCategories(\n iModel: IModelConnection\n ) {\n const props = (await iModel.elements.getProps(\n iModel.selectionSet.elements\n )) as GeometricElementProps[];\n const categoryIds = new Set<string>();\n for (const prop of props) if (prop.category) categoryIds.add(prop.category);\n return categoryIds;\n }\n\n /**\n * Isolate either based on Presentation selection, if defined, else the selected graphic elements\n * @param vp Viewport to affect\n */\n public static async isolateCommand(vp: Viewport) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n HideIsolateEmphasizeManager.isolateSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n await HideIsolateEmphasizeManager.isolateSelectedModel(vp);\n return;\n }\n }\n\n /**\n * Isolate model from selected elements\n * @param vp Viewport to affect\n */\n public static async isolateSelectedElementsModel(vp: Viewport) {\n const modelsToKeep = new Set(\n await HideIsolateEmphasizeManager.getSelectionSetElementModels(vp.iModel)\n );\n\n if (vp.view.isSpatialView()) {\n const modelsToTurnOff = [...vp.view.modelSelector.models].filter(\n (modelId: string) => !modelsToKeep.has(modelId)\n );\n this.updateModelOverride(vp, modelsToTurnOff);\n }\n\n await vp.replaceViewedModels(modelsToKeep);\n }\n\n /**\n * Isolate the selected category found in SelectionSet elements\n * @param vp Viewport to affect\n */\n public static async isolateSelectedElementsCategory(vp: Viewport) {\n const categoriesToKeep = new Set(\n await HideIsolateEmphasizeManager.getSelectionSetElementCategories(\n vp.iModel\n )\n );\n const categoriesToTurnOff = [...vp.view.categorySelector.categories].filter(\n (categoryId: string) => !categoriesToKeep.has(categoryId)\n );\n vp.changeCategoryDisplay(categoriesToTurnOff, false);\n vp.changeCategoryDisplay(categoriesToKeep, true);\n this.updateCategoryOverride(vp, categoriesToTurnOff);\n }\n\n /**\n * Hide either based on Presentation selection, if defined, else the selected graphic elements\n * @param vp Viewport to affect\n */\n public static async hideCommand(vp: Viewport) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n HideIsolateEmphasizeManager.hideSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n HideIsolateEmphasizeManager.hideSelectedModel(vp);\n return;\n }\n EmphasizeElements.getOrCreate(vp).hideSelectedElements(vp, false, false); // Hide selected elements\n }\n\n /**\n * Hide the models defined by the elements in the current SelectionSet\n * @param vp Viewport to affect\n */\n public static async hideSelectedElementsModel(vp: Viewport) {\n const modelIds =\n await HideIsolateEmphasizeManager.getSelectionSetElementModels(vp.iModel);\n vp.changeModelDisplay(modelIds, false);\n this.updateModelOverride(vp, [...modelIds]);\n }\n\n /**\n * Clear (restore) the previously hidden/isolated models hidden by hideSelectedElementsModel\n * @param vp Viewport to affect\n */\n public static clearOverrideModels(vp: Viewport) {\n const ids = this._overrideModelIds.get(vp);\n if (ids) {\n vp.changeModelDisplay([...ids], true);\n this.clearModelOverride(vp);\n }\n }\n\n /**\n * Determine if models are hidden by hideSelectedElementsModel or isolateSelectedElementsModel\n * @param vp Viewport to affect\n */\n public static isOverrideModels(vp: Viewport): boolean {\n const ids = this._overrideModelIds.get(vp);\n return ids ? [...ids].length > 0 : false;\n }\n\n /**\n * Determine if categories are hidden by hideSelectedElementsCategory or isolateSelectedElementsCategory\n * @param vp Viewport to affect\n */\n public static isOverrideCategories(vp: Viewport): boolean {\n const ids = this._overrideCategoryIds.get(vp);\n return ids ? [...ids].length > 0 : false;\n }\n\n /**\n * Hide the categories defined by the elements in the current SelectionSet\n * @param vp Viewport to affect\n */\n public static async hideSelectedElementsCategory(vp: Viewport) {\n const categoryIds =\n await HideIsolateEmphasizeManager.getSelectionSetElementCategories(\n vp.iModel\n );\n vp.changeCategoryDisplay(categoryIds, false);\n this.updateCategoryOverride(vp, [...categoryIds]);\n }\n\n /**\n * Clear (restore) the previously hidden categories hidden by hideSelectedElementsCategory\n * @param vp Viewport to affect\n */\n public static clearOverrideCategories(vp: Viewport) {\n const ids = this._overrideCategoryIds.get(vp);\n if (ids) {\n vp.changeCategoryDisplay([...ids], true);\n this.clearCategoryOverride(vp);\n }\n }\n\n /** Checks to see if any featureOverrideProviders are active */\n public areFeatureOverridesActive(vp: Viewport): boolean {\n // Check all the emphasize possibilities\n const emphasizeElementsProvider =\n vp.findFeatureOverrideProviderOfType<EmphasizeElements>(\n EmphasizeElements\n );\n if (\n undefined !== emphasizeElementsProvider &&\n emphasizeElementsProvider.isActive(vp)\n )\n return true;\n else if (vp.neverDrawn && vp.neverDrawn.size > 0) return true;\n\n const modelOverrideProvider =\n vp.findFeatureOverrideProviderOfType<ModelOverrideProvider>(\n ModelOverrideProvider\n );\n if (\n undefined !== modelOverrideProvider &&\n modelOverrideProvider.modelIds.length > 0\n )\n return true;\n\n const subCategoryOverrideProvider =\n vp.findFeatureOverrideProviderOfType<SubCategoryOverrideProvider>(\n SubCategoryOverrideProvider\n );\n if (\n undefined !== subCategoryOverrideProvider &&\n subCategoryOverrideProvider.subCategoryIds.length > 0\n )\n return true;\n\n // Check hide/isolate possibilities\n if (HideIsolateEmphasizeManager.isOverrideCategories(vp)) return true;\n\n if (HideIsolateEmphasizeManager.isOverrideModels(vp)) return true;\n\n return false;\n }\n\n /**\n * Function that is run when `IsolateSelectedElementsModel` tool button is pressed\n */\n public async processIsolateSelectedElementsModel(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.isolateSelectedElementsModel(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedModels,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `IsolateSelectedElementsCategory` tool button is pressed\n */\n public async processIsolateSelectedElementsCategory(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.isolateSelectedElementsCategory(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedCategories,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `IsolateSelected` tool button is pressed\n */\n public async processIsolateSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.isolateSelected(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedElements,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `HideSelectedElementsModel` tool button is pressed\n */\n public async processHideSelectedElementsModel(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.hideSelectedElementsModel(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedModels,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `HideSelectedElementsCategory` tool button is pressed\n */\n public async processHideSelectedElementsCategory(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.hideSelectedElementsCategory(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedCategories,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `HideSelected` tool button is pressed\n */\n public async processHideSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n HideIsolateEmphasizeManager.hideSelected(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedElements,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `EmphasizeSelected` tool button is pressed\n */\n public async processEmphasizeSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.emphasizeSelected(vp);\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.EmphasizeSelectedElements,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `ClearEmphasize` tool button is pressed\n */\n public async processClearEmphasize(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearEmphasize(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `ClearOverrideModels` tool button is pressed\n */\n public async processClearOverrideModels(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearOverrideModels(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearOverrideModels,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `ClearOverrideCategories` tool button is pressed\n */\n public async processClearOverrideCategories(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearOverrideCategories(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearOverrideCategories,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Add category ids to the category override cache (hidden or isolated categories)\n */\n public static updateCategoryOverride(vp: Viewport, ids: string[]) {\n const prevIds = this._overrideCategoryIds.get(vp);\n const newIds = [...(prevIds || []), ...ids];\n this._overrideCategoryIds.set(vp, new Set(newIds));\n }\n\n /**\n * Add model ids to the model override cache (hidden or isolated models)\n */\n public static updateModelOverride(vp: Viewport, ids: string[]) {\n const prevIds = this._overrideModelIds.get(vp);\n const newIds = [...(prevIds || []), ...ids];\n this._overrideModelIds.set(vp, new Set(newIds));\n }\n\n /**\n * Return the list of category overrides (hidden or isolated categories)\n */\n public static getCategoryOverrides(vp: Viewport) {\n return this._overrideCategoryIds.get(vp);\n }\n\n /**\n * Return the list of model overrides (hidden or isolated models)\n */\n public static getModelOverrides(vp: Viewport) {\n return this._overrideModelIds.get(vp);\n }\n\n /**\n * Clear the category override cache (hidden or isolated categories)\n */\n private static clearCategoryOverride(vp: Viewport) {\n this._overrideCategoryIds.delete(vp);\n }\n\n /**\n * Clear the model override cache (hidden or isolated models)\n */\n private static clearModelOverride(vp: Viewport) {\n this._overrideModelIds.delete(vp);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionContextItemDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/selection/SelectionContextItemDef.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAcpD;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAMzD;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,EAAE,CAO1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAmB7C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CASrD;AAED;;GAEG;AACH,wBAAgB,mCAAmC,IAAI,uBAAuB,CAK7E;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,uBAAuB,CAKzE;AAED;;GAEG;AAEH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC7B,aAAa,CAYf;AAED;;GAEG;AAEH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC7B,aAAa,CAkBf;AAED;;GAEG;AAEH,qBAAa,+BAA+B;IAC1C,WAAkB,+BAA+B,mBAQhD;IAED,WAAkB,mCAAmC,mBAQpD;IAED,WAAkB,sBAAsB,mBASvC;IAED,WAAkB,yBAAyB,iBAa1C;IAED,WAAkB,4BAA4B,mBAQ7C;IAED,WAAkB,gCAAgC,mBAQjD;IAED,WAAkB,mBAAmB,mBAWpC;IAED,WAAkB,oBAAoB,iBAarC;IAED,WAAkB,wBAAwB,mBAWzC;IAED,WAAkB,wCAAwC,mBAYzD;CACF"}
1
+ {"version":3,"file":"SelectionContextItemDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/selection/SelectionContextItemDef.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAapD;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,EAAE,CAOzD;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,EAAE,CAS1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAsB7C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CASrD;AAED;;GAEG;AACH,wBAAgB,mCAAmC,IAAI,uBAAuB,CAK7E;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,uBAAuB,CAKzE;AAED;;GAEG;AAEH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC7B,aAAa,CAYf;AAED;;GAEG;AAEH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC7B,aAAa,CAkBf;AAED;;GAEG;AAEH,qBAAa,+BAA+B;IAC1C,WAAkB,+BAA+B,mBAQhD;IAED,WAAkB,mCAAmC,mBAQpD;IAED,WAAkB,sBAAsB,mBASvC;IAED,WAAkB,yBAAyB,iBAa1C;IAED,WAAkB,4BAA4B,mBAQ7C;IAED,WAAkB,gCAAgC,mBAQjD;IAED,WAAkB,mBAAmB,mBAWpC;IAED,WAAkB,oBAAoB,iBAarC;IAED,WAAkB,wBAAwB,mBAWzC;IAED,WAAkB,wCAAwC,mBAYzD;CACF"}
@@ -14,7 +14,6 @@ const CommandItemDef_1 = require("../shared/CommandItemDef");
14
14
  const SyncUiEventDispatcher_1 = require("../syncui/SyncUiEventDispatcher");
15
15
  const GroupItem_1 = require("../toolbar/GroupItem");
16
16
  const UiFramework_1 = require("../UiFramework");
17
- const HideIsolateEmphasizeManager_1 = require("./HideIsolateEmphasizeManager");
18
17
  const model_isolate_svg_1 = require("@bentley/icons-generic/icons/model-isolate.svg");
19
18
  const layers_isolate_svg_1 = require("@bentley/icons-generic/icons/layers-isolate.svg");
20
19
  const asset_isolate_svg_1 = require("@bentley/icons-generic/icons/asset-isolate.svg");
@@ -32,7 +31,8 @@ function getFeatureOverrideSyncEventIds() {
32
31
  return [
33
32
  SyncUiEventDispatcher_1.SyncUiEventId.ActiveContentChanged,
34
33
  SyncUiEventDispatcher_1.SyncUiEventId.ActiveViewportChanged,
35
- HideIsolateEmphasizeManager_1.HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId,
34
+ SyncUiEventDispatcher_1.SyncUiEventId.FeatureOverridesChanged,
35
+ SyncUiEventDispatcher_1.SyncUiEventId.ViewedModelsChanged,
36
36
  ];
37
37
  }
38
38
  exports.getFeatureOverrideSyncEventIds = getFeatureOverrideSyncEventIds;
@@ -45,6 +45,8 @@ function getSelectionContextSyncEventIds() {
45
45
  SyncUiEventDispatcher_1.SyncUiEventId.ActiveContentChanged,
46
46
  SyncUiEventDispatcher_1.SyncUiEventId.ActiveViewportChanged,
47
47
  SessionState_1.SessionStateActionId.SetNumItemsSelected,
48
+ SyncUiEventDispatcher_1.SyncUiEventId.FeatureOverridesChanged,
49
+ SyncUiEventDispatcher_1.SyncUiEventId.ViewedModelsChanged,
48
50
  ];
49
51
  }
50
52
  exports.getSelectionContextSyncEventIds = getSelectionContextSyncEventIds;
@@ -60,12 +62,14 @@ function isNoSelectionActive() {
60
62
  UiFramework_1.UiFramework.store.getState()[UiFramework_1.UiFramework.frameworkStateKey].frameworkState
61
63
  .sessionState.numItemsSelected;
62
64
  // istanbul ignore if
63
- if (activeContentControl &&
64
- /* istanbul ignore next */ activeContentControl.viewport &&
65
- /* istanbul ignore next */ (activeContentControl.viewport.view.iModel
66
- .selectionSet.size > 0 ||
67
- /* istanbul ignore next */ selectionCount > 0))
68
- return false;
65
+ if (activeContentControl?.viewport) {
66
+ const hiddenElementsSet = activeContentControl.viewport.neverDrawn;
67
+ const selectedElementsSet = activeContentControl.viewport.view.iModel.selectionSet.elements;
68
+ // TODO: add check for categories, subcategories and models
69
+ if (selectionCount > 0 ||
70
+ ![...selectedElementsSet].every((value) => hiddenElementsSet?.has(value)))
71
+ return false;
72
+ }
69
73
  return true;
70
74
  }
71
75
  exports.isNoSelectionActive = isNoSelectionActive;
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionContextItemDef.js","sourceRoot":"","sources":["../../../../src/appui-react/selection/SelectionContextItemDef.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,0DAG+B;AAC/B,wDAA6D;AAC7D,6DAA0D;AAE1D,2EAAgE;AAChE,oDAAoD;AACpD,gDAA6C;AAC7C,+EAAkF;AAClF,sFAA6E;AAC7E,wFAA+E;AAC/E,sFAA6E;AAC7E,0EAAkE;AAClE,gFAAuE;AACvE,kFAAyE;AACzE,8GAAoG;AACpG,kHAAwG;AACxG,8FAAmF;AACnF,gFAAwE;AAExE;;GAEG;AACH,SAAgB,8BAA8B;IAC5C,OAAO;QACL,qCAAa,CAAC,oBAAoB;QAClC,qCAAa,CAAC,qBAAqB;QACnC,+DAAiC,CAAC,4BAA4B;KAC/D,CAAC;AACJ,CAAC;AAND,wEAMC;AAED;;GAEG;AACH,SAAgB,+BAA+B;IAC7C,OAAO;QACL,qCAAa,CAAC,mBAAmB;QACjC,qCAAa,CAAC,oBAAoB;QAClC,qCAAa,CAAC,qBAAqB;QACnC,mCAAoB,CAAC,mBAAmB;KACzC,CAAC;AACJ,CAAC;AAPD,0EAOC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,MAAM,oBAAoB,GAAG,yBAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAC3E,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,qBAAqB;IACrB,IAAI,CAAC,yBAAW,CAAC,iBAAiB;QAChC,cAAc;YACZ,yBAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,yBAAW,CAAC,iBAAiB,CAAC,CAAC,cAAc;iBACvE,YAAY,CAAC,gBAAgB,CAAC;IAErC,qBAAqB;IACrB,IACE,oBAAoB;QACpB,0BAA0B,CAAC,oBAAoB,CAAC,QAAQ;QACxD,0BAA0B,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;aAClE,YAAY,CAAC,IAAI,GAAG,CAAC;YACtB,0BAA0B,CAAC,cAAc,GAAG,CAAC,CAAC;QAEhD,OAAO,KAAK,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC;AAnBD,kDAmBC;AAED;;GAEG;AACH,SAAgB,2BAA2B;IACzC,MAAM,oBAAoB,GAAG,yBAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAC3E,uBAAuB;IACvB,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,QAAQ;QACvD,OAAO,CAAC,yBAAW,CAAC,iCAAiC,CAAC,yBAAyB,CAC7E,oBAAoB,CAAC,QAAQ,CAC9B,CAAC;IAEJ,OAAO,IAAI,CAAC;AACd,CAAC;AATD,kEASC;AAED;;GAEG;AACH,SAAgB,mCAAmC;IACjD,OAAO,IAAI,wCAAuB,CAChC,2BAA2B,EAC3B,8BAA8B,EAAE,CACjC,CAAC;AACJ,CAAC;AALD,kFAKC;AAED;;GAEG;AACH,SAAgB,+BAA+B;IAC7C,OAAO,IAAI,wCAAuB,CAChC,mBAAmB,EACnB,+BAA+B,EAAE,CAClC,CAAC;AACJ,CAAC;AALD,0EAKC;AAED;;GAEG;AACH,uBAAuB;AACvB,SAAgB,+BAA+B,CAC7C,KAA8B;IAE9B,MAAM,oBAAoB,GAAG,yBAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAC3E,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,uBAAuB;IACvB,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,QAAQ;QACvD,SAAS;YACP,yBAAW,CAAC,iCAAiC,CAAC,yBAAyB,CACrE,oBAAoB,CAAC,QAAQ,CAC9B,CAAC;IAEN,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AAdD,0EAcC;AAED;;GAEG;AACH,uBAAuB;AACvB,SAAgB,yBAAyB,CACvC,KAA8B;IAE9B,MAAM,oBAAoB,GAAG,yBAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAC3E,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,yBAAW,CAAC,iBAAiB;QAChC,cAAc;YACZ,yBAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,yBAAW,CAAC,iBAAiB,CAAC,CAAC,cAAc;iBACvE,YAAY,CAAC,gBAAgB,CAAC;IAErC,IACE,oBAAoB;QACpB,oBAAoB,CAAC,QAAQ;QAC7B,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;YAC9D,cAAc,GAAG,CAAC,CAAC;QAErB,SAAS,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AApBD,8DAoBC;AAED;;GAEG;AACH,uBAAuB;AACvB,MAAa,+BAA+B;IACnC,MAAM,KAAK,+BAA+B;QAC/C,OAAO,IAAI,+BAAc,CAAC;YACxB,SAAS,EAAE,0BAA0B;YACrC,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CAAC,2BAAe,CAAC;YACvE,QAAQ,EAAE,iCAAiC;YAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,yBAAW,CAAC,iCAAiC,CAAC,mCAAmC,EAAE;SACtF,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,mCAAmC;QACnD,OAAO,IAAI,+BAAc,CAAC;YACxB,SAAS,EAAE,6BAA6B;YACxC,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CAAC,4BAAgB,CAAC;YACxE,QAAQ,EAAE,qCAAqC;YAC/C,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,yBAAW,CAAC,iCAAiC,CAAC,sCAAsC,EAAE;SACzF,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,sBAAsB;QACtC,OAAO,IAAI,+BAAc,CAAC;YACxB,SAAS,EAAE,6BAA6B;YACxC,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CAAC,2BAAe,CAAC;YACvE,QAAQ,EAAE,mCAAmC;YAC7C,QAAQ,EAAE,+BAA+B,EAAE;YAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,yBAAW,CAAC,iCAAiC,CAAC,sBAAsB,EAAE;SACzE,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,yBAAyB;QACzC,OAAO,IAAI,wBAAY,CAAC;YACtB,OAAO,EAAE,mCAAmC;YAC5C,QAAQ,EAAE,2BAA2B;YACrC,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CAAC,qBAAU,CAAC;YAClE,QAAQ,EAAE,+BAA+B,EAAE;YAC3C,KAAK,EAAE;gBACL,IAAI,CAAC,sBAAsB;gBAC3B,IAAI,CAAC,mCAAmC;gBACxC,IAAI,CAAC,+BAA+B;aACrC;YACD,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,4BAA4B;QAC5C,OAAO,IAAI,+BAAc,CAAC;YACxB,SAAS,EAAE,uBAAuB;YAClC,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CAAC,wBAAY,CAAC;YACpE,QAAQ,EAAE,8BAA8B;YACxC,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,yBAAW,CAAC,iCAAiC,CAAC,gCAAgC,EAAE;SACnF,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,gCAAgC;QAChD,OAAO,IAAI,+BAAc,CAAC;YACxB,SAAS,EAAE,0BAA0B;YACrC,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CAAC,yBAAa,CAAC;YACrE,QAAQ,EAAE,kCAAkC;YAC5C,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,yBAAW,CAAC,iCAAiC,CAAC,mCAAmC,EAAE;SACtF,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,mBAAmB;QACnC,OAAO,IAAI,+BAAc,CAAC;YACxB,SAAS,EAAE,0BAA0B;YACrC,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CACpD,uCAA0B,CAC3B;YACD,QAAQ,EAAE,gCAAgC;YAC1C,QAAQ,EAAE,+BAA+B,EAAE;YAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,yBAAW,CAAC,iCAAiC,CAAC,mBAAmB,EAAE;SACtE,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,oBAAoB;QACpC,OAAO,IAAI,wBAAY,CAAC;YACtB,OAAO,EAAE,gCAAgC;YACzC,QAAQ,EAAE,wBAAwB;YAClC,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CAAC,+BAAiB,CAAC;YACzE,QAAQ,EAAE,+BAA+B,EAAE;YAC3C,KAAK,EAAE;gBACL,IAAI,CAAC,mBAAmB;gBACxB,IAAI,CAAC,gCAAgC;gBACrC,IAAI,CAAC,4BAA4B;aAClC;YACD,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,wBAAwB;QACxC,OAAO,IAAI,+BAAc,CAAC;YACxB,SAAS,EAAE,+BAA+B;YAC1C,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CACpD,yCAA4B,CAC7B;YACD,QAAQ,EAAE,qCAAqC;YAC/C,QAAQ,EAAE,+BAA+B,EAAE;YAC3C,OAAO,EAAE,KAAK,IAAI,EAAE,CAClB,yBAAW,CAAC,iCAAiC,CAAC,wBAAwB,EAAE;SAC3E,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,KAAK,wCAAwC;QACxD,OAAO,IAAI,+BAAc,CAAC;YACxB,SAAS,EAAE,uCAAuC;YAClD,QAAQ,EAAE,kCAAiB,CAAC,0BAA0B,CAAC,wBAAa,CAAC;YACrE,QAAQ,EAAE,mCAAmC;YAC7C,QAAQ,EAAE,mCAAmC,EAAE;YAC/C,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,yBAAW,CAAC,iCAAiC,CAAC,qBAAqB,EAAE,CAAC;gBAC5E,MAAM,yBAAW,CAAC,iCAAiC,CAAC,0BAA0B,EAAE,CAAC;gBACjF,MAAM,yBAAW,CAAC,iCAAiC,CAAC,8BAA8B,EAAE,CAAC;YACvF,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAzHD,0EAyHC","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/** @packageDocumentation\n * @module Tools\n */\n\nimport {\n ConditionalBooleanValue,\n IconSpecUtilities,\n} from \"@itwin/appui-abstract\";\nimport { SessionStateActionId } from \"../redux/SessionState\";\nimport { CommandItemDef } from \"../shared/CommandItemDef\";\nimport type { BaseItemState } from \"../shared/ItemDefBase\";\nimport { SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\nimport { GroupItemDef } from \"../toolbar/GroupItem\";\nimport { UiFramework } from \"../UiFramework\";\nimport { HideIsolateEmphasizeActionHandler } from \"./HideIsolateEmphasizeManager\";\nimport svgModelIsolate from \"@bentley/icons-generic/icons/model-isolate.svg\";\nimport svgLayersIsolate from \"@bentley/icons-generic/icons/layers-isolate.svg\";\nimport svgAssetIsolate from \"@bentley/icons-generic/icons/asset-isolate.svg\";\nimport svgIsolate from \"@bentley/icons-generic/icons/isolate.svg\";\nimport svgModelHide from \"@bentley/icons-generic/icons/model-hide.svg\";\nimport svgLayersHide from \"@bentley/icons-generic/icons/layers-hide.svg\";\nimport svgAssetClassificationHide from \"@bentley/icons-generic/icons/asset-classification-hide.svg\";\nimport svgVisibilitySemiTransparent from \"@bentley/icons-generic/icons/visibility-semi-transparent.svg\";\nimport svgVisibilityHide from \"@bentley/icons-generic/icons/visibility-hide_2.svg\";\nimport svgVisibility from \"@bentley/icons-generic/icons/visibility.svg\";\n\n/** return SyncEventIds that trigger selection state function refresh.\n * @beta\n */\nexport function getFeatureOverrideSyncEventIds(): string[] {\n return [\n SyncUiEventId.ActiveContentChanged,\n SyncUiEventId.ActiveViewportChanged,\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId,\n ];\n}\n\n/** return SyncEventIds that trigger selection state function refresh.\n * @beta\n */\nexport function getSelectionContextSyncEventIds(): string[] {\n return [\n SyncUiEventId.SelectionSetChanged,\n SyncUiEventId.ActiveContentChanged,\n SyncUiEventId.ActiveViewportChanged,\n SessionStateActionId.SetNumItemsSelected,\n ];\n}\n\n/** return SyncEventIds that trigger selection state function refresh.\n * @beta\n */\nexport function isNoSelectionActive(): boolean {\n const activeContentControl = UiFramework.content.getActiveContentControl();\n let selectionCount = 0;\n // istanbul ignore if\n if (!UiFramework.frameworkStateKey)\n selectionCount =\n UiFramework.store.getState()[UiFramework.frameworkStateKey].frameworkState\n .sessionState.numItemsSelected;\n\n // istanbul ignore if\n if (\n activeContentControl &&\n /* istanbul ignore next */ activeContentControl.viewport &&\n /* istanbul ignore next */ (activeContentControl.viewport.view.iModel\n .selectionSet.size > 0 ||\n /* istanbul ignore next */ selectionCount > 0)\n )\n return false;\n return true;\n}\n\n/** return ConditionalBooleanValue object used to show items if selection set is active.\n * @beta\n */\nexport function areNoFeatureOverridesActive(): boolean {\n const activeContentControl = UiFramework.content.getActiveContentControl();\n // istanbul ignore next\n if (activeContentControl && activeContentControl.viewport)\n return !UiFramework.hideIsolateEmphasizeActionHandler.areFeatureOverridesActive(\n activeContentControl.viewport\n );\n\n return true;\n}\n\n/** return ConditionalBooleanValue object used to show item if feature overrides are active.\n * @beta\n */\nexport function getIsHiddenIfFeatureOverridesActive(): ConditionalBooleanValue {\n return new ConditionalBooleanValue(\n areNoFeatureOverridesActive,\n getFeatureOverrideSyncEventIds()\n );\n}\n\n/** return ConditionalBooleanValue object used to show items if selection set is active.\n * @beta\n */\nexport function getIsHiddenIfSelectionNotActive(): ConditionalBooleanValue {\n return new ConditionalBooleanValue(\n isNoSelectionActive,\n getSelectionContextSyncEventIds()\n );\n}\n\n/** return state with isVisible set to true is SectionSet is active.\n * @beta\n */\n// istanbul ignore next\nexport function featureOverridesActiveStateFunc(\n state: Readonly<BaseItemState>\n): BaseItemState {\n const activeContentControl = UiFramework.content.getActiveContentControl();\n let isVisible = false;\n\n // istanbul ignore next\n if (activeContentControl && activeContentControl.viewport)\n isVisible =\n UiFramework.hideIsolateEmphasizeActionHandler.areFeatureOverridesActive(\n activeContentControl.viewport\n );\n\n return { ...state, isVisible };\n}\n\n/** return state with isVisible set to true is SectionSet is active.\n * @beta\n */\n// istanbul ignore next\nexport function selectionContextStateFunc(\n state: Readonly<BaseItemState>\n): BaseItemState {\n const activeContentControl = UiFramework.content.getActiveContentControl();\n let isVisible = false;\n\n let selectionCount = 0;\n if (!UiFramework.frameworkStateKey)\n selectionCount =\n UiFramework.store.getState()[UiFramework.frameworkStateKey].frameworkState\n .sessionState.numItemsSelected;\n\n if (\n activeContentControl &&\n activeContentControl.viewport &&\n (activeContentControl.viewport.view.iModel.selectionSet.size > 0 ||\n selectionCount > 0)\n )\n isVisible = true;\n return { ...state, isVisible };\n}\n\n/** Utility Class that provides definitions for tools dependent on current selection. These definitions can be used to populate toolbars.\n * @public\n */\n// istanbul ignore next\nexport class SelectionContextToolDefinitions {\n public static get isolateModelsInSelectionItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.IsolateModel\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgModelIsolate),\n labelKey: \"UiFramework:tools.isolateModels\",\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processIsolateSelectedElementsModel(),\n });\n }\n\n public static get isolateCategoriesInSelectionItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.IsolateCategory\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgLayersIsolate),\n labelKey: \"UiFramework:tools.isolateCategories\",\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processIsolateSelectedElementsCategory(),\n });\n }\n\n public static get isolateElementsItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.IsolateSelected\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgAssetIsolate),\n labelKey: \"UiFramework:tools.isolateSelected\",\n isHidden: getIsHiddenIfSelectionNotActive(),\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processIsolateSelected(),\n });\n }\n\n public static get isolateSelectionToolGroup() {\n return new GroupItemDef({\n groupId: \"UiFramework.IsolateSelectionGroup\",\n labelKey: \"UiFramework:tools.isolate\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgIsolate),\n isHidden: getIsHiddenIfSelectionNotActive(),\n items: [\n this.isolateElementsItemDef,\n this.isolateCategoriesInSelectionItemDef,\n this.isolateModelsInSelectionItemDef,\n ],\n itemsInColumn: 3,\n });\n }\n\n public static get hideModelsInSelectionItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.HideModel\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgModelHide),\n labelKey: \"UiFramework:tools.hideModels\",\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processHideSelectedElementsModel(),\n });\n }\n\n public static get hideCategoriesInSelectionItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.HideCategory\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgLayersHide),\n labelKey: \"UiFramework:tools.hideCategories\",\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processHideSelectedElementsCategory(),\n });\n }\n\n public static get hideElementsItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.HideSelected\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(\n svgAssetClassificationHide\n ),\n labelKey: \"UiFramework:tools.hideSelected\",\n isHidden: getIsHiddenIfSelectionNotActive(),\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processHideSelected(),\n });\n }\n\n public static get hideSectionToolGroup() {\n return new GroupItemDef({\n groupId: \"UiFramework.HideSelectionGroup\",\n labelKey: \"UiFramework:tools.hide\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgVisibilityHide),\n isHidden: getIsHiddenIfSelectionNotActive(),\n items: [\n this.hideElementsItemDef,\n this.hideCategoriesInSelectionItemDef,\n this.hideModelsInSelectionItemDef,\n ],\n itemsInColumn: 3,\n });\n }\n\n public static get emphasizeElementsItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.EmphasizeSelected\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(\n svgVisibilitySemiTransparent\n ),\n labelKey: \"UiFramework:tools.emphasizeSelected\",\n isHidden: getIsHiddenIfSelectionNotActive(),\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processEmphasizeSelected(),\n });\n }\n\n public static get clearHideIsolateEmphasizeElementsItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.ClearHideIsolateEmphasize\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgVisibility),\n labelKey: \"UiFramework:tools.clearVisibility\",\n isHidden: getIsHiddenIfFeatureOverridesActive(),\n execute: async () => {\n await UiFramework.hideIsolateEmphasizeActionHandler.processClearEmphasize();\n await UiFramework.hideIsolateEmphasizeActionHandler.processClearOverrideModels();\n await UiFramework.hideIsolateEmphasizeActionHandler.processClearOverrideCategories();\n },\n });\n }\n}\n"]}
1
+ {"version":3,"file":"SelectionContextItemDef.js","sourceRoot":"","sources":["../../../../src/appui-react/selection/SelectionContextItemDef.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/** @packageDocumentation\n * @module Tools\n */\n\nimport {\n ConditionalBooleanValue,\n IconSpecUtilities,\n} from \"@itwin/appui-abstract\";\nimport { SessionStateActionId } from \"../redux/SessionState\";\nimport { CommandItemDef } from \"../shared/CommandItemDef\";\nimport type { BaseItemState } from \"../shared/ItemDefBase\";\nimport { SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\nimport { GroupItemDef } from \"../toolbar/GroupItem\";\nimport { UiFramework } from \"../UiFramework\";\nimport svgModelIsolate from \"@bentley/icons-generic/icons/model-isolate.svg\";\nimport svgLayersIsolate from \"@bentley/icons-generic/icons/layers-isolate.svg\";\nimport svgAssetIsolate from \"@bentley/icons-generic/icons/asset-isolate.svg\";\nimport svgIsolate from \"@bentley/icons-generic/icons/isolate.svg\";\nimport svgModelHide from \"@bentley/icons-generic/icons/model-hide.svg\";\nimport svgLayersHide from \"@bentley/icons-generic/icons/layers-hide.svg\";\nimport svgAssetClassificationHide from \"@bentley/icons-generic/icons/asset-classification-hide.svg\";\nimport svgVisibilitySemiTransparent from \"@bentley/icons-generic/icons/visibility-semi-transparent.svg\";\nimport svgVisibilityHide from \"@bentley/icons-generic/icons/visibility-hide_2.svg\";\nimport svgVisibility from \"@bentley/icons-generic/icons/visibility.svg\";\n\n/** return SyncEventIds that trigger selection state function refresh.\n * @beta\n */\nexport function getFeatureOverrideSyncEventIds(): string[] {\n return [\n SyncUiEventId.ActiveContentChanged,\n SyncUiEventId.ActiveViewportChanged,\n SyncUiEventId.FeatureOverridesChanged,\n SyncUiEventId.ViewedModelsChanged,\n ];\n}\n\n/** return SyncEventIds that trigger selection state function refresh.\n * @beta\n */\nexport function getSelectionContextSyncEventIds(): string[] {\n return [\n SyncUiEventId.SelectionSetChanged,\n SyncUiEventId.ActiveContentChanged,\n SyncUiEventId.ActiveViewportChanged,\n SessionStateActionId.SetNumItemsSelected,\n SyncUiEventId.FeatureOverridesChanged,\n SyncUiEventId.ViewedModelsChanged,\n ];\n}\n\n/** return SyncEventIds that trigger selection state function refresh.\n * @beta\n */\nexport function isNoSelectionActive(): boolean {\n const activeContentControl = UiFramework.content.getActiveContentControl();\n let selectionCount = 0;\n // istanbul ignore if\n if (!UiFramework.frameworkStateKey)\n selectionCount =\n UiFramework.store.getState()[UiFramework.frameworkStateKey].frameworkState\n .sessionState.numItemsSelected;\n\n // istanbul ignore if\n if (activeContentControl?.viewport) {\n const hiddenElementsSet = activeContentControl.viewport.neverDrawn;\n const selectedElementsSet =\n activeContentControl.viewport.view.iModel.selectionSet.elements;\n // TODO: add check for categories, subcategories and models\n if (\n selectionCount > 0 ||\n ![...selectedElementsSet].every((value) => hiddenElementsSet?.has(value))\n )\n return false;\n }\n return true;\n}\n\n/** return ConditionalBooleanValue object used to show items if selection set is active.\n * @beta\n */\nexport function areNoFeatureOverridesActive(): boolean {\n const activeContentControl = UiFramework.content.getActiveContentControl();\n // istanbul ignore next\n if (activeContentControl && activeContentControl.viewport)\n return !UiFramework.hideIsolateEmphasizeActionHandler.areFeatureOverridesActive(\n activeContentControl.viewport\n );\n\n return true;\n}\n\n/** return ConditionalBooleanValue object used to show item if feature overrides are active.\n * @beta\n */\nexport function getIsHiddenIfFeatureOverridesActive(): ConditionalBooleanValue {\n return new ConditionalBooleanValue(\n areNoFeatureOverridesActive,\n getFeatureOverrideSyncEventIds()\n );\n}\n\n/** return ConditionalBooleanValue object used to show items if selection set is active.\n * @beta\n */\nexport function getIsHiddenIfSelectionNotActive(): ConditionalBooleanValue {\n return new ConditionalBooleanValue(\n isNoSelectionActive,\n getSelectionContextSyncEventIds()\n );\n}\n\n/** return state with isVisible set to true is SectionSet is active.\n * @beta\n */\n// istanbul ignore next\nexport function featureOverridesActiveStateFunc(\n state: Readonly<BaseItemState>\n): BaseItemState {\n const activeContentControl = UiFramework.content.getActiveContentControl();\n let isVisible = false;\n\n // istanbul ignore next\n if (activeContentControl && activeContentControl.viewport)\n isVisible =\n UiFramework.hideIsolateEmphasizeActionHandler.areFeatureOverridesActive(\n activeContentControl.viewport\n );\n\n return { ...state, isVisible };\n}\n\n/** return state with isVisible set to true is SectionSet is active.\n * @beta\n */\n// istanbul ignore next\nexport function selectionContextStateFunc(\n state: Readonly<BaseItemState>\n): BaseItemState {\n const activeContentControl = UiFramework.content.getActiveContentControl();\n let isVisible = false;\n\n let selectionCount = 0;\n if (!UiFramework.frameworkStateKey)\n selectionCount =\n UiFramework.store.getState()[UiFramework.frameworkStateKey].frameworkState\n .sessionState.numItemsSelected;\n\n if (\n activeContentControl &&\n activeContentControl.viewport &&\n (activeContentControl.viewport.view.iModel.selectionSet.size > 0 ||\n selectionCount > 0)\n )\n isVisible = true;\n return { ...state, isVisible };\n}\n\n/** Utility Class that provides definitions for tools dependent on current selection. These definitions can be used to populate toolbars.\n * @public\n */\n// istanbul ignore next\nexport class SelectionContextToolDefinitions {\n public static get isolateModelsInSelectionItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.IsolateModel\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgModelIsolate),\n labelKey: \"UiFramework:tools.isolateModels\",\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processIsolateSelectedElementsModel(),\n });\n }\n\n public static get isolateCategoriesInSelectionItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.IsolateCategory\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgLayersIsolate),\n labelKey: \"UiFramework:tools.isolateCategories\",\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processIsolateSelectedElementsCategory(),\n });\n }\n\n public static get isolateElementsItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.IsolateSelected\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgAssetIsolate),\n labelKey: \"UiFramework:tools.isolateSelected\",\n isHidden: getIsHiddenIfSelectionNotActive(),\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processIsolateSelected(),\n });\n }\n\n public static get isolateSelectionToolGroup() {\n return new GroupItemDef({\n groupId: \"UiFramework.IsolateSelectionGroup\",\n labelKey: \"UiFramework:tools.isolate\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgIsolate),\n isHidden: getIsHiddenIfSelectionNotActive(),\n items: [\n this.isolateElementsItemDef,\n this.isolateCategoriesInSelectionItemDef,\n this.isolateModelsInSelectionItemDef,\n ],\n itemsInColumn: 3,\n });\n }\n\n public static get hideModelsInSelectionItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.HideModel\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgModelHide),\n labelKey: \"UiFramework:tools.hideModels\",\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processHideSelectedElementsModel(),\n });\n }\n\n public static get hideCategoriesInSelectionItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.HideCategory\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgLayersHide),\n labelKey: \"UiFramework:tools.hideCategories\",\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processHideSelectedElementsCategory(),\n });\n }\n\n public static get hideElementsItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.HideSelected\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(\n svgAssetClassificationHide\n ),\n labelKey: \"UiFramework:tools.hideSelected\",\n isHidden: getIsHiddenIfSelectionNotActive(),\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processHideSelected(),\n });\n }\n\n public static get hideSectionToolGroup() {\n return new GroupItemDef({\n groupId: \"UiFramework.HideSelectionGroup\",\n labelKey: \"UiFramework:tools.hide\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgVisibilityHide),\n isHidden: getIsHiddenIfSelectionNotActive(),\n items: [\n this.hideElementsItemDef,\n this.hideCategoriesInSelectionItemDef,\n this.hideModelsInSelectionItemDef,\n ],\n itemsInColumn: 3,\n });\n }\n\n public static get emphasizeElementsItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.EmphasizeSelected\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(\n svgVisibilitySemiTransparent\n ),\n labelKey: \"UiFramework:tools.emphasizeSelected\",\n isHidden: getIsHiddenIfSelectionNotActive(),\n execute: async () =>\n UiFramework.hideIsolateEmphasizeActionHandler.processEmphasizeSelected(),\n });\n }\n\n public static get clearHideIsolateEmphasizeElementsItemDef() {\n return new CommandItemDef({\n commandId: \"UiFramework.ClearHideIsolateEmphasize\",\n iconSpec: IconSpecUtilities.createWebComponentIconSpec(svgVisibility),\n labelKey: \"UiFramework:tools.clearVisibility\",\n isHidden: getIsHiddenIfFeatureOverridesActive(),\n execute: async () => {\n await UiFramework.hideIsolateEmphasizeActionHandler.processClearEmphasize();\n await UiFramework.hideIsolateEmphasizeActionHandler.processClearOverrideModels();\n await UiFramework.hideIsolateEmphasizeActionHandler.processClearOverrideCategories();\n },\n });\n }\n}\n"]}
@@ -36,7 +36,8 @@ function getQuantityFormatsSettingsManagerEntry(itemPriority, opts) {
36
36
  tabId: "uifw:Quantity",
37
37
  label: UiFramework_1.UiFramework.translate("settings.quantity-formatting.label"),
38
38
  subLabel: UiFramework_1.UiFramework.translate("settings.quantity-formatting.subLabel"),
39
- page: (React.createElement(QuantityFormatSettingsPage, { initialQuantityType: initialQuantityType !== null && initialQuantityType !== void 0 ? initialQuantityType : core_frontend_1.QuantityType.Length, availableUnitSystems: availableUnitSystems !== null && availableUnitSystems !== void 0 ? availableUnitSystems : new Set(["metric", "imperial", "usCustomary", "usSurvey"]) })),
39
+ page: (React.createElement(QuantityFormatSettingsPage, { initialQuantityType: initialQuantityType ?? core_frontend_1.QuantityType.Length, availableUnitSystems: availableUnitSystems ??
40
+ new Set(["metric", "imperial", "usCustomary", "usSurvey"]) })),
40
41
  isDisabled: false,
41
42
  icon: React.createElement(itwinui_icons_react_1.SvgMeasure, null),
42
43
  tooltip: UiFramework_1.UiFramework.translate("settings.quantity-formatting.tooltip"),
@@ -1 +1 @@
1
- {"version":3,"file":"QuantityFormat.js","sourceRoot":"","sources":["../../../../../src/appui-react/settings/quantityformatting/QuantityFormat.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/** @packageDocumentation\n * @module Settings\n */\n\nimport \"./QuantityFormat.scss\";\nimport * as React from \"react\";\nimport { DeepCompare } from \"@itwin/core-geometry\";\nimport type {\n QuantityFormatsChangedArgs,\n QuantityTypeArg,\n QuantityTypeKey,\n} from \"@itwin/core-frontend\";\nimport {\n getQuantityTypeKey,\n IModelApp,\n QuantityType,\n} from \"@itwin/core-frontend\";\nimport type {\n FormatProps,\n FormatterSpec,\n UnitSystemKey,\n} from \"@itwin/core-quantity\";\nimport { DialogButtonType } from \"@itwin/appui-abstract\";\nimport {\n FormatSample,\n QuantityFormatPanel,\n} from \"@itwin/imodel-components-react\";\nimport type { SettingsTabEntry } from \"@itwin/core-react\";\nimport {\n Dialog,\n Listbox,\n ListboxItem,\n useSaveBeforeActivatingNewSettingsTab,\n useSaveBeforeClosingSettingsContainer,\n} from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UnitSystemSelector } from \"./UnitSystemSelector\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { SvgMeasure } from \"@itwin/itwinui-icons-react\";\n\nfunction formatAreEqual(obj1: FormatProps, obj2: FormatProps) {\n const compare = new DeepCompare();\n return compare.compare(obj1, obj2);\n}\n\n/** Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport interface QuantityFormatterSettingsOptions {\n initialQuantityType: QuantityTypeArg;\n availableUnitSystems: Set<UnitSystemKey>;\n}\n\n/**\n * Return a SettingsTabEntry that can be used to define the available settings that can be set for an application.\n * @param itemPriority - Used to define the order of the entry in the Settings Stage\n * @param opts - Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport function getQuantityFormatsSettingsManagerEntry(\n itemPriority: number,\n opts?: Partial<QuantityFormatterSettingsOptions>\n): SettingsTabEntry {\n const { availableUnitSystems, initialQuantityType } = { ...opts };\n return {\n itemPriority,\n tabId: \"uifw:Quantity\",\n label: UiFramework.translate(\"settings.quantity-formatting.label\"),\n subLabel: UiFramework.translate(\"settings.quantity-formatting.subLabel\"),\n page: (\n <QuantityFormatSettingsPage\n initialQuantityType={initialQuantityType ?? QuantityType.Length}\n availableUnitSystems={\n availableUnitSystems ??\n new Set([\"metric\", \"imperial\", \"usCustomary\", \"usSurvey\"])\n }\n />\n ),\n isDisabled: false,\n icon: <SvgMeasure />,\n tooltip: UiFramework.translate(\"settings.quantity-formatting.tooltip\"),\n pageWillHandleCloseRequest: true,\n };\n}\n\n/** UI Component shown in settings page to set the active Presentation Unit System and to set format overrides.\n * @beta\n */\nexport function QuantityFormatSettingsPage({\n initialQuantityType,\n availableUnitSystems,\n}: QuantityFormatterSettingsOptions) {\n const [activeUnitSystemKey, setActiveUnitSystemKey] = React.useState(\n IModelApp.quantityFormatter.activeUnitSystem\n );\n const [activeQuantityType, setActiveQuantityType] = React.useState(\n getQuantityTypeKey(initialQuantityType)\n );\n const [activeFormatterSpec, setActiveFormatterSpec] = React.useState<\n FormatterSpec | undefined\n >(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n getQuantityTypeKey(activeQuantityType)\n )\n );\n const [saveEnabled, setSaveEnabled] = React.useState(false);\n const [clearEnabled, setClearEnabled] = React.useState(\n IModelApp.quantityFormatter.hasActiveOverride(initialQuantityType, true)\n );\n const newQuantityTypeRef = React.useRef<QuantityTypeKey>();\n const formatSectionLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.formatSectionLabel\")\n );\n const setButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.setButtonLabel\")\n );\n const clearButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.clearButtonLabel\")\n );\n\n React.useEffect(() => {\n const handleUnitSystemChanged = (): void => {\n // istanbul ignore else\n if (\n activeUnitSystemKey !== IModelApp.quantityFormatter.activeUnitSystem\n ) {\n setActiveUnitSystemKey(IModelApp.quantityFormatter.activeUnitSystem);\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n };\n\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(\n handleUnitSystemChanged\n );\n return () => {\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.removeListener(\n handleUnitSystemChanged\n );\n };\n }, [activeQuantityType, activeUnitSystemKey]);\n\n React.useEffect(() => {\n const handleFormatChanged = (args: QuantityFormatsChangedArgs): void => {\n if (!newQuantityTypeRef.current) {\n const quantityKey =\n IModelApp.quantityFormatter.getQuantityTypeKey(activeQuantityType);\n // istanbul ignore else\n if (args.quantityType === quantityKey) {\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n }\n newQuantityTypeRef.current = undefined;\n };\n IModelApp.quantityFormatter.onQuantityFormatsChanged.addListener(\n handleFormatChanged\n );\n return () => {\n IModelApp.quantityFormatter.onQuantityFormatsChanged.removeListener(\n handleFormatChanged\n );\n };\n }, [activeQuantityType]);\n\n const saveChanges = React.useCallback(\n (afterSaveFunction: (args: any) => void, args?: any) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={args}\n onDialogClose={afterSaveFunction}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n afterSaveFunction(args);\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n useSaveBeforeActivatingNewSettingsTab(\n UiFramework.settingsManager,\n saveChanges\n );\n useSaveBeforeClosingSettingsContainer(\n UiFramework.settingsManager,\n saveChanges\n );\n\n const processListboxValueChange = React.useCallback(\n (newQuantityType: QuantityTypeKey) => {\n const volumeFormatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n newQuantityType\n );\n setActiveFormatterSpec(volumeFormatterSpec);\n setActiveQuantityType(newQuantityType);\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(newQuantityType, true)\n );\n },\n []\n );\n\n const onListboxValueChange = React.useCallback(\n (newQuantityType: string) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n newQuantityTypeRef.current = newQuantityType;\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={newQuantityType}\n onDialogClose={processListboxValueChange}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n processListboxValueChange(newQuantityType);\n },\n [activeFormatterSpec, activeQuantityType, processListboxValueChange]\n );\n\n const handleOnFormatChanged = React.useCallback(\n async (formatProps: FormatProps) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const newSpec =\n await IModelApp.quantityFormatter.generateFormatterSpecByType(\n activeQuantityType,\n formatProps\n );\n const formatPropsInUse =\n IModelApp.quantityFormatter.getFormatPropsByQuantityType(\n activeQuantityType\n );\n // istanbul ignore else\n if (formatPropsInUse)\n setSaveEnabled(!formatAreEqual(formatProps, formatPropsInUse));\n setActiveFormatterSpec(newSpec);\n }\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n const handleOnFormatSave = React.useCallback(async () => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const format = activeFormatterSpec.format.toJSON();\n await IModelApp.quantityFormatter.setOverrideFormat(\n activeQuantityType,\n format\n );\n setClearEnabled(true);\n }\n }, [activeFormatterSpec, activeQuantityType]);\n\n const handleOnFormatReset = React.useCallback(async () => {\n await IModelApp.quantityFormatter.clearOverrideFormats(activeQuantityType);\n setClearEnabled(false);\n }, [activeQuantityType]);\n\n const processNewUnitSystem = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n await IModelApp.quantityFormatter.setActiveUnitSystem(unitSystem);\n },\n []\n );\n\n const handleUnitSystemSelected = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n if (unitSystem === activeUnitSystemKey) return;\n saveChanges(processNewUnitSystem, unitSystem);\n },\n [activeUnitSystemKey, processNewUnitSystem, saveChanges]\n );\n\n return (\n <div className=\"quantity-formatting-container\">\n <UnitSystemSelector\n selectedUnitSystemKey={activeUnitSystemKey}\n availableUnitSystems={availableUnitSystems}\n onUnitSystemSelected={handleUnitSystemSelected}\n />\n <span className=\"uifw-quantity-format-section-label\">\n {formatSectionLabel.current}\n </span>\n <div className=\"uifw-quantity-types-container\">\n <div className=\"left-panel\">\n <Listbox\n id=\"uifw-quantity-types-list\"\n className=\"uifw-quantity-types\"\n onListboxValueChange={onListboxValueChange}\n selectedValue={activeQuantityType}\n >\n {[...IModelApp.quantityFormatter.quantityTypesRegistry.keys()].map(\n (key) => {\n const entry =\n IModelApp.quantityFormatter.quantityTypesRegistry.get(key)!;\n const description = entry.description;\n const label = entry.label;\n return (\n <ListboxItem\n key={entry.key}\n className=\"quantity-type-list-entry\"\n value={entry.key}\n >\n <span\n className=\"map-source-list-entry-name\"\n title={description}\n >\n {label}\n </span>\n </ListboxItem>\n );\n }\n )}\n </Listbox>\n </div>\n <div className=\"right-panel\">\n {activeFormatterSpec && (\n <>\n <div className=\"uifw-quantity-types-right-top\">\n <div className=\"uifw-quantity-types-right-top-sample\">\n <FormatSample\n formatSpec={activeFormatterSpec}\n initialMagnitude={1234.56}\n hideLabels\n />\n </div>\n </div>\n <div className=\"uifw-quantity-types-formats\">\n <QuantityFormatPanel\n onFormatChange={handleOnFormatChanged}\n quantityType={activeQuantityType}\n />\n </div>\n <div className=\"components-button-panel\">\n <Button\n styleType=\"cta\"\n onClick={handleOnFormatSave}\n disabled={!saveEnabled}\n >\n {setButtonLabel.current}\n </Button>\n <Button\n styleType=\"default\"\n onClick={handleOnFormatReset}\n disabled={!clearEnabled}\n >\n {clearButtonLabel.current}\n </Button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SaveFormatModalDialog({\n formatProps,\n quantityType,\n onDialogCloseArgs,\n onDialogClose,\n}: {\n formatProps: FormatProps;\n quantityType: QuantityTypeKey;\n onDialogCloseArgs?: any;\n onDialogClose: (args?: any) => void;\n}) {\n const [isOpen, setIsOpen] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n UiFramework.dialogs.modal.close();\n onDialogClose && onDialogClose(onDialogCloseArgs);\n }, [onDialogClose, onDialogCloseArgs]);\n\n const handleOK = React.useCallback(() => {\n void IModelApp.quantityFormatter.setOverrideFormat(\n quantityType,\n formatProps\n );\n handleClose();\n }, [formatProps, handleClose, quantityType]);\n\n const handleCancel = React.useCallback(() => {\n handleClose();\n }, [handleClose]);\n\n return (\n <Dialog\n title={\"Save Format Changes\"}\n opened={isOpen}\n resizable={false}\n movable={false}\n modal={true}\n buttonCluster={[\n { type: DialogButtonType.Yes, onClick: handleOK },\n { type: DialogButtonType.No, onClick: handleCancel },\n ]}\n onEscape={handleCancel}\n onClose={handleCancel}\n onOutsideClick={handleCancel}\n minHeight={150}\n maxHeight={400}\n maxWidth={400}\n minWidth={200}\n >\n <div className=\"modal-dialog2\">\n Do you want to save changes to format before changing to another type?\n </div>\n </Dialog>\n );\n}\n"]}
1
+ {"version":3,"file":"QuantityFormat.js","sourceRoot":"","sources":["../../../../../src/appui-react/settings/quantityformatting/QuantityFormat.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/** @packageDocumentation\n * @module Settings\n */\n\nimport \"./QuantityFormat.scss\";\nimport * as React from \"react\";\nimport { DeepCompare } from \"@itwin/core-geometry\";\nimport type {\n QuantityFormatsChangedArgs,\n QuantityTypeArg,\n QuantityTypeKey,\n} from \"@itwin/core-frontend\";\nimport {\n getQuantityTypeKey,\n IModelApp,\n QuantityType,\n} from \"@itwin/core-frontend\";\nimport type {\n FormatProps,\n FormatterSpec,\n UnitSystemKey,\n} from \"@itwin/core-quantity\";\nimport { DialogButtonType } from \"@itwin/appui-abstract\";\nimport {\n FormatSample,\n QuantityFormatPanel,\n} from \"@itwin/imodel-components-react\";\nimport type { SettingsTabEntry } from \"@itwin/core-react\";\nimport {\n Dialog,\n Listbox,\n ListboxItem,\n useSaveBeforeActivatingNewSettingsTab,\n useSaveBeforeClosingSettingsContainer,\n} from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UnitSystemSelector } from \"./UnitSystemSelector\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { SvgMeasure } from \"@itwin/itwinui-icons-react\";\n\nfunction formatAreEqual(obj1: FormatProps, obj2: FormatProps) {\n const compare = new DeepCompare();\n return compare.compare(obj1, obj2);\n}\n\n/** Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport interface QuantityFormatterSettingsOptions {\n initialQuantityType: QuantityTypeArg;\n availableUnitSystems: Set<UnitSystemKey>;\n}\n\n/**\n * Return a SettingsTabEntry that can be used to define the available settings that can be set for an application.\n * @param itemPriority - Used to define the order of the entry in the Settings Stage\n * @param opts - Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport function getQuantityFormatsSettingsManagerEntry(\n itemPriority: number,\n opts?: Partial<QuantityFormatterSettingsOptions>\n): SettingsTabEntry {\n const { availableUnitSystems, initialQuantityType } = { ...opts };\n return {\n itemPriority,\n tabId: \"uifw:Quantity\",\n label: UiFramework.translate(\"settings.quantity-formatting.label\"),\n subLabel: UiFramework.translate(\"settings.quantity-formatting.subLabel\"),\n page: (\n <QuantityFormatSettingsPage\n initialQuantityType={initialQuantityType ?? QuantityType.Length}\n availableUnitSystems={\n availableUnitSystems ??\n new Set([\"metric\", \"imperial\", \"usCustomary\", \"usSurvey\"])\n }\n />\n ),\n isDisabled: false,\n icon: <SvgMeasure />,\n tooltip: UiFramework.translate(\"settings.quantity-formatting.tooltip\"),\n pageWillHandleCloseRequest: true,\n };\n}\n\n/** UI Component shown in settings page to set the active Presentation Unit System and to set format overrides.\n * @beta\n */\nexport function QuantityFormatSettingsPage({\n initialQuantityType,\n availableUnitSystems,\n}: QuantityFormatterSettingsOptions) {\n const [activeUnitSystemKey, setActiveUnitSystemKey] = React.useState(\n IModelApp.quantityFormatter.activeUnitSystem\n );\n const [activeQuantityType, setActiveQuantityType] = React.useState(\n getQuantityTypeKey(initialQuantityType)\n );\n const [activeFormatterSpec, setActiveFormatterSpec] = React.useState<\n FormatterSpec | undefined\n >(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n getQuantityTypeKey(activeQuantityType)\n )\n );\n const [saveEnabled, setSaveEnabled] = React.useState(false);\n const [clearEnabled, setClearEnabled] = React.useState(\n IModelApp.quantityFormatter.hasActiveOverride(initialQuantityType, true)\n );\n const newQuantityTypeRef = React.useRef<QuantityTypeKey>();\n const formatSectionLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.formatSectionLabel\")\n );\n const setButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.setButtonLabel\")\n );\n const clearButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.clearButtonLabel\")\n );\n\n React.useEffect(() => {\n const handleUnitSystemChanged = (): void => {\n // istanbul ignore else\n if (\n activeUnitSystemKey !== IModelApp.quantityFormatter.activeUnitSystem\n ) {\n setActiveUnitSystemKey(IModelApp.quantityFormatter.activeUnitSystem);\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n };\n\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(\n handleUnitSystemChanged\n );\n return () => {\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.removeListener(\n handleUnitSystemChanged\n );\n };\n }, [activeQuantityType, activeUnitSystemKey]);\n\n React.useEffect(() => {\n const handleFormatChanged = (args: QuantityFormatsChangedArgs): void => {\n if (!newQuantityTypeRef.current) {\n const quantityKey =\n IModelApp.quantityFormatter.getQuantityTypeKey(activeQuantityType);\n // istanbul ignore else\n if (args.quantityType === quantityKey) {\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n }\n newQuantityTypeRef.current = undefined;\n };\n IModelApp.quantityFormatter.onQuantityFormatsChanged.addListener(\n handleFormatChanged\n );\n return () => {\n IModelApp.quantityFormatter.onQuantityFormatsChanged.removeListener(\n handleFormatChanged\n );\n };\n }, [activeQuantityType]);\n\n const saveChanges = React.useCallback(\n (afterSaveFunction: (args: any) => void, args?: any) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={args}\n onDialogClose={afterSaveFunction}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n afterSaveFunction(args);\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n useSaveBeforeActivatingNewSettingsTab(\n UiFramework.settingsManager,\n saveChanges\n );\n useSaveBeforeClosingSettingsContainer(\n UiFramework.settingsManager,\n saveChanges\n );\n\n const processListboxValueChange = React.useCallback(\n (newQuantityType: QuantityTypeKey) => {\n const volumeFormatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n newQuantityType\n );\n setActiveFormatterSpec(volumeFormatterSpec);\n setActiveQuantityType(newQuantityType);\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(newQuantityType, true)\n );\n },\n []\n );\n\n const onListboxValueChange = React.useCallback(\n (newQuantityType: string) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n newQuantityTypeRef.current = newQuantityType;\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={newQuantityType}\n onDialogClose={processListboxValueChange}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n processListboxValueChange(newQuantityType);\n },\n [activeFormatterSpec, activeQuantityType, processListboxValueChange]\n );\n\n const handleOnFormatChanged = React.useCallback(\n async (formatProps: FormatProps) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const newSpec =\n await IModelApp.quantityFormatter.generateFormatterSpecByType(\n activeQuantityType,\n formatProps\n );\n const formatPropsInUse =\n IModelApp.quantityFormatter.getFormatPropsByQuantityType(\n activeQuantityType\n );\n // istanbul ignore else\n if (formatPropsInUse)\n setSaveEnabled(!formatAreEqual(formatProps, formatPropsInUse));\n setActiveFormatterSpec(newSpec);\n }\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n const handleOnFormatSave = React.useCallback(async () => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const format = activeFormatterSpec.format.toJSON();\n await IModelApp.quantityFormatter.setOverrideFormat(\n activeQuantityType,\n format\n );\n setClearEnabled(true);\n }\n }, [activeFormatterSpec, activeQuantityType]);\n\n const handleOnFormatReset = React.useCallback(async () => {\n await IModelApp.quantityFormatter.clearOverrideFormats(activeQuantityType);\n setClearEnabled(false);\n }, [activeQuantityType]);\n\n const processNewUnitSystem = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n await IModelApp.quantityFormatter.setActiveUnitSystem(unitSystem);\n },\n []\n );\n\n const handleUnitSystemSelected = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n if (unitSystem === activeUnitSystemKey) return;\n saveChanges(processNewUnitSystem, unitSystem);\n },\n [activeUnitSystemKey, processNewUnitSystem, saveChanges]\n );\n\n return (\n <div className=\"quantity-formatting-container\">\n <UnitSystemSelector\n selectedUnitSystemKey={activeUnitSystemKey}\n availableUnitSystems={availableUnitSystems}\n onUnitSystemSelected={handleUnitSystemSelected}\n />\n <span className=\"uifw-quantity-format-section-label\">\n {formatSectionLabel.current}\n </span>\n <div className=\"uifw-quantity-types-container\">\n <div className=\"left-panel\">\n <Listbox\n id=\"uifw-quantity-types-list\"\n className=\"uifw-quantity-types\"\n onListboxValueChange={onListboxValueChange}\n selectedValue={activeQuantityType}\n >\n {[...IModelApp.quantityFormatter.quantityTypesRegistry.keys()].map(\n (key) => {\n const entry =\n IModelApp.quantityFormatter.quantityTypesRegistry.get(key)!;\n const description = entry.description;\n const label = entry.label;\n return (\n <ListboxItem\n key={entry.key}\n className=\"quantity-type-list-entry\"\n value={entry.key}\n >\n <span\n className=\"map-source-list-entry-name\"\n title={description}\n >\n {label}\n </span>\n </ListboxItem>\n );\n }\n )}\n </Listbox>\n </div>\n <div className=\"right-panel\">\n {activeFormatterSpec && (\n <>\n <div className=\"uifw-quantity-types-right-top\">\n <div className=\"uifw-quantity-types-right-top-sample\">\n <FormatSample\n formatSpec={activeFormatterSpec}\n initialMagnitude={1234.56}\n hideLabels\n />\n </div>\n </div>\n <div className=\"uifw-quantity-types-formats\">\n <QuantityFormatPanel\n onFormatChange={handleOnFormatChanged}\n quantityType={activeQuantityType}\n />\n </div>\n <div className=\"components-button-panel\">\n <Button\n styleType=\"cta\"\n onClick={handleOnFormatSave}\n disabled={!saveEnabled}\n >\n {setButtonLabel.current}\n </Button>\n <Button\n styleType=\"default\"\n onClick={handleOnFormatReset}\n disabled={!clearEnabled}\n >\n {clearButtonLabel.current}\n </Button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SaveFormatModalDialog({\n formatProps,\n quantityType,\n onDialogCloseArgs,\n onDialogClose,\n}: {\n formatProps: FormatProps;\n quantityType: QuantityTypeKey;\n onDialogCloseArgs?: any;\n onDialogClose: (args?: any) => void;\n}) {\n const [isOpen, setIsOpen] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n UiFramework.dialogs.modal.close();\n onDialogClose && onDialogClose(onDialogCloseArgs);\n }, [onDialogClose, onDialogCloseArgs]);\n\n const handleOK = React.useCallback(() => {\n void IModelApp.quantityFormatter.setOverrideFormat(\n quantityType,\n formatProps\n );\n handleClose();\n }, [formatProps, handleClose, quantityType]);\n\n const handleCancel = React.useCallback(() => {\n handleClose();\n }, [handleClose]);\n\n return (\n <Dialog\n title={\"Save Format Changes\"}\n opened={isOpen}\n resizable={false}\n movable={false}\n modal={true}\n buttonCluster={[\n { type: DialogButtonType.Yes, onClick: handleOK },\n { type: DialogButtonType.No, onClick: handleCancel },\n ]}\n onEscape={handleCancel}\n onClose={handleCancel}\n onOutsideClick={handleCancel}\n minHeight={150}\n maxHeight={400}\n maxWidth={400}\n minWidth={200}\n >\n <div className=\"modal-dialog2\">\n Do you want to save changes to format before changing to another type?\n </div>\n </Dialog>\n );\n}\n"]}
@@ -127,10 +127,9 @@ class StagePanelDef extends WidgetHost_1.WidgetHost {
127
127
  }
128
128
  /** Panel state. Defaults to PanelState.Open. */
129
129
  get panelState() {
130
- var _a;
131
130
  // istanbul ignore else
132
131
  if (UiFramework_1.UiFramework.frontstages.activeFrontstageDef) {
133
- const [state] = (_a = UiFramework_1.UiFramework.frontstages.activeFrontstageDef) === null || _a === void 0 ? void 0 : _a.getPanelCurrentState(this);
132
+ const [state] = UiFramework_1.UiFramework.frontstages.activeFrontstageDef?.getPanelCurrentState(this);
134
133
  return state;
135
134
  }
136
135
  // istanbul ignore next
@@ -182,7 +181,6 @@ class StagePanelDef extends WidgetHost_1.WidgetHost {
182
181
  }
183
182
  /** @internal */
184
183
  initializeFromConfig(config, location) {
185
- var _a;
186
184
  this._location = location;
187
185
  if (!config)
188
186
  return;
@@ -194,12 +192,12 @@ class StagePanelDef extends WidgetHost_1.WidgetHost {
194
192
  this._defaultState = config.defaultState;
195
193
  this._panelState = config.defaultState;
196
194
  }
197
- this._resizable = (_a = config.resizable) !== null && _a !== void 0 ? _a : true;
195
+ this._resizable = config.resizable ?? true;
198
196
  if (config.pinned !== undefined)
199
197
  this._pinned = config.pinned;
200
198
  const sections = config.sections;
201
- this._start.initializeFromConfig(sections === null || sections === void 0 ? void 0 : sections.start);
202
- this._end.initializeFromConfig(sections === null || sections === void 0 ? void 0 : sections.end);
199
+ this._start.initializeFromConfig(sections?.start);
200
+ this._end.initializeFromConfig(sections?.end);
203
201
  }
204
202
  /** Gets the list of Widgets. */
205
203
  get widgetDefs() {
@@ -231,7 +229,7 @@ exports.StagePanelDef = StagePanelDef;
231
229
  class StagePanelSectionDef extends WidgetHost_1.WidgetHost {
232
230
  /** @internal */
233
231
  initializeFromConfig(config) {
234
- config === null || config === void 0 ? void 0 : config.forEach((widgetConfig) => {
232
+ config?.forEach((widgetConfig) => {
235
233
  const widgetDef = WidgetDef_1.WidgetDef.create(widgetConfig);
236
234
  this.addWidgetDef(widgetDef);
237
235
  });