@itwin/appui-react 5.19.0 → 5.20.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 (234) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/lib/appui-react/UiFramework.js +20 -13
  3. package/lib/appui-react/UiFramework.js.map +1 -1
  4. package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  5. package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  6. package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
  7. package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  8. package/lib/appui-react/accudraw/Calculator.js +92 -98
  9. package/lib/appui-react/accudraw/Calculator.js.map +1 -1
  10. package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
  11. package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  12. package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
  13. package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
  14. package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
  15. package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  16. package/lib/appui-react/accudraw/MenuButton.js +20 -20
  17. package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
  18. package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
  19. package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
  20. package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
  21. package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  22. package/lib/appui-react/backstage/BackstageManager.js +1 -3
  23. package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
  24. package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
  25. package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
  26. package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
  27. package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  28. package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
  29. package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
  30. package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  31. package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
  32. package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  33. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
  34. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  35. package/lib/appui-react/configurableui/TimeTracker.js +25 -27
  36. package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
  37. package/lib/appui-react/content/ContentControl.js +2 -1
  38. package/lib/appui-react/content/ContentControl.js.map +1 -1
  39. package/lib/appui-react/content/ContentGroup.js +8 -4
  40. package/lib/appui-react/content/ContentGroup.js.map +1 -1
  41. package/lib/appui-react/content/ContentLayout.js +47 -38
  42. package/lib/appui-react/content/ContentLayout.js.map +1 -1
  43. package/lib/appui-react/content/IModelViewport.js +28 -23
  44. package/lib/appui-react/content/IModelViewport.js.map +1 -1
  45. package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
  46. package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  47. package/lib/appui-react/content/InternalContentViewManager.js +9 -8
  48. package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
  49. package/lib/appui-react/content/StandardContentLayouts.js +141 -141
  50. package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
  51. package/lib/appui-react/content/ViewportContentControl.js +25 -22
  52. package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
  53. package/lib/appui-react/cursor/CursorInformation.js +7 -6
  54. package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
  55. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
  56. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  57. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
  58. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  59. package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
  60. package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
  61. package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
  62. package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  63. package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
  64. package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  65. package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
  66. package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  67. package/lib/appui-react/dialog/ModelessDialog.js +3 -3
  68. package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
  69. package/lib/appui-react/feedback/ElementTooltip.js +3 -1
  70. package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
  71. package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
  72. package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
  73. package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
  74. package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
  75. package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
  76. package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  77. package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
  78. package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  79. package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
  80. package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  81. package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
  82. package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  83. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
  84. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  85. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
  86. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  87. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
  88. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  89. package/lib/appui-react/layout/backstage/Backstage.js +11 -14
  90. package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
  91. package/lib/appui-react/layout/base/DragManager.js +6 -7
  92. package/lib/appui-react/layout/base/DragManager.js.map +1 -1
  93. package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
  94. package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  95. package/lib/appui-react/layout/popup/Tooltip.js +8 -11
  96. package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
  97. package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
  98. package/lib/appui-react/layout/widget/Tab.js +7 -5
  99. package/lib/appui-react/layout/widget/Tab.js.map +1 -1
  100. package/lib/appui-react/messages/InputField.js +21 -24
  101. package/lib/appui-react/messages/InputField.js.map +1 -1
  102. package/lib/appui-react/messages/MessageManager.js +39 -38
  103. package/lib/appui-react/messages/MessageManager.js.map +1 -1
  104. package/lib/appui-react/messages/Pointer.js +38 -38
  105. package/lib/appui-react/messages/Pointer.js.map +1 -1
  106. package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
  107. package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
  108. package/lib/appui-react/messages/StatusMessageManager.js +2 -4
  109. package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
  110. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  111. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  112. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  113. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  114. package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
  115. package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  116. package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
  117. package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  118. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
  119. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  120. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
  121. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  122. package/lib/appui-react/pickers/ListPicker.js +28 -28
  123. package/lib/appui-react/pickers/ListPicker.js.map +1 -1
  124. package/lib/appui-react/pickers/ViewSelector.js +87 -86
  125. package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
  126. package/lib/appui-react/popup/CardPopup.js +18 -21
  127. package/lib/appui-react/popup/CardPopup.js.map +1 -1
  128. package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
  129. package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
  130. package/lib/appui-react/popup/InputEditorPopup.js +18 -20
  131. package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
  132. package/lib/appui-react/popup/PopupManager.js +22 -25
  133. package/lib/appui-react/popup/PopupManager.js.map +1 -1
  134. package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
  135. package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  136. package/lib/appui-react/popup/ToolbarPopup.js +18 -21
  137. package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
  138. package/lib/appui-react/redux/ReducerRegistry.js +2 -0
  139. package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
  140. package/lib/appui-react/redux/StateManager.js +4 -1
  141. package/lib/appui-react/redux/StateManager.js.map +1 -1
  142. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
  143. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  144. package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
  145. package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  146. package/lib/appui-react/shared/CommandItemDef.js +3 -3
  147. package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
  148. package/lib/appui-react/shared/CustomItemDef.js +4 -2
  149. package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
  150. package/lib/appui-react/shared/ItemDefBase.js +13 -5
  151. package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
  152. package/lib/appui-react/shared/MenuItem.js +6 -1
  153. package/lib/appui-react/shared/MenuItem.js.map +1 -1
  154. package/lib/appui-react/shared/ToolItemDef.js +1 -1
  155. package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
  156. package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
  157. package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  158. package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
  159. package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  160. package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
  161. package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
  162. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
  163. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  164. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
  165. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  166. package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
  167. package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  168. package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
  169. package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  170. package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
  171. package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  172. package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
  173. package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  174. package/lib/appui-react/toolbar/GroupItem.js +11 -5
  175. package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
  176. package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
  177. package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  178. package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
  179. package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  180. package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
  181. package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  182. package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
  183. package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
  184. package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
  185. package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  186. package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
  187. package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
  188. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
  189. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  190. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
  191. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  192. package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
  193. package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
  194. package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
  195. package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
  196. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
  197. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  198. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
  199. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  200. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
  201. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  202. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
  203. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  204. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
  205. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  206. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
  207. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  208. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
  209. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  210. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
  211. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  212. package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
  213. package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  214. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
  215. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  216. package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
  217. package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  218. package/lib/appui-react/uistate/AppUiSettings.js +41 -33
  219. package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
  220. package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
  221. package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  222. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
  223. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  224. package/lib/appui-react/widgets/WidgetControl.js +2 -0
  225. package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
  226. package/lib/appui-react/widgets/WidgetDef.js +28 -7
  227. package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
  228. package/lib/appui-react/widgets/WidgetHost.js +4 -4
  229. package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
  230. package/lib/appui-react/widgets/WidgetManager.js +5 -7
  231. package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
  232. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  233. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  234. package/package.json +9 -9
@@ -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, Id64 } 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.js\";\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 */\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 */\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(\n clearSelection?: boolean\n ): 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 */\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 getSelectionSetElementProps(iModel: IModelConnection) {\n const persistentElementIds = new Set<string>();\n // Filter out transient elements because they do not exist in the iModel.\n iModel.selectionSet.elements.forEach((elementId) => {\n if (!Id64.isTransient(elementId)) persistentElementIds.add(elementId);\n });\n\n return iModel.elements.getProps(persistentElementIds);\n }\n\n private static async getSelectionSetElementModels(iModel: IModelConnection) {\n const props = await HideIsolateEmphasizeManager.getSelectionSetElementProps(\n iModel\n );\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 =\n (await HideIsolateEmphasizeManager.getSelectionSetElementProps(\n iModel\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(clearSelection = true): 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 if (!clearSelection) return;\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, Id64 } 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.js\";\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 */\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 */\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(\n clearSelection?: boolean\n ): 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 */\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 getSelectionSetElementProps(iModel: IModelConnection) {\n const persistentElementIds = new Set<string>();\n // Filter out transient elements because they do not exist in the iModel.\n iModel.selectionSet.elements.forEach((elementId) => {\n if (!Id64.isTransient(elementId)) persistentElementIds.add(elementId);\n });\n\n return iModel.elements.getProps(persistentElementIds);\n }\n\n private static async getSelectionSetElementModels(iModel: IModelConnection) {\n const props = await HideIsolateEmphasizeManager.getSelectionSetElementProps(\n iModel\n );\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 =\n (await HideIsolateEmphasizeManager.getSelectionSetElementProps(\n iModel\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(clearSelection = true): 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 if (!clearSelection) return;\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"]}
@@ -13,12 +13,17 @@ import { ItemDefBase } from "./ItemDefBase.js";
13
13
  * @deprecated in 4.15.0. Use type specific utilities for creating items instead, i.e. `ToolbarItemUtilities.createActionItem`.
14
14
  */
15
15
  export class ActionButtonItemDef extends ItemDefBase {
16
+ _onItemExecuted;
17
+ /** Command Handler for the action button */
18
+ _commandHandler;
19
+ /** Parameters passed to the Command Handler */
20
+ parameters;
21
+ /** Size of the action button, as set by handleSizeKnown */
22
+ size;
23
+ /** The default button size for all action buttons */
24
+ static defaultButtonSize = 42;
16
25
  constructor(itemProps, onItemExecuted) {
17
26
  super(itemProps);
18
- /** Called when the size of the action button is initialized and the size is known */
19
- this.handleSizeKnown = (size) => {
20
- this.size = size;
21
- };
22
27
  this.execute = this.execute.bind(this);
23
28
  this._onItemExecuted = onItemExecuted;
24
29
  }
@@ -33,6 +38,10 @@ export class ActionButtonItemDef extends ItemDefBase {
33
38
  if (this._onItemExecuted)
34
39
  this._onItemExecuted(this);
35
40
  }
41
+ /** Called when the size of the action button is initialized and the size is known */
42
+ handleSizeKnown = (size) => {
43
+ this.size = size;
44
+ };
36
45
  /** Determines the dimension in a given orientation */
37
46
  getDimension(orientation) {
38
47
  let dimension = ActionButtonItemDef.defaultButtonSize;
@@ -44,6 +53,4 @@ export class ActionButtonItemDef extends ItemDefBase {
44
53
  return dimension;
45
54
  }
46
55
  }
47
- /** The default button size for all action buttons */
48
- ActionButtonItemDef.defaultButtonSize = 42;
49
56
  //# sourceMappingURL=ActionButtonItemDef.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionButtonItemDef.js","sourceRoot":"","sources":["../../../src/appui-react/shared/ActionButtonItemDef.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAgB,mBAAoB,SAAQ,WAAW;IAY3D,YAAY,SAAoB,EAAE,cAAmC;QACnE,KAAK,CAAC,SAAS,CAAC,CAAC;QAiBnB,qFAAqF;QAC9E,oBAAe,GAAG,CAAC,IAAe,EAAE,EAAE;YAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;QAlBA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,mEAAmE;IAC5D,OAAO;QACZ,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc;gBACrC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC;;gBACjE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAOD,sDAAsD;IAC/C,YAAY,CAAC,WAAwB;QAC1C,IAAI,SAAS,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QACtD,IAAI,IAAI,CAAC,IAAI;YACX,SAAS;gBACP,WAAW,KAAK,WAAW,CAAC,UAAU;oBACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;oBACjB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAEzB,OAAO,SAAS,CAAC;IACnB,CAAC;;AApCD,qDAAqD;AACvC,qCAAiB,GAAG,EAAE,AAAL,CAAM","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 Item\n */\n\nimport type { CommandHandler, OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { Orientation } from \"@itwin/components-react\";\nimport { ItemDefBase } from \"./ItemDefBase.js\";\nimport type { ItemProps } from \"./ItemProps.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Abstract base class that is used by classes to execute an action when pressed.\n * @public\n * @deprecated in 4.15.0. Use type specific utilities for creating items instead, i.e. `ToolbarItemUtilities.createActionItem`.\n */\nexport abstract class ActionButtonItemDef extends ItemDefBase {\n private _onItemExecuted?: OnItemExecutedFunc;\n\n /** Command Handler for the action button */\n protected _commandHandler?: CommandHandler;\n /** Parameters passed to the Command Handler */\n public parameters?: any;\n /** Size of the action button, as set by handleSizeKnown */\n public size?: SizeProps;\n /** The default button size for all action buttons */\n public static defaultButtonSize = 42;\n\n constructor(itemProps: ItemProps, onItemExecuted?: OnItemExecutedFunc) {\n super(itemProps);\n\n this.execute = this.execute.bind(this);\n this._onItemExecuted = onItemExecuted;\n }\n\n /** Called when the action button is invoked by a click or touch */\n public execute(): void {\n if (this._commandHandler && this._commandHandler.execute) {\n if (this._commandHandler.getCommandArgs)\n this._commandHandler.execute(this._commandHandler.getCommandArgs());\n else this._commandHandler.execute(this._commandHandler.parameters);\n }\n\n if (this._onItemExecuted) this._onItemExecuted(this);\n }\n\n /** Called when the size of the action button is initialized and the size is known */\n public handleSizeKnown = (size: SizeProps) => {\n this.size = size;\n };\n\n /** Determines the dimension in a given orientation */\n public getDimension(orientation: Orientation): number {\n let dimension = ActionButtonItemDef.defaultButtonSize;\n if (this.size)\n dimension =\n orientation === Orientation.Horizontal\n ? this.size.width\n : this.size.height;\n\n return dimension;\n }\n}\n"]}
1
+ {"version":3,"file":"ActionButtonItemDef.js","sourceRoot":"","sources":["../../../src/appui-react/shared/ActionButtonItemDef.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAgB,mBAAoB,SAAQ,WAAW;IACnD,eAAe,CAAsB;IAE7C,4CAA4C;IAClC,eAAe,CAAkB;IAC3C,+CAA+C;IACxC,UAAU,CAAO;IACxB,2DAA2D;IACpD,IAAI,CAAa;IACxB,qDAAqD;IAC9C,MAAM,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAErC,YAAY,SAAoB,EAAE,cAAmC;QACnE,KAAK,CAAC,SAAS,CAAC,CAAC;QAEjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,mEAAmE;IAC5D,OAAO;QACZ,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc;gBACrC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC;;gBACjE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,qFAAqF;IAC9E,eAAe,GAAG,CAAC,IAAe,EAAE,EAAE;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;IAEF,sDAAsD;IAC/C,YAAY,CAAC,WAAwB;QAC1C,IAAI,SAAS,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QACtD,IAAI,IAAI,CAAC,IAAI;YACX,SAAS;gBACP,WAAW,KAAK,WAAW,CAAC,UAAU;oBACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;oBACjB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAEzB,OAAO,SAAS,CAAC;IACnB,CAAC","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 Item\n */\n\nimport type { CommandHandler, OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { Orientation } from \"@itwin/components-react\";\nimport { ItemDefBase } from \"./ItemDefBase.js\";\nimport type { ItemProps } from \"./ItemProps.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Abstract base class that is used by classes to execute an action when pressed.\n * @public\n * @deprecated in 4.15.0. Use type specific utilities for creating items instead, i.e. `ToolbarItemUtilities.createActionItem`.\n */\nexport abstract class ActionButtonItemDef extends ItemDefBase {\n private _onItemExecuted?: OnItemExecutedFunc;\n\n /** Command Handler for the action button */\n protected _commandHandler?: CommandHandler;\n /** Parameters passed to the Command Handler */\n public parameters?: any;\n /** Size of the action button, as set by handleSizeKnown */\n public size?: SizeProps;\n /** The default button size for all action buttons */\n public static defaultButtonSize = 42;\n\n constructor(itemProps: ItemProps, onItemExecuted?: OnItemExecutedFunc) {\n super(itemProps);\n\n this.execute = this.execute.bind(this);\n this._onItemExecuted = onItemExecuted;\n }\n\n /** Called when the action button is invoked by a click or touch */\n public execute(): void {\n if (this._commandHandler && this._commandHandler.execute) {\n if (this._commandHandler.getCommandArgs)\n this._commandHandler.execute(this._commandHandler.getCommandArgs());\n else this._commandHandler.execute(this._commandHandler.parameters);\n }\n\n if (this._onItemExecuted) this._onItemExecuted(this);\n }\n\n /** Called when the size of the action button is initialized and the size is known */\n public handleSizeKnown = (size: SizeProps) => {\n this.size = size;\n };\n\n /** Determines the dimension in a given orientation */\n public getDimension(orientation: Orientation): number {\n let dimension = ActionButtonItemDef.defaultButtonSize;\n if (this.size)\n dimension =\n orientation === Orientation.Horizontal\n ? this.size.width\n : this.size.height;\n\n return dimension;\n }\n}\n"]}
@@ -12,9 +12,11 @@ import { ActionButtonItemDef } from "./ActionButtonItemDef.js";
12
12
  * @deprecated in 4.15.0. Use specific item types instead, i.e. {@link ToolbarActionItem}.
13
13
  */
14
14
  export class CommandItemDef extends ActionButtonItemDef {
15
+ static _sId = 0;
16
+ static commandIdPrefix = "Command-";
17
+ commandId = "";
15
18
  constructor(commandItemProps, onItemExecuted) {
16
19
  super(commandItemProps, onItemExecuted);
17
- this.commandId = "";
18
20
  if (commandItemProps.execute) {
19
21
  this._commandHandler = {
20
22
  execute: commandItemProps.execute,
@@ -33,6 +35,4 @@ export class CommandItemDef extends ActionButtonItemDef {
33
35
  return this.commandId;
34
36
  }
35
37
  }
36
- CommandItemDef._sId = 0;
37
- CommandItemDef.commandIdPrefix = "Command-";
38
38
  //# sourceMappingURL=CommandItemDef.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandItemDef.js","sourceRoot":"","sources":["../../../src/appui-react/shared/CommandItemDef.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,mBAAmB;IAKrD,YACE,gBAAkC,EAClC,cAAmC;QAEnC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QANnC,cAAS,GAAW,EAAE,CAAC;QAQ5B,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG;gBACrB,OAAO,EAAE,gBAAgB,CAAC,OAAO;gBACjC,UAAU,EAAE,gBAAgB,CAAC,UAAU;gBACvC,cAAc,EAAE,gBAAgB,CAAC,cAAc;aAChD,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;aACvE,CAAC;YACJ,cAAc,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC;QACxE,CAAC;IACH,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;;AA3Bc,mBAAI,GAAG,CAAC,AAAJ,CAAK;AACV,8BAAe,GAAG,UAAU,AAAb,CAAc","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 Item\n */\n\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { ActionButtonItemDef } from \"./ActionButtonItemDef.js\";\nimport type { CommandItemProps } from \"./ItemProps.js\";\nimport type { ToolbarActionItem } from \"../toolbar/ToolbarItem.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** An Item that executes a Command.\n * @public\n * @deprecated in 4.15.0. Use specific item types instead, i.e. {@link ToolbarActionItem}.\n */\nexport class CommandItemDef extends ActionButtonItemDef {\n private static _sId = 0;\n public static commandIdPrefix = \"Command-\";\n public commandId: string = \"\";\n\n constructor(\n commandItemProps: CommandItemProps,\n onItemExecuted?: OnItemExecutedFunc\n ) {\n super(commandItemProps, onItemExecuted);\n\n if (commandItemProps.execute) {\n this._commandHandler = {\n execute: commandItemProps.execute,\n parameters: commandItemProps.parameters,\n getCommandArgs: commandItemProps.getCommandArgs,\n };\n }\n\n if (commandItemProps.commandId) this.commandId = commandItemProps.commandId;\n else {\n CommandItemDef._sId++;\n this.commandId = CommandItemDef.commandIdPrefix + CommandItemDef._sId;\n }\n }\n\n public get id(): string {\n return this.commandId;\n }\n}\n"]}
1
+ {"version":3,"file":"CommandItemDef.js","sourceRoot":"","sources":["../../../src/appui-react/shared/CommandItemDef.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,mBAAmB;IAC7C,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,eAAe,GAAG,UAAU,CAAC;IACpC,SAAS,GAAW,EAAE,CAAC;IAE9B,YACE,gBAAkC,EAClC,cAAmC;QAEnC,KAAK,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAExC,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG;gBACrB,OAAO,EAAE,gBAAgB,CAAC,OAAO;gBACjC,UAAU,EAAE,gBAAgB,CAAC,UAAU;gBACvC,cAAc,EAAE,gBAAgB,CAAC,cAAc;aAChD,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;aACvE,CAAC;YACJ,cAAc,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC;QACxE,CAAC;IACH,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC","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 Item\n */\n\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { ActionButtonItemDef } from \"./ActionButtonItemDef.js\";\nimport type { CommandItemProps } from \"./ItemProps.js\";\nimport type { ToolbarActionItem } from \"../toolbar/ToolbarItem.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** An Item that executes a Command.\n * @public\n * @deprecated in 4.15.0. Use specific item types instead, i.e. {@link ToolbarActionItem}.\n */\nexport class CommandItemDef extends ActionButtonItemDef {\n private static _sId = 0;\n public static commandIdPrefix = \"Command-\";\n public commandId: string = \"\";\n\n constructor(\n commandItemProps: CommandItemProps,\n onItemExecuted?: OnItemExecutedFunc\n ) {\n super(commandItemProps, onItemExecuted);\n\n if (commandItemProps.execute) {\n this._commandHandler = {\n execute: commandItemProps.execute,\n parameters: commandItemProps.parameters,\n getCommandArgs: commandItemProps.getCommandArgs,\n };\n }\n\n if (commandItemProps.commandId) this.commandId = commandItemProps.commandId;\n else {\n CommandItemDef._sId++;\n this.commandId = CommandItemDef.commandIdPrefix + CommandItemDef._sId;\n }\n }\n\n public get id(): string {\n return this.commandId;\n }\n}\n"]}
@@ -12,6 +12,10 @@ import { ActionButtonItemDef } from "./ActionButtonItemDef.js";
12
12
  * @deprecated in 4.15.0. Use specific item type utilities instead, i.e. `ToolbarItemUtilities.createCustomItem`.
13
13
  */
14
14
  export class CustomItemDef extends ActionButtonItemDef {
15
+ static _sId = 0;
16
+ static customIdPrefix = "Custom-";
17
+ customId;
18
+ popupPanelNode;
15
19
  constructor(props) {
16
20
  super(props);
17
21
  if (props.customId)
@@ -26,6 +30,4 @@ export class CustomItemDef extends ActionButtonItemDef {
26
30
  return this.customId;
27
31
  }
28
32
  }
29
- CustomItemDef._sId = 0;
30
- CustomItemDef.customIdPrefix = "Custom-";
31
33
  //# sourceMappingURL=CustomItemDef.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CustomItemDef.js","sourceRoot":"","sources":["../../../src/appui-react/shared/CustomItemDef.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,mBAAmB;IAMpD,YAAY,KAAsB;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,KAAK,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;aAC9C,CAAC;YACJ,aAAa,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC7C,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;;AAnBc,kBAAI,GAAG,CAAC,CAAC;AACV,4BAAc,GAAG,SAAS,CAAC","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 Item\n */\n\nimport type * as React from \"react\";\nimport { ActionButtonItemDef } from \"./ActionButtonItemDef.js\";\nimport type { CustomItemProps } from \"./CustomItemProps.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** An Item that renders a React component.\n * @public\n * @deprecated in 4.15.0. Use specific item type utilities instead, i.e. `ToolbarItemUtilities.createCustomItem`.\n */\nexport class CustomItemDef extends ActionButtonItemDef {\n private static _sId = 0;\n public static customIdPrefix = \"Custom-\";\n public customId: string;\n public popupPanelNode?: React.ReactNode;\n\n constructor(props: CustomItemProps) {\n super(props);\n\n if (props.customId) this.customId = props.customId;\n else {\n CustomItemDef._sId++;\n this.customId = CustomItemDef.customIdPrefix + CustomItemDef._sId;\n }\n\n this.popupPanelNode = props.popupPanelNode;\n }\n\n public get id(): string {\n return this.customId;\n }\n}\n"]}
1
+ {"version":3,"file":"CustomItemDef.js","sourceRoot":"","sources":["../../../src/appui-react/shared/CustomItemDef.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,mBAAmB;IAC5C,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAS;IACjB,cAAc,CAAmB;IAExC,YAAY,KAAsB;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,KAAK,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;aAC9C,CAAC;YACJ,aAAa,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC7C,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC","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 Item\n */\n\nimport type * as React from \"react\";\nimport { ActionButtonItemDef } from \"./ActionButtonItemDef.js\";\nimport type { CustomItemProps } from \"./CustomItemProps.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** An Item that renders a React component.\n * @public\n * @deprecated in 4.15.0. Use specific item type utilities instead, i.e. `ToolbarItemUtilities.createCustomItem`.\n */\nexport class CustomItemDef extends ActionButtonItemDef {\n private static _sId = 0;\n public static customIdPrefix = \"Custom-\";\n public customId: string;\n public popupPanelNode?: React.ReactNode;\n\n constructor(props: CustomItemProps) {\n super(props);\n\n if (props.customId) this.customId = props.customId;\n else {\n CustomItemDef._sId++;\n this.customId = CustomItemDef.customIdPrefix + CustomItemDef._sId;\n }\n\n this.popupPanelNode = props.popupPanelNode;\n }\n\n public get id(): string {\n return this.customId;\n }\n}\n"]}
@@ -11,12 +11,25 @@ import { PropsHelper } from "../utils/PropsHelper.js";
11
11
  * @deprecated in 4.15.0. Use specific item types instead, i.e. {@link ToolbarItem}.
12
12
  */
13
13
  export class ItemDefBase {
14
+ _label = "";
15
+ _tooltip = "";
16
+ _description = "";
17
+ isPressed = false;
18
+ _isActive = false;
14
19
  get isActive() {
15
20
  return this._isActive;
16
21
  }
17
22
  set isActive(v) {
18
23
  this._isActive = v;
19
24
  }
25
+ applicationData;
26
+ isHidden;
27
+ isDisabled;
28
+ /** @deprecated in 4.16.0. Use `badgeKind` property instead. */
29
+ badgeType;
30
+ badgeKind;
31
+ iconSpec;
32
+ iconElement;
20
33
  static initializeDef(me, itemProps) {
21
34
  me.isHidden = itemProps.isHidden;
22
35
  me.isDisabled = itemProps.isDisabled;
@@ -36,11 +49,6 @@ export class ItemDefBase {
36
49
  me._description = PropsHelper.getStringSpec(itemProps.description, itemProps.descriptionKey);
37
50
  }
38
51
  constructor(itemProps) {
39
- this._label = "";
40
- this._tooltip = "";
41
- this._description = "";
42
- this.isPressed = false;
43
- this._isActive = false;
44
52
  ItemDefBase.initializeDef(this, itemProps);
45
53
  }
46
54
  get trayId() {
@@ -1 +1 @@
1
- {"version":3,"file":"ItemDefBase.js","sourceRoot":"","sources":["../../../src/appui-react/shared/ItemDefBase.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 Item\n */\n\nimport type * as React from \"react\";\nimport type {\n ConditionalBooleanValue,\n ConditionalStringValue,\n StringGetter,\n} from \"@itwin/appui-abstract\";\nimport { PropsHelper } from \"../utils/PropsHelper.js\";\nimport type { ItemProps } from \"./ItemProps.js\";\nimport type { BadgeType, IconSpec } from \"@itwin/core-react\";\nimport type { BadgeKind } from \"@itwin/core-react/internal\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Base state for any 'stateful' React component.\n * @public\n * @deprecated in 4.15.0. Define a custom state for your React components.\n */\nexport interface BaseItemState {\n isVisible?: boolean; // Default - true\n isEnabled?: boolean; // Default - true\n isActive?: boolean; // Default - false\n isPressed?: boolean; // Default - false\n}\n\n/** The base class for Items.\n * @public\n * @deprecated in 4.15.0. Use specific item types instead, i.e. {@link ToolbarItem}.\n */\nexport abstract class ItemDefBase {\n private _label: string | StringGetter | ConditionalStringValue = \"\";\n private _tooltip: string | StringGetter | ConditionalStringValue = \"\";\n private _description: string | StringGetter | ConditionalStringValue = \"\";\n\n public isPressed: boolean = false;\n private _isActive: boolean = false;\n public get isActive(): boolean {\n return this._isActive;\n }\n public set isActive(v: boolean) {\n this._isActive = v;\n }\n public applicationData?: any;\n\n public isHidden?: boolean | ConditionalBooleanValue;\n public isDisabled?: boolean | ConditionalBooleanValue;\n\n /** @deprecated in 4.16.0. Use `badgeKind` property instead. */\n public badgeType?: BadgeType;\n public badgeKind?: BadgeKind;\n\n public iconSpec?: IconSpec;\n public iconElement?: React.ReactNode;\n\n public static initializeDef(me: ItemDefBase, itemProps: ItemProps): void {\n me.isHidden = itemProps.isHidden;\n me.isDisabled = itemProps.isDisabled;\n\n me.isPressed =\n itemProps.isPressed !== undefined ? itemProps.isPressed : false;\n me.isActive = itemProps.isActive !== undefined ? itemProps.isActive : false;\n\n me.badgeType = itemProps.badgeType;\n me.badgeKind = itemProps.badgeKind;\n\n if (itemProps.applicationData !== undefined)\n me.applicationData = itemProps.applicationData;\n if (itemProps.iconSpec) me.iconSpec = itemProps.iconSpec;\n if (itemProps.icon) me.iconSpec = itemProps.icon;\n\n me._label = PropsHelper.getStringSpec(itemProps.label, itemProps.labelKey);\n me._tooltip = PropsHelper.getStringSpec(\n itemProps.tooltip,\n itemProps.tooltipKey\n );\n me._description = PropsHelper.getStringSpec(\n itemProps.description,\n itemProps.descriptionKey\n );\n }\n\n constructor(itemProps: ItemProps) {\n ItemDefBase.initializeDef(this, itemProps);\n }\n\n public get trayId() {\n return undefined;\n }\n public abstract get id(): string;\n\n /** Get the label string */\n public get rawLabel(): string | StringGetter | ConditionalStringValue {\n return this._label;\n }\n\n /** Get the label string */\n public get label(): string {\n return PropsHelper.getStringFromSpec(this._label);\n }\n\n /** Set the label.\n * @param v A string or a function to get the string.\n */\n public setLabel(v: string | StringGetter | ConditionalStringValue) {\n this._label = v;\n }\n\n /** Get the tooltip string */\n public get tooltip(): string {\n return PropsHelper.getStringFromSpec(this._tooltip);\n }\n\n /** Set the tooltip.\n * @param v A string or a function to get the string.\n */\n public setTooltip(v: string | StringGetter | ConditionalStringValue) {\n this._tooltip = v;\n }\n\n /** Get the description string */\n public get description(): string {\n return PropsHelper.getStringFromSpec(this._description);\n }\n\n /** Set the description.\n * @param v A string or a function to get the string.\n */\n public setDescription(v: string | StringGetter | ConditionalStringValue) {\n this._description = v;\n }\n}\n"]}
1
+ {"version":3,"file":"ItemDefBase.js","sourceRoot":"","sources":["../../../src/appui-react/shared/ItemDefBase.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 Item\n */\n\nimport type * as React from \"react\";\nimport type {\n ConditionalBooleanValue,\n ConditionalStringValue,\n StringGetter,\n} from \"@itwin/appui-abstract\";\nimport { PropsHelper } from \"../utils/PropsHelper.js\";\nimport type { ItemProps } from \"./ItemProps.js\";\nimport type { BadgeType, IconSpec } from \"@itwin/core-react\";\nimport type { BadgeKind } from \"@itwin/core-react/internal\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Base state for any 'stateful' React component.\n * @public\n * @deprecated in 4.15.0. Define a custom state for your React components.\n */\nexport interface BaseItemState {\n isVisible?: boolean; // Default - true\n isEnabled?: boolean; // Default - true\n isActive?: boolean; // Default - false\n isPressed?: boolean; // Default - false\n}\n\n/** The base class for Items.\n * @public\n * @deprecated in 4.15.0. Use specific item types instead, i.e. {@link ToolbarItem}.\n */\nexport abstract class ItemDefBase {\n private _label: string | StringGetter | ConditionalStringValue = \"\";\n private _tooltip: string | StringGetter | ConditionalStringValue = \"\";\n private _description: string | StringGetter | ConditionalStringValue = \"\";\n\n public isPressed: boolean = false;\n private _isActive: boolean = false;\n public get isActive(): boolean {\n return this._isActive;\n }\n public set isActive(v: boolean) {\n this._isActive = v;\n }\n public applicationData?: any;\n\n public isHidden?: boolean | ConditionalBooleanValue;\n public isDisabled?: boolean | ConditionalBooleanValue;\n\n /** @deprecated in 4.16.0. Use `badgeKind` property instead. */\n public badgeType?: BadgeType;\n public badgeKind?: BadgeKind;\n\n public iconSpec?: IconSpec;\n public iconElement?: React.ReactNode;\n\n public static initializeDef(me: ItemDefBase, itemProps: ItemProps): void {\n me.isHidden = itemProps.isHidden;\n me.isDisabled = itemProps.isDisabled;\n\n me.isPressed =\n itemProps.isPressed !== undefined ? itemProps.isPressed : false;\n me.isActive = itemProps.isActive !== undefined ? itemProps.isActive : false;\n\n me.badgeType = itemProps.badgeType;\n me.badgeKind = itemProps.badgeKind;\n\n if (itemProps.applicationData !== undefined)\n me.applicationData = itemProps.applicationData;\n if (itemProps.iconSpec) me.iconSpec = itemProps.iconSpec;\n if (itemProps.icon) me.iconSpec = itemProps.icon;\n\n me._label = PropsHelper.getStringSpec(itemProps.label, itemProps.labelKey);\n me._tooltip = PropsHelper.getStringSpec(\n itemProps.tooltip,\n itemProps.tooltipKey\n );\n me._description = PropsHelper.getStringSpec(\n itemProps.description,\n itemProps.descriptionKey\n );\n }\n\n constructor(itemProps: ItemProps) {\n ItemDefBase.initializeDef(this, itemProps);\n }\n\n public get trayId() {\n return undefined;\n }\n public abstract get id(): string;\n\n /** Get the label string */\n public get rawLabel(): string | StringGetter | ConditionalStringValue {\n return this._label;\n }\n\n /** Get the label string */\n public get label(): string {\n return PropsHelper.getStringFromSpec(this._label);\n }\n\n /** Set the label.\n * @param v A string or a function to get the string.\n */\n public setLabel(v: string | StringGetter | ConditionalStringValue) {\n this._label = v;\n }\n\n /** Get the tooltip string */\n public get tooltip(): string {\n return PropsHelper.getStringFromSpec(this._tooltip);\n }\n\n /** Set the tooltip.\n * @param v A string or a function to get the string.\n */\n public setTooltip(v: string | StringGetter | ConditionalStringValue) {\n this._tooltip = v;\n }\n\n /** Get the description string */\n public get description(): string {\n return PropsHelper.getStringFromSpec(this._description);\n }\n\n /** Set the description.\n * @param v A string or a function to get the string.\n */\n public setDescription(v: string | StringGetter | ConditionalStringValue) {\n this._description = v;\n }\n}\n"]}
@@ -16,10 +16,14 @@ import { ItemDefBase } from "./ItemDefBase.js";
16
16
  * @deprecated in 4.15.0. Used in a deprecated class {@link MenuItemHelpers}.
17
17
  */
18
18
  export class MenuItem extends ItemDefBase {
19
+ _id = "";
20
+ _actionItem;
21
+ _submenu;
22
+ _onSelection;
23
+ _execute;
19
24
  /** onSelection is an optional parameter typically supplied to allow menu parent to close context menu when a menu item is selected. */
20
25
  constructor(props, onSelection) {
21
26
  super(props);
22
- this._id = "";
23
27
  this._id = props.id;
24
28
  this._submenu = new Array();
25
29
  this._onSelection = onSelection;
@@ -60,6 +64,7 @@ export class MenuItem extends ItemDefBase {
60
64
  get actionItem() {
61
65
  return this._actionItem;
62
66
  }
67
+ iconRightSpec;
63
68
  itemPicked() {
64
69
  setTimeout(() => {
65
70
  if (this._actionItem)
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../src/appui-react/shared/MenuItem.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 Item\n */\n\nimport * as React from \"react\";\nimport type {\n AbstractMenuItemProps,\n StringGetter,\n} from \"@itwin/appui-abstract\";\nimport { ConditionalBooleanValue, UiError } from \"@itwin/appui-abstract\";\nimport type { BadgeType, CommonProps, IconSpec } from \"@itwin/core-react\";\nimport type { BadgeKind } from \"@itwin/core-react/internal\";\nimport { ContextMenuItem, ContextSubMenu } from \"@itwin/core-react\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { ActionButtonItemDef } from \"./ActionButtonItemDef.js\";\nimport { CommandItemDef } from \"./CommandItemDef.js\";\nimport { ItemDefBase } from \"./ItemDefBase.js\";\nimport type { CommandItemProps } from \"./ItemProps.js\";\nimport type { ConditionalStringValue } from \"./ConditionalValue.js\";\n\n/** Properties for context menu items.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface CursorMenuItemProps extends CommonProps {\n /** The id for the menu item. */\n id: string;\n /** Icon to display. */\n iconNode?: React.ReactNode;\n /** Icon to display.\n * @deprecated in 4.16.0. Use {@link CursorMenuItemProps.iconNode} instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n iconSpec?: IconSpec;\n /** The item to execute when this item is invoked. Either 'item', 'submenu' or `execute` must be specified.\n * @deprecated in 4.15.0. Use properties of this object instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n item?: CommandItemProps;\n /** Function to execute. */\n execute?: () => any;\n /** Nested array of item props. Either 'item', 'submenu' or 'execute' must be specified. */\n submenu?: CursorMenuItemProps[];\n /** Icon to display on right side of the menu item.\n * Name of icon WebFont entry or if specifying an imported SVG symbol use \"webSvg:\" prefix to imported symbol Id.\n * @deprecated in 5.4.0. Use {@link CursorMenuItemProps.iconRightNode} instead.\n */\n iconRight?: string | ConditionalStringValue;\n /** Icon to display on right side of the menu item. */\n iconRightNode?: React.ReactNode;\n\n // #region \"ItemProps\" properties previously extended from deprecated type.\n\n /** if true component will be hidden - defaults to false */\n isHidden?: boolean | ConditionalBooleanValue;\n /** if true component will be disabled - defaults to false */\n isDisabled?: boolean | ConditionalBooleanValue;\n /** if set, component will be considered \"active\" an will display an \"active stripe\" - defaults to false */\n isActive?: boolean;\n /** if set, component will be considered selected but will NOT display an \"active stripe\" - defaults to false. Typically used by buttons that toggle between two states. */\n isPressed?: boolean;\n /** can be used by application to store miscellaneous data. */\n applicationData?: any;\n /** Badge to be overlaid on the item.\n * @deprecated in 4.16.0. Use `badgeKind` property instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n badgeType?: BadgeType;\n /** Specifies the kind of badge, if any, to be overlaid on the item. */\n badgeKind?: BadgeKind;\n /** Abstract icon definition. Used when creating itemDef from abstract item (ie. MenuItem).\n * @deprecated in 4.16.0. Use {@link CursorMenuItemProps.iconNode} instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n icon?: IconSpec;\n\n /** if set, it is used to explicitly set the label shown by a component. */\n label?: string | StringGetter | ConditionalStringValue;\n /** if set, it is used to define a key that is used to look up a localized string. This value is used only if label is not explicitly set. */\n labelKey?: string;\n\n /** if set, it is used to explicitly set the description shown by a component. */\n description?: string | StringGetter | ConditionalStringValue;\n /** if set, it is used to define a key that is used to look up a localized string. This value is used only if description is not explicitly set. */\n descriptionKey?: string;\n /** used to explicitly set the tooltip shown by a component. */\n tooltip?: string | StringGetter | ConditionalStringValue;\n /** if set, it is used to define a key that is used to look up a localized string. This value is used only if label is not explicitly set. */\n tooltipKey?: string;\n\n // #endregion \"ItemProps\"\n}\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Menu Item Properties\n * @public\n * @deprecated in 4.11.0. Please use {@link CursorMenuItemProps}.\n */\nexport type MenuItemProps = AbstractMenuItemProps;\n\n/** Menu Item\n * @alpha\n * @deprecated in 4.15.0. Used in a deprecated class {@link MenuItemHelpers}.\n */\nexport class MenuItem extends ItemDefBase {\n private _id = \"\";\n private _actionItem?: ActionButtonItemDef;\n private _submenu: MenuItem[];\n private _onSelection?: () => void;\n private _execute?: () => void;\n\n /** onSelection is an optional parameter typically supplied to allow menu parent to close context menu when a menu item is selected. */\n constructor(props: CursorMenuItemProps, onSelection?: () => void) {\n super(props);\n\n this._id = props.id;\n this._submenu = new Array<MenuItem>();\n this._onSelection = onSelection;\n\n if (props.item) {\n this._actionItem = new CommandItemDef(props.item);\n\n // Copy over icon, label & badgeType from the item\n if (!this.label) this.setLabel(this._actionItem.label);\n if (!this.badgeType) this.badgeType = this._actionItem.badgeType;\n if (!this.badgeKind) this.badgeKind = this._actionItem.badgeKind;\n if (!this.isDisabled) this.isDisabled = this._actionItem.isDisabled;\n } else if (props.execute) {\n this._execute = props.execute;\n } else if (props.submenu) {\n props.submenu.forEach((childProps) => {\n const childItem = new MenuItem(childProps, onSelection);\n this._submenu.push(childItem);\n });\n } else {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"MenuItem\"),\n `Either 'item', 'execute' or 'submenu' must be specified for '${props.id}'.`\n );\n }\n\n this.iconSpec = props.iconNode ?? props.icon ?? this._actionItem?.iconSpec;\n this.iconRightSpec = props.iconRightNode ?? props.iconRight;\n }\n\n public get id(): string {\n return this._id;\n }\n\n public get submenu(): MenuItem[] {\n return this._submenu;\n }\n\n public get actionItem(): ActionButtonItemDef | undefined {\n return this._actionItem;\n }\n\n public iconRightSpec?: IconSpec;\n\n public itemPicked(): void {\n setTimeout(() => {\n if (this._actionItem) this._actionItem.execute();\n else if (this._execute) this._execute();\n });\n\n if (this._onSelection) this._onSelection();\n }\n}\n\n/** Menu Item helper methods\n * @alpha\n * @deprecated in 4.15.0. Use {@link @itwin/core-react#ContextMenuItem} and {@link @itwin/core-react#ContextSubMenu} components.\n */\nexport class MenuItemHelpers {\n public static createMenuItems(\n itemPropsList: CursorMenuItemProps[],\n onSelection?: () => void\n ): MenuItem[] {\n const menuItems = new Array<MenuItem>();\n itemPropsList.forEach((itemProps) => {\n menuItems.push(new MenuItem(itemProps, onSelection));\n });\n return menuItems;\n }\n\n public static createMenuItemNodes(itemList: MenuItem[]): React.ReactNode[] {\n const itemNodes: React.ReactNode[] = [];\n\n itemList.forEach((item: MenuItem, index: number) => {\n const reactItem = this.createMenuItemNode(item, index);\n if (reactItem) itemNodes.push(reactItem);\n });\n\n return itemNodes;\n }\n\n private static createMenuItemNode(\n item: MenuItem,\n index: number\n ): React.ReactNode {\n const label = item.label;\n const iconSpec = item.iconSpec;\n const iconRightSpec = item.iconRightSpec;\n const badgeType = item.badgeType;\n const badgeKind = item.badgeKind;\n const isDisabled: boolean = ConditionalBooleanValue.getValue(\n item.isDisabled\n );\n\n if (item.submenu && item.submenu.length > 0) {\n const items = this.createMenuItemNodes(item.submenu);\n\n return (\n <ContextSubMenu\n key={index}\n icon={iconSpec}\n label={label}\n badgeType={badgeType}\n badgeKind={badgeKind}\n disabled={isDisabled}\n >\n {items}\n </ContextSubMenu>\n );\n }\n\n return (\n <ContextMenuItem\n key={index}\n onSelect={() => item.itemPicked()}\n icon={iconSpec}\n iconRight={iconRightSpec}\n badgeType={badgeType}\n badgeKind={badgeKind}\n disabled={isDisabled}\n >\n {label}\n </ContextMenuItem>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../src/appui-react/shared/MenuItem.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 Item\n */\n\nimport * as React from \"react\";\nimport type {\n AbstractMenuItemProps,\n StringGetter,\n} from \"@itwin/appui-abstract\";\nimport { ConditionalBooleanValue, UiError } from \"@itwin/appui-abstract\";\nimport type { BadgeType, CommonProps, IconSpec } from \"@itwin/core-react\";\nimport type { BadgeKind } from \"@itwin/core-react/internal\";\nimport { ContextMenuItem, ContextSubMenu } from \"@itwin/core-react\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { ActionButtonItemDef } from \"./ActionButtonItemDef.js\";\nimport { CommandItemDef } from \"./CommandItemDef.js\";\nimport { ItemDefBase } from \"./ItemDefBase.js\";\nimport type { CommandItemProps } from \"./ItemProps.js\";\nimport type { ConditionalStringValue } from \"./ConditionalValue.js\";\n\n/** Properties for context menu items.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface CursorMenuItemProps extends CommonProps {\n /** The id for the menu item. */\n id: string;\n /** Icon to display. */\n iconNode?: React.ReactNode;\n /** Icon to display.\n * @deprecated in 4.16.0. Use {@link CursorMenuItemProps.iconNode} instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n iconSpec?: IconSpec;\n /** The item to execute when this item is invoked. Either 'item', 'submenu' or `execute` must be specified.\n * @deprecated in 4.15.0. Use properties of this object instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n item?: CommandItemProps;\n /** Function to execute. */\n execute?: () => any;\n /** Nested array of item props. Either 'item', 'submenu' or 'execute' must be specified. */\n submenu?: CursorMenuItemProps[];\n /** Icon to display on right side of the menu item.\n * Name of icon WebFont entry or if specifying an imported SVG symbol use \"webSvg:\" prefix to imported symbol Id.\n * @deprecated in 5.4.0. Use {@link CursorMenuItemProps.iconRightNode} instead.\n */\n iconRight?: string | ConditionalStringValue;\n /** Icon to display on right side of the menu item. */\n iconRightNode?: React.ReactNode;\n\n // #region \"ItemProps\" properties previously extended from deprecated type.\n\n /** if true component will be hidden - defaults to false */\n isHidden?: boolean | ConditionalBooleanValue;\n /** if true component will be disabled - defaults to false */\n isDisabled?: boolean | ConditionalBooleanValue;\n /** if set, component will be considered \"active\" an will display an \"active stripe\" - defaults to false */\n isActive?: boolean;\n /** if set, component will be considered selected but will NOT display an \"active stripe\" - defaults to false. Typically used by buttons that toggle between two states. */\n isPressed?: boolean;\n /** can be used by application to store miscellaneous data. */\n applicationData?: any;\n /** Badge to be overlaid on the item.\n * @deprecated in 4.16.0. Use `badgeKind` property instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n badgeType?: BadgeType;\n /** Specifies the kind of badge, if any, to be overlaid on the item. */\n badgeKind?: BadgeKind;\n /** Abstract icon definition. Used when creating itemDef from abstract item (ie. MenuItem).\n * @deprecated in 4.16.0. Use {@link CursorMenuItemProps.iconNode} instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n icon?: IconSpec;\n\n /** if set, it is used to explicitly set the label shown by a component. */\n label?: string | StringGetter | ConditionalStringValue;\n /** if set, it is used to define a key that is used to look up a localized string. This value is used only if label is not explicitly set. */\n labelKey?: string;\n\n /** if set, it is used to explicitly set the description shown by a component. */\n description?: string | StringGetter | ConditionalStringValue;\n /** if set, it is used to define a key that is used to look up a localized string. This value is used only if description is not explicitly set. */\n descriptionKey?: string;\n /** used to explicitly set the tooltip shown by a component. */\n tooltip?: string | StringGetter | ConditionalStringValue;\n /** if set, it is used to define a key that is used to look up a localized string. This value is used only if label is not explicitly set. */\n tooltipKey?: string;\n\n // #endregion \"ItemProps\"\n}\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Menu Item Properties\n * @public\n * @deprecated in 4.11.0. Please use {@link CursorMenuItemProps}.\n */\nexport type MenuItemProps = AbstractMenuItemProps;\n\n/** Menu Item\n * @alpha\n * @deprecated in 4.15.0. Used in a deprecated class {@link MenuItemHelpers}.\n */\nexport class MenuItem extends ItemDefBase {\n private _id = \"\";\n private _actionItem?: ActionButtonItemDef;\n private _submenu: MenuItem[];\n private _onSelection?: () => void;\n private _execute?: () => void;\n\n /** onSelection is an optional parameter typically supplied to allow menu parent to close context menu when a menu item is selected. */\n constructor(props: CursorMenuItemProps, onSelection?: () => void) {\n super(props);\n\n this._id = props.id;\n this._submenu = new Array<MenuItem>();\n this._onSelection = onSelection;\n\n if (props.item) {\n this._actionItem = new CommandItemDef(props.item);\n\n // Copy over icon, label & badgeType from the item\n if (!this.label) this.setLabel(this._actionItem.label);\n if (!this.badgeType) this.badgeType = this._actionItem.badgeType;\n if (!this.badgeKind) this.badgeKind = this._actionItem.badgeKind;\n if (!this.isDisabled) this.isDisabled = this._actionItem.isDisabled;\n } else if (props.execute) {\n this._execute = props.execute;\n } else if (props.submenu) {\n props.submenu.forEach((childProps) => {\n const childItem = new MenuItem(childProps, onSelection);\n this._submenu.push(childItem);\n });\n } else {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"MenuItem\"),\n `Either 'item', 'execute' or 'submenu' must be specified for '${props.id}'.`\n );\n }\n\n this.iconSpec = props.iconNode ?? props.icon ?? this._actionItem?.iconSpec;\n this.iconRightSpec = props.iconRightNode ?? props.iconRight;\n }\n\n public get id(): string {\n return this._id;\n }\n\n public get submenu(): MenuItem[] {\n return this._submenu;\n }\n\n public get actionItem(): ActionButtonItemDef | undefined {\n return this._actionItem;\n }\n\n public iconRightSpec?: IconSpec;\n\n public itemPicked(): void {\n setTimeout(() => {\n if (this._actionItem) this._actionItem.execute();\n else if (this._execute) this._execute();\n });\n\n if (this._onSelection) this._onSelection();\n }\n}\n\n/** Menu Item helper methods\n * @alpha\n * @deprecated in 4.15.0. Use {@link @itwin/core-react#ContextMenuItem} and {@link @itwin/core-react#ContextSubMenu} components.\n */\nexport class MenuItemHelpers {\n public static createMenuItems(\n itemPropsList: CursorMenuItemProps[],\n onSelection?: () => void\n ): MenuItem[] {\n const menuItems = new Array<MenuItem>();\n itemPropsList.forEach((itemProps) => {\n menuItems.push(new MenuItem(itemProps, onSelection));\n });\n return menuItems;\n }\n\n public static createMenuItemNodes(itemList: MenuItem[]): React.ReactNode[] {\n const itemNodes: React.ReactNode[] = [];\n\n itemList.forEach((item: MenuItem, index: number) => {\n const reactItem = this.createMenuItemNode(item, index);\n if (reactItem) itemNodes.push(reactItem);\n });\n\n return itemNodes;\n }\n\n private static createMenuItemNode(\n item: MenuItem,\n index: number\n ): React.ReactNode {\n const label = item.label;\n const iconSpec = item.iconSpec;\n const iconRightSpec = item.iconRightSpec;\n const badgeType = item.badgeType;\n const badgeKind = item.badgeKind;\n const isDisabled: boolean = ConditionalBooleanValue.getValue(\n item.isDisabled\n );\n\n if (item.submenu && item.submenu.length > 0) {\n const items = this.createMenuItemNodes(item.submenu);\n\n return (\n <ContextSubMenu\n key={index}\n icon={iconSpec}\n label={label}\n badgeType={badgeType}\n badgeKind={badgeKind}\n disabled={isDisabled}\n >\n {items}\n </ContextSubMenu>\n );\n }\n\n return (\n <ContextMenuItem\n key={index}\n onSelect={() => item.itemPicked()}\n icon={iconSpec}\n iconRight={iconRightSpec}\n badgeType={badgeType}\n badgeKind={badgeKind}\n disabled={isDisabled}\n >\n {label}\n </ContextMenuItem>\n );\n }\n}\n"]}
@@ -13,9 +13,9 @@ import { ActionButtonItemDef } from "./ActionButtonItemDef.js";
13
13
  * @deprecated in 4.15.0. Use {@link ToolbarItemUtilities.createForTool} instead.
14
14
  */
15
15
  export class ToolItemDef extends ActionButtonItemDef {
16
+ toolId = "";
16
17
  constructor(toolItemProps, onItemExecuted) {
17
18
  super(toolItemProps, onItemExecuted);
18
- this.toolId = "";
19
19
  if (toolItemProps.execute) {
20
20
  this._commandHandler = {
21
21
  execute: toolItemProps.execute,
@@ -1 +1 @@
1
- {"version":3,"file":"ToolItemDef.js","sourceRoot":"","sources":["../../../src/appui-react/shared/ToolItemDef.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,mBAAmB;IAGlD,YACE,aAA4B,EAC5B,cAAmC;QAEnC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QANhC,WAAM,GAAW,EAAE,CAAC;QAQzB,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG;gBACrB,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,cAAc,EAAE,aAAa,CAAC,cAAc;aAC7C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAC7B,IAAiB,EACjB,IAAa,EACb,GAAG,IAAW;QAEd,OAAO,IAAI,WAAW,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI;gBACR,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC3C,CAAC,CAAC,IAAI,CAAC,QAAQ;oBACf,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO;YACzB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW;YACnC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;SAC/D,CAAC,CAAC;IACL,CAAC;CACF","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 Item\n */\n\nimport type { Tool } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { ActionButtonItemDef } from \"./ActionButtonItemDef.js\";\nimport type { ToolItemProps } from \"./ItemProps.js\";\nimport type { ToolbarItemUtilities } from \"../toolbar/ToolbarItemUtilities.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** An Item that starts the execution of a Tool.\n * @public\n * @deprecated in 4.15.0. Use {@link ToolbarItemUtilities.createForTool} instead.\n */\nexport class ToolItemDef extends ActionButtonItemDef {\n public toolId: string = \"\";\n\n constructor(\n toolItemProps: ToolItemProps,\n onItemExecuted?: OnItemExecutedFunc\n ) {\n super(toolItemProps, onItemExecuted);\n\n if (toolItemProps.execute) {\n this._commandHandler = {\n execute: toolItemProps.execute,\n parameters: toolItemProps.parameters,\n getCommandArgs: toolItemProps.getCommandArgs,\n };\n }\n\n this.toolId = toolItemProps.toolId;\n }\n\n public get id(): string {\n return this.toolId;\n }\n\n /** Create a ToolItemDef that will run a registered tool.\n * @deprecated in 4.15.0. Use {@link ToolbarItemUtilities.createForTool} instead.\n */\n public static getItemDefForTool(\n tool: typeof Tool,\n icon?: string,\n ...args: any[]\n ): ToolItemDef {\n return new ToolItemDef({\n toolId: tool.toolId,\n icon: icon\n ? icon\n : tool.iconSpec && tool.iconSpec.length > 0\n ? tool.iconSpec\n : undefined,\n label: () => tool.flyover,\n description: () => tool.description,\n execute: async () => IModelApp.tools.run(tool.toolId, ...args),\n });\n }\n}\n"]}
1
+ {"version":3,"file":"ToolItemDef.js","sourceRoot":"","sources":["../../../src/appui-react/shared/ToolItemDef.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,mBAAmB;IAC3C,MAAM,GAAW,EAAE,CAAC;IAE3B,YACE,aAA4B,EAC5B,cAAmC;QAEnC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAErC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG;gBACrB,OAAO,EAAE,aAAa,CAAC,OAAO;gBAC9B,UAAU,EAAE,aAAa,CAAC,UAAU;gBACpC,cAAc,EAAE,aAAa,CAAC,cAAc;aAC7C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAC7B,IAAiB,EACjB,IAAa,EACb,GAAG,IAAW;QAEd,OAAO,IAAI,WAAW,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI;gBACR,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC3C,CAAC,CAAC,IAAI,CAAC,QAAQ;oBACf,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO;YACzB,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW;YACnC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;SAC/D,CAAC,CAAC;IACL,CAAC;CACF","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 Item\n */\n\nimport type { Tool } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { ActionButtonItemDef } from \"./ActionButtonItemDef.js\";\nimport type { ToolItemProps } from \"./ItemProps.js\";\nimport type { ToolbarItemUtilities } from \"../toolbar/ToolbarItemUtilities.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** An Item that starts the execution of a Tool.\n * @public\n * @deprecated in 4.15.0. Use {@link ToolbarItemUtilities.createForTool} instead.\n */\nexport class ToolItemDef extends ActionButtonItemDef {\n public toolId: string = \"\";\n\n constructor(\n toolItemProps: ToolItemProps,\n onItemExecuted?: OnItemExecutedFunc\n ) {\n super(toolItemProps, onItemExecuted);\n\n if (toolItemProps.execute) {\n this._commandHandler = {\n execute: toolItemProps.execute,\n parameters: toolItemProps.parameters,\n getCommandArgs: toolItemProps.getCommandArgs,\n };\n }\n\n this.toolId = toolItemProps.toolId;\n }\n\n public get id(): string {\n return this.toolId;\n }\n\n /** Create a ToolItemDef that will run a registered tool.\n * @deprecated in 4.15.0. Use {@link ToolbarItemUtilities.createForTool} instead.\n */\n public static getItemDefForTool(\n tool: typeof Tool,\n icon?: string,\n ...args: any[]\n ): ToolItemDef {\n return new ToolItemDef({\n toolId: tool.toolId,\n icon: icon\n ? icon\n : tool.iconSpec && tool.iconSpec.length > 0\n ? tool.iconSpec\n : undefined,\n label: () => tool.flyover,\n description: () => tool.description,\n execute: async () => IModelApp.tools.run(tool.toolId, ...args),\n });\n }\n}\n"]}
@@ -26,12 +26,13 @@ export class PanelStateChangedEvent extends UiEvent {
26
26
  * @public
27
27
  */
28
28
  export class StagePanelDef extends WidgetHost {
29
+ _initialConfig;
30
+ _location = StagePanelLocation.Left;
31
+ _start = new StagePanelSectionDef();
32
+ _end = new StagePanelSectionDef();
29
33
  /** Constructor for PanelDef. */
30
34
  constructor() {
31
35
  super();
32
- this._location = StagePanelLocation.Left;
33
- this._start = new StagePanelSectionDef();
34
- this._end = new StagePanelSectionDef();
35
36
  }
36
37
  /** @internal */
37
38
  static create(config, location) {