@itwin/appui-react 4.3.0-dev.1 → 4.3.1

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 (194) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/lib/cjs/appui-react/UiFramework.js +7 -4
  3. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  4. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +2 -1
  5. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  6. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +1 -1
  7. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  8. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  9. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  10. package/lib/cjs/appui-react/configurableui/TimeTracker.js +2 -1
  11. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  12. package/lib/cjs/appui-react/content/ContentLayout.js +12 -9
  13. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  14. package/lib/cjs/appui-react/content/DefaultViewOverlay.js +4 -3
  15. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  16. package/lib/cjs/appui-react/content/FloatingViewportContent.js +2 -1
  17. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  18. package/lib/cjs/appui-react/content/IModelViewport.js +6 -3
  19. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  20. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +2 -1
  21. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  22. package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
  23. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  24. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +12 -10
  25. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  26. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +3 -2
  27. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  28. package/lib/cjs/appui-react/dialog/ContentDialog.js +6 -3
  29. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  30. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +3 -2
  31. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  32. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +7 -5
  33. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  34. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +3 -2
  35. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  36. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +2 -1
  37. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  38. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +11 -7
  39. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  40. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +11 -7
  41. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  42. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +13 -8
  43. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  44. package/lib/cjs/appui-react/messages/ActivityMessage.js +7 -5
  45. package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
  46. package/lib/cjs/appui-react/pickers/ViewSelector.js +6 -5
  47. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  48. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +2 -1
  49. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  50. package/lib/cjs/appui-react/popup/PopupManager.js +2 -1
  51. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  52. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +1 -2
  53. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  54. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +7 -5
  55. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  56. package/lib/cjs/appui-react/statusbar/Indicator.js +2 -1
  57. package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
  58. package/lib/cjs/appui-react/statusbar/StatusBar.js +5 -3
  59. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  60. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  61. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  62. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +17 -10
  63. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  64. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +2 -3
  65. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  66. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +14 -12
  67. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  68. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +10 -9
  69. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  70. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +2 -1
  71. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  72. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +14 -8
  73. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  74. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  75. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  76. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +1 -1
  77. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  78. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +3 -3
  79. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  80. package/lib/cjs/appui-react/widget-panels/Content.js +9 -8
  81. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  82. package/lib/cjs/appui-react/widget-panels/Frontstage.js +45 -43
  83. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  84. package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
  85. package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
  86. package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
  87. package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
  88. package/lib/cjs/appui-react/widget-panels/ToolSettings.js +20 -14
  89. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  90. package/lib/cjs/appui-react/widget-panels/Toolbars.js +3 -2
  91. package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
  92. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  93. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  94. package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -1
  95. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  96. package/lib/cjs/appui-react/widgets/WidgetHost.js +3 -2
  97. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  98. package/lib/esm/appui-react/UiFramework.js +7 -4
  99. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  100. package/lib/esm/appui-react/backstage/BackstageComposerItem.js +2 -1
  101. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  102. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +1 -1
  103. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  104. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  105. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  106. package/lib/esm/appui-react/configurableui/TimeTracker.js +2 -1
  107. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  108. package/lib/esm/appui-react/content/ContentLayout.js +12 -9
  109. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  110. package/lib/esm/appui-react/content/DefaultViewOverlay.js +4 -3
  111. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  112. package/lib/esm/appui-react/content/FloatingViewportContent.js +2 -1
  113. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  114. package/lib/esm/appui-react/content/IModelViewport.js +6 -3
  115. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  116. package/lib/esm/appui-react/content/InternalContentLayoutManager.js +2 -1
  117. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  118. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -1
  119. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  120. package/lib/esm/appui-react/content/split-pane/SplitPane.js +12 -10
  121. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  122. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +3 -2
  123. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  124. package/lib/esm/appui-react/dialog/ContentDialog.js +6 -3
  125. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  126. package/lib/esm/appui-react/dialog/DialogManagerBase.js +3 -2
  127. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  128. package/lib/esm/appui-react/frontstage/FrontstageDef.js +7 -5
  129. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  130. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +3 -2
  131. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  132. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +2 -1
  133. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  134. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +11 -7
  135. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  136. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +11 -7
  137. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  138. package/lib/esm/appui-react/hooks/useSolarDataProvider.js +13 -8
  139. package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  140. package/lib/esm/appui-react/messages/ActivityMessage.js +7 -5
  141. package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
  142. package/lib/esm/appui-react/pickers/ViewSelector.js +6 -5
  143. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  144. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +2 -1
  145. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  146. package/lib/esm/appui-react/popup/PopupManager.js +2 -1
  147. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  148. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +1 -2
  149. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  150. package/lib/esm/appui-react/stagepanels/StagePanelDef.js +7 -5
  151. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  152. package/lib/esm/appui-react/statusbar/Indicator.js +2 -1
  153. package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
  154. package/lib/esm/appui-react/statusbar/StatusBar.js +5 -3
  155. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  156. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  157. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  158. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +17 -10
  159. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  160. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +2 -3
  161. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  162. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +14 -12
  163. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  164. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +10 -9
  165. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  166. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +2 -1
  167. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  168. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +14 -8
  169. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  170. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  171. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  172. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +1 -1
  173. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  174. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +3 -3
  175. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  176. package/lib/esm/appui-react/widget-panels/Content.js +9 -8
  177. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  178. package/lib/esm/appui-react/widget-panels/Frontstage.js +45 -43
  179. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  180. package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
  181. package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
  182. package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
  183. package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
  184. package/lib/esm/appui-react/widget-panels/ToolSettings.js +20 -14
  185. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  186. package/lib/esm/appui-react/widget-panels/Toolbars.js +3 -2
  187. package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
  188. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  189. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  190. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -1
  191. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  192. package/lib/esm/appui-react/widgets/WidgetHost.js +3 -2
  193. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  194. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"QuantityFormat.js","sourceRoot":"","sources":["../../../../../src/appui-react/settings/quantityformatting/QuantityFormat.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Settings\n */\n\nimport \"./QuantityFormat.scss\";\nimport * as React from \"react\";\nimport { DeepCompare } from \"@itwin/core-geometry\";\nimport type {\n QuantityFormatsChangedArgs,\n QuantityTypeArg,\n QuantityTypeKey,\n} from \"@itwin/core-frontend\";\nimport {\n getQuantityTypeKey,\n IModelApp,\n QuantityType,\n} from \"@itwin/core-frontend\";\nimport type {\n FormatProps,\n FormatterSpec,\n UnitSystemKey,\n} from \"@itwin/core-quantity\";\nimport { DialogButtonType } from \"@itwin/appui-abstract\";\nimport {\n FormatSample,\n QuantityFormatPanel,\n} from \"@itwin/imodel-components-react\";\nimport type { SettingsTabEntry } from \"@itwin/core-react\";\nimport {\n Dialog,\n Listbox,\n ListboxItem,\n useSaveBeforeActivatingNewSettingsTab,\n useSaveBeforeClosingSettingsContainer,\n} from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UnitSystemSelector } from \"./UnitSystemSelector\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { SvgMeasure } from \"@itwin/itwinui-icons-react\";\n\nfunction formatAreEqual(obj1: FormatProps, obj2: FormatProps) {\n const compare = new DeepCompare();\n return compare.compare(obj1, obj2);\n}\n\n/** Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport interface QuantityFormatterSettingsOptions {\n initialQuantityType: QuantityTypeArg;\n availableUnitSystems: Set<UnitSystemKey>;\n}\n\n/**\n * Return a SettingsTabEntry that can be used to define the available settings that can be set for an application.\n * @param itemPriority - Used to define the order of the entry in the Settings Stage\n * @param opts - Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport function getQuantityFormatsSettingsManagerEntry(\n itemPriority: number,\n opts?: Partial<QuantityFormatterSettingsOptions>\n): SettingsTabEntry {\n const { availableUnitSystems, initialQuantityType } = { ...opts };\n return {\n itemPriority,\n tabId: \"uifw:Quantity\",\n label: UiFramework.translate(\"settings.quantity-formatting.label\"),\n subLabel: UiFramework.translate(\"settings.quantity-formatting.subLabel\"),\n page: (\n <QuantityFormatSettingsPage\n initialQuantityType={initialQuantityType ?? QuantityType.Length}\n availableUnitSystems={\n availableUnitSystems ??\n new Set([\"metric\", \"imperial\", \"usCustomary\", \"usSurvey\"])\n }\n />\n ),\n isDisabled: false,\n icon: <SvgMeasure />,\n tooltip: UiFramework.translate(\"settings.quantity-formatting.tooltip\"),\n pageWillHandleCloseRequest: true,\n };\n}\n\n/** UI Component shown in settings page to set the active Presentation Unit System and to set format overrides.\n * @beta\n */\nexport function QuantityFormatSettingsPage({\n initialQuantityType,\n availableUnitSystems,\n}: QuantityFormatterSettingsOptions) {\n const [activeUnitSystemKey, setActiveUnitSystemKey] = React.useState(\n IModelApp.quantityFormatter.activeUnitSystem\n );\n const [activeQuantityType, setActiveQuantityType] = React.useState(\n getQuantityTypeKey(initialQuantityType)\n );\n const [activeFormatterSpec, setActiveFormatterSpec] = React.useState<\n FormatterSpec | undefined\n >(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n getQuantityTypeKey(activeQuantityType)\n )\n );\n const [saveEnabled, setSaveEnabled] = React.useState(false);\n const [clearEnabled, setClearEnabled] = React.useState(\n IModelApp.quantityFormatter.hasActiveOverride(initialQuantityType, true)\n );\n const newQuantityTypeRef = React.useRef<QuantityTypeKey>();\n const formatSectionLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.formatSectionLabel\")\n );\n const setButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.setButtonLabel\")\n );\n const clearButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.clearButtonLabel\")\n );\n\n React.useEffect(() => {\n const handleUnitSystemChanged = (): void => {\n // istanbul ignore else\n if (\n activeUnitSystemKey !== IModelApp.quantityFormatter.activeUnitSystem\n ) {\n setActiveUnitSystemKey(IModelApp.quantityFormatter.activeUnitSystem);\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n };\n\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(\n handleUnitSystemChanged\n );\n return () => {\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.removeListener(\n handleUnitSystemChanged\n );\n };\n }, [activeQuantityType, activeUnitSystemKey]);\n\n React.useEffect(() => {\n const handleFormatChanged = (args: QuantityFormatsChangedArgs): void => {\n if (!newQuantityTypeRef.current) {\n const quantityKey =\n IModelApp.quantityFormatter.getQuantityTypeKey(activeQuantityType);\n // istanbul ignore else\n if (args.quantityType === quantityKey) {\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n }\n newQuantityTypeRef.current = undefined;\n };\n IModelApp.quantityFormatter.onQuantityFormatsChanged.addListener(\n handleFormatChanged\n );\n return () => {\n IModelApp.quantityFormatter.onQuantityFormatsChanged.removeListener(\n handleFormatChanged\n );\n };\n }, [activeQuantityType]);\n\n const saveChanges = React.useCallback(\n (afterSaveFunction: (args: any) => void, args?: any) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={args}\n onDialogClose={afterSaveFunction}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n afterSaveFunction(args);\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n useSaveBeforeActivatingNewSettingsTab(\n UiFramework.settingsManager,\n saveChanges\n );\n useSaveBeforeClosingSettingsContainer(\n UiFramework.settingsManager,\n saveChanges\n );\n\n const processListboxValueChange = React.useCallback(\n (newQuantityType: QuantityTypeKey) => {\n const volumeFormatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n newQuantityType\n );\n setActiveFormatterSpec(volumeFormatterSpec);\n setActiveQuantityType(newQuantityType);\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(newQuantityType, true)\n );\n },\n []\n );\n\n const onListboxValueChange = React.useCallback(\n (newQuantityType: string) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n newQuantityTypeRef.current = newQuantityType;\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={newQuantityType}\n onDialogClose={processListboxValueChange}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n processListboxValueChange(newQuantityType);\n },\n [activeFormatterSpec, activeQuantityType, processListboxValueChange]\n );\n\n const handleOnFormatChanged = React.useCallback(\n async (formatProps: FormatProps) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const newSpec =\n await IModelApp.quantityFormatter.generateFormatterSpecByType(\n activeQuantityType,\n formatProps\n );\n const formatPropsInUse =\n IModelApp.quantityFormatter.getFormatPropsByQuantityType(\n activeQuantityType\n );\n // istanbul ignore else\n if (formatPropsInUse)\n setSaveEnabled(!formatAreEqual(formatProps, formatPropsInUse));\n setActiveFormatterSpec(newSpec);\n }\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n const handleOnFormatSave = React.useCallback(async () => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const format = activeFormatterSpec.format.toJSON();\n await IModelApp.quantityFormatter.setOverrideFormat(\n activeQuantityType,\n format\n );\n setClearEnabled(true);\n }\n }, [activeFormatterSpec, activeQuantityType]);\n\n const handleOnFormatReset = React.useCallback(async () => {\n await IModelApp.quantityFormatter.clearOverrideFormats(activeQuantityType);\n setClearEnabled(false);\n }, [activeQuantityType]);\n\n const processNewUnitSystem = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n await IModelApp.quantityFormatter.setActiveUnitSystem(unitSystem);\n },\n []\n );\n\n const handleUnitSystemSelected = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n if (unitSystem === activeUnitSystemKey) return;\n saveChanges(processNewUnitSystem, unitSystem);\n },\n [activeUnitSystemKey, processNewUnitSystem, saveChanges]\n );\n\n return (\n <div className=\"quantity-formatting-container\">\n <UnitSystemSelector\n selectedUnitSystemKey={activeUnitSystemKey}\n availableUnitSystems={availableUnitSystems}\n onUnitSystemSelected={handleUnitSystemSelected}\n />\n <span className=\"uifw-quantity-format-section-label\">\n {formatSectionLabel.current}\n </span>\n <div className=\"uifw-quantity-types-container\">\n <div className=\"left-panel\">\n <Listbox\n id=\"uifw-quantity-types-list\"\n className=\"uifw-quantity-types\"\n onListboxValueChange={onListboxValueChange}\n selectedValue={activeQuantityType}\n >\n {[...IModelApp.quantityFormatter.quantityTypesRegistry.keys()].map(\n (key) => {\n const entry =\n IModelApp.quantityFormatter.quantityTypesRegistry.get(key)!;\n const description = entry.description;\n const label = entry.label;\n return (\n <ListboxItem\n key={entry.key}\n className=\"quantity-type-list-entry\"\n value={entry.key}\n >\n <span\n className=\"map-source-list-entry-name\"\n title={description}\n >\n {label}\n </span>\n </ListboxItem>\n );\n }\n )}\n </Listbox>\n </div>\n <div className=\"right-panel\">\n {activeFormatterSpec && (\n <>\n <div className=\"uifw-quantity-types-right-top\">\n <div className=\"uifw-quantity-types-right-top-sample\">\n <FormatSample\n formatSpec={activeFormatterSpec}\n initialMagnitude={1234.56}\n hideLabels\n />\n </div>\n </div>\n <div className=\"uifw-quantity-types-formats\">\n <QuantityFormatPanel\n onFormatChange={handleOnFormatChanged}\n quantityType={activeQuantityType}\n />\n </div>\n <div className=\"components-button-panel\">\n <Button\n styleType=\"cta\"\n onClick={handleOnFormatSave}\n disabled={!saveEnabled}\n >\n {setButtonLabel.current}\n </Button>\n <Button\n styleType=\"default\"\n onClick={handleOnFormatReset}\n disabled={!clearEnabled}\n >\n {clearButtonLabel.current}\n </Button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SaveFormatModalDialog({\n formatProps,\n quantityType,\n onDialogCloseArgs,\n onDialogClose,\n}: {\n formatProps: FormatProps;\n quantityType: QuantityTypeKey;\n onDialogCloseArgs?: any;\n onDialogClose: (args?: any) => void;\n}) {\n const [isOpen, setIsOpen] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n UiFramework.dialogs.modal.close();\n onDialogClose && onDialogClose(onDialogCloseArgs);\n }, [onDialogClose, onDialogCloseArgs]);\n\n const handleOK = React.useCallback(() => {\n void IModelApp.quantityFormatter.setOverrideFormat(\n quantityType,\n formatProps\n );\n handleClose();\n }, [formatProps, handleClose, quantityType]);\n\n const handleCancel = React.useCallback(() => {\n handleClose();\n }, [handleClose]);\n\n return (\n <Dialog\n title={\"Save Format Changes\"}\n opened={isOpen}\n resizable={false}\n movable={false}\n modal={true}\n buttonCluster={[\n { type: DialogButtonType.Yes, onClick: handleOK },\n { type: DialogButtonType.No, onClick: handleCancel },\n ]}\n onEscape={handleCancel}\n onClose={handleCancel}\n onOutsideClick={handleCancel}\n minHeight={150}\n maxHeight={400}\n maxWidth={400}\n minWidth={200}\n >\n <div className=\"modal-dialog2\">\n Do you want to save changes to format before changing to another type?\n </div>\n </Dialog>\n );\n}\n"]}
1
+ {"version":3,"file":"QuantityFormat.js","sourceRoot":"","sources":["../../../../../src/appui-react/settings/quantityformatting/QuantityFormat.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Settings\n */\n\nimport \"./QuantityFormat.scss\";\nimport * as React from \"react\";\nimport { DeepCompare } from \"@itwin/core-geometry\";\nimport type {\n QuantityFormatsChangedArgs,\n QuantityTypeArg,\n QuantityTypeKey,\n} from \"@itwin/core-frontend\";\nimport {\n getQuantityTypeKey,\n IModelApp,\n QuantityType,\n} from \"@itwin/core-frontend\";\nimport type {\n FormatProps,\n FormatterSpec,\n UnitSystemKey,\n} from \"@itwin/core-quantity\";\nimport { DialogButtonType } from \"@itwin/appui-abstract\";\nimport {\n FormatSample,\n QuantityFormatPanel,\n} from \"@itwin/imodel-components-react\";\nimport type { SettingsTabEntry } from \"@itwin/core-react\";\nimport {\n Dialog,\n Listbox,\n ListboxItem,\n useSaveBeforeActivatingNewSettingsTab,\n useSaveBeforeClosingSettingsContainer,\n} from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UnitSystemSelector } from \"./UnitSystemSelector\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { SvgMeasure } from \"@itwin/itwinui-icons-react\";\n\nfunction formatAreEqual(obj1: FormatProps, obj2: FormatProps) {\n const compare = new DeepCompare();\n return compare.compare(obj1, obj2);\n}\n\n/** Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport interface QuantityFormatterSettingsOptions {\n initialQuantityType: QuantityTypeArg;\n availableUnitSystems: Set<UnitSystemKey>;\n}\n\n/**\n * Return a SettingsTabEntry that can be used to define the available settings that can be set for an application.\n * @param itemPriority - Used to define the order of the entry in the Settings Stage\n * @param opts - Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport function getQuantityFormatsSettingsManagerEntry(\n itemPriority: number,\n opts?: Partial<QuantityFormatterSettingsOptions>\n): SettingsTabEntry {\n const { availableUnitSystems, initialQuantityType } = { ...opts };\n return {\n itemPriority,\n tabId: \"uifw:Quantity\",\n label: UiFramework.translate(\"settings.quantity-formatting.label\"),\n subLabel: UiFramework.translate(\"settings.quantity-formatting.subLabel\"),\n page: (\n <QuantityFormatSettingsPage\n initialQuantityType={initialQuantityType ?? QuantityType.Length}\n availableUnitSystems={\n availableUnitSystems ??\n new Set([\"metric\", \"imperial\", \"usCustomary\", \"usSurvey\"])\n }\n />\n ),\n isDisabled: false,\n icon: <SvgMeasure />,\n tooltip: UiFramework.translate(\"settings.quantity-formatting.tooltip\"),\n pageWillHandleCloseRequest: true,\n };\n}\n\n/** UI Component shown in settings page to set the active Presentation Unit System and to set format overrides.\n * @beta\n */\nexport function QuantityFormatSettingsPage({\n initialQuantityType,\n availableUnitSystems,\n}: QuantityFormatterSettingsOptions) {\n const [activeUnitSystemKey, setActiveUnitSystemKey] = React.useState(\n IModelApp.quantityFormatter.activeUnitSystem\n );\n const [activeQuantityType, setActiveQuantityType] = React.useState(\n getQuantityTypeKey(initialQuantityType)\n );\n const [activeFormatterSpec, setActiveFormatterSpec] = React.useState<\n FormatterSpec | undefined\n >(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n getQuantityTypeKey(activeQuantityType)\n )\n );\n const [saveEnabled, setSaveEnabled] = React.useState(false);\n const [clearEnabled, setClearEnabled] = React.useState(\n IModelApp.quantityFormatter.hasActiveOverride(initialQuantityType, true)\n );\n const newQuantityTypeRef = React.useRef<QuantityTypeKey>();\n const formatSectionLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.formatSectionLabel\")\n );\n const setButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.setButtonLabel\")\n );\n const clearButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.clearButtonLabel\")\n );\n\n React.useEffect(() => {\n const handleUnitSystemChanged = (): void => {\n // istanbul ignore else\n if (\n activeUnitSystemKey !== IModelApp.quantityFormatter.activeUnitSystem\n ) {\n setActiveUnitSystemKey(IModelApp.quantityFormatter.activeUnitSystem);\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n };\n\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(\n handleUnitSystemChanged\n );\n return () => {\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.removeListener(\n handleUnitSystemChanged\n );\n };\n }, [activeQuantityType, activeUnitSystemKey]);\n\n React.useEffect(() => {\n const handleFormatChanged = (args: QuantityFormatsChangedArgs): void => {\n if (!newQuantityTypeRef.current) {\n const quantityKey =\n IModelApp.quantityFormatter.getQuantityTypeKey(activeQuantityType);\n // istanbul ignore else\n if (args.quantityType === quantityKey) {\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n }\n newQuantityTypeRef.current = undefined;\n };\n IModelApp.quantityFormatter.onQuantityFormatsChanged.addListener(\n handleFormatChanged\n );\n return () => {\n IModelApp.quantityFormatter.onQuantityFormatsChanged.removeListener(\n handleFormatChanged\n );\n };\n }, [activeQuantityType]);\n\n const saveChanges = React.useCallback(\n (afterSaveFunction: (args: any) => void, args?: any) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={args}\n onDialogClose={afterSaveFunction}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n afterSaveFunction(args);\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n useSaveBeforeActivatingNewSettingsTab(\n UiFramework.settingsManager,\n saveChanges\n );\n useSaveBeforeClosingSettingsContainer(\n UiFramework.settingsManager,\n saveChanges\n );\n\n const processListboxValueChange = React.useCallback(\n (newQuantityType: QuantityTypeKey) => {\n const volumeFormatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n newQuantityType\n );\n setActiveFormatterSpec(volumeFormatterSpec);\n setActiveQuantityType(newQuantityType);\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(newQuantityType, true)\n );\n },\n []\n );\n\n const onListboxValueChange = React.useCallback(\n (newQuantityType: string) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n newQuantityTypeRef.current = newQuantityType;\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={newQuantityType}\n onDialogClose={processListboxValueChange}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n processListboxValueChange(newQuantityType);\n },\n [activeFormatterSpec, activeQuantityType, processListboxValueChange]\n );\n\n const handleOnFormatChanged = React.useCallback(\n async (formatProps: FormatProps) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const newSpec =\n await IModelApp.quantityFormatter.generateFormatterSpecByType(\n activeQuantityType,\n formatProps\n );\n const formatPropsInUse =\n IModelApp.quantityFormatter.getFormatPropsByQuantityType(\n activeQuantityType\n );\n // istanbul ignore else\n if (formatPropsInUse)\n setSaveEnabled(!formatAreEqual(formatProps, formatPropsInUse));\n setActiveFormatterSpec(newSpec);\n }\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n const handleOnFormatSave = React.useCallback(async () => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const format = activeFormatterSpec.format.toJSON();\n await IModelApp.quantityFormatter.setOverrideFormat(\n activeQuantityType,\n format\n );\n setClearEnabled(true);\n }\n }, [activeFormatterSpec, activeQuantityType]);\n\n const handleOnFormatReset = React.useCallback(async () => {\n await IModelApp.quantityFormatter.clearOverrideFormats(activeQuantityType);\n setClearEnabled(false);\n }, [activeQuantityType]);\n\n const processNewUnitSystem = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n await IModelApp.quantityFormatter.setActiveUnitSystem(unitSystem);\n },\n []\n );\n\n const handleUnitSystemSelected = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n if (unitSystem === activeUnitSystemKey) return;\n saveChanges(processNewUnitSystem, unitSystem);\n },\n [activeUnitSystemKey, processNewUnitSystem, saveChanges]\n );\n\n return (\n <div className=\"quantity-formatting-container\">\n <UnitSystemSelector\n selectedUnitSystemKey={activeUnitSystemKey}\n availableUnitSystems={availableUnitSystems}\n onUnitSystemSelected={handleUnitSystemSelected}\n />\n <span className=\"uifw-quantity-format-section-label\">\n {formatSectionLabel.current}\n </span>\n <div className=\"uifw-quantity-types-container\">\n <div className=\"left-panel\">\n <Listbox\n id=\"uifw-quantity-types-list\"\n className=\"uifw-quantity-types\"\n onListboxValueChange={onListboxValueChange}\n selectedValue={activeQuantityType}\n >\n {[...IModelApp.quantityFormatter.quantityTypesRegistry.keys()].map(\n (key) => {\n const entry =\n IModelApp.quantityFormatter.quantityTypesRegistry.get(key)!;\n const description = entry.description;\n const label = entry.label;\n return (\n <ListboxItem\n key={entry.key}\n className=\"quantity-type-list-entry\"\n value={entry.key}\n >\n <span\n className=\"map-source-list-entry-name\"\n title={description}\n >\n {label}\n </span>\n </ListboxItem>\n );\n }\n )}\n </Listbox>\n </div>\n <div className=\"right-panel\">\n {activeFormatterSpec && (\n <>\n <div className=\"uifw-quantity-types-right-top\">\n <div className=\"uifw-quantity-types-right-top-sample\">\n <FormatSample\n formatSpec={activeFormatterSpec}\n initialMagnitude={1234.56}\n hideLabels\n />\n </div>\n </div>\n <div className=\"uifw-quantity-types-formats\">\n <QuantityFormatPanel\n onFormatChange={handleOnFormatChanged}\n quantityType={activeQuantityType}\n />\n </div>\n <div className=\"components-button-panel\">\n <Button\n styleType=\"cta\"\n onClick={handleOnFormatSave}\n disabled={!saveEnabled}\n >\n {setButtonLabel.current}\n </Button>\n <Button\n styleType=\"default\"\n onClick={handleOnFormatReset}\n disabled={!clearEnabled}\n >\n {clearButtonLabel.current}\n </Button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SaveFormatModalDialog({\n formatProps,\n quantityType,\n onDialogCloseArgs,\n onDialogClose,\n}: {\n formatProps: FormatProps;\n quantityType: QuantityTypeKey;\n onDialogCloseArgs?: any;\n onDialogClose: (args?: any) => void;\n}) {\n const [isOpen, setIsOpen] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n UiFramework.dialogs.modal.close();\n onDialogClose && onDialogClose(onDialogCloseArgs);\n }, [onDialogClose, onDialogCloseArgs]);\n\n const handleOK = React.useCallback(() => {\n void IModelApp.quantityFormatter.setOverrideFormat(\n quantityType,\n formatProps\n );\n handleClose();\n }, [formatProps, handleClose, quantityType]);\n\n const handleCancel = React.useCallback(() => {\n handleClose();\n }, [handleClose]);\n\n return (\n <Dialog\n title={\"Save Format Changes\"}\n opened={isOpen}\n resizable={false}\n movable={false}\n modal={true}\n buttonCluster={[\n { type: DialogButtonType.Yes, onClick: handleOK },\n { type: DialogButtonType.No, onClick: handleCancel },\n ]}\n onEscape={handleCancel}\n onClose={handleCancel}\n onOutsideClick={handleCancel}\n minHeight={150}\n maxHeight={400}\n maxWidth={400}\n minWidth={200}\n >\n <div className=\"modal-dialog2\">\n Do you want to save changes to format before changing to another type?\n </div>\n </Dialog>\n );\n}\n"]}
@@ -127,9 +127,10 @@ class StagePanelDef extends WidgetHost_1.WidgetHost {
127
127
  }
128
128
  /** Panel state. Defaults to PanelState.Open. */
129
129
  get panelState() {
130
+ var _a;
130
131
  // istanbul ignore else
131
132
  if (UiFramework_1.UiFramework.frontstages.activeFrontstageDef) {
132
- const [state] = UiFramework_1.UiFramework.frontstages.activeFrontstageDef?.getPanelCurrentState(this);
133
+ const [state] = (_a = UiFramework_1.UiFramework.frontstages.activeFrontstageDef) === null || _a === void 0 ? void 0 : _a.getPanelCurrentState(this);
133
134
  return state;
134
135
  }
135
136
  // istanbul ignore next
@@ -181,6 +182,7 @@ class StagePanelDef extends WidgetHost_1.WidgetHost {
181
182
  }
182
183
  /** @internal */
183
184
  initializeFromConfig(config, location) {
185
+ var _a;
184
186
  this._location = location;
185
187
  if (!config)
186
188
  return;
@@ -192,12 +194,12 @@ class StagePanelDef extends WidgetHost_1.WidgetHost {
192
194
  this._defaultState = config.defaultState;
193
195
  this._panelState = config.defaultState;
194
196
  }
195
- this._resizable = config.resizable ?? true;
197
+ this._resizable = (_a = config.resizable) !== null && _a !== void 0 ? _a : true;
196
198
  if (config.pinned !== undefined)
197
199
  this._pinned = config.pinned;
198
200
  const sections = config.sections;
199
- this._start.initializeFromConfig(sections?.start);
200
- this._end.initializeFromConfig(sections?.end);
201
+ this._start.initializeFromConfig(sections === null || sections === void 0 ? void 0 : sections.start);
202
+ this._end.initializeFromConfig(sections === null || sections === void 0 ? void 0 : sections.end);
201
203
  }
202
204
  /** Gets the list of Widgets. */
203
205
  get widgetDefs() {
@@ -229,7 +231,7 @@ exports.StagePanelDef = StagePanelDef;
229
231
  class StagePanelSectionDef extends WidgetHost_1.WidgetHost {
230
232
  /** @internal */
231
233
  initializeFromConfig(config) {
232
- config?.forEach((widgetConfig) => {
234
+ config === null || config === void 0 ? void 0 : config.forEach((widgetConfig) => {
233
235
  const widgetDef = WidgetDef_1.WidgetDef.create(widgetConfig);
234
236
  this.addWidgetDef(widgetDef);
235
237
  });
@@ -1 +1 @@
1
- {"version":3,"file":"StagePanelDef.js","sourceRoot":"","sources":["../../../../src/appui-react/stagepanels/StagePanelDef.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAGH,iCAA4B;AAC5B,0DAAgD;AAEhD,oDAAiD;AACjD,sDAAmD;AAMnD,6DAA0D;AAC1D,2DAAwD;AACxD,uFAAoF;AACpF,gDAA6C;AAE7C;;GAEG;AACH,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,mDAAG,CAAA;IACH,+DAAS,CAAA;IACT,qDAAI,CAAA;IACJ,uDAAK,CAAA;AACP,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AAUD;;GAEG;AACH,MAAa,sBAAuB,SAAQ,wBAAmC;CAAG;AAAlF,wDAAkF;AAQlF,gBAAgB;AAChB,MAAa,qBAAsB,SAAQ,wBAAkC;CAAG;AAAhF,sDAAgF;AAUhF;;;GAGG;AACH,MAAa,aAAc,SAAQ,uBAAU;IAa3C;OACG;IACH;QACE,KAAK,EAAE,CAAC;QAfF,gBAAW,GAAG,eAAe,CAAC,IAAI,CAAC;QACnC,kBAAa,GAAG,eAAe,CAAC,IAAI,CAAC;QAKrC,eAAU,GAAG,IAAI,CAAC;QAClB,YAAO,GAAG,IAAI,CAAC;QACf,cAAS,GAAuB,uCAAkB,CAAC,IAAI,CAAC;QACxD,WAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACpC,SAAI,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAM1C,CAAC;IAED,gBAAgB;IAChB,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,gBAAgB;IAChB,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,gCAAgC;IAChC,IAAW,IAAI;QACb,uBAAuB;QACvB,IAAI,yBAAW,CAAC,WAAW,CAAC,mBAAmB,EAAE;YAC/C,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GACb,yBAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;SACb;QACD,uBAAuB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAW,IAAI,CAAC,IAAI;QAClB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QAEhC,uBAAuB;QACvB,MAAM,aAAa,GAAG,yBAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAClE,uBAAuB;QACvB,IAAI,aAAa,IAAI,aAAa,CAAC,aAAa,EAAE;YAChD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,aAAa,CAAC,aAAa,GAAG,IAAA,oBAAY,EACxC,aAAa,CAAC,aAAa,EAC3B,IAAI,EACJ,IAAI,CACL,CAAC;YACF,MAAM,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;gBAAE,OAAO;YACtC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;SACnB;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,qDAAyB,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACrD,QAAQ,EAAE,IAAI;YACd,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,gDAAgD;IAChD,uBAAuB;IACvB,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,6CAA6C;IAC7C,IAAW,MAAM;QACf,IAAI,yBAAW,CAAC,WAAW,CAAC,mBAAmB,EAAE;YAC/C,MAAM,KAAK,GACT,yBAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;QACD,uBAAuB;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAW,MAAM,CAAC,MAAe;QAC/B,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO;QAEpC,uBAAuB;QACvB,MAAM,aAAa,GAAG,yBAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAClE,uBAAuB;QACvB,IAAI,aAAa,IAAI,aAAa,CAAC,aAAa,EAAE;YAChD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,aAAa,CAAC,aAAa,GAAG,IAAA,sBAAc,EAC1C,aAAa,CAAC,aAAa,EAC3B,IAAI,EACJ,MAAM,CACP,CAAC;SACH;QACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,yBAAW,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC;YACrD,QAAQ,EAAE,IAAI;YACd,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,gDAAgD;IAChD,IAAW,UAAU;QACnB,uBAAuB;QACvB,IAAI,yBAAW,CAAC,WAAW,CAAC,mBAAmB,EAAE;YAC/C,MAAM,CAAC,KAAK,CAAC,GACX,yBAAW,CAAC,WAAW,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC1E,OAAO,KAAK,CAAC;SACd;QACD,uBAAuB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAW,UAAU,CAAC,UAA2B;QAC/C,IAAI,UAAU,KAAK,IAAI,CAAC,WAAW;YAAE,OAAO;QAC5C,MAAM,aAAa,GAAG,yBAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAClE,IAAI,aAAa,IAAI,aAAa,CAAC,aAAa,EAAE;YAChD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,aAAa,CAAC,aAAa,GAAG,IAAA,eAAO,EACnC,aAAa,CAAC,aAAa,EAC3B,CAAC,QAAQ,EAAE,EAAE;gBACX,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpC,QAAQ,UAAU,EAAE;oBAClB,KAAK,eAAe,CAAC,SAAS,CAAC,CAAC;wBAC9B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;wBACvB,MAAM;qBACP;oBACD,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC;wBACzB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;wBACxB,MAAM;qBACP;oBACD,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC;wBACxB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;wBACvB,MAAM;qBACP;iBACF;YACH,CAAC,CACF,CAAC;SACH;QACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,yBAAW,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC;YACpD,QAAQ,EAAE,IAAI;YACd,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,gBAAgB;IAChB,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,MAAM,CAAC,MAAwB,EAAE,QAA4B;QACzE,MAAM,GAAG,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,GAAG,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gBAAgB;IACT,oBAAoB,CACzB,MAAoC,EACpC,QAA4B;QAE5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;SACxC;QACD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAE9D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,gCAAgC;IAChC,IAAoB,UAAU;QAC5B,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;YACzB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;SACxB,CAAC;IACJ,CAAC;IAED,gBAAgB;IACA,uBAAuB,CACrC,OAAe,EACf,UAAkB,EAClB,QAA4B,EAC5B,QAAuC,EACvC,kBAA+B;QAE/B,IAAI,CAAC,MAAM,CAAC,uBAAuB,CACjC,OAAO,EACP,UAAU,EACV,QAAQ,EACR,qCAAiB,CAAC,KAAK,EACvB,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAC/B,OAAO,EACP,UAAU,EACV,QAAQ,EACR,qCAAiB,CAAC,GAAG,EACrB,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED,gBAAgB;IACT,kBAAkB,CAAC,OAA0B;QAClD,QAAQ,OAAO,EAAE;YACf,KAAK,qCAAiB,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;YACD,KAAK,qCAAiB,CAAC,GAAG,CAAC,CAAC;gBAC1B,OAAO,IAAI,CAAC,IAAI,CAAC;aAClB;SACF;IACH,CAAC;CACF;AA9OD,sCA8OC;AAED,gBAAgB;AAChB,MAAa,oBAAqB,SAAQ,uBAAU;IAClD,gBAAgB;IACT,oBAAoB,CAAC,MAA2C;QACrE,MAAM,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,qBAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AARD,oDAQC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CAAC,QAA4B;IACtD,QAAQ,QAAQ,EAAE;QAChB,KAAK,uCAAkB,CAAC,MAAM;YAC5B,OAAO,QAAQ,CAAC;QAClB,KAAK,uCAAkB,CAAC,IAAI;YAC1B,OAAO,MAAM,CAAC;QAChB,KAAK,uCAAkB,CAAC,KAAK;YAC3B,OAAO,OAAO,CAAC;QACjB,KAAK,uCAAkB,CAAC,GAAG;YACzB,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;AAXD,kCAWC;AAED,gBAAgB;AACH,QAAA,YAAY,GAIJ,IAAA,eAAO,EAC1B,CACE,QAA8B,EAC9B,IAAe,EACf,IAAwB,EACxB,EAAE;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI;QACR,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC,CACF,CAAC;AAEF,gBAAgB;AACH,QAAA,cAAc,GAIN,IAAA,eAAO,EAC1B,CAAC,QAA8B,EAAE,IAAe,EAAE,MAAe,EAAE,EAAE;IACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACxB,CAAC,CACF,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 Frontstage\n */\n\nimport type { Draft } from \"immer\";\nimport produce from \"immer\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { NineZoneState, PanelSide } from \"@itwin/appui-layout-react\";\nimport { WidgetDef } from \"../widgets/WidgetDef\";\nimport { WidgetHost } from \"../widgets/WidgetHost\";\nimport type {\n StagePanelConfig,\n StagePanelMaxSizeSpec,\n StagePanelSectionConfig,\n} from \"./StagePanelConfig\";\nimport { StagePanelLocation } from \"./StagePanelLocation\";\nimport { StagePanelSection } from \"./StagePanelSection\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager\";\nimport { UiFramework } from \"../UiFramework\";\n\n/** Enum for StagePanel state.\n * @public\n */\nexport enum StagePanelState {\n Off,\n Minimized,\n Open,\n Popup,\n}\n\n/** Panel state changed event args interface.\n * @public\n */\nexport interface PanelStateChangedEventArgs {\n panelDef: StagePanelDef;\n panelState: StagePanelState;\n}\n\n/** Panel state changed event class.\n * @beta\n */\nexport class PanelStateChangedEvent extends UiEvent<PanelStateChangedEventArgs> {}\n\n/** @internal */\nexport interface PanelSizeChangedEventArgs {\n panelDef: StagePanelDef;\n size: number | undefined;\n}\n\n/** @internal */\nexport class PanelSizeChangedEvent extends UiEvent<PanelSizeChangedEventArgs> {}\n\n/** Panel pinned changed event args interface.\n * @public\n */\nexport interface PanelPinnedChangedEventArgs {\n panelDef: StagePanelDef;\n pinned: boolean;\n}\n\n/**\n * A StagePanelDef represents each Stage Panel within a Frontstage.\n * @public\n */\nexport class StagePanelDef extends WidgetHost {\n private _panelState = StagePanelState.Open;\n private _defaultState = StagePanelState.Open;\n private _maxSizeSpec: StagePanelMaxSizeSpec | undefined;\n private _minSize: number | undefined;\n private _size: number | undefined;\n private _defaultSize: number | undefined;\n private _resizable = true;\n private _pinned = true;\n private _location: StagePanelLocation = StagePanelLocation.Left;\n private _start = new StagePanelSectionDef();\n private _end = new StagePanelSectionDef();\n\n /** Constructor for PanelDef.\n */\n constructor() {\n super();\n }\n\n /** @internal */\n public get maxSizeSpec() {\n return this._maxSizeSpec;\n }\n\n /** @internal */\n public get minSize() {\n return this._minSize;\n }\n\n /** Default size of the panel */\n public get size() {\n // istanbul ignore else\n if (UiFramework.frontstages.activeFrontstageDef) {\n const [_, size] =\n UiFramework.frontstages.activeFrontstageDef.getPanelCurrentState(this);\n return size;\n }\n // istanbul ignore next\n return this._defaultSize;\n }\n\n public set size(size) {\n if (this._size === size) return;\n\n // istanbul ignore else\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n // istanbul ignore else\n if (frontstageDef && frontstageDef.nineZoneState) {\n const side = toPanelSide(this.location);\n frontstageDef.nineZoneState = setPanelSize(\n frontstageDef.nineZoneState,\n side,\n size\n );\n const panel = frontstageDef.nineZoneState.panels[side];\n if (panel.size === this._size) return;\n size = panel.size;\n }\n this._size = size;\n InternalFrontstageManager.onPanelSizeChangedEvent.emit({\n panelDef: this,\n size,\n });\n }\n\n /** Indicates whether the panel is resizable. */\n // istanbul ignore next\n public get resizable(): boolean {\n return this._resizable;\n }\n\n /** Indicates whether the panel is pinned. */\n public get pinned(): boolean {\n if (UiFramework.frontstages.activeFrontstageDef) {\n const state =\n UiFramework.frontstages.activeFrontstageDef.getPanelCurrentState(this);\n return state[2];\n }\n // istanbul ignore next\n return false;\n }\n\n public set pinned(pinned: boolean) {\n if (this._pinned === pinned) return;\n\n // istanbul ignore else\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n // istanbul ignore else\n if (frontstageDef && frontstageDef.nineZoneState) {\n const side = toPanelSide(this.location);\n frontstageDef.nineZoneState = setPanelPinned(\n frontstageDef.nineZoneState,\n side,\n pinned\n );\n }\n this._pinned = pinned;\n UiFramework.frontstages.onPanelPinnedChangedEvent.emit({\n panelDef: this,\n pinned,\n });\n }\n\n /** Location of panel. */\n public get location(): StagePanelLocation {\n return this._location;\n }\n\n /** Panel state. Defaults to PanelState.Open. */\n public get panelState() {\n // istanbul ignore else\n if (UiFramework.frontstages.activeFrontstageDef) {\n const [state] =\n UiFramework.frontstages.activeFrontstageDef?.getPanelCurrentState(this);\n return state;\n }\n // istanbul ignore next\n return this.defaultState;\n }\n\n public set panelState(panelState: StagePanelState) {\n if (panelState === this._panelState) return;\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (frontstageDef && frontstageDef.nineZoneState) {\n const side = toPanelSide(this.location);\n frontstageDef.nineZoneState = produce(\n frontstageDef.nineZoneState,\n (nineZone) => {\n const panel = nineZone.panels[side];\n switch (panelState) {\n case StagePanelState.Minimized: {\n panel.collapsed = true;\n break;\n }\n case StagePanelState.Open: {\n panel.collapsed = false;\n break;\n }\n case StagePanelState.Off: {\n panel.collapsed = true;\n break;\n }\n }\n }\n );\n }\n this._panelState = panelState;\n UiFramework.frontstages.onPanelStateChangedEvent.emit({\n panelDef: this,\n panelState,\n });\n }\n\n /** @internal */\n public get defaultState() {\n return this._defaultState;\n }\n\n /** @internal */\n public get defaultSize() {\n return this._defaultSize;\n }\n\n /** @internal */\n public static create(config: StagePanelConfig, location: StagePanelLocation) {\n const def = new StagePanelDef();\n def.initializeFromConfig(config, location);\n return def;\n }\n\n /** @internal */\n public initializeFromConfig(\n config: StagePanelConfig | undefined,\n location: StagePanelLocation\n ): void {\n this._location = location;\n\n if (!config) return;\n this._size = config.size;\n this._defaultSize = config.size;\n this._maxSizeSpec = config.maxSize;\n this._minSize = config.minSize;\n if (config.defaultState !== undefined) {\n this._defaultState = config.defaultState;\n this._panelState = config.defaultState;\n }\n this._resizable = config.resizable ?? true;\n if (config.pinned !== undefined) this._pinned = config.pinned;\n\n const sections = config.sections;\n this._start.initializeFromConfig(sections?.start);\n this._end.initializeFromConfig(sections?.end);\n }\n\n /** Gets the list of Widgets. */\n public override get widgetDefs(): ReadonlyArray<WidgetDef> {\n return [\n ...super.widgetDefs,\n ...this._start.widgetDefs,\n ...this._end.widgetDefs,\n ];\n }\n\n /** @internal */\n public override updateDynamicWidgetDefs(\n stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n _section: StagePanelSection | undefined,\n allStageWidgetDefs: WidgetDef[]\n ) {\n this._start.updateDynamicWidgetDefs(\n stageId,\n stageUsage,\n location,\n StagePanelSection.Start,\n allStageWidgetDefs\n );\n this._end.updateDynamicWidgetDefs(\n stageId,\n stageUsage,\n location,\n StagePanelSection.End,\n allStageWidgetDefs\n );\n }\n\n /** @internal */\n public getPanelSectionDef(section: StagePanelSection) {\n switch (section) {\n case StagePanelSection.Start: {\n return this._start;\n }\n case StagePanelSection.End: {\n return this._end;\n }\n }\n }\n}\n\n/** @internal */\nexport class StagePanelSectionDef extends WidgetHost {\n /** @internal */\n public initializeFromConfig(config: StagePanelSectionConfig | undefined) {\n config?.forEach((widgetConfig) => {\n const widgetDef = WidgetDef.create(widgetConfig);\n this.addWidgetDef(widgetDef);\n });\n }\n}\n\n/** @internal */\nexport function toPanelSide(location: StagePanelLocation): PanelSide {\n switch (location) {\n case StagePanelLocation.Bottom:\n return \"bottom\";\n case StagePanelLocation.Left:\n return \"left\";\n case StagePanelLocation.Right:\n return \"right\";\n case StagePanelLocation.Top:\n return \"top\";\n }\n}\n\n/** @internal */\nexport const setPanelSize: (\n nineZone: NineZoneState,\n side: PanelSide,\n size: number | undefined\n) => NineZoneState = produce(\n (\n nineZone: Draft<NineZoneState>,\n side: PanelSide,\n size: number | undefined\n ) => {\n const panel = nineZone.panels[side];\n panel.size =\n size === undefined\n ? size\n : Math.min(Math.max(size, panel.minSize), panel.maxSize);\n }\n);\n\n/** @internal */\nexport const setPanelPinned: (\n nineZone: NineZoneState,\n side: PanelSide,\n pinned: boolean\n) => NineZoneState = produce(\n (nineZone: Draft<NineZoneState>, side: PanelSide, pinned: boolean) => {\n const panel = nineZone.panels[side];\n panel.pinned = pinned;\n }\n);\n"]}
1
+ {"version":3,"file":"StagePanelDef.js","sourceRoot":"","sources":["../../../../src/appui-react/stagepanels/StagePanelDef.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 Frontstage\n */\n\nimport type { Draft } from \"immer\";\nimport produce from \"immer\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { NineZoneState, PanelSide } from \"@itwin/appui-layout-react\";\nimport { WidgetDef } from \"../widgets/WidgetDef\";\nimport { WidgetHost } from \"../widgets/WidgetHost\";\nimport type {\n StagePanelConfig,\n StagePanelMaxSizeSpec,\n StagePanelSectionConfig,\n} from \"./StagePanelConfig\";\nimport { StagePanelLocation } from \"./StagePanelLocation\";\nimport { StagePanelSection } from \"./StagePanelSection\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager\";\nimport { UiFramework } from \"../UiFramework\";\n\n/** Enum for StagePanel state.\n * @public\n */\nexport enum StagePanelState {\n Off,\n Minimized,\n Open,\n Popup,\n}\n\n/** Panel state changed event args interface.\n * @public\n */\nexport interface PanelStateChangedEventArgs {\n panelDef: StagePanelDef;\n panelState: StagePanelState;\n}\n\n/** Panel state changed event class.\n * @beta\n */\nexport class PanelStateChangedEvent extends UiEvent<PanelStateChangedEventArgs> {}\n\n/** @internal */\nexport interface PanelSizeChangedEventArgs {\n panelDef: StagePanelDef;\n size: number | undefined;\n}\n\n/** @internal */\nexport class PanelSizeChangedEvent extends UiEvent<PanelSizeChangedEventArgs> {}\n\n/** Panel pinned changed event args interface.\n * @public\n */\nexport interface PanelPinnedChangedEventArgs {\n panelDef: StagePanelDef;\n pinned: boolean;\n}\n\n/**\n * A StagePanelDef represents each Stage Panel within a Frontstage.\n * @public\n */\nexport class StagePanelDef extends WidgetHost {\n private _panelState = StagePanelState.Open;\n private _defaultState = StagePanelState.Open;\n private _maxSizeSpec: StagePanelMaxSizeSpec | undefined;\n private _minSize: number | undefined;\n private _size: number | undefined;\n private _defaultSize: number | undefined;\n private _resizable = true;\n private _pinned = true;\n private _location: StagePanelLocation = StagePanelLocation.Left;\n private _start = new StagePanelSectionDef();\n private _end = new StagePanelSectionDef();\n\n /** Constructor for PanelDef.\n */\n constructor() {\n super();\n }\n\n /** @internal */\n public get maxSizeSpec() {\n return this._maxSizeSpec;\n }\n\n /** @internal */\n public get minSize() {\n return this._minSize;\n }\n\n /** Default size of the panel */\n public get size() {\n // istanbul ignore else\n if (UiFramework.frontstages.activeFrontstageDef) {\n const [_, size] =\n UiFramework.frontstages.activeFrontstageDef.getPanelCurrentState(this);\n return size;\n }\n // istanbul ignore next\n return this._defaultSize;\n }\n\n public set size(size) {\n if (this._size === size) return;\n\n // istanbul ignore else\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n // istanbul ignore else\n if (frontstageDef && frontstageDef.nineZoneState) {\n const side = toPanelSide(this.location);\n frontstageDef.nineZoneState = setPanelSize(\n frontstageDef.nineZoneState,\n side,\n size\n );\n const panel = frontstageDef.nineZoneState.panels[side];\n if (panel.size === this._size) return;\n size = panel.size;\n }\n this._size = size;\n InternalFrontstageManager.onPanelSizeChangedEvent.emit({\n panelDef: this,\n size,\n });\n }\n\n /** Indicates whether the panel is resizable. */\n // istanbul ignore next\n public get resizable(): boolean {\n return this._resizable;\n }\n\n /** Indicates whether the panel is pinned. */\n public get pinned(): boolean {\n if (UiFramework.frontstages.activeFrontstageDef) {\n const state =\n UiFramework.frontstages.activeFrontstageDef.getPanelCurrentState(this);\n return state[2];\n }\n // istanbul ignore next\n return false;\n }\n\n public set pinned(pinned: boolean) {\n if (this._pinned === pinned) return;\n\n // istanbul ignore else\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n // istanbul ignore else\n if (frontstageDef && frontstageDef.nineZoneState) {\n const side = toPanelSide(this.location);\n frontstageDef.nineZoneState = setPanelPinned(\n frontstageDef.nineZoneState,\n side,\n pinned\n );\n }\n this._pinned = pinned;\n UiFramework.frontstages.onPanelPinnedChangedEvent.emit({\n panelDef: this,\n pinned,\n });\n }\n\n /** Location of panel. */\n public get location(): StagePanelLocation {\n return this._location;\n }\n\n /** Panel state. Defaults to PanelState.Open. */\n public get panelState() {\n // istanbul ignore else\n if (UiFramework.frontstages.activeFrontstageDef) {\n const [state] =\n UiFramework.frontstages.activeFrontstageDef?.getPanelCurrentState(this);\n return state;\n }\n // istanbul ignore next\n return this.defaultState;\n }\n\n public set panelState(panelState: StagePanelState) {\n if (panelState === this._panelState) return;\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (frontstageDef && frontstageDef.nineZoneState) {\n const side = toPanelSide(this.location);\n frontstageDef.nineZoneState = produce(\n frontstageDef.nineZoneState,\n (nineZone) => {\n const panel = nineZone.panels[side];\n switch (panelState) {\n case StagePanelState.Minimized: {\n panel.collapsed = true;\n break;\n }\n case StagePanelState.Open: {\n panel.collapsed = false;\n break;\n }\n case StagePanelState.Off: {\n panel.collapsed = true;\n break;\n }\n }\n }\n );\n }\n this._panelState = panelState;\n UiFramework.frontstages.onPanelStateChangedEvent.emit({\n panelDef: this,\n panelState,\n });\n }\n\n /** @internal */\n public get defaultState() {\n return this._defaultState;\n }\n\n /** @internal */\n public get defaultSize() {\n return this._defaultSize;\n }\n\n /** @internal */\n public static create(config: StagePanelConfig, location: StagePanelLocation) {\n const def = new StagePanelDef();\n def.initializeFromConfig(config, location);\n return def;\n }\n\n /** @internal */\n public initializeFromConfig(\n config: StagePanelConfig | undefined,\n location: StagePanelLocation\n ): void {\n this._location = location;\n\n if (!config) return;\n this._size = config.size;\n this._defaultSize = config.size;\n this._maxSizeSpec = config.maxSize;\n this._minSize = config.minSize;\n if (config.defaultState !== undefined) {\n this._defaultState = config.defaultState;\n this._panelState = config.defaultState;\n }\n this._resizable = config.resizable ?? true;\n if (config.pinned !== undefined) this._pinned = config.pinned;\n\n const sections = config.sections;\n this._start.initializeFromConfig(sections?.start);\n this._end.initializeFromConfig(sections?.end);\n }\n\n /** Gets the list of Widgets. */\n public override get widgetDefs(): ReadonlyArray<WidgetDef> {\n return [\n ...super.widgetDefs,\n ...this._start.widgetDefs,\n ...this._end.widgetDefs,\n ];\n }\n\n /** @internal */\n public override updateDynamicWidgetDefs(\n stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n _section: StagePanelSection | undefined,\n allStageWidgetDefs: WidgetDef[]\n ) {\n this._start.updateDynamicWidgetDefs(\n stageId,\n stageUsage,\n location,\n StagePanelSection.Start,\n allStageWidgetDefs\n );\n this._end.updateDynamicWidgetDefs(\n stageId,\n stageUsage,\n location,\n StagePanelSection.End,\n allStageWidgetDefs\n );\n }\n\n /** @internal */\n public getPanelSectionDef(section: StagePanelSection) {\n switch (section) {\n case StagePanelSection.Start: {\n return this._start;\n }\n case StagePanelSection.End: {\n return this._end;\n }\n }\n }\n}\n\n/** @internal */\nexport class StagePanelSectionDef extends WidgetHost {\n /** @internal */\n public initializeFromConfig(config: StagePanelSectionConfig | undefined) {\n config?.forEach((widgetConfig) => {\n const widgetDef = WidgetDef.create(widgetConfig);\n this.addWidgetDef(widgetDef);\n });\n }\n}\n\n/** @internal */\nexport function toPanelSide(location: StagePanelLocation): PanelSide {\n switch (location) {\n case StagePanelLocation.Bottom:\n return \"bottom\";\n case StagePanelLocation.Left:\n return \"left\";\n case StagePanelLocation.Right:\n return \"right\";\n case StagePanelLocation.Top:\n return \"top\";\n }\n}\n\n/** @internal */\nexport const setPanelSize: (\n nineZone: NineZoneState,\n side: PanelSide,\n size: number | undefined\n) => NineZoneState = produce(\n (\n nineZone: Draft<NineZoneState>,\n side: PanelSide,\n size: number | undefined\n ) => {\n const panel = nineZone.panels[side];\n panel.size =\n size === undefined\n ? size\n : Math.min(Math.max(size, panel.minSize), panel.maxSize);\n }\n);\n\n/** @internal */\nexport const setPanelPinned: (\n nineZone: NineZoneState,\n side: PanelSide,\n pinned: boolean\n) => NineZoneState = produce(\n (nineZone: Draft<NineZoneState>, side: PanelSide, pinned: boolean) => {\n const panel = nineZone.panels[side];\n panel.pinned = pinned;\n }\n);\n"]}
@@ -17,8 +17,9 @@ function StatusBarIndicator(props) {
17
17
  const hasClickAction = !!props.onClick || !!props.popup;
18
18
  const [isOpen, setIsOpen] = React.useState(!!props.defaultIsOpen);
19
19
  const handleOnIndicatorClick = () => {
20
+ var _a;
20
21
  setIsOpen(!isOpen);
21
- props.onClick?.();
22
+ (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props);
22
23
  };
23
24
  const target = React.useRef(null);
24
25
  return (React.createElement(React.Fragment, null,
@@ -1 +1 @@
1
- {"version":3,"file":"Indicator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/Indicator.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAE/B,2CAAwC;AAkBxC;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClE,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,OAAO,CACL;QACE,oBAAC,qBAAS,CAAC,KAAK,IACd,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,IAE3D,KAAK,CAAC,QAAQ,CACC;QACjB,KAAK,CAAC,KAAK,IAAI,CACd,oBAAC,qBAAS,CAAC,KAAK,IACd,MAAM,EAAE,MAAM,CAAC,OAAO,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,MAAM,EAAE,MAAM,IAEb,KAAK,CAAC,KAAK,CACI,CACnB,CACA,CACJ,CAAC;AACJ,CAAC;AA9BD,gDA8BC","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 StatusBar\n */\n\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { StatusBar } from \"./StatusBar\";\n\n/** Properties of [[StatusBarIndicator]] component.\n * @beta\n */\nexport interface StatusBarIndicatorProps extends CommonProps {\n /** Indicator content. */\n children?: React.ReactNode;\n /** Content to display in a popup when indicator is clicked. */\n popup?: React.ReactNode;\n /** Function called when indicator is clicked. */\n onClick?: () => void;\n /** Default state of an indicator popup. */\n defaultIsOpen?: boolean;\n /** Title of an indicator. */\n title?: string;\n}\n\n/** General-purpose [[StatusBar]] indicator.\n * @beta\n */\nexport function StatusBarIndicator(props: StatusBarIndicatorProps) {\n const hasClickAction = !!props.onClick || !!props.popup;\n const [isOpen, setIsOpen] = React.useState(!!props.defaultIsOpen);\n const handleOnIndicatorClick = () => {\n setIsOpen(!isOpen);\n props.onClick?.();\n };\n const target = React.useRef<HTMLDivElement>(null);\n return (\n <>\n <StatusBar.Field\n ref={target}\n className={props.className}\n title={props.title}\n style={props.style}\n onClick={hasClickAction ? handleOnIndicatorClick : undefined}\n >\n {props.children}\n </StatusBar.Field>\n {props.popup && (\n <StatusBar.Popup\n target={target.current}\n onClose={() => setIsOpen(false)}\n isOpen={isOpen}\n >\n {props.popup}\n </StatusBar.Popup>\n )}\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"Indicator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/Indicator.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAE/B,2CAAwC;AAkBxC;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClE,MAAM,sBAAsB,GAAG,GAAG,EAAE;;QAClC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;QACnB,MAAA,KAAK,CAAC,OAAO,qDAAI,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,OAAO,CACL;QACE,oBAAC,qBAAS,CAAC,KAAK,IACd,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,IAE3D,KAAK,CAAC,QAAQ,CACC;QACjB,KAAK,CAAC,KAAK,IAAI,CACd,oBAAC,qBAAS,CAAC,KAAK,IACd,MAAM,EAAE,MAAM,CAAC,OAAO,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,MAAM,EAAE,MAAM,IAEb,KAAK,CAAC,KAAK,CACI,CACnB,CACA,CACJ,CAAC;AACJ,CAAC;AA9BD,gDA8BC","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 StatusBar\n */\n\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { StatusBar } from \"./StatusBar\";\n\n/** Properties of [[StatusBarIndicator]] component.\n * @beta\n */\nexport interface StatusBarIndicatorProps extends CommonProps {\n /** Indicator content. */\n children?: React.ReactNode;\n /** Content to display in a popup when indicator is clicked. */\n popup?: React.ReactNode;\n /** Function called when indicator is clicked. */\n onClick?: () => void;\n /** Default state of an indicator popup. */\n defaultIsOpen?: boolean;\n /** Title of an indicator. */\n title?: string;\n}\n\n/** General-purpose [[StatusBar]] indicator.\n * @beta\n */\nexport function StatusBarIndicator(props: StatusBarIndicatorProps) {\n const hasClickAction = !!props.onClick || !!props.popup;\n const [isOpen, setIsOpen] = React.useState(!!props.defaultIsOpen);\n const handleOnIndicatorClick = () => {\n setIsOpen(!isOpen);\n props.onClick?.();\n };\n const target = React.useRef<HTMLDivElement>(null);\n return (\n <>\n <StatusBar.Field\n ref={target}\n className={props.className}\n title={props.title}\n style={props.style}\n onClick={hasClickAction ? handleOnIndicatorClick : undefined}\n >\n {props.children}\n </StatusBar.Field>\n {props.popup && (\n <StatusBar.Popup\n target={target.current}\n onClose={() => setIsOpen(false)}\n isOpen={isOpen}\n >\n {props.popup}\n </StatusBar.Popup>\n )}\n </>\n );\n}\n"]}
@@ -77,9 +77,11 @@ class StatusBar extends React.Component {
77
77
  };
78
78
  }
79
79
  render() {
80
- return (React.createElement(SafeAreaContext_1.SafeAreaContext.Consumer, null, (safeAreaInsets) => (React.createElement(appui_layout_react_1.Footer, { className: this.props.className, messages: React.createElement(ActivityMessage_1.ActivityMessageRenderer, null), onMouseEnter: UiFramework_1.UiFramework.visibility.handleWidgetMouseEnter, safeAreaInsets: (0, SafeAreaHelpers_1.toLayoutSafeAreaInsets)(safeAreaInsets), style: this.props.style },
81
- this.props.widgetControl?.getReactNode?.() ?? null,
82
- this.props.children))));
80
+ return (React.createElement(SafeAreaContext_1.SafeAreaContext.Consumer, null, (safeAreaInsets) => {
81
+ var _a, _b, _c;
82
+ return (React.createElement(appui_layout_react_1.Footer, { className: this.props.className, messages: React.createElement(ActivityMessage_1.ActivityMessageRenderer, null), onMouseEnter: UiFramework_1.UiFramework.visibility.handleWidgetMouseEnter, safeAreaInsets: (0, SafeAreaHelpers_1.toLayoutSafeAreaInsets)(safeAreaInsets), style: this.props.style }, (_c = (_b = (_a = this.props.widgetControl) === null || _a === void 0 ? void 0 : _a.getReactNode) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : null,
83
+ this.props.children));
84
+ }));
83
85
  }
84
86
  componentDidMount() {
85
87
  MessageManager_1.MessageManager.onMessageAddedEvent.addListener(this._handleMessageAddedEvent);
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBar.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 StatusBar\n */\n\nimport \"./StatusBar.scss\";\nimport * as React from \"react\";\nimport type { CommonDivProps, CommonProps } from \"@itwin/core-react\";\nimport { Div } from \"@itwin/core-react\";\nimport { Footer } from \"@itwin/appui-layout-react\";\nimport type {\n ActivityMessageEventArgs,\n MessageAddedEventArgs,\n} from \"../messages/MessageManager\";\nimport { MessageManager } from \"../messages/MessageManager\";\nimport { SafeAreaContext } from \"../safearea/SafeAreaContext\";\nimport type { StatusBarWidgetControl } from \"./StatusBarWidgetControl\";\nimport { toLayoutSafeAreaInsets } from \"../safearea/SafeAreaHelpers\";\nimport { ActivityMessageRenderer } from \"../messages/ActivityMessage\";\nimport { UiFramework } from \"../UiFramework\";\nimport { StatusBarField } from \"./Field\";\nimport { StatusBarPopup } from \"./Popup\";\n\n// cspell:ignore safearea\n\n/** State for the [[StatusBar]] React component\n * @internal\n */\ninterface StatusBarState {\n activityMessageInfo: ActivityMessageEventArgs | undefined;\n}\n\n/** Properties for the [[StatusBar]] React component\n * @public\n */\nexport interface StatusBarProps extends CommonProps {\n children?: React.ReactNode;\n widgetControl?: StatusBarWidgetControl;\n}\n\n/** Message type for the [[StatusBar]] React component\n * @internal\n */\ninterface StatusBarMessage {\n close: () => void;\n id: string;\n}\n\n/** Status Bar React component.\n * @public\n */\nexport class StatusBar extends React.Component<StatusBarProps, StatusBarState> {\n private messages: StatusBarMessage[] = [];\n\n /** @internal */\n constructor(props: StatusBarProps) {\n super(props);\n\n this.state = {\n activityMessageInfo: undefined,\n };\n }\n\n public override render(): React.ReactNode {\n return (\n <SafeAreaContext.Consumer>\n {(safeAreaInsets) => (\n <Footer\n className={this.props.className}\n messages={<ActivityMessageRenderer />}\n onMouseEnter={UiFramework.visibility.handleWidgetMouseEnter}\n safeAreaInsets={toLayoutSafeAreaInsets(safeAreaInsets)}\n style={this.props.style}\n >\n {this.props.widgetControl?.getReactNode?.() ?? null}\n {this.props.children}\n </Footer>\n )}\n </SafeAreaContext.Consumer>\n );\n }\n\n public override componentDidMount() {\n MessageManager.onMessageAddedEvent.addListener(\n this._handleMessageAddedEvent\n );\n MessageManager.onActivityMessageUpdatedEvent.addListener(\n this._handleActivityMessageUpdatedEvent\n );\n MessageManager.onActivityMessageCancelledEvent.addListener(\n this._handleActivityMessageCancelledEvent\n );\n MessageManager.onMessagesUpdatedEvent.addListener(\n this._handleMessagesUpdatedEvent\n );\n\n MessageManager.updateMessages();\n }\n\n public override componentWillUnmount() {\n MessageManager.onMessageAddedEvent.removeListener(\n this._handleMessageAddedEvent\n );\n MessageManager.onActivityMessageUpdatedEvent.removeListener(\n this._handleActivityMessageUpdatedEvent\n );\n MessageManager.onActivityMessageCancelledEvent.removeListener(\n this._handleActivityMessageCancelledEvent\n );\n MessageManager.onMessagesUpdatedEvent.removeListener(\n this._handleMessagesUpdatedEvent\n );\n }\n\n private _handleMessageAddedEvent = (_args: MessageAddedEventArgs) => {\n this._updateMessages();\n const messagesToAdd = MessageManager.activeMessageManager.messages.filter(\n (msg) => !this.messages.find((m) => m.id === msg.id)\n );\n messagesToAdd.forEach((msg) => {\n const displayedMessage = MessageManager.displayMessage(\n msg.messageDetails,\n { onRemove: () => this._closeMessage(msg.id) }\n );\n if (!!displayedMessage)\n this.messages.push({ close: displayedMessage.close, id: msg.id });\n });\n };\n\n private _updateMessages = () => {\n const updatedMessages = [...this.messages];\n this.messages.forEach((m) => {\n if (\n !MessageManager.activeMessageManager.messages.some(\n (msg) => m.id === msg.id\n )\n ) {\n m.close();\n const index = updatedMessages.findIndex((msg) => msg.id === m.id);\n updatedMessages.splice(index, 1);\n }\n });\n this.messages = updatedMessages;\n };\n\n /** Respond to clearing the message list */\n private _handleMessagesUpdatedEvent = () => {\n this._updateMessages();\n };\n\n /**\n * Sets state of the status bar to updated values reflecting activity progress.\n * @param args New values to set for ActivityMessage\n */\n private _handleActivityMessageUpdatedEvent = (\n args: ActivityMessageEventArgs\n ) => {\n this.setState({\n activityMessageInfo: args,\n });\n };\n\n /**\n * Hides ActivityMessage after cancellation\n */\n private _handleActivityMessageCancelledEvent = () => {\n this.setState({\n activityMessageInfo: undefined,\n });\n };\n\n private _closeMessage = (id: string) => {\n MessageManager.activeMessageManager.remove(id);\n MessageManager.updateMessages();\n };\n}\n\n/** StatusBar With Space Between Items React functional component\n * @public\n */\nexport function StatusBarSpaceBetween(props: CommonDivProps) {\n const { className, ...divProps } = props;\n return (\n <Div\n {...divProps}\n mainClassName={className ? className : \"uifw-statusbar-space-between\"}\n />\n );\n}\n\n/** StatusBar Left Section React functional component\n * @public\n */\nexport function StatusBarLeftSection(props: CommonDivProps) {\n const { className, ...divProps } = props;\n return (\n <Div\n {...divProps}\n mainClassName={className ? className : \"uifw-statusbar-left\"}\n />\n );\n}\n\n/** StatusBar Center Section React functional component\n * @public\n */\nexport function StatusBarCenterSection(props: CommonDivProps) {\n const { className, ...divProps } = props;\n return (\n <Div\n {...divProps}\n mainClassName={className ? className : \"uifw-statusbar-center\"}\n />\n );\n}\n\n/** StatusBar Right Section React functional component\n * @public\n */\nexport function StatusBarRightSection(props: CommonDivProps) {\n const { className, ...divProps } = props;\n return (\n <Div\n {...divProps}\n mainClassName={className ? className : \"uifw-statusbar-right\"}\n />\n );\n}\n\n/** Components used in a [[StatusBar]].\n * @public\n */\nexport namespace StatusBar {\n /** Field of a [[StatusBar]].\n * @beta\n */\n export const Field = StatusBarField;\n\n /** Popup of a [[StatusBar]].\n * @beta\n */\n export const Popup = StatusBarPopup;\n}\n"]}
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBar.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 StatusBar\n */\n\nimport \"./StatusBar.scss\";\nimport * as React from \"react\";\nimport type { CommonDivProps, CommonProps } from \"@itwin/core-react\";\nimport { Div } from \"@itwin/core-react\";\nimport { Footer } from \"@itwin/appui-layout-react\";\nimport type {\n ActivityMessageEventArgs,\n MessageAddedEventArgs,\n} from \"../messages/MessageManager\";\nimport { MessageManager } from \"../messages/MessageManager\";\nimport { SafeAreaContext } from \"../safearea/SafeAreaContext\";\nimport type { StatusBarWidgetControl } from \"./StatusBarWidgetControl\";\nimport { toLayoutSafeAreaInsets } from \"../safearea/SafeAreaHelpers\";\nimport { ActivityMessageRenderer } from \"../messages/ActivityMessage\";\nimport { UiFramework } from \"../UiFramework\";\nimport { StatusBarField } from \"./Field\";\nimport { StatusBarPopup } from \"./Popup\";\n\n// cspell:ignore safearea\n\n/** State for the [[StatusBar]] React component\n * @internal\n */\ninterface StatusBarState {\n activityMessageInfo: ActivityMessageEventArgs | undefined;\n}\n\n/** Properties for the [[StatusBar]] React component\n * @public\n */\nexport interface StatusBarProps extends CommonProps {\n children?: React.ReactNode;\n widgetControl?: StatusBarWidgetControl;\n}\n\n/** Message type for the [[StatusBar]] React component\n * @internal\n */\ninterface StatusBarMessage {\n close: () => void;\n id: string;\n}\n\n/** Status Bar React component.\n * @public\n */\nexport class StatusBar extends React.Component<StatusBarProps, StatusBarState> {\n private messages: StatusBarMessage[] = [];\n\n /** @internal */\n constructor(props: StatusBarProps) {\n super(props);\n\n this.state = {\n activityMessageInfo: undefined,\n };\n }\n\n public override render(): React.ReactNode {\n return (\n <SafeAreaContext.Consumer>\n {(safeAreaInsets) => (\n <Footer\n className={this.props.className}\n messages={<ActivityMessageRenderer />}\n onMouseEnter={UiFramework.visibility.handleWidgetMouseEnter}\n safeAreaInsets={toLayoutSafeAreaInsets(safeAreaInsets)}\n style={this.props.style}\n >\n {this.props.widgetControl?.getReactNode?.() ?? null}\n {this.props.children}\n </Footer>\n )}\n </SafeAreaContext.Consumer>\n );\n }\n\n public override componentDidMount() {\n MessageManager.onMessageAddedEvent.addListener(\n this._handleMessageAddedEvent\n );\n MessageManager.onActivityMessageUpdatedEvent.addListener(\n this._handleActivityMessageUpdatedEvent\n );\n MessageManager.onActivityMessageCancelledEvent.addListener(\n this._handleActivityMessageCancelledEvent\n );\n MessageManager.onMessagesUpdatedEvent.addListener(\n this._handleMessagesUpdatedEvent\n );\n\n MessageManager.updateMessages();\n }\n\n public override componentWillUnmount() {\n MessageManager.onMessageAddedEvent.removeListener(\n this._handleMessageAddedEvent\n );\n MessageManager.onActivityMessageUpdatedEvent.removeListener(\n this._handleActivityMessageUpdatedEvent\n );\n MessageManager.onActivityMessageCancelledEvent.removeListener(\n this._handleActivityMessageCancelledEvent\n );\n MessageManager.onMessagesUpdatedEvent.removeListener(\n this._handleMessagesUpdatedEvent\n );\n }\n\n private _handleMessageAddedEvent = (_args: MessageAddedEventArgs) => {\n this._updateMessages();\n const messagesToAdd = MessageManager.activeMessageManager.messages.filter(\n (msg) => !this.messages.find((m) => m.id === msg.id)\n );\n messagesToAdd.forEach((msg) => {\n const displayedMessage = MessageManager.displayMessage(\n msg.messageDetails,\n { onRemove: () => this._closeMessage(msg.id) }\n );\n if (!!displayedMessage)\n this.messages.push({ close: displayedMessage.close, id: msg.id });\n });\n };\n\n private _updateMessages = () => {\n const updatedMessages = [...this.messages];\n this.messages.forEach((m) => {\n if (\n !MessageManager.activeMessageManager.messages.some(\n (msg) => m.id === msg.id\n )\n ) {\n m.close();\n const index = updatedMessages.findIndex((msg) => msg.id === m.id);\n updatedMessages.splice(index, 1);\n }\n });\n this.messages = updatedMessages;\n };\n\n /** Respond to clearing the message list */\n private _handleMessagesUpdatedEvent = () => {\n this._updateMessages();\n };\n\n /**\n * Sets state of the status bar to updated values reflecting activity progress.\n * @param args New values to set for ActivityMessage\n */\n private _handleActivityMessageUpdatedEvent = (\n args: ActivityMessageEventArgs\n ) => {\n this.setState({\n activityMessageInfo: args,\n });\n };\n\n /**\n * Hides ActivityMessage after cancellation\n */\n private _handleActivityMessageCancelledEvent = () => {\n this.setState({\n activityMessageInfo: undefined,\n });\n };\n\n private _closeMessage = (id: string) => {\n MessageManager.activeMessageManager.remove(id);\n MessageManager.updateMessages();\n };\n}\n\n/** StatusBar With Space Between Items React functional component\n * @public\n */\nexport function StatusBarSpaceBetween(props: CommonDivProps) {\n const { className, ...divProps } = props;\n return (\n <Div\n {...divProps}\n mainClassName={className ? className : \"uifw-statusbar-space-between\"}\n />\n );\n}\n\n/** StatusBar Left Section React functional component\n * @public\n */\nexport function StatusBarLeftSection(props: CommonDivProps) {\n const { className, ...divProps } = props;\n return (\n <Div\n {...divProps}\n mainClassName={className ? className : \"uifw-statusbar-left\"}\n />\n );\n}\n\n/** StatusBar Center Section React functional component\n * @public\n */\nexport function StatusBarCenterSection(props: CommonDivProps) {\n const { className, ...divProps } = props;\n return (\n <Div\n {...divProps}\n mainClassName={className ? className : \"uifw-statusbar-center\"}\n />\n );\n}\n\n/** StatusBar Right Section React functional component\n * @public\n */\nexport function StatusBarRightSection(props: CommonDivProps) {\n const { className, ...divProps } = props;\n return (\n <Div\n {...divProps}\n mainClassName={className ? className : \"uifw-statusbar-right\"}\n />\n );\n}\n\n/** Components used in a [[StatusBar]].\n * @public\n */\nexport namespace StatusBar {\n /** Field of a [[StatusBar]].\n * @beta\n */\n export const Field = StatusBarField;\n\n /** Popup of a [[StatusBar]].\n * @beta\n */\n export const Popup = StatusBarPopup;\n}\n"]}
@@ -314,7 +314,7 @@ class ToolAssistanceField extends React.Component {
314
314
  ? "uifw-toolassistance-svg"
315
315
  : "uifw-toolassistance-icon-large";
316
316
  image = (React.createElement("div", { className: className },
317
- React.createElement(core_react_1.Icon, { iconSpec: svgSource ?? instruction.image })));
317
+ React.createElement(core_react_1.Icon, { iconSpec: svgSource !== null && svgSource !== void 0 ? svgSource : instruction.image })));
318
318
  }
319
319
  }
320
320
  else if (instruction.image === core_frontend_1.ToolAssistanceImage.Keyboard) {
@@ -1 +1 @@
1
- {"version":3,"file":"ToolAssistanceField.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.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 Notification\n */\n\nimport \"./ToolAssistanceField.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n ToolAssistanceInstruction,\n ToolAssistanceInstructions,\n ToolAssistanceKeyboardInfo,\n ToolAssistanceSection,\n} from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n} from \"@itwin/core-frontend\";\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\nimport type {\n CommonProps,\n UiStateStorage,\n UiStateStorageResult,\n} from \"@itwin/core-react\";\nimport {\n FillCentered,\n Icon,\n LocalStateStorage,\n UiCore,\n UiStateEntry,\n UiStateStorageStatus,\n} from \"@itwin/core-react\";\nimport {\n FooterPopup,\n ToolAssistanceInstruction as NZ_ToolAssistanceInstruction,\n ToolAssistance,\n ToolAssistanceDialog,\n ToolAssistanceItem,\n ToolAssistanceSeparator,\n} from \"@itwin/appui-layout-react\";\nimport { Tabs, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport { CursorPrompt } from \"../../cursor/cursorprompt/CursorPrompt\";\nimport type { ToolIconChangedEventArgs } from \"../../framework/FrameworkFrontstages\";\nimport type { ToolAssistanceChangedEventArgs } from \"../../messages/MessageManager\";\nimport { MessageManager } from \"../../messages/MessageManager\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UiStateStorageContext } from \"../../uistate/useUiStateStorage\";\n\nimport acceptPointIcon from \"./accept-point.svg\";\nimport cursorClickIcon from \"./cursor-click.svg\";\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg\";\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg\";\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg\";\nimport twoTouchPinchIcon from \"./gesture-pinch.svg\";\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg\";\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg\";\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg\";\nimport clickLeftIcon from \"./mouse-click-left.svg\";\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg\";\nimport clickRightIcon from \"./mouse-click-right.svg\";\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg\";\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg\";\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg\";\nimport touchCursorTapIcon from \"./touch-cursor-point.svg\";\nimport { StatusBarDialog } from \"../../statusbar/dialog/Dialog\";\nimport { SvgClose, SvgPin } from \"@itwin/itwinui-icons-react\";\n\n// cSpell:ignore cursorprompt\n\n/** Properties of [[ToolAssistanceField]] component.\n * @public\n */\nexport interface ToolAssistanceFieldProps extends CommonProps {\n /** Indicates whether to include promptAtCursor Checkbox. Defaults to true. */\n includePromptAtCursor: boolean;\n /** Optional parameter for persistent UI settings. Defaults to UiStateStorageContext.\n */\n uiStateStorage?: UiStateStorage;\n /** Cursor Prompt Timeout period. Defaults to 5000. */\n cursorPromptTimeout: number;\n /** Fade Out the Cursor Prompt when closed. */\n fadeOutCursorPrompt: boolean;\n /** Indicates whether to show promptAtCursor by default. Defaults to false. */\n defaultPromptAtCursor: boolean;\n}\n\n/** Default properties of [[ToolAssistanceField]] component.\n * @internal\n */\nexport type ToolAssistanceFieldDefaultProps = Pick<\n ToolAssistanceFieldProps,\n | \"includePromptAtCursor\"\n | \"uiStateStorage\"\n | \"cursorPromptTimeout\"\n | \"fadeOutCursorPrompt\"\n | \"defaultPromptAtCursor\"\n>;\n\n/** @internal */\ninterface ToolAssistanceFieldState {\n instructions: ToolAssistanceInstructions | undefined;\n toolIconSpec: string;\n showPromptAtCursor: boolean;\n includeMouseInstructions: boolean;\n includeTouchInstructions: boolean;\n showMouseTouchTabs: boolean;\n showMouseInstructions: boolean;\n showTouchInstructions: boolean;\n mouseTouchTabIndex: number;\n isPinned: boolean;\n isOpen: boolean;\n}\n\n/** Tool Assistance Field React component.\n * @public\n */\nexport class ToolAssistanceField extends React.Component<\n ToolAssistanceFieldProps,\n ToolAssistanceFieldState\n> {\n /** @internal */\n public static override contextType = UiStateStorageContext;\n /** @internal */\n public declare context: React.ContextType<typeof UiStateStorageContext>;\n\n private static _toolAssistanceKey = \"ToolAssistance\";\n private static _showPromptAtCursorKey = \"showPromptAtCursor\";\n private static _mouseTouchTabIndexKey = \"mouseTouchTabIndex\";\n private _showPromptAtCursorSetting: UiStateEntry<boolean>;\n private _mouseTouchTabIndexSetting: UiStateEntry<number>;\n private _target: HTMLElement | null = null;\n private _indicator = React.createRef<HTMLDivElement>();\n private _cursorPrompt: CursorPrompt;\n private _isMounted = false;\n private _uiSettingsStorage: UiStateStorage;\n\n /** @internal */\n public static readonly defaultProps: ToolAssistanceFieldDefaultProps = {\n includePromptAtCursor: true,\n cursorPromptTimeout: 5000,\n fadeOutCursorPrompt: true,\n defaultPromptAtCursor: false,\n };\n\n /** @internal */\n constructor(p: ToolAssistanceFieldProps) {\n super(p);\n\n const mobile = UiFramework.isMobile();\n\n this.state = {\n instructions: undefined,\n toolIconSpec: \"\",\n showPromptAtCursor: p.defaultPromptAtCursor,\n includeMouseInstructions: !mobile,\n includeTouchInstructions: true,\n showMouseTouchTabs: false,\n showMouseInstructions: false,\n showTouchInstructions: false,\n mouseTouchTabIndex: 0,\n isPinned: false,\n isOpen: false,\n };\n\n this._uiSettingsStorage = new LocalStateStorage();\n this._cursorPrompt = new CursorPrompt(\n this.props.cursorPromptTimeout,\n this.props.fadeOutCursorPrompt\n );\n this._showPromptAtCursorSetting = new UiStateEntry(\n ToolAssistanceField._toolAssistanceKey,\n ToolAssistanceField._showPromptAtCursorKey,\n () => this.state.showPromptAtCursor\n );\n this._mouseTouchTabIndexSetting = new UiStateEntry(\n ToolAssistanceField._toolAssistanceKey,\n ToolAssistanceField._mouseTouchTabIndexKey,\n () => this.state.mouseTouchTabIndex\n );\n }\n\n /** @internal */\n public override async componentDidMount() {\n this._isMounted = true;\n MessageManager.onToolAssistanceChangedEvent.addListener(\n this._handleToolAssistanceChangedEvent\n );\n UiFramework.frontstages.onToolIconChangedEvent.addListener(\n this._handleToolIconChangedEvent\n );\n\n // istanbul ignore else\n if (this.props.uiStateStorage)\n this._uiSettingsStorage = this.props.uiStateStorage;\n else if (this.context) this._uiSettingsStorage = this.context;\n\n await this.restoreSettings();\n }\n\n /** @internal */\n public override componentWillUnmount() {\n this._isMounted = false;\n MessageManager.onToolAssistanceChangedEvent.removeListener(\n this._handleToolAssistanceChangedEvent\n );\n UiFramework.frontstages.onToolIconChangedEvent.removeListener(\n this._handleToolIconChangedEvent\n );\n }\n\n private async restoreSettings() {\n let getShowPromptAtCursor: Promise<UiStateStorageResult> | undefined;\n // istanbul ignore else\n if (this.props.includePromptAtCursor) {\n getShowPromptAtCursor = this._showPromptAtCursorSetting.getSetting(\n this._uiSettingsStorage\n );\n }\n const getMouseTouchTabIndex = this._mouseTouchTabIndexSetting.getSetting(\n this._uiSettingsStorage\n );\n const [showPromptAtCursorResult, mouseTouchTabIndexResult] =\n await Promise.all([getShowPromptAtCursor, getMouseTouchTabIndex]);\n\n // istanbul ignore else\n if (\n showPromptAtCursorResult !== undefined &&\n showPromptAtCursorResult.status === UiStateStorageStatus.Success\n ) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ showPromptAtCursor: showPromptAtCursorResult.setting });\n }\n\n // istanbul ignore else\n if (mouseTouchTabIndexResult.status === UiStateStorageStatus.Success) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ mouseTouchTabIndex: mouseTouchTabIndexResult.setting });\n }\n }\n\n private _handleToolAssistanceChangedEvent = (\n args: ToolAssistanceChangedEventArgs\n ): void => {\n let showMouseTouchTabs = false;\n let showMouseInstructions = false;\n let showTouchInstructions = false;\n\n if (args.instructions && args.instructions.sections) {\n const hasMouseInstructions = args.instructions.sections.some(\n (section: ToolAssistanceSection) => {\n return section.instructions.some(\n (instruction: ToolAssistanceInstruction) =>\n this._isMouseInstruction(instruction)\n );\n }\n );\n const hasTouchInstructions = args.instructions.sections.some(\n (section: ToolAssistanceSection) => {\n return section.instructions.some(\n (instruction: ToolAssistanceInstruction) =>\n this._isTouchInstruction(instruction)\n );\n }\n );\n\n if (\n this.state.includeMouseInstructions &&\n this.state.includeTouchInstructions &&\n hasMouseInstructions &&\n hasTouchInstructions\n ) {\n showMouseTouchTabs = true;\n showMouseInstructions = this.state.mouseTouchTabIndex === 0;\n showTouchInstructions = this.state.mouseTouchTabIndex === 1;\n } else {\n if (this.state.includeMouseInstructions && hasMouseInstructions)\n showMouseInstructions = true;\n else if (this.state.includeTouchInstructions && hasTouchInstructions)\n showTouchInstructions = true;\n }\n }\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n instructions: args.instructions,\n showMouseTouchTabs,\n showMouseInstructions,\n showTouchInstructions,\n },\n () => {\n this._showCursorPrompt();\n }\n );\n };\n\n private _isBothInstruction = (instruction: ToolAssistanceInstruction) => {\n return (\n instruction.inputMethod === undefined ||\n instruction.inputMethod === ToolAssistanceInputMethod.Both\n );\n };\n\n private _isMouseInstruction = (instruction: ToolAssistanceInstruction) =>\n instruction.inputMethod === ToolAssistanceInputMethod.Mouse;\n\n private _isTouchInstruction = (instruction: ToolAssistanceInstruction) =>\n instruction.inputMethod === ToolAssistanceInputMethod.Touch;\n\n private _handleToolIconChangedEvent = (\n args: ToolIconChangedEventArgs\n ): void => {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ toolIconSpec: args.iconSpec }, () => {\n this._showCursorPrompt();\n });\n };\n\n private _showCursorPrompt() {\n if (this.state.showPromptAtCursor && this.state.instructions)\n this._cursorPrompt.display(\n this.state.toolIconSpec,\n this.state.instructions.mainInstruction\n );\n }\n\n private _sectionHasDisplayableInstructions(\n section: ToolAssistanceSection\n ): boolean {\n const displayableInstructions = this._getDisplayableInstructions(section);\n return displayableInstructions.length > 0;\n }\n\n private _getDisplayableInstructions(\n section: ToolAssistanceSection\n ): ToolAssistanceInstruction[] {\n const displayableInstructions = section.instructions.filter(\n (instruction: ToolAssistanceInstruction) => {\n return (\n this._isBothInstruction(instruction) ||\n (this.state.showMouseInstructions &&\n this._isMouseInstruction(instruction)) ||\n (this.state.showTouchInstructions &&\n this._isTouchInstruction(instruction))\n );\n }\n );\n return displayableInstructions;\n }\n\n private _handleMouseTouchTab = async (index: number) => {\n const showMouseInstructions = index === 0;\n const showTouchInstructions = index === 1;\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n mouseTouchTabIndex: index,\n showMouseInstructions,\n showTouchInstructions,\n },\n async () => {\n await this._mouseTouchTabIndexSetting.saveSetting(\n this._uiSettingsStorage\n );\n }\n );\n };\n\n /** @internal */\n public override render(): React.ReactNode {\n const { instructions } = this.state;\n const dialogTitle = IModelApp.toolAdmin.activeTool\n ? /* istanbul ignore next */ IModelApp.toolAdmin.activeTool.flyover\n : UiFramework.translate(\"toolAssistance.title\");\n const mouseLabel = UiFramework.translate(\"toolAssistance.mouse\");\n const touchLabel = UiFramework.translate(\"toolAssistance.touch\");\n let prompt = \"\";\n let tooltip = \"\";\n let toolIcon: React.ReactNode;\n let dialogContent: React.ReactNode;\n\n if (instructions) {\n prompt = instructions.mainInstruction.text;\n toolIcon = <Icon iconSpec={this.state.toolIconSpec} />;\n\n let displayableSections: ToolAssistanceSection[] | undefined;\n if (instructions.sections) {\n displayableSections = instructions.sections.filter(\n (section: ToolAssistanceSection) =>\n this._sectionHasDisplayableInstructions(section)\n );\n }\n\n dialogContent = (\n <div>\n {this.state.showMouseTouchTabs && (\n <Tabs\n orientation=\"horizontal\"\n tabsClassName=\"uifw-toolAssistance-tabs\"\n labels={[mouseLabel, touchLabel]}\n activeIndex={this.state.mouseTouchTabIndex}\n onTabSelected={this._handleMouseTouchTab}\n />\n )}\n\n <div className=\"uifw-toolAssistance-content\">\n <NZ_ToolAssistanceInstruction\n key=\"main\"\n image={ToolAssistanceField.getInstructionImage(\n instructions.mainInstruction\n )}\n text={instructions.mainInstruction.text}\n isNew={instructions.mainInstruction.isNew}\n />\n\n {displayableSections &&\n displayableSections.map(\n (section: ToolAssistanceSection, index1: number) => {\n return (\n <React.Fragment key={index1.toString()}>\n <ToolAssistanceSeparator key={index1.toString()}>\n {section.label}\n </ToolAssistanceSeparator>\n {this._getDisplayableInstructions(section).map(\n (\n instruction: ToolAssistanceInstruction,\n index2: number\n ) => {\n return (\n <NZ_ToolAssistanceInstruction\n key={`${index1.toString()}-${index2.toString()}`}\n image={ToolAssistanceField.getInstructionImage(\n instruction\n )}\n text={instruction.text}\n isNew={instruction.isNew}\n />\n );\n }\n )}\n </React.Fragment>\n );\n }\n )}\n\n {this.props.includePromptAtCursor && (\n <>\n <ToolAssistanceSeparator key=\"prompt-sep\" />\n <ToolAssistanceItem key=\"prompt-item\">\n <ToggleSwitch\n label={UiFramework.translate(\n \"toolAssistance.promptAtCursor\"\n )}\n labelPosition=\"right\"\n checked={this.state.showPromptAtCursor}\n onChange={this._onPromptAtCursorChange}\n />\n </ToolAssistanceItem>\n </>\n )}\n </div>\n </div>\n );\n }\n\n if (prompt) tooltip = prompt;\n\n // istanbul ignore next\n if (IModelApp.toolAdmin.activeTool)\n tooltip = `${IModelApp.toolAdmin.activeTool.flyover} > ${tooltip} `;\n\n if (tooltip) {\n const lineBreak = \"\\u000d\\u000a\";\n tooltip = tooltip + lineBreak;\n }\n\n tooltip += UiFramework.translate(\"toolAssistance.moreInfo\");\n\n return (\n <>\n <div style={{ height: \"100%\" }} ref={this._handleTargetRef}>\n <ToolAssistance\n icons={<>{toolIcon}</>}\n indicatorRef={this._indicator}\n className={classnames(\n \"uifw-statusFields-toolassistance\",\n this.props.className\n )}\n style={this.props.style}\n onClick={this._handleToolAssistanceIndicatorClick}\n title={tooltip}\n >\n {prompt}\n </ToolAssistance>\n </div>\n <FooterPopup\n isOpen={this.state.isOpen}\n onClose={this._handleClose}\n onOutsideClick={this._handleOutsideClick}\n target={this._target}\n isPinned={this.state.isPinned}\n >\n <ToolAssistanceDialog\n buttons={\n <>\n {!this.state.isPinned && (\n <StatusBarDialog.TitleBarButton\n onClick={this._handlePinButtonClick}\n title={UiFramework.translate(\"toolAssistance.pin\")}\n >\n <Icon iconSpec={<SvgPin />} />\n </StatusBarDialog.TitleBarButton>\n )}\n {this.state.isPinned && (\n <StatusBarDialog.TitleBarButton\n onClick={this._handleCloseButtonClick}\n title={UiCore.translate(\"dialog.close\")}\n >\n <Icon iconSpec={<SvgClose />} />\n </StatusBarDialog.TitleBarButton>\n )}\n </>\n }\n title={dialogTitle}\n >\n {dialogContent}\n </ToolAssistanceDialog>\n </FooterPopup>\n </>\n );\n }\n\n private _handleTargetRef = (target: HTMLElement | null) => {\n this._target = target;\n };\n\n private _onPromptAtCursorChange = async (\n e: React.ChangeEvent<HTMLInputElement>\n ) => {\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n showPromptAtCursor: e.target.checked,\n },\n async () => {\n await this._showPromptAtCursorSetting.saveSetting(\n this._uiSettingsStorage\n );\n }\n );\n };\n\n private _handleClose = () => {\n this.setIsOpen(false);\n };\n\n private _handleOutsideClick = (e: MouseEvent) => {\n // istanbul ignore if\n if (\n !this._indicator.current ||\n !(e.target instanceof Node) ||\n this._indicator.current.contains(e.target)\n )\n return;\n\n this._handleClose();\n };\n\n private _handleToolAssistanceIndicatorClick = () => {\n this.setIsOpen(!this.state.isOpen);\n };\n\n private _handlePinButtonClick = () => {\n // istanbul ignore else\n if (this._isMounted) this.setState({ isPinned: true });\n };\n\n private _handleCloseButtonClick = () => {\n this._handleClose();\n };\n\n private setIsOpen(isOpen: boolean) {\n let newState = {\n isOpen,\n };\n if (!isOpen && this.state.isPinned && this._isMounted) {\n newState = { ...newState, ...{ isPinned: false } };\n }\n this.setState(newState);\n }\n\n /** @internal */\n public static getInstructionImage(\n instruction: ToolAssistanceInstruction\n ): React.ReactNode {\n let image: React.ReactNode;\n\n if (\n (typeof instruction.image === \"string\" ||\n instruction.image !== ToolAssistanceImage.Keyboard) &&\n instruction.keyboardInfo\n ) {\n if (\n instruction.keyboardInfo.keys.length === 1 &&\n !instruction.keyboardInfo.bottomKeys\n ) {\n const key = instruction.keyboardInfo.keys[0];\n const rightImage =\n typeof instruction.image === \"string\" ? (\n <div className=\"uifw-toolassistance-icon-medium\">\n <Icon iconSpec={instruction.image} />\n </div>\n ) : (\n this.getInstructionSvgImage(instruction, true)\n );\n\n image = (\n <FillCentered>\n {ToolAssistanceField.getKeyNode(\n key,\n 0,\n \"uifw-toolassistance-key-modifier\"\n )}\n {rightImage}\n </FillCentered>\n );\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `getInstructionImage: Invalid keyboardInfo provided with image`\n );\n }\n } else if (typeof instruction.image === \"string\") {\n if (instruction.image.length > 0) {\n const svgSource = IconSpecUtilities.getWebComponentSource(\n instruction.image\n );\n const className =\n svgSource !== undefined\n ? \"uifw-toolassistance-svg\"\n : \"uifw-toolassistance-icon-large\";\n image = (\n <div className={className}>\n <Icon iconSpec={svgSource ?? instruction.image} />\n </div>\n );\n }\n } else if (instruction.image === ToolAssistanceImage.Keyboard) {\n if (instruction.keyboardInfo) {\n image = ToolAssistanceField.getInstructionKeyboardImage(\n instruction.keyboardInfo\n );\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `getInstructionImage: ToolAssistanceImage.Keyboard specified but no keyboardInfo provided`\n );\n }\n } else {\n image = this.getInstructionSvgImage(instruction, false);\n }\n\n return image;\n }\n\n private static getInstructionSvgImage(\n instruction: ToolAssistanceInstruction,\n mediumSize: boolean\n ): React.ReactNode {\n let image: React.ReactNode;\n let className = mediumSize\n ? \"uifw-toolassistance-svg-medium\"\n : \"uifw-toolassistance-svg\";\n\n // istanbul ignore else\n if (\n typeof instruction.image !== \"string\" &&\n instruction.image !== ToolAssistanceImage.Keyboard\n ) {\n const toolAssistanceImage: ToolAssistanceImage = instruction.image;\n let svgImage = \"\";\n\n switch (toolAssistanceImage) {\n case ToolAssistanceImage.AcceptPoint:\n svgImage = acceptPointIcon;\n break;\n case ToolAssistanceImage.CursorClick:\n svgImage = cursorClickIcon;\n break;\n case ToolAssistanceImage.LeftClick:\n svgImage = clickLeftIcon;\n break;\n case ToolAssistanceImage.RightClick:\n svgImage = clickRightIcon;\n break;\n case ToolAssistanceImage.MouseWheel:\n svgImage = mouseWheelClickIcon;\n break;\n case ToolAssistanceImage.LeftClickDrag:\n svgImage = clickLeftDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.RightClickDrag:\n svgImage = clickRightDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.MouseWheelClickDrag:\n svgImage = clickMouseWheelDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.OneTouchTap:\n svgImage = oneTouchTapIcon;\n break;\n case ToolAssistanceImage.OneTouchDoubleTap:\n svgImage = oneTouchDoubleTapIcon;\n break;\n case ToolAssistanceImage.OneTouchDrag:\n svgImage = oneTouchDragIcon;\n break;\n case ToolAssistanceImage.TwoTouchTap:\n svgImage = twoTouchTapIcon;\n break;\n case ToolAssistanceImage.TwoTouchDrag:\n svgImage = twoTouchDragIcon;\n break;\n case ToolAssistanceImage.TwoTouchPinch:\n svgImage = twoTouchPinchIcon;\n break;\n case ToolAssistanceImage.TouchCursorTap:\n svgImage = touchCursorTapIcon;\n break;\n case ToolAssistanceImage.TouchCursorDrag:\n svgImage = touchCursorDragIcon;\n className = mediumSize\n ? /* istanbul ignore next */ \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n }\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgImage);\n image = (\n <div className={className}>\n {svgImage && (\n // istanbul ignore next\n <Icon iconSpec={iconSpec} />\n )}\n </div>\n );\n }\n\n return image;\n }\n\n private static getInstructionKeyboardImage(\n keyboardInfo: ToolAssistanceKeyboardInfo\n ): React.ReactNode {\n let image: React.ReactNode;\n\n if (keyboardInfo.bottomKeys !== undefined) {\n image = (\n <div className=\"uifw-toolassistance-key-group\">\n <span className=\"row1\">\n {keyboardInfo.keys.map((key: string, index1: number) => {\n return ToolAssistanceField.getKeyNode(\n key,\n index1,\n \"uifw-toolassistance-key-small\"\n );\n })}\n </span>\n <br />\n <span className=\"row2\">\n {keyboardInfo.bottomKeys.map((key: string, index2: number) => {\n return ToolAssistanceField.getKeyNode(\n key,\n index2,\n \"uifw-toolassistance-key-small\"\n );\n })}\n </span>\n </div>\n );\n } else if (keyboardInfo.keys.length === 2) {\n image = (\n <FillCentered>\n {keyboardInfo.keys.map((key: string, index3: number) => {\n let className = \"uifw-toolassistance-key-medium\";\n if (key.length > 1) className = \"uifw-toolassistance-key-modifier\";\n return ToolAssistanceField.getKeyNode(key, index3, className);\n })}\n </FillCentered>\n );\n } else if (keyboardInfo.keys[0]) {\n if (keyboardInfo.keys[0].length > 1)\n image = ToolAssistanceField.getKeyNode(\n keyboardInfo.keys[0],\n 0,\n \"uifw-toolassistance-key-large\"\n );\n else image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0);\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `ToolAssistanceImage.Keyboard specified but ToolAssistanceKeyboardInfo not valid`\n );\n }\n\n return image;\n }\n\n private static getKeyNode(\n key: string,\n index: number,\n className?: string\n ): React.ReactNode {\n return (\n <div\n key={index.toString()}\n className={classnames(\"uifw-toolassistance-key\", className)}\n >\n <FillCentered>{key}</FillCentered>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ToolAssistanceField.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.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 Notification\n */\n\nimport \"./ToolAssistanceField.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n ToolAssistanceInstruction,\n ToolAssistanceInstructions,\n ToolAssistanceKeyboardInfo,\n ToolAssistanceSection,\n} from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n} from \"@itwin/core-frontend\";\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\nimport type {\n CommonProps,\n UiStateStorage,\n UiStateStorageResult,\n} from \"@itwin/core-react\";\nimport {\n FillCentered,\n Icon,\n LocalStateStorage,\n UiCore,\n UiStateEntry,\n UiStateStorageStatus,\n} from \"@itwin/core-react\";\nimport {\n FooterPopup,\n ToolAssistanceInstruction as NZ_ToolAssistanceInstruction,\n ToolAssistance,\n ToolAssistanceDialog,\n ToolAssistanceItem,\n ToolAssistanceSeparator,\n} from \"@itwin/appui-layout-react\";\nimport { Tabs, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport { CursorPrompt } from \"../../cursor/cursorprompt/CursorPrompt\";\nimport type { ToolIconChangedEventArgs } from \"../../framework/FrameworkFrontstages\";\nimport type { ToolAssistanceChangedEventArgs } from \"../../messages/MessageManager\";\nimport { MessageManager } from \"../../messages/MessageManager\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UiStateStorageContext } from \"../../uistate/useUiStateStorage\";\n\nimport acceptPointIcon from \"./accept-point.svg\";\nimport cursorClickIcon from \"./cursor-click.svg\";\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg\";\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg\";\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg\";\nimport twoTouchPinchIcon from \"./gesture-pinch.svg\";\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg\";\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg\";\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg\";\nimport clickLeftIcon from \"./mouse-click-left.svg\";\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg\";\nimport clickRightIcon from \"./mouse-click-right.svg\";\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg\";\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg\";\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg\";\nimport touchCursorTapIcon from \"./touch-cursor-point.svg\";\nimport { StatusBarDialog } from \"../../statusbar/dialog/Dialog\";\nimport { SvgClose, SvgPin } from \"@itwin/itwinui-icons-react\";\n\n// cSpell:ignore cursorprompt\n\n/** Properties of [[ToolAssistanceField]] component.\n * @public\n */\nexport interface ToolAssistanceFieldProps extends CommonProps {\n /** Indicates whether to include promptAtCursor Checkbox. Defaults to true. */\n includePromptAtCursor: boolean;\n /** Optional parameter for persistent UI settings. Defaults to UiStateStorageContext.\n */\n uiStateStorage?: UiStateStorage;\n /** Cursor Prompt Timeout period. Defaults to 5000. */\n cursorPromptTimeout: number;\n /** Fade Out the Cursor Prompt when closed. */\n fadeOutCursorPrompt: boolean;\n /** Indicates whether to show promptAtCursor by default. Defaults to false. */\n defaultPromptAtCursor: boolean;\n}\n\n/** Default properties of [[ToolAssistanceField]] component.\n * @internal\n */\nexport type ToolAssistanceFieldDefaultProps = Pick<\n ToolAssistanceFieldProps,\n | \"includePromptAtCursor\"\n | \"uiStateStorage\"\n | \"cursorPromptTimeout\"\n | \"fadeOutCursorPrompt\"\n | \"defaultPromptAtCursor\"\n>;\n\n/** @internal */\ninterface ToolAssistanceFieldState {\n instructions: ToolAssistanceInstructions | undefined;\n toolIconSpec: string;\n showPromptAtCursor: boolean;\n includeMouseInstructions: boolean;\n includeTouchInstructions: boolean;\n showMouseTouchTabs: boolean;\n showMouseInstructions: boolean;\n showTouchInstructions: boolean;\n mouseTouchTabIndex: number;\n isPinned: boolean;\n isOpen: boolean;\n}\n\n/** Tool Assistance Field React component.\n * @public\n */\nexport class ToolAssistanceField extends React.Component<\n ToolAssistanceFieldProps,\n ToolAssistanceFieldState\n> {\n /** @internal */\n public static override contextType = UiStateStorageContext;\n /** @internal */\n public declare context: React.ContextType<typeof UiStateStorageContext>;\n\n private static _toolAssistanceKey = \"ToolAssistance\";\n private static _showPromptAtCursorKey = \"showPromptAtCursor\";\n private static _mouseTouchTabIndexKey = \"mouseTouchTabIndex\";\n private _showPromptAtCursorSetting: UiStateEntry<boolean>;\n private _mouseTouchTabIndexSetting: UiStateEntry<number>;\n private _target: HTMLElement | null = null;\n private _indicator = React.createRef<HTMLDivElement>();\n private _cursorPrompt: CursorPrompt;\n private _isMounted = false;\n private _uiSettingsStorage: UiStateStorage;\n\n /** @internal */\n public static readonly defaultProps: ToolAssistanceFieldDefaultProps = {\n includePromptAtCursor: true,\n cursorPromptTimeout: 5000,\n fadeOutCursorPrompt: true,\n defaultPromptAtCursor: false,\n };\n\n /** @internal */\n constructor(p: ToolAssistanceFieldProps) {\n super(p);\n\n const mobile = UiFramework.isMobile();\n\n this.state = {\n instructions: undefined,\n toolIconSpec: \"\",\n showPromptAtCursor: p.defaultPromptAtCursor,\n includeMouseInstructions: !mobile,\n includeTouchInstructions: true,\n showMouseTouchTabs: false,\n showMouseInstructions: false,\n showTouchInstructions: false,\n mouseTouchTabIndex: 0,\n isPinned: false,\n isOpen: false,\n };\n\n this._uiSettingsStorage = new LocalStateStorage();\n this._cursorPrompt = new CursorPrompt(\n this.props.cursorPromptTimeout,\n this.props.fadeOutCursorPrompt\n );\n this._showPromptAtCursorSetting = new UiStateEntry(\n ToolAssistanceField._toolAssistanceKey,\n ToolAssistanceField._showPromptAtCursorKey,\n () => this.state.showPromptAtCursor\n );\n this._mouseTouchTabIndexSetting = new UiStateEntry(\n ToolAssistanceField._toolAssistanceKey,\n ToolAssistanceField._mouseTouchTabIndexKey,\n () => this.state.mouseTouchTabIndex\n );\n }\n\n /** @internal */\n public override async componentDidMount() {\n this._isMounted = true;\n MessageManager.onToolAssistanceChangedEvent.addListener(\n this._handleToolAssistanceChangedEvent\n );\n UiFramework.frontstages.onToolIconChangedEvent.addListener(\n this._handleToolIconChangedEvent\n );\n\n // istanbul ignore else\n if (this.props.uiStateStorage)\n this._uiSettingsStorage = this.props.uiStateStorage;\n else if (this.context) this._uiSettingsStorage = this.context;\n\n await this.restoreSettings();\n }\n\n /** @internal */\n public override componentWillUnmount() {\n this._isMounted = false;\n MessageManager.onToolAssistanceChangedEvent.removeListener(\n this._handleToolAssistanceChangedEvent\n );\n UiFramework.frontstages.onToolIconChangedEvent.removeListener(\n this._handleToolIconChangedEvent\n );\n }\n\n private async restoreSettings() {\n let getShowPromptAtCursor: Promise<UiStateStorageResult> | undefined;\n // istanbul ignore else\n if (this.props.includePromptAtCursor) {\n getShowPromptAtCursor = this._showPromptAtCursorSetting.getSetting(\n this._uiSettingsStorage\n );\n }\n const getMouseTouchTabIndex = this._mouseTouchTabIndexSetting.getSetting(\n this._uiSettingsStorage\n );\n const [showPromptAtCursorResult, mouseTouchTabIndexResult] =\n await Promise.all([getShowPromptAtCursor, getMouseTouchTabIndex]);\n\n // istanbul ignore else\n if (\n showPromptAtCursorResult !== undefined &&\n showPromptAtCursorResult.status === UiStateStorageStatus.Success\n ) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ showPromptAtCursor: showPromptAtCursorResult.setting });\n }\n\n // istanbul ignore else\n if (mouseTouchTabIndexResult.status === UiStateStorageStatus.Success) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ mouseTouchTabIndex: mouseTouchTabIndexResult.setting });\n }\n }\n\n private _handleToolAssistanceChangedEvent = (\n args: ToolAssistanceChangedEventArgs\n ): void => {\n let showMouseTouchTabs = false;\n let showMouseInstructions = false;\n let showTouchInstructions = false;\n\n if (args.instructions && args.instructions.sections) {\n const hasMouseInstructions = args.instructions.sections.some(\n (section: ToolAssistanceSection) => {\n return section.instructions.some(\n (instruction: ToolAssistanceInstruction) =>\n this._isMouseInstruction(instruction)\n );\n }\n );\n const hasTouchInstructions = args.instructions.sections.some(\n (section: ToolAssistanceSection) => {\n return section.instructions.some(\n (instruction: ToolAssistanceInstruction) =>\n this._isTouchInstruction(instruction)\n );\n }\n );\n\n if (\n this.state.includeMouseInstructions &&\n this.state.includeTouchInstructions &&\n hasMouseInstructions &&\n hasTouchInstructions\n ) {\n showMouseTouchTabs = true;\n showMouseInstructions = this.state.mouseTouchTabIndex === 0;\n showTouchInstructions = this.state.mouseTouchTabIndex === 1;\n } else {\n if (this.state.includeMouseInstructions && hasMouseInstructions)\n showMouseInstructions = true;\n else if (this.state.includeTouchInstructions && hasTouchInstructions)\n showTouchInstructions = true;\n }\n }\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n instructions: args.instructions,\n showMouseTouchTabs,\n showMouseInstructions,\n showTouchInstructions,\n },\n () => {\n this._showCursorPrompt();\n }\n );\n };\n\n private _isBothInstruction = (instruction: ToolAssistanceInstruction) => {\n return (\n instruction.inputMethod === undefined ||\n instruction.inputMethod === ToolAssistanceInputMethod.Both\n );\n };\n\n private _isMouseInstruction = (instruction: ToolAssistanceInstruction) =>\n instruction.inputMethod === ToolAssistanceInputMethod.Mouse;\n\n private _isTouchInstruction = (instruction: ToolAssistanceInstruction) =>\n instruction.inputMethod === ToolAssistanceInputMethod.Touch;\n\n private _handleToolIconChangedEvent = (\n args: ToolIconChangedEventArgs\n ): void => {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ toolIconSpec: args.iconSpec }, () => {\n this._showCursorPrompt();\n });\n };\n\n private _showCursorPrompt() {\n if (this.state.showPromptAtCursor && this.state.instructions)\n this._cursorPrompt.display(\n this.state.toolIconSpec,\n this.state.instructions.mainInstruction\n );\n }\n\n private _sectionHasDisplayableInstructions(\n section: ToolAssistanceSection\n ): boolean {\n const displayableInstructions = this._getDisplayableInstructions(section);\n return displayableInstructions.length > 0;\n }\n\n private _getDisplayableInstructions(\n section: ToolAssistanceSection\n ): ToolAssistanceInstruction[] {\n const displayableInstructions = section.instructions.filter(\n (instruction: ToolAssistanceInstruction) => {\n return (\n this._isBothInstruction(instruction) ||\n (this.state.showMouseInstructions &&\n this._isMouseInstruction(instruction)) ||\n (this.state.showTouchInstructions &&\n this._isTouchInstruction(instruction))\n );\n }\n );\n return displayableInstructions;\n }\n\n private _handleMouseTouchTab = async (index: number) => {\n const showMouseInstructions = index === 0;\n const showTouchInstructions = index === 1;\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n mouseTouchTabIndex: index,\n showMouseInstructions,\n showTouchInstructions,\n },\n async () => {\n await this._mouseTouchTabIndexSetting.saveSetting(\n this._uiSettingsStorage\n );\n }\n );\n };\n\n /** @internal */\n public override render(): React.ReactNode {\n const { instructions } = this.state;\n const dialogTitle = IModelApp.toolAdmin.activeTool\n ? /* istanbul ignore next */ IModelApp.toolAdmin.activeTool.flyover\n : UiFramework.translate(\"toolAssistance.title\");\n const mouseLabel = UiFramework.translate(\"toolAssistance.mouse\");\n const touchLabel = UiFramework.translate(\"toolAssistance.touch\");\n let prompt = \"\";\n let tooltip = \"\";\n let toolIcon: React.ReactNode;\n let dialogContent: React.ReactNode;\n\n if (instructions) {\n prompt = instructions.mainInstruction.text;\n toolIcon = <Icon iconSpec={this.state.toolIconSpec} />;\n\n let displayableSections: ToolAssistanceSection[] | undefined;\n if (instructions.sections) {\n displayableSections = instructions.sections.filter(\n (section: ToolAssistanceSection) =>\n this._sectionHasDisplayableInstructions(section)\n );\n }\n\n dialogContent = (\n <div>\n {this.state.showMouseTouchTabs && (\n <Tabs\n orientation=\"horizontal\"\n tabsClassName=\"uifw-toolAssistance-tabs\"\n labels={[mouseLabel, touchLabel]}\n activeIndex={this.state.mouseTouchTabIndex}\n onTabSelected={this._handleMouseTouchTab}\n />\n )}\n\n <div className=\"uifw-toolAssistance-content\">\n <NZ_ToolAssistanceInstruction\n key=\"main\"\n image={ToolAssistanceField.getInstructionImage(\n instructions.mainInstruction\n )}\n text={instructions.mainInstruction.text}\n isNew={instructions.mainInstruction.isNew}\n />\n\n {displayableSections &&\n displayableSections.map(\n (section: ToolAssistanceSection, index1: number) => {\n return (\n <React.Fragment key={index1.toString()}>\n <ToolAssistanceSeparator key={index1.toString()}>\n {section.label}\n </ToolAssistanceSeparator>\n {this._getDisplayableInstructions(section).map(\n (\n instruction: ToolAssistanceInstruction,\n index2: number\n ) => {\n return (\n <NZ_ToolAssistanceInstruction\n key={`${index1.toString()}-${index2.toString()}`}\n image={ToolAssistanceField.getInstructionImage(\n instruction\n )}\n text={instruction.text}\n isNew={instruction.isNew}\n />\n );\n }\n )}\n </React.Fragment>\n );\n }\n )}\n\n {this.props.includePromptAtCursor && (\n <>\n <ToolAssistanceSeparator key=\"prompt-sep\" />\n <ToolAssistanceItem key=\"prompt-item\">\n <ToggleSwitch\n label={UiFramework.translate(\n \"toolAssistance.promptAtCursor\"\n )}\n labelPosition=\"right\"\n checked={this.state.showPromptAtCursor}\n onChange={this._onPromptAtCursorChange}\n />\n </ToolAssistanceItem>\n </>\n )}\n </div>\n </div>\n );\n }\n\n if (prompt) tooltip = prompt;\n\n // istanbul ignore next\n if (IModelApp.toolAdmin.activeTool)\n tooltip = `${IModelApp.toolAdmin.activeTool.flyover} > ${tooltip} `;\n\n if (tooltip) {\n const lineBreak = \"\\u000d\\u000a\";\n tooltip = tooltip + lineBreak;\n }\n\n tooltip += UiFramework.translate(\"toolAssistance.moreInfo\");\n\n return (\n <>\n <div style={{ height: \"100%\" }} ref={this._handleTargetRef}>\n <ToolAssistance\n icons={<>{toolIcon}</>}\n indicatorRef={this._indicator}\n className={classnames(\n \"uifw-statusFields-toolassistance\",\n this.props.className\n )}\n style={this.props.style}\n onClick={this._handleToolAssistanceIndicatorClick}\n title={tooltip}\n >\n {prompt}\n </ToolAssistance>\n </div>\n <FooterPopup\n isOpen={this.state.isOpen}\n onClose={this._handleClose}\n onOutsideClick={this._handleOutsideClick}\n target={this._target}\n isPinned={this.state.isPinned}\n >\n <ToolAssistanceDialog\n buttons={\n <>\n {!this.state.isPinned && (\n <StatusBarDialog.TitleBarButton\n onClick={this._handlePinButtonClick}\n title={UiFramework.translate(\"toolAssistance.pin\")}\n >\n <Icon iconSpec={<SvgPin />} />\n </StatusBarDialog.TitleBarButton>\n )}\n {this.state.isPinned && (\n <StatusBarDialog.TitleBarButton\n onClick={this._handleCloseButtonClick}\n title={UiCore.translate(\"dialog.close\")}\n >\n <Icon iconSpec={<SvgClose />} />\n </StatusBarDialog.TitleBarButton>\n )}\n </>\n }\n title={dialogTitle}\n >\n {dialogContent}\n </ToolAssistanceDialog>\n </FooterPopup>\n </>\n );\n }\n\n private _handleTargetRef = (target: HTMLElement | null) => {\n this._target = target;\n };\n\n private _onPromptAtCursorChange = async (\n e: React.ChangeEvent<HTMLInputElement>\n ) => {\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n showPromptAtCursor: e.target.checked,\n },\n async () => {\n await this._showPromptAtCursorSetting.saveSetting(\n this._uiSettingsStorage\n );\n }\n );\n };\n\n private _handleClose = () => {\n this.setIsOpen(false);\n };\n\n private _handleOutsideClick = (e: MouseEvent) => {\n // istanbul ignore if\n if (\n !this._indicator.current ||\n !(e.target instanceof Node) ||\n this._indicator.current.contains(e.target)\n )\n return;\n\n this._handleClose();\n };\n\n private _handleToolAssistanceIndicatorClick = () => {\n this.setIsOpen(!this.state.isOpen);\n };\n\n private _handlePinButtonClick = () => {\n // istanbul ignore else\n if (this._isMounted) this.setState({ isPinned: true });\n };\n\n private _handleCloseButtonClick = () => {\n this._handleClose();\n };\n\n private setIsOpen(isOpen: boolean) {\n let newState = {\n isOpen,\n };\n if (!isOpen && this.state.isPinned && this._isMounted) {\n newState = { ...newState, ...{ isPinned: false } };\n }\n this.setState(newState);\n }\n\n /** @internal */\n public static getInstructionImage(\n instruction: ToolAssistanceInstruction\n ): React.ReactNode {\n let image: React.ReactNode;\n\n if (\n (typeof instruction.image === \"string\" ||\n instruction.image !== ToolAssistanceImage.Keyboard) &&\n instruction.keyboardInfo\n ) {\n if (\n instruction.keyboardInfo.keys.length === 1 &&\n !instruction.keyboardInfo.bottomKeys\n ) {\n const key = instruction.keyboardInfo.keys[0];\n const rightImage =\n typeof instruction.image === \"string\" ? (\n <div className=\"uifw-toolassistance-icon-medium\">\n <Icon iconSpec={instruction.image} />\n </div>\n ) : (\n this.getInstructionSvgImage(instruction, true)\n );\n\n image = (\n <FillCentered>\n {ToolAssistanceField.getKeyNode(\n key,\n 0,\n \"uifw-toolassistance-key-modifier\"\n )}\n {rightImage}\n </FillCentered>\n );\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `getInstructionImage: Invalid keyboardInfo provided with image`\n );\n }\n } else if (typeof instruction.image === \"string\") {\n if (instruction.image.length > 0) {\n const svgSource = IconSpecUtilities.getWebComponentSource(\n instruction.image\n );\n const className =\n svgSource !== undefined\n ? \"uifw-toolassistance-svg\"\n : \"uifw-toolassistance-icon-large\";\n image = (\n <div className={className}>\n <Icon iconSpec={svgSource ?? instruction.image} />\n </div>\n );\n }\n } else if (instruction.image === ToolAssistanceImage.Keyboard) {\n if (instruction.keyboardInfo) {\n image = ToolAssistanceField.getInstructionKeyboardImage(\n instruction.keyboardInfo\n );\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `getInstructionImage: ToolAssistanceImage.Keyboard specified but no keyboardInfo provided`\n );\n }\n } else {\n image = this.getInstructionSvgImage(instruction, false);\n }\n\n return image;\n }\n\n private static getInstructionSvgImage(\n instruction: ToolAssistanceInstruction,\n mediumSize: boolean\n ): React.ReactNode {\n let image: React.ReactNode;\n let className = mediumSize\n ? \"uifw-toolassistance-svg-medium\"\n : \"uifw-toolassistance-svg\";\n\n // istanbul ignore else\n if (\n typeof instruction.image !== \"string\" &&\n instruction.image !== ToolAssistanceImage.Keyboard\n ) {\n const toolAssistanceImage: ToolAssistanceImage = instruction.image;\n let svgImage = \"\";\n\n switch (toolAssistanceImage) {\n case ToolAssistanceImage.AcceptPoint:\n svgImage = acceptPointIcon;\n break;\n case ToolAssistanceImage.CursorClick:\n svgImage = cursorClickIcon;\n break;\n case ToolAssistanceImage.LeftClick:\n svgImage = clickLeftIcon;\n break;\n case ToolAssistanceImage.RightClick:\n svgImage = clickRightIcon;\n break;\n case ToolAssistanceImage.MouseWheel:\n svgImage = mouseWheelClickIcon;\n break;\n case ToolAssistanceImage.LeftClickDrag:\n svgImage = clickLeftDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.RightClickDrag:\n svgImage = clickRightDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.MouseWheelClickDrag:\n svgImage = clickMouseWheelDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.OneTouchTap:\n svgImage = oneTouchTapIcon;\n break;\n case ToolAssistanceImage.OneTouchDoubleTap:\n svgImage = oneTouchDoubleTapIcon;\n break;\n case ToolAssistanceImage.OneTouchDrag:\n svgImage = oneTouchDragIcon;\n break;\n case ToolAssistanceImage.TwoTouchTap:\n svgImage = twoTouchTapIcon;\n break;\n case ToolAssistanceImage.TwoTouchDrag:\n svgImage = twoTouchDragIcon;\n break;\n case ToolAssistanceImage.TwoTouchPinch:\n svgImage = twoTouchPinchIcon;\n break;\n case ToolAssistanceImage.TouchCursorTap:\n svgImage = touchCursorTapIcon;\n break;\n case ToolAssistanceImage.TouchCursorDrag:\n svgImage = touchCursorDragIcon;\n className = mediumSize\n ? /* istanbul ignore next */ \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n }\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgImage);\n image = (\n <div className={className}>\n {svgImage && (\n // istanbul ignore next\n <Icon iconSpec={iconSpec} />\n )}\n </div>\n );\n }\n\n return image;\n }\n\n private static getInstructionKeyboardImage(\n keyboardInfo: ToolAssistanceKeyboardInfo\n ): React.ReactNode {\n let image: React.ReactNode;\n\n if (keyboardInfo.bottomKeys !== undefined) {\n image = (\n <div className=\"uifw-toolassistance-key-group\">\n <span className=\"row1\">\n {keyboardInfo.keys.map((key: string, index1: number) => {\n return ToolAssistanceField.getKeyNode(\n key,\n index1,\n \"uifw-toolassistance-key-small\"\n );\n })}\n </span>\n <br />\n <span className=\"row2\">\n {keyboardInfo.bottomKeys.map((key: string, index2: number) => {\n return ToolAssistanceField.getKeyNode(\n key,\n index2,\n \"uifw-toolassistance-key-small\"\n );\n })}\n </span>\n </div>\n );\n } else if (keyboardInfo.keys.length === 2) {\n image = (\n <FillCentered>\n {keyboardInfo.keys.map((key: string, index3: number) => {\n let className = \"uifw-toolassistance-key-medium\";\n if (key.length > 1) className = \"uifw-toolassistance-key-modifier\";\n return ToolAssistanceField.getKeyNode(key, index3, className);\n })}\n </FillCentered>\n );\n } else if (keyboardInfo.keys[0]) {\n if (keyboardInfo.keys[0].length > 1)\n image = ToolAssistanceField.getKeyNode(\n keyboardInfo.keys[0],\n 0,\n \"uifw-toolassistance-key-large\"\n );\n else image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0);\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `ToolAssistanceImage.Keyboard specified but ToolAssistanceKeyboardInfo not valid`\n );\n }\n\n return image;\n }\n\n private static getKeyNode(\n key: string,\n index: number,\n className?: string\n ): React.ReactNode {\n return (\n <div\n key={index.toString()}\n className={classnames(\"uifw-toolassistance-key\", className)}\n >\n <FillCentered>{key}</FillCentered>\n </div>\n );\n }\n}\n"]}