@itwin/appui-react 5.19.0 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/lib/appui-react/UiFramework.js +20 -13
  3. package/lib/appui-react/UiFramework.js.map +1 -1
  4. package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  5. package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  6. package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
  7. package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  8. package/lib/appui-react/accudraw/Calculator.js +92 -98
  9. package/lib/appui-react/accudraw/Calculator.js.map +1 -1
  10. package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
  11. package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  12. package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
  13. package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
  14. package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
  15. package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  16. package/lib/appui-react/accudraw/MenuButton.js +20 -20
  17. package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
  18. package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
  19. package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
  20. package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
  21. package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  22. package/lib/appui-react/backstage/BackstageManager.js +1 -3
  23. package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
  24. package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
  25. package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
  26. package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
  27. package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  28. package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
  29. package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
  30. package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  31. package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
  32. package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  33. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
  34. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  35. package/lib/appui-react/configurableui/TimeTracker.js +25 -27
  36. package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
  37. package/lib/appui-react/content/ContentControl.js +2 -1
  38. package/lib/appui-react/content/ContentControl.js.map +1 -1
  39. package/lib/appui-react/content/ContentGroup.js +8 -4
  40. package/lib/appui-react/content/ContentGroup.js.map +1 -1
  41. package/lib/appui-react/content/ContentLayout.js +47 -38
  42. package/lib/appui-react/content/ContentLayout.js.map +1 -1
  43. package/lib/appui-react/content/IModelViewport.js +28 -23
  44. package/lib/appui-react/content/IModelViewport.js.map +1 -1
  45. package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
  46. package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  47. package/lib/appui-react/content/InternalContentViewManager.js +9 -8
  48. package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
  49. package/lib/appui-react/content/StandardContentLayouts.js +141 -141
  50. package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
  51. package/lib/appui-react/content/ViewportContentControl.js +25 -22
  52. package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
  53. package/lib/appui-react/cursor/CursorInformation.js +7 -6
  54. package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
  55. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
  56. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  57. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
  58. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  59. package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
  60. package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
  61. package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
  62. package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  63. package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
  64. package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  65. package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
  66. package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  67. package/lib/appui-react/dialog/ModelessDialog.js +3 -3
  68. package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
  69. package/lib/appui-react/feedback/ElementTooltip.js +3 -1
  70. package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
  71. package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
  72. package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
  73. package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
  74. package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
  75. package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
  76. package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  77. package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
  78. package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  79. package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
  80. package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  81. package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
  82. package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  83. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
  84. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  85. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
  86. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  87. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
  88. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  89. package/lib/appui-react/layout/backstage/Backstage.js +11 -14
  90. package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
  91. package/lib/appui-react/layout/base/DragManager.js +6 -7
  92. package/lib/appui-react/layout/base/DragManager.js.map +1 -1
  93. package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
  94. package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  95. package/lib/appui-react/layout/popup/Tooltip.js +8 -11
  96. package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
  97. package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
  98. package/lib/appui-react/layout/widget/Tab.js +7 -5
  99. package/lib/appui-react/layout/widget/Tab.js.map +1 -1
  100. package/lib/appui-react/messages/InputField.js +21 -24
  101. package/lib/appui-react/messages/InputField.js.map +1 -1
  102. package/lib/appui-react/messages/MessageManager.js +39 -38
  103. package/lib/appui-react/messages/MessageManager.js.map +1 -1
  104. package/lib/appui-react/messages/Pointer.js +38 -38
  105. package/lib/appui-react/messages/Pointer.js.map +1 -1
  106. package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
  107. package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
  108. package/lib/appui-react/messages/StatusMessageManager.js +2 -4
  109. package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
  110. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  111. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  112. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  113. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  114. package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
  115. package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  116. package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
  117. package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  118. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
  119. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  120. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
  121. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  122. package/lib/appui-react/pickers/ListPicker.js +28 -28
  123. package/lib/appui-react/pickers/ListPicker.js.map +1 -1
  124. package/lib/appui-react/pickers/ViewSelector.js +87 -86
  125. package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
  126. package/lib/appui-react/popup/CardPopup.js +18 -21
  127. package/lib/appui-react/popup/CardPopup.js.map +1 -1
  128. package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
  129. package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
  130. package/lib/appui-react/popup/InputEditorPopup.js +18 -20
  131. package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
  132. package/lib/appui-react/popup/PopupManager.js +22 -25
  133. package/lib/appui-react/popup/PopupManager.js.map +1 -1
  134. package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
  135. package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  136. package/lib/appui-react/popup/ToolbarPopup.js +18 -21
  137. package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
  138. package/lib/appui-react/redux/ReducerRegistry.js +2 -0
  139. package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
  140. package/lib/appui-react/redux/StateManager.js +4 -1
  141. package/lib/appui-react/redux/StateManager.js.map +1 -1
  142. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
  143. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  144. package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
  145. package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  146. package/lib/appui-react/shared/CommandItemDef.js +3 -3
  147. package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
  148. package/lib/appui-react/shared/CustomItemDef.js +4 -2
  149. package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
  150. package/lib/appui-react/shared/ItemDefBase.js +13 -5
  151. package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
  152. package/lib/appui-react/shared/MenuItem.js +6 -1
  153. package/lib/appui-react/shared/MenuItem.js.map +1 -1
  154. package/lib/appui-react/shared/ToolItemDef.js +1 -1
  155. package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
  156. package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
  157. package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  158. package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
  159. package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  160. package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
  161. package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
  162. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
  163. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  164. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
  165. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  166. package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
  167. package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  168. package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
  169. package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  170. package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
  171. package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  172. package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
  173. package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  174. package/lib/appui-react/toolbar/GroupItem.js +11 -5
  175. package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
  176. package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
  177. package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  178. package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
  179. package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  180. package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
  181. package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  182. package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
  183. package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
  184. package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
  185. package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  186. package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
  187. package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
  188. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
  189. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  190. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
  191. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  192. package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
  193. package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
  194. package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
  195. package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
  196. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
  197. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  198. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
  199. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  200. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
  201. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  202. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
  203. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  204. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
  205. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  206. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
  207. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  208. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
  209. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  210. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
  211. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  212. package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
  213. package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  214. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
  215. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  216. package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
  217. package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  218. package/lib/appui-react/uistate/AppUiSettings.js +41 -33
  219. package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
  220. package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
  221. package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  222. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
  223. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  224. package/lib/appui-react/widgets/WidgetControl.js +2 -0
  225. package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
  226. package/lib/appui-react/widgets/WidgetDef.js +28 -7
  227. package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
  228. package/lib/appui-react/widgets/WidgetHost.js +4 -4
  229. package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
  230. package/lib/appui-react/widgets/WidgetManager.js +5 -7
  231. package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
  232. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  233. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  234. package/package.json +9 -9
@@ -21,39 +21,24 @@ import { ConfigurableUiActionId } from "../redux/ConfigurableUiState.js";
21
21
  * @deprecated in 4.15.0. Use {@link @itwin/core-react#UiStateStorage} to persist UI settings.
22
22
  */
23
23
  export class AppUiSettings {
24
+ providerId = "AppUiSettingsProvider";
25
+ static _settingNamespace = "AppUiSettings";
26
+ _settings = [];
27
+ _applyingLocalSettings = false;
28
+ colorTheme;
29
+ dragInteraction;
30
+ widgetOpacity;
31
+ showWidgetIcon;
32
+ autoCollapseUnpinnedPanels;
33
+ animateToolSettings;
34
+ useToolAsToolSettingsLabel;
35
+ toolbarOpacity;
36
+ setColorTheme = (theme) => {
37
+ UiFramework.setColorTheme(theme);
38
+ // always store to local storage to avoid flicker during startup if user is not yet logged-in
39
+ window.localStorage.setItem("uifw:defaultTheme", theme);
40
+ };
24
41
  constructor(defaults) {
25
- this.providerId = "AppUiSettingsProvider";
26
- this._settings = [];
27
- this._applyingLocalSettings = false;
28
- this.setColorTheme = (theme) => {
29
- UiFramework.setColorTheme(theme);
30
- // always store to local storage to avoid flicker during startup if user is not yet logged-in
31
- window.localStorage.setItem("uifw:defaultTheme", theme);
32
- };
33
- // eslint-disable-next-line @typescript-eslint/no-deprecated
34
- this.handleSyncUiEvent = async (args) => {
35
- if (this._applyingLocalSettings)
36
- return;
37
- if (args.eventIds.has(ConfigurableUiActionId.SetTheme)) {
38
- await this.colorTheme.saveSetting(UiFramework.getUiStateStorage());
39
- // always store as default theme in local storage to avoid flicker during startup if user is not yet logged-in
40
- window.localStorage.setItem("uifw:defaultTheme", UiFramework.getColorTheme());
41
- }
42
- if (args.eventIds.has(ConfigurableUiActionId.SetDragInteraction))
43
- await this.dragInteraction.saveSetting(UiFramework.getUiStateStorage());
44
- if (args.eventIds.has(ConfigurableUiActionId.SetShowWidgetIcon))
45
- await this.showWidgetIcon.saveSetting(UiFramework.getUiStateStorage());
46
- if (args.eventIds.has(ConfigurableUiActionId.AutoCollapseUnpinnedPanels))
47
- await this.autoCollapseUnpinnedPanels.saveSetting(UiFramework.getUiStateStorage());
48
- if (args.eventIds.has(ConfigurableUiActionId.SetWidgetOpacity))
49
- await this.widgetOpacity.saveSetting(UiFramework.getUiStateStorage());
50
- if (args.eventIds.has(ConfigurableUiActionId.AnimateToolSettings))
51
- await this.animateToolSettings.saveSetting(UiFramework.getUiStateStorage());
52
- if (args.eventIds.has(ConfigurableUiActionId.UseToolAsToolSettingsLabel))
53
- await this.useToolAsToolSettingsLabel.saveSetting(UiFramework.getUiStateStorage());
54
- if (args.eventIds.has(ConfigurableUiActionId.SetToolbarOpacity))
55
- await this.toolbarOpacity.saveSetting(UiFramework.getUiStateStorage());
56
- };
57
42
  this._settings = [];
58
43
  this.colorTheme = new UiStateEntry(AppUiSettings._settingNamespace, "ColorTheme", UiFramework.getColorTheme, this.setColorTheme, defaults.colorTheme);
59
44
  this._settings.push(this.colorTheme);
@@ -73,6 +58,30 @@ export class AppUiSettings {
73
58
  this._settings.push(this.toolbarOpacity);
74
59
  SyncUiEventDispatcher.onSyncUiEvent.addListener(this.handleSyncUiEvent);
75
60
  }
61
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
62
+ handleSyncUiEvent = async (args) => {
63
+ if (this._applyingLocalSettings)
64
+ return;
65
+ if (args.eventIds.has(ConfigurableUiActionId.SetTheme)) {
66
+ await this.colorTheme.saveSetting(UiFramework.getUiStateStorage());
67
+ // always store as default theme in local storage to avoid flicker during startup if user is not yet logged-in
68
+ window.localStorage.setItem("uifw:defaultTheme", UiFramework.getColorTheme());
69
+ }
70
+ if (args.eventIds.has(ConfigurableUiActionId.SetDragInteraction))
71
+ await this.dragInteraction.saveSetting(UiFramework.getUiStateStorage());
72
+ if (args.eventIds.has(ConfigurableUiActionId.SetShowWidgetIcon))
73
+ await this.showWidgetIcon.saveSetting(UiFramework.getUiStateStorage());
74
+ if (args.eventIds.has(ConfigurableUiActionId.AutoCollapseUnpinnedPanels))
75
+ await this.autoCollapseUnpinnedPanels.saveSetting(UiFramework.getUiStateStorage());
76
+ if (args.eventIds.has(ConfigurableUiActionId.SetWidgetOpacity))
77
+ await this.widgetOpacity.saveSetting(UiFramework.getUiStateStorage());
78
+ if (args.eventIds.has(ConfigurableUiActionId.AnimateToolSettings))
79
+ await this.animateToolSettings.saveSetting(UiFramework.getUiStateStorage());
80
+ if (args.eventIds.has(ConfigurableUiActionId.UseToolAsToolSettingsLabel))
81
+ await this.useToolAsToolSettingsLabel.saveSetting(UiFramework.getUiStateStorage());
82
+ if (args.eventIds.has(ConfigurableUiActionId.SetToolbarOpacity))
83
+ await this.toolbarOpacity.saveSetting(UiFramework.getUiStateStorage());
84
+ };
76
85
  async apply(storage) {
77
86
  this._applyingLocalSettings = true;
78
87
  for (const setting of this._settings) {
@@ -84,5 +93,4 @@ export class AppUiSettings {
84
93
  await this.apply(storage);
85
94
  }
86
95
  }
87
- AppUiSettings._settingNamespace = "AppUiSettings";
88
96
  //# sourceMappingURL=AppUiSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppUiSettings.js","sourceRoot":"","sources":["../../../src/appui-react/uistate/AppUiSettings.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAoBzE;;;;;;;;;;GAUG;AACH,MAAM,OAAO,aAAa;IAsBxB,YAAY,QAAuC;QArBnC,eAAU,GAAG,uBAAuB,CAAC;QAG7C,cAAS,GAA6B,EAAE,CAAC;QACzC,2BAAsB,GAAG,KAAK,CAAC;QAW/B,kBAAa,GAAG,CAAC,KAAc,EAAE,EAAE;YACzC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjC,6FAA6F;YAC7F,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC,CAAC;QAgFF,4DAA4D;QACpD,sBAAiB,GAAG,KAAK,EAAE,IAAqB,EAAE,EAAE;YAC1D,IAAI,IAAI,CAAC,sBAAsB;gBAAE,OAAO;YAExC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBACnE,8GAA8G;gBAC9G,MAAM,CAAC,YAAY,CAAC,OAAO,CACzB,mBAAmB,EACnB,WAAW,CAAC,aAAa,EAAE,CAC5B,CAAC;YACJ,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;gBAC9D,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAE1E,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,iBAAiB,CAAC;gBAC7D,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAEzE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,0BAA0B,CAAC;gBACtE,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAC/C,WAAW,CAAC,iBAAiB,EAAE,CAChC,CAAC;YAEJ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;gBAC5D,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAExE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,mBAAmB,CAAC;gBAC/D,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CACxC,WAAW,CAAC,iBAAiB,EAAE,CAChC,CAAC;YAEJ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,0BAA0B,CAAC;gBACtE,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAC/C,WAAW,CAAC,iBAAiB,EAAE,CAChC,CAAC;YAEJ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC,iBAAiB,CAAC;gBAC7D,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC;QApHA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAChC,aAAa,CAAC,iBAAiB,EAC/B,YAAY,EACZ,WAAW,CAAC,aAAa,EACzB,IAAI,CAAC,aAAa,EAClB,QAAQ,CAAC,UAAU,CACpB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAErC,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,CACrC,aAAa,CAAC,iBAAiB,EAC/B,iBAAiB,EACjB,GAAG,EAAE,CAAC,WAAW,CAAC,kBAAkB,EACpC,CAAC,KAAc,EAAE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAC5D,QAAQ,CAAC,eAAe,CACzB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE1C,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,CACpC,aAAa,CAAC,iBAAiB,EAC/B,gBAAgB,EAChB,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,EAChC,CAAC,KAAc,EAAE,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACxD,QAAQ,CAAC,cAAc,CACxB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzC,IAAI,CAAC,0BAA0B,GAAG,IAAI,YAAY,CAChD,aAAa,CAAC,iBAAiB,EAC/B,4BAA4B,EAC5B,GAAG,EAAE,CAAC,WAAW,CAAC,0BAA0B,EAC5C,CAAC,KAAc,EAAE,EAAE,CAAC,WAAW,CAAC,6BAA6B,CAAC,KAAK,CAAC,EACpE,QAAQ,CAAC,0BAA0B,CACpC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAErD,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CACnC,aAAa,CAAC,iBAAiB,EAC/B,eAAe,EACf,GAAG,EAAE,CAAC,WAAW,CAAC,gBAAgB,EAAE,EACpC,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,EACtD,QAAQ,CAAC,aAAa,CACvB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAExC,IAAI,CAAC,mBAAmB,GAAG,IAAI,YAAY,CACzC,aAAa,CAAC,iBAAiB,EAC/B,qBAAqB,EACrB,GAAG,EAAE,CAAC,WAAW,CAAC,mBAAmB,EACrC,CAAC,KAAc,EAAE,EAAE,CAAC,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAC7D,QAAQ,CAAC,mBAAmB,CAC7B,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE9C,IAAI,CAAC,0BAA0B,GAAG,IAAI,YAAY,CAChD,aAAa,CAAC,iBAAiB,EAC/B,4BAA4B,EAC5B,GAAG,EAAE,CAAC,WAAW,CAAC,0BAA0B,EAC5C,CAAC,KAAc,EAAE,EAAE,CAAC,WAAW,CAAC,6BAA6B,CAAC,KAAK,CAAC,EACpE,QAAQ,CAAC,0BAA0B,CACpC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAErD,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,CACpC,aAAa,CAAC,iBAAiB,EAC/B,aAAa,EACb,GAAG,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,EACrC,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACvD,QAAQ,CAAC,cAAc,CACxB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzC,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC1E,CAAC;IA2CM,KAAK,CAAC,KAAK,CAAC,OAAuB;QACxC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,OAAuB;QACnD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;;AApJc,+BAAiB,GAAG,eAAe,AAAlB,CAAmB","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 type { UiStateStorage } from \"@itwin/core-react\";\nimport { UiStateEntry } from \"@itwin/core-react\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher.js\";\nimport type { UserSettingsProvider } from \"../UiFramework.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { UiSyncEventArgs } from \"../syncui/UiSyncEvent.js\";\nimport type { ThemeId } from \"../theme/ThemeId.js\";\nimport { ConfigurableUiActionId } from \"../redux/ConfigurableUiState.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Default values that may be specified for [[AppUiSettings]].\n * @public\n * @deprecated in 4.15.0. Interface used in a deprecated class {@link AppUiSettings}.\n */\nexport interface InitialAppUiSettings {\n colorTheme: ThemeId;\n dragInteraction: boolean;\n widgetOpacity: number;\n showWidgetIcon?: boolean;\n /** @alpha */\n autoCollapseUnpinnedPanels?: boolean;\n animateToolSettings?: boolean;\n useToolAsToolSettingsLabel?: boolean;\n toolbarOpacity: number;\n}\n\n/** These are the UI settings that are stored in the Redux store. They control the color theme,\n * how toolbar group buttons work, and the opacity of floating widget when the cursor\n * is not inside them. It is expect that an IModelApp using App UI components will create and register AppUiSettings with\n * defaults specific to their application. This would be done by calling the following.\n *\n * ```ts\n * UiFramework.registerUserSettingsProvider(new AppUiSettings(defaults));\n * ```\n * @public\n * @deprecated in 4.15.0. Use {@link @itwin/core-react#UiStateStorage} to persist UI settings.\n */\nexport class AppUiSettings implements UserSettingsProvider {\n public readonly providerId = \"AppUiSettingsProvider\";\n\n private static _settingNamespace = \"AppUiSettings\";\n private _settings: Array<UiStateEntry<any>> = [];\n private _applyingLocalSettings = false;\n\n public colorTheme: UiStateEntry<ThemeId>;\n public dragInteraction: UiStateEntry<boolean>;\n public widgetOpacity: UiStateEntry<number>;\n public showWidgetIcon: UiStateEntry<boolean>;\n public autoCollapseUnpinnedPanels: UiStateEntry<boolean>;\n public animateToolSettings: UiStateEntry<boolean>;\n public useToolAsToolSettingsLabel: UiStateEntry<boolean>;\n public toolbarOpacity: UiStateEntry<number>;\n\n private setColorTheme = (theme: ThemeId) => {\n UiFramework.setColorTheme(theme);\n // always store to local storage to avoid flicker during startup if user is not yet logged-in\n window.localStorage.setItem(\"uifw:defaultTheme\", theme);\n };\n\n constructor(defaults: Partial<InitialAppUiSettings>) {\n this._settings = [];\n\n this.colorTheme = new UiStateEntry<ThemeId>(\n AppUiSettings._settingNamespace,\n \"ColorTheme\",\n UiFramework.getColorTheme,\n this.setColorTheme,\n defaults.colorTheme\n );\n this._settings.push(this.colorTheme);\n\n this.dragInteraction = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"DragInteraction\",\n () => UiFramework.useDragInteraction,\n (value: boolean) => UiFramework.setUseDragInteraction(value),\n defaults.dragInteraction\n );\n this._settings.push(this.dragInteraction);\n\n this.showWidgetIcon = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"ShowWidgetIcon\",\n () => UiFramework.showWidgetIcon,\n (value: boolean) => UiFramework.setShowWidgetIcon(value),\n defaults.showWidgetIcon\n );\n this._settings.push(this.showWidgetIcon);\n\n this.autoCollapseUnpinnedPanels = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"AutoCollapseUnpinnedPanels\",\n () => UiFramework.autoCollapseUnpinnedPanels,\n (value: boolean) => UiFramework.setAutoCollapseUnpinnedPanels(value),\n defaults.autoCollapseUnpinnedPanels\n );\n this._settings.push(this.autoCollapseUnpinnedPanels);\n\n this.widgetOpacity = new UiStateEntry<number>(\n AppUiSettings._settingNamespace,\n \"WidgetOpacity\",\n () => UiFramework.getWidgetOpacity(),\n (value: number) => UiFramework.setWidgetOpacity(value),\n defaults.widgetOpacity\n );\n this._settings.push(this.widgetOpacity);\n\n this.animateToolSettings = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"AnimateToolSettings\",\n () => UiFramework.animateToolSettings,\n (value: boolean) => UiFramework.setAnimateToolSettings(value),\n defaults.animateToolSettings\n );\n this._settings.push(this.animateToolSettings);\n\n this.useToolAsToolSettingsLabel = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"UseToolAsToolSettingsLabel\",\n () => UiFramework.useToolAsToolSettingsLabel,\n (value: boolean) => UiFramework.setUseToolAsToolSettingsLabel(value),\n defaults.useToolAsToolSettingsLabel\n );\n this._settings.push(this.useToolAsToolSettingsLabel);\n\n this.toolbarOpacity = new UiStateEntry<number>(\n AppUiSettings._settingNamespace,\n \"ToolOpacity\",\n () => UiFramework.getToolbarOpacity(),\n (value: number) => UiFramework.setToolbarOpacity(value),\n defaults.toolbarOpacity\n );\n this._settings.push(this.toolbarOpacity);\n\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this.handleSyncUiEvent);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private handleSyncUiEvent = async (args: UiSyncEventArgs) => {\n if (this._applyingLocalSettings) return;\n\n if (args.eventIds.has(ConfigurableUiActionId.SetTheme)) {\n await this.colorTheme.saveSetting(UiFramework.getUiStateStorage());\n // always store as default theme in local storage to avoid flicker during startup if user is not yet logged-in\n window.localStorage.setItem(\n \"uifw:defaultTheme\",\n UiFramework.getColorTheme()\n );\n }\n\n if (args.eventIds.has(ConfigurableUiActionId.SetDragInteraction))\n await this.dragInteraction.saveSetting(UiFramework.getUiStateStorage());\n\n if (args.eventIds.has(ConfigurableUiActionId.SetShowWidgetIcon))\n await this.showWidgetIcon.saveSetting(UiFramework.getUiStateStorage());\n\n if (args.eventIds.has(ConfigurableUiActionId.AutoCollapseUnpinnedPanels))\n await this.autoCollapseUnpinnedPanels.saveSetting(\n UiFramework.getUiStateStorage()\n );\n\n if (args.eventIds.has(ConfigurableUiActionId.SetWidgetOpacity))\n await this.widgetOpacity.saveSetting(UiFramework.getUiStateStorage());\n\n if (args.eventIds.has(ConfigurableUiActionId.AnimateToolSettings))\n await this.animateToolSettings.saveSetting(\n UiFramework.getUiStateStorage()\n );\n\n if (args.eventIds.has(ConfigurableUiActionId.UseToolAsToolSettingsLabel))\n await this.useToolAsToolSettingsLabel.saveSetting(\n UiFramework.getUiStateStorage()\n );\n\n if (args.eventIds.has(ConfigurableUiActionId.SetToolbarOpacity))\n await this.toolbarOpacity.saveSetting(UiFramework.getUiStateStorage());\n };\n\n public async apply(storage: UiStateStorage): Promise<void> {\n this._applyingLocalSettings = true;\n for (const setting of this._settings) {\n await setting.getSettingAndApplyValue(storage);\n }\n this._applyingLocalSettings = false;\n }\n\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n await this.apply(storage);\n }\n}\n"]}
1
+ {"version":3,"file":"AppUiSettings.js","sourceRoot":"","sources":["../../../src/appui-react/uistate/AppUiSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Settings\n */\n\nimport type { UiStateStorage } from \"@itwin/core-react\";\nimport { UiStateEntry } from \"@itwin/core-react\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher.js\";\nimport type { UserSettingsProvider } from \"../UiFramework.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { UiSyncEventArgs } from \"../syncui/UiSyncEvent.js\";\nimport type { ThemeId } from \"../theme/ThemeId.js\";\nimport { ConfigurableUiActionId } from \"../redux/ConfigurableUiState.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Default values that may be specified for [[AppUiSettings]].\n * @public\n * @deprecated in 4.15.0. Interface used in a deprecated class {@link AppUiSettings}.\n */\nexport interface InitialAppUiSettings {\n colorTheme: ThemeId;\n dragInteraction: boolean;\n widgetOpacity: number;\n showWidgetIcon?: boolean;\n /** @alpha */\n autoCollapseUnpinnedPanels?: boolean;\n animateToolSettings?: boolean;\n useToolAsToolSettingsLabel?: boolean;\n toolbarOpacity: number;\n}\n\n/** These are the UI settings that are stored in the Redux store. They control the color theme,\n * how toolbar group buttons work, and the opacity of floating widget when the cursor\n * is not inside them. It is expect that an IModelApp using App UI components will create and register AppUiSettings with\n * defaults specific to their application. This would be done by calling the following.\n *\n * ```ts\n * UiFramework.registerUserSettingsProvider(new AppUiSettings(defaults));\n * ```\n * @public\n * @deprecated in 4.15.0. Use {@link @itwin/core-react#UiStateStorage} to persist UI settings.\n */\nexport class AppUiSettings implements UserSettingsProvider {\n public readonly providerId = \"AppUiSettingsProvider\";\n\n private static _settingNamespace = \"AppUiSettings\";\n private _settings: Array<UiStateEntry<any>> = [];\n private _applyingLocalSettings = false;\n\n public colorTheme: UiStateEntry<ThemeId>;\n public dragInteraction: UiStateEntry<boolean>;\n public widgetOpacity: UiStateEntry<number>;\n public showWidgetIcon: UiStateEntry<boolean>;\n public autoCollapseUnpinnedPanels: UiStateEntry<boolean>;\n public animateToolSettings: UiStateEntry<boolean>;\n public useToolAsToolSettingsLabel: UiStateEntry<boolean>;\n public toolbarOpacity: UiStateEntry<number>;\n\n private setColorTheme = (theme: ThemeId) => {\n UiFramework.setColorTheme(theme);\n // always store to local storage to avoid flicker during startup if user is not yet logged-in\n window.localStorage.setItem(\"uifw:defaultTheme\", theme);\n };\n\n constructor(defaults: Partial<InitialAppUiSettings>) {\n this._settings = [];\n\n this.colorTheme = new UiStateEntry<ThemeId>(\n AppUiSettings._settingNamespace,\n \"ColorTheme\",\n UiFramework.getColorTheme,\n this.setColorTheme,\n defaults.colorTheme\n );\n this._settings.push(this.colorTheme);\n\n this.dragInteraction = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"DragInteraction\",\n () => UiFramework.useDragInteraction,\n (value: boolean) => UiFramework.setUseDragInteraction(value),\n defaults.dragInteraction\n );\n this._settings.push(this.dragInteraction);\n\n this.showWidgetIcon = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"ShowWidgetIcon\",\n () => UiFramework.showWidgetIcon,\n (value: boolean) => UiFramework.setShowWidgetIcon(value),\n defaults.showWidgetIcon\n );\n this._settings.push(this.showWidgetIcon);\n\n this.autoCollapseUnpinnedPanels = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"AutoCollapseUnpinnedPanels\",\n () => UiFramework.autoCollapseUnpinnedPanels,\n (value: boolean) => UiFramework.setAutoCollapseUnpinnedPanels(value),\n defaults.autoCollapseUnpinnedPanels\n );\n this._settings.push(this.autoCollapseUnpinnedPanels);\n\n this.widgetOpacity = new UiStateEntry<number>(\n AppUiSettings._settingNamespace,\n \"WidgetOpacity\",\n () => UiFramework.getWidgetOpacity(),\n (value: number) => UiFramework.setWidgetOpacity(value),\n defaults.widgetOpacity\n );\n this._settings.push(this.widgetOpacity);\n\n this.animateToolSettings = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"AnimateToolSettings\",\n () => UiFramework.animateToolSettings,\n (value: boolean) => UiFramework.setAnimateToolSettings(value),\n defaults.animateToolSettings\n );\n this._settings.push(this.animateToolSettings);\n\n this.useToolAsToolSettingsLabel = new UiStateEntry<boolean>(\n AppUiSettings._settingNamespace,\n \"UseToolAsToolSettingsLabel\",\n () => UiFramework.useToolAsToolSettingsLabel,\n (value: boolean) => UiFramework.setUseToolAsToolSettingsLabel(value),\n defaults.useToolAsToolSettingsLabel\n );\n this._settings.push(this.useToolAsToolSettingsLabel);\n\n this.toolbarOpacity = new UiStateEntry<number>(\n AppUiSettings._settingNamespace,\n \"ToolOpacity\",\n () => UiFramework.getToolbarOpacity(),\n (value: number) => UiFramework.setToolbarOpacity(value),\n defaults.toolbarOpacity\n );\n this._settings.push(this.toolbarOpacity);\n\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this.handleSyncUiEvent);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private handleSyncUiEvent = async (args: UiSyncEventArgs) => {\n if (this._applyingLocalSettings) return;\n\n if (args.eventIds.has(ConfigurableUiActionId.SetTheme)) {\n await this.colorTheme.saveSetting(UiFramework.getUiStateStorage());\n // always store as default theme in local storage to avoid flicker during startup if user is not yet logged-in\n window.localStorage.setItem(\n \"uifw:defaultTheme\",\n UiFramework.getColorTheme()\n );\n }\n\n if (args.eventIds.has(ConfigurableUiActionId.SetDragInteraction))\n await this.dragInteraction.saveSetting(UiFramework.getUiStateStorage());\n\n if (args.eventIds.has(ConfigurableUiActionId.SetShowWidgetIcon))\n await this.showWidgetIcon.saveSetting(UiFramework.getUiStateStorage());\n\n if (args.eventIds.has(ConfigurableUiActionId.AutoCollapseUnpinnedPanels))\n await this.autoCollapseUnpinnedPanels.saveSetting(\n UiFramework.getUiStateStorage()\n );\n\n if (args.eventIds.has(ConfigurableUiActionId.SetWidgetOpacity))\n await this.widgetOpacity.saveSetting(UiFramework.getUiStateStorage());\n\n if (args.eventIds.has(ConfigurableUiActionId.AnimateToolSettings))\n await this.animateToolSettings.saveSetting(\n UiFramework.getUiStateStorage()\n );\n\n if (args.eventIds.has(ConfigurableUiActionId.UseToolAsToolSettingsLabel))\n await this.useToolAsToolSettingsLabel.saveSetting(\n UiFramework.getUiStateStorage()\n );\n\n if (args.eventIds.has(ConfigurableUiActionId.SetToolbarOpacity))\n await this.toolbarOpacity.saveSetting(UiFramework.getUiStateStorage());\n };\n\n public async apply(storage: UiStateStorage): Promise<void> {\n this._applyingLocalSettings = true;\n for (const setting of this._settings) {\n await setting.getSettingAndApplyValue(storage);\n }\n this._applyingLocalSettings = false;\n }\n\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n await this.apply(storage);\n }\n}\n"]}
@@ -14,9 +14,11 @@ import { UiStateStorageStatus } from "../uistate/UiStateStorage.js";
14
14
  * @internal
15
15
  */
16
16
  export class UiShowHideSettingsProvider {
17
- constructor() {
18
- this.providerId = "UiShowHideSettingsProvider";
19
- }
17
+ static _settingsNamespace = "AppUiSettings";
18
+ static _autoHideUiKey = "AutoHideUi";
19
+ static _useProximityOpacityKey = "UseProximityOpacity";
20
+ static _snapWidgetOpacityKey = "SnapWidgetOpacity";
21
+ providerId = "UiShowHideSettingsProvider";
20
22
  static initialize() {
21
23
  UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());
22
24
  }
@@ -41,10 +43,6 @@ export class UiShowHideSettingsProvider {
41
43
  void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);
42
44
  }
43
45
  }
44
- UiShowHideSettingsProvider._settingsNamespace = "AppUiSettings";
45
- UiShowHideSettingsProvider._autoHideUiKey = "AutoHideUi";
46
- UiShowHideSettingsProvider._useProximityOpacityKey = "UseProximityOpacity";
47
- UiShowHideSettingsProvider._snapWidgetOpacityKey = "SnapWidgetOpacity";
48
46
  /** The default inactivity time.
49
47
  * @internal
50
48
  */
@@ -53,6 +51,14 @@ export const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */
53
51
  * @internal
54
52
  */
55
53
  export class InternalUiShowHideManager {
54
+ static _isUiVisible = true;
55
+ static _autoHideUi = true;
56
+ static _showHidePanels = false;
57
+ static _showHideFooter = false;
58
+ static _inactivityTime = INACTIVITY_TIME_DEFAULT;
59
+ static _timeout;
60
+ static _useProximityOpacity = false;
61
+ static _snapWidgetOpacity = false;
56
62
  /** Determines if the Ui is visible */
57
63
  static get isUiVisible() {
58
64
  return InternalUiShowHideManager._isUiVisible;
@@ -185,11 +191,4 @@ export class InternalUiShowHideManager {
185
191
  this._snapWidgetOpacity = false;
186
192
  }
187
193
  }
188
- InternalUiShowHideManager._isUiVisible = true;
189
- InternalUiShowHideManager._autoHideUi = true;
190
- InternalUiShowHideManager._showHidePanels = false;
191
- InternalUiShowHideManager._showHideFooter = false;
192
- InternalUiShowHideManager._inactivityTime = INACTIVITY_TIME_DEFAULT;
193
- InternalUiShowHideManager._useProximityOpacity = false;
194
- InternalUiShowHideManager._snapWidgetOpacity = false;
195
194
  //# sourceMappingURL=InternalUiShowHideManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InternalUiShowHideManager.js","sourceRoot":"","sources":["../../../src/appui-react/utils/InternalUiShowHideManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Utilities\n */\n\nimport { useCursorInformationStore } from \"../cursor/CursorInformation.js\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher.js\";\nimport { SyncUiEventId } from \"../syncui/UiSyncEvent.js\";\nimport type { UserSettingsProvider } from \"../UiFramework.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { UiStateStorage } from \"../uistate/UiStateStorage.js\";\nimport { UiStateStorageStatus } from \"../uistate/UiStateStorage.js\";\n\n/** Class that maintain UiShowHide user settings between sessions\n * @internal\n */\nexport class UiShowHideSettingsProvider implements UserSettingsProvider {\n private static _settingsNamespace = \"AppUiSettings\";\n private static _autoHideUiKey = \"AutoHideUi\";\n private static _useProximityOpacityKey = \"UseProximityOpacity\";\n private static _snapWidgetOpacityKey = \"SnapWidgetOpacity\";\n public readonly providerId = \"UiShowHideSettingsProvider\";\n\n public static initialize() {\n UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());\n }\n\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n let result = await storage.getSetting(\n UiShowHideSettingsProvider._settingsNamespace,\n UiShowHideSettingsProvider._autoHideUiKey\n );\n if (result.status === UiStateStorageStatus.Success)\n InternalUiShowHideManager.setAutoHideUi(result.setting);\n\n result = await storage.getSetting(\n UiShowHideSettingsProvider._settingsNamespace,\n UiShowHideSettingsProvider._useProximityOpacityKey\n );\n if (result.status === UiStateStorageStatus.Success)\n InternalUiShowHideManager.setUseProximityOpacity(result.setting);\n\n result = await storage.getSetting(\n UiShowHideSettingsProvider._settingsNamespace,\n UiShowHideSettingsProvider._snapWidgetOpacityKey\n );\n if (result.status === UiStateStorageStatus.Success)\n InternalUiShowHideManager.setSnapWidgetOpacity(result.setting);\n }\n\n public static async storeAutoHideUi(v: boolean, storage?: UiStateStorage) {\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(\n this._settingsNamespace,\n this._autoHideUiKey,\n v\n );\n }\n\n public static async storeUseProximityOpacity(\n v: boolean,\n storage?: UiStateStorage\n ) {\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(\n this._settingsNamespace,\n this._useProximityOpacityKey,\n v\n );\n }\n\n public static async storeSnapWidgetOpacity(\n v: boolean,\n storage?: UiStateStorage\n ) {\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(\n this._settingsNamespace,\n this._snapWidgetOpacityKey,\n v\n );\n }\n}\n\n/** The default inactivity time.\n * @internal\n */\nexport const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */\n\n/** Maintains Ui Show/Hide state. The `Ui` includes widgets, panels and the status bar.\n * @internal\n */\nexport class InternalUiShowHideManager {\n private static _isUiVisible: boolean = true;\n private static _autoHideUi: boolean = true;\n private static _showHidePanels: boolean = false;\n private static _showHideFooter: boolean = false;\n private static _inactivityTime: number = INACTIVITY_TIME_DEFAULT;\n private static _timeout: number;\n private static _useProximityOpacity: boolean = false;\n private static _snapWidgetOpacity: boolean = false;\n\n /** Determines if the Ui is visible */\n public static get isUiVisible() {\n return InternalUiShowHideManager._isUiVisible;\n }\n public static set isUiVisible(visible: boolean) {\n if (this._isUiVisible === visible) return;\n InternalUiShowHideManager._isUiVisible = visible;\n UiFramework.onUiVisibilityChanged.emit({ visible });\n }\n\n public static setAutoHideUi(value: boolean) {\n InternalUiShowHideManager._autoHideUi = value;\n }\n\n public static setUseProximityOpacity(value: boolean) {\n InternalUiShowHideManager._useProximityOpacity = value;\n }\n\n public static setSnapWidgetOpacity(value: boolean) {\n InternalUiShowHideManager._snapWidgetOpacity = value;\n }\n\n public static get autoHideUi(): boolean {\n return InternalUiShowHideManager._autoHideUi;\n }\n\n public static set autoHideUi(autoHide: boolean) {\n if (this._autoHideUi === autoHide) return;\n\n void UiShowHideSettingsProvider.storeAutoHideUi(autoHide);\n if (!autoHide) {\n this.isUiVisible = true;\n }\n this._autoHideUi = autoHide;\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(\n SyncUiEventId.ShowHideManagerSettingChange\n );\n }\n /** Determines whether the widget panels are shown and hidden. Defaults to false. */\n public static get showHidePanels(): boolean {\n return InternalUiShowHideManager._showHidePanels;\n }\n public static set showHidePanels(showHide: boolean) {\n InternalUiShowHideManager._showHidePanels = showHide;\n UiFramework.onUiVisibilityChanged.emit({\n visible: this.isUiVisible,\n });\n }\n\n /** Determines whether the status bar is shown and hidden. Defaults to false. */\n public static get showHideFooter(): boolean {\n return InternalUiShowHideManager._showHideFooter;\n }\n public static set showHideFooter(showHide: boolean) {\n InternalUiShowHideManager._showHideFooter = showHide;\n UiFramework.onUiVisibilityChanged.emit({\n visible: this.isUiVisible,\n });\n }\n\n /** Determines the amount of inactivity time before the Ui is hidden. Defaults to 3.5 seconds. */\n public static get inactivityTime(): number {\n return InternalUiShowHideManager._inactivityTime;\n }\n public static set inactivityTime(time: number) {\n InternalUiShowHideManager._inactivityTime = time;\n }\n\n /** Determines whether the proximity of the mouse should alter the opacity of a toolbar. Defaults to true. */\n public static get useProximityOpacity(): boolean {\n return InternalUiShowHideManager._useProximityOpacity;\n }\n public static set useProximityOpacity(value: boolean) {\n InternalUiShowHideManager._useProximityOpacity = value;\n void UiShowHideSettingsProvider.storeUseProximityOpacity(value);\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(\n SyncUiEventId.ShowHideManagerSettingChange\n );\n UiFramework.onUiVisibilityChanged.emit({\n visible: this.isUiVisible,\n });\n }\n\n /** Determines whether the opacity of a toolbar should snap. Defaults to false. */\n public static get snapWidgetOpacity(): boolean {\n return InternalUiShowHideManager._snapWidgetOpacity;\n }\n public static set snapWidgetOpacity(value: boolean) {\n InternalUiShowHideManager._snapWidgetOpacity = value;\n void UiShowHideSettingsProvider.storeSnapWidgetOpacity(value);\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(\n SyncUiEventId.ShowHideManagerSettingChange\n );\n UiFramework.onUiVisibilityChanged.emit({\n visible: this.isUiVisible,\n });\n }\n\n /** Handler for when a Frontstage is ready */\n public static handleFrontstageReady() {\n if (!InternalUiShowHideManager._autoHideUi) return;\n InternalUiShowHideManager.showUiAndResetTimer();\n }\n\n /** Handler for when the mouse moves over the content area */\n public static handleContentMouseMove(\n _event?: React.MouseEvent<HTMLElement, MouseEvent>\n ) {\n useCursorInformationStore.getState().setContentHovered(true);\n if (!InternalUiShowHideManager._autoHideUi) return;\n InternalUiShowHideManager.showUiAndResetTimer();\n }\n\n /** Handler for when the mouse leaves the content area */\n public static handleContentMouseLeave(\n _event?: React.MouseEvent<HTMLElement, MouseEvent>\n ) {\n useCursorInformationStore.getState().setContentHovered(false);\n }\n\n /** Handler for when the mouse enters a widget */\n public static handleWidgetMouseEnter(\n _event?: React.MouseEvent<HTMLElement, MouseEvent>\n ) {\n if (!InternalUiShowHideManager._autoHideUi) return;\n InternalUiShowHideManager.showUiAndCancelTimer();\n }\n\n /** Shows the Ui and resets the inactivity timer */\n public static showUiAndResetTimer() {\n this.isUiVisible = true;\n\n window.clearTimeout(this._timeout);\n if (!this._autoHideUi) return;\n this._timeout = window.setTimeout(() => {\n this.isUiVisible = false;\n }, this._inactivityTime);\n }\n\n /** Shows the Ui and cancels the inactivity timer */\n public static showUiAndCancelTimer() {\n this.isUiVisible = true;\n window.clearTimeout(this._timeout);\n }\n\n public static terminate() {\n window.clearTimeout(this._timeout);\n this._isUiVisible = true;\n this._autoHideUi = true;\n this._showHidePanels = false;\n this._showHideFooter = false;\n this._inactivityTime = INACTIVITY_TIME_DEFAULT;\n this._useProximityOpacity = false;\n this._snapWidgetOpacity = false;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalUiShowHideManager.js","sourceRoot":"","sources":["../../../src/appui-react/utils/InternalUiShowHideManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Utilities\n */\n\nimport { useCursorInformationStore } from \"../cursor/CursorInformation.js\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher.js\";\nimport { SyncUiEventId } from \"../syncui/UiSyncEvent.js\";\nimport type { UserSettingsProvider } from \"../UiFramework.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { UiStateStorage } from \"../uistate/UiStateStorage.js\";\nimport { UiStateStorageStatus } from \"../uistate/UiStateStorage.js\";\n\n/** Class that maintain UiShowHide user settings between sessions\n * @internal\n */\nexport class UiShowHideSettingsProvider implements UserSettingsProvider {\n private static _settingsNamespace = \"AppUiSettings\";\n private static _autoHideUiKey = \"AutoHideUi\";\n private static _useProximityOpacityKey = \"UseProximityOpacity\";\n private static _snapWidgetOpacityKey = \"SnapWidgetOpacity\";\n public readonly providerId = \"UiShowHideSettingsProvider\";\n\n public static initialize() {\n UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());\n }\n\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n let result = await storage.getSetting(\n UiShowHideSettingsProvider._settingsNamespace,\n UiShowHideSettingsProvider._autoHideUiKey\n );\n if (result.status === UiStateStorageStatus.Success)\n InternalUiShowHideManager.setAutoHideUi(result.setting);\n\n result = await storage.getSetting(\n UiShowHideSettingsProvider._settingsNamespace,\n UiShowHideSettingsProvider._useProximityOpacityKey\n );\n if (result.status === UiStateStorageStatus.Success)\n InternalUiShowHideManager.setUseProximityOpacity(result.setting);\n\n result = await storage.getSetting(\n UiShowHideSettingsProvider._settingsNamespace,\n UiShowHideSettingsProvider._snapWidgetOpacityKey\n );\n if (result.status === UiStateStorageStatus.Success)\n InternalUiShowHideManager.setSnapWidgetOpacity(result.setting);\n }\n\n public static async storeAutoHideUi(v: boolean, storage?: UiStateStorage) {\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(\n this._settingsNamespace,\n this._autoHideUiKey,\n v\n );\n }\n\n public static async storeUseProximityOpacity(\n v: boolean,\n storage?: UiStateStorage\n ) {\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(\n this._settingsNamespace,\n this._useProximityOpacityKey,\n v\n );\n }\n\n public static async storeSnapWidgetOpacity(\n v: boolean,\n storage?: UiStateStorage\n ) {\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(\n this._settingsNamespace,\n this._snapWidgetOpacityKey,\n v\n );\n }\n}\n\n/** The default inactivity time.\n * @internal\n */\nexport const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */\n\n/** Maintains Ui Show/Hide state. The `Ui` includes widgets, panels and the status bar.\n * @internal\n */\nexport class InternalUiShowHideManager {\n private static _isUiVisible: boolean = true;\n private static _autoHideUi: boolean = true;\n private static _showHidePanels: boolean = false;\n private static _showHideFooter: boolean = false;\n private static _inactivityTime: number = INACTIVITY_TIME_DEFAULT;\n private static _timeout: number;\n private static _useProximityOpacity: boolean = false;\n private static _snapWidgetOpacity: boolean = false;\n\n /** Determines if the Ui is visible */\n public static get isUiVisible() {\n return InternalUiShowHideManager._isUiVisible;\n }\n public static set isUiVisible(visible: boolean) {\n if (this._isUiVisible === visible) return;\n InternalUiShowHideManager._isUiVisible = visible;\n UiFramework.onUiVisibilityChanged.emit({ visible });\n }\n\n public static setAutoHideUi(value: boolean) {\n InternalUiShowHideManager._autoHideUi = value;\n }\n\n public static setUseProximityOpacity(value: boolean) {\n InternalUiShowHideManager._useProximityOpacity = value;\n }\n\n public static setSnapWidgetOpacity(value: boolean) {\n InternalUiShowHideManager._snapWidgetOpacity = value;\n }\n\n public static get autoHideUi(): boolean {\n return InternalUiShowHideManager._autoHideUi;\n }\n\n public static set autoHideUi(autoHide: boolean) {\n if (this._autoHideUi === autoHide) return;\n\n void UiShowHideSettingsProvider.storeAutoHideUi(autoHide);\n if (!autoHide) {\n this.isUiVisible = true;\n }\n this._autoHideUi = autoHide;\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(\n SyncUiEventId.ShowHideManagerSettingChange\n );\n }\n /** Determines whether the widget panels are shown and hidden. Defaults to false. */\n public static get showHidePanels(): boolean {\n return InternalUiShowHideManager._showHidePanels;\n }\n public static set showHidePanels(showHide: boolean) {\n InternalUiShowHideManager._showHidePanels = showHide;\n UiFramework.onUiVisibilityChanged.emit({\n visible: this.isUiVisible,\n });\n }\n\n /** Determines whether the status bar is shown and hidden. Defaults to false. */\n public static get showHideFooter(): boolean {\n return InternalUiShowHideManager._showHideFooter;\n }\n public static set showHideFooter(showHide: boolean) {\n InternalUiShowHideManager._showHideFooter = showHide;\n UiFramework.onUiVisibilityChanged.emit({\n visible: this.isUiVisible,\n });\n }\n\n /** Determines the amount of inactivity time before the Ui is hidden. Defaults to 3.5 seconds. */\n public static get inactivityTime(): number {\n return InternalUiShowHideManager._inactivityTime;\n }\n public static set inactivityTime(time: number) {\n InternalUiShowHideManager._inactivityTime = time;\n }\n\n /** Determines whether the proximity of the mouse should alter the opacity of a toolbar. Defaults to true. */\n public static get useProximityOpacity(): boolean {\n return InternalUiShowHideManager._useProximityOpacity;\n }\n public static set useProximityOpacity(value: boolean) {\n InternalUiShowHideManager._useProximityOpacity = value;\n void UiShowHideSettingsProvider.storeUseProximityOpacity(value);\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(\n SyncUiEventId.ShowHideManagerSettingChange\n );\n UiFramework.onUiVisibilityChanged.emit({\n visible: this.isUiVisible,\n });\n }\n\n /** Determines whether the opacity of a toolbar should snap. Defaults to false. */\n public static get snapWidgetOpacity(): boolean {\n return InternalUiShowHideManager._snapWidgetOpacity;\n }\n public static set snapWidgetOpacity(value: boolean) {\n InternalUiShowHideManager._snapWidgetOpacity = value;\n void UiShowHideSettingsProvider.storeSnapWidgetOpacity(value);\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(\n SyncUiEventId.ShowHideManagerSettingChange\n );\n UiFramework.onUiVisibilityChanged.emit({\n visible: this.isUiVisible,\n });\n }\n\n /** Handler for when a Frontstage is ready */\n public static handleFrontstageReady() {\n if (!InternalUiShowHideManager._autoHideUi) return;\n InternalUiShowHideManager.showUiAndResetTimer();\n }\n\n /** Handler for when the mouse moves over the content area */\n public static handleContentMouseMove(\n _event?: React.MouseEvent<HTMLElement, MouseEvent>\n ) {\n useCursorInformationStore.getState().setContentHovered(true);\n if (!InternalUiShowHideManager._autoHideUi) return;\n InternalUiShowHideManager.showUiAndResetTimer();\n }\n\n /** Handler for when the mouse leaves the content area */\n public static handleContentMouseLeave(\n _event?: React.MouseEvent<HTMLElement, MouseEvent>\n ) {\n useCursorInformationStore.getState().setContentHovered(false);\n }\n\n /** Handler for when the mouse enters a widget */\n public static handleWidgetMouseEnter(\n _event?: React.MouseEvent<HTMLElement, MouseEvent>\n ) {\n if (!InternalUiShowHideManager._autoHideUi) return;\n InternalUiShowHideManager.showUiAndCancelTimer();\n }\n\n /** Shows the Ui and resets the inactivity timer */\n public static showUiAndResetTimer() {\n this.isUiVisible = true;\n\n window.clearTimeout(this._timeout);\n if (!this._autoHideUi) return;\n this._timeout = window.setTimeout(() => {\n this.isUiVisible = false;\n }, this._inactivityTime);\n }\n\n /** Shows the Ui and cancels the inactivity timer */\n public static showUiAndCancelTimer() {\n this.isUiVisible = true;\n window.clearTimeout(this._timeout);\n }\n\n public static terminate() {\n window.clearTimeout(this._timeout);\n this._isUiVisible = true;\n this._autoHideUi = true;\n this._showHidePanels = false;\n this._showHideFooter = false;\n this._inactivityTime = INACTIVITY_TIME_DEFAULT;\n this._useProximityOpacity = false;\n this._snapWidgetOpacity = false;\n }\n}\n"]}
@@ -17,13 +17,10 @@ import { UiFramework } from "../UiFramework.js";
17
17
  * @deprecated in 4.16.0. Use {@link StatusBarComposer} component instead.
18
18
  */
19
19
  export class StatusBarWidgetComposerControl extends StatusBarWidgetControl {
20
- constructor() {
21
- super(...arguments);
22
- this.id = StatusBarWidgetComposerControl.controlId;
23
- }
20
+ static controlId = "uifw:StatusBarWidgetComposerControl";
21
+ id = StatusBarWidgetComposerControl.controlId;
24
22
  getReactNode() {
25
23
  return (React.createElement(StatusBarComposer, { key: UiFramework.frontstages.activeFrontstageId, items: [] }));
26
24
  }
27
25
  }
28
- StatusBarWidgetComposerControl.controlId = "uifw:StatusBarWidgetComposerControl";
29
26
  //# sourceMappingURL=StatusBarWidgetComposerControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBarWidgetComposerControl.js","sourceRoot":"","sources":["../../../src/appui-react/widgets/StatusBarWidgetComposerControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qDAAqD;AAErD;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,sBAAsB;IAA1E;;QAEkB,OAAE,GAAG,8BAA8B,CAAC,SAAS,CAAC;IAUhE,CAAC;IARQ,YAAY;QACjB,OAAO,CACL,oBAAC,iBAAiB,IAChB,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,kBAAkB,EAC/C,KAAK,EAAE,EAAE,GACT,CACH,CAAC;IACJ,CAAC;;AAVa,wCAAS,GAAG,qCAAqC,AAAxC,CAAyC","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 Widget\n */\n\nimport * as React from \"react\";\nimport { StatusBarComposer } from \"../statusbar/StatusBarComposer.js\";\nimport { StatusBarWidgetControl } from \"../statusbar/StatusBarWidgetControl.js\";\nimport { UiFramework } from \"../UiFramework.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** StatusBarWidgetComposerControl provides status bar to specified Frontstage that allows status bar items to be populated\n * via UiItemsProviders. See [[StandardStatusbarItemsProvider]] that can be used to populate this status bar with a common\n * set of status fields.\n * @public\n * @deprecated in 4.16.0. Use {@link StatusBarComposer} component instead.\n */\nexport class StatusBarWidgetComposerControl extends StatusBarWidgetControl {\n public static controlId = \"uifw:StatusBarWidgetComposerControl\";\n public readonly id = StatusBarWidgetComposerControl.controlId;\n\n public getReactNode(): React.ReactNode {\n return (\n <StatusBarComposer\n key={UiFramework.frontstages.activeFrontstageId}\n items={[]}\n />\n );\n }\n}\n"]}
1
+ {"version":3,"file":"StatusBarWidgetComposerControl.js","sourceRoot":"","sources":["../../../src/appui-react/widgets/StatusBarWidgetComposerControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qDAAqD;AAErD;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,sBAAsB;IACjE,MAAM,CAAC,SAAS,GAAG,qCAAqC,CAAC;IAChD,EAAE,GAAG,8BAA8B,CAAC,SAAS,CAAC;IAEvD,YAAY;QACjB,OAAO,CACL,oBAAC,iBAAiB,IAChB,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,kBAAkB,EAC/C,KAAK,EAAE,EAAE,GACT,CACH,CAAC;IACJ,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 Widget\n */\n\nimport * as React from \"react\";\nimport { StatusBarComposer } from \"../statusbar/StatusBarComposer.js\";\nimport { StatusBarWidgetControl } from \"../statusbar/StatusBarWidgetControl.js\";\nimport { UiFramework } from \"../UiFramework.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** StatusBarWidgetComposerControl provides status bar to specified Frontstage that allows status bar items to be populated\n * via UiItemsProviders. See [[StandardStatusbarItemsProvider]] that can be used to populate this status bar with a common\n * set of status fields.\n * @public\n * @deprecated in 4.16.0. Use {@link StatusBarComposer} component instead.\n */\nexport class StatusBarWidgetComposerControl extends StatusBarWidgetControl {\n public static controlId = \"uifw:StatusBarWidgetComposerControl\";\n public readonly id = StatusBarWidgetComposerControl.controlId;\n\n public getReactNode(): React.ReactNode {\n return (\n <StatusBarComposer\n key={UiFramework.frontstages.activeFrontstageId}\n items={[]}\n />\n );\n }\n}\n"]}
@@ -12,6 +12,8 @@ import { ConfigurableUiControl, ConfigurableUiControlType, } from "../configurab
12
12
  * @deprecated in 4.16.0. Extends a deprecated class {@link ConfigurableUiControl}.
13
13
  */
14
14
  export class WidgetControl extends ConfigurableUiControl {
15
+ _widgetDef;
16
+ _reactNode;
15
17
  constructor(info, options) {
16
18
  super(info, options);
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetControl.js","sourceRoot":"","sources":["../../../src/appui-react/widgets/WidgetControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4CAA4C,CAAC;AAIpD,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,qBAAqB;IAItD,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,iDAAiD;IACjD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,SAAS,CAAC,CAAkB;QACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,qDAAqD;IACrD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,SAAS,CAAC,CAAY;QAC/B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,6EAA6E;IACtE,OAAO;QACZ,OAAO,yBAAyB,CAAC,MAAM,CAAC;IAC1C,CAAC;IAED,gDAAgD;IACzC,cAAc,CAAC,KAAkB;QACtC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,wCAAwC;IACjC,oBAAoB,KAAU,CAAC;IAEtC,kEAAkE;IAC3D,kBAAkB,KAAU,CAAC;IAEpC;;OAEG;IACI,qBAAqB;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport type * as React from \"react\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport {\n ConfigurableUiControl,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl.js\";\nimport type { WidgetDef } from \"./WidgetDef.js\";\nimport type { WidgetState } from \"./WidgetState.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** The base class for Widget controls.\n * @public\n * @deprecated in 4.16.0. Extends a deprecated class {@link ConfigurableUiControl}.\n */\nexport class WidgetControl extends ConfigurableUiControl {\n private _widgetDef!: WidgetDef;\n private _reactNode: React.ReactNode;\n\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n }\n\n /** The ReactNode associated with this control */\n public get reactNode(): React.ReactNode {\n return this._reactNode;\n }\n public set reactNode(r: React.ReactNode) {\n this._reactNode = r;\n }\n\n /** The [[WidgetDef]] associated with this control */\n public get widgetDef(): WidgetDef {\n return this._widgetDef;\n }\n public set widgetDef(w: WidgetDef) {\n this._widgetDef = w;\n }\n\n /** Gets the type of ConfigurableUiControl, which is 'Widget' in this case */\n public getType(): ConfigurableUiControlType {\n return ConfigurableUiControlType.Widget;\n }\n\n /** Sets the [[WidgetState]] for this control */\n public setWidgetState(state: WidgetState): void {\n this.widgetDef.setWidgetState(state);\n }\n\n /** Called when widget state changes. */\n public onWidgetStateChanged(): void {}\n\n /** Overwrite to save transient DOM state (i.e. scroll offset). */\n public saveTransientState(): void {}\n\n /** Overwrite to restore transient DOM state.\n * @note Return true if the state is restored or the Widget will remount.\n */\n public restoreTransientState(): boolean {\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"WidgetControl.js","sourceRoot":"","sources":["../../../src/appui-react/widgets/WidgetControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4CAA4C,CAAC;AAIpD,qDAAqD;AAErD;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,qBAAqB;IAC9C,UAAU,CAAa;IACvB,UAAU,CAAkB;IAEpC,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,iDAAiD;IACjD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,SAAS,CAAC,CAAkB;QACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,qDAAqD;IACrD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,SAAS,CAAC,CAAY;QAC/B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,6EAA6E;IACtE,OAAO;QACZ,OAAO,yBAAyB,CAAC,MAAM,CAAC;IAC1C,CAAC;IAED,gDAAgD;IACzC,cAAc,CAAC,KAAkB;QACtC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,wCAAwC;IACjC,oBAAoB,KAAU,CAAC;IAEtC,kEAAkE;IAC3D,kBAAkB,KAAU,CAAC;IAEpC;;OAEG;IACI,qBAAqB;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport type * as React from \"react\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport {\n ConfigurableUiControl,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl.js\";\nimport type { WidgetDef } from \"./WidgetDef.js\";\nimport type { WidgetState } from \"./WidgetState.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** The base class for Widget controls.\n * @public\n * @deprecated in 4.16.0. Extends a deprecated class {@link ConfigurableUiControl}.\n */\nexport class WidgetControl extends ConfigurableUiControl {\n private _widgetDef!: WidgetDef;\n private _reactNode: React.ReactNode;\n\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n }\n\n /** The ReactNode associated with this control */\n public get reactNode(): React.ReactNode {\n return this._reactNode;\n }\n public set reactNode(r: React.ReactNode) {\n this._reactNode = r;\n }\n\n /** The [[WidgetDef]] associated with this control */\n public get widgetDef(): WidgetDef {\n return this._widgetDef;\n }\n public set widgetDef(w: WidgetDef) {\n this._widgetDef = w;\n }\n\n /** Gets the type of ConfigurableUiControl, which is 'Widget' in this case */\n public getType(): ConfigurableUiControlType {\n return ConfigurableUiControlType.Widget;\n }\n\n /** Sets the [[WidgetState]] for this control */\n public setWidgetState(state: WidgetState): void {\n this.widgetDef.setWidgetState(state);\n }\n\n /** Called when widget state changes. */\n public onWidgetStateChanged(): void {}\n\n /** Overwrite to save transient DOM state (i.e. scroll offset). */\n public saveTransientState(): void {}\n\n /** Overwrite to restore transient DOM state.\n * @note Return true if the state is restored or the Widget will remount.\n */\n public restoreTransientState(): boolean {\n return false;\n }\n}\n"]}
@@ -38,6 +38,34 @@ export var WidgetType;
38
38
  * @public
39
39
  */
40
40
  export class WidgetDef {
41
+ static _sId = 0;
42
+ _label = "";
43
+ _tooltip = "";
44
+ _widgetReactNode;
45
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
46
+ _widgetControl;
47
+ _defaultState = WidgetState.Closed;
48
+ _id;
49
+ _priority = 0;
50
+ _stateChanged = false;
51
+ _widgetType = WidgetType.Rectangular;
52
+ _applicationData;
53
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
54
+ _iconSpec;
55
+ _internalData;
56
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
57
+ _badge;
58
+ _badgeKind;
59
+ _saveTransientState;
60
+ _restoreTransientState;
61
+ _preferredPanelSize;
62
+ _defaultFloatingSize;
63
+ _canPopout;
64
+ _floatingContainerId;
65
+ _defaultFloatingPosition;
66
+ _hideWithUiWhenFloating;
67
+ _allowedPanelTargets;
68
+ _initialConfig;
41
69
  get state() {
42
70
  const frontstageDef = UiFramework.frontstages.activeFrontstageDef;
43
71
  const nineZone = frontstageDef?.nineZoneState;
@@ -137,12 +165,6 @@ export class WidgetDef {
137
165
  return this._defaultState;
138
166
  }
139
167
  constructor() {
140
- this._label = "";
141
- this._tooltip = "";
142
- this._defaultState = WidgetState.Closed;
143
- this._priority = 0;
144
- this._stateChanged = false;
145
- this._widgetType = WidgetType.Rectangular;
146
168
  WidgetDef._sId++;
147
169
  this._id = `Widget-${WidgetDef._sId}`;
148
170
  }
@@ -450,7 +472,6 @@ export class WidgetDef {
450
472
  return this._widgetControl;
451
473
  }
452
474
  }
453
- WidgetDef._sId = 0;
454
475
  /** @internal */
455
476
  export function getWidgetState(widgetId, nineZone) {
456
477
  const tab = nineZone.tabs[widgetId];
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetDef.js","sourceRoot":"","sources":["../../../src/appui-react/widgets/WidgetDef.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 Widget\n */\n\nimport type * as React from \"react\";\nimport type {\n ConditionalStringValue,\n StringGetter,\n} from \"@itwin/appui-abstract\";\nimport { UiError, UiEvent } from \"@itwin/appui-abstract\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ConfigurableUiControlConstructor } from \"../configurableui/ConfigurableUiControl.js\";\nimport {\n ConfigurableCreateInfo,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { PropsHelper } from \"../utils/PropsHelper.js\";\nimport type { WidgetControl } from \"./WidgetControl.js\";\nimport type { BadgeType, IconSpec } from \"@itwin/core-react\";\nimport type { BadgeKind } from \"@itwin/core-react/internal\";\nimport { IconHelper } from \"@itwin/core-react\";\nimport type { WidgetConfig } from \"./WidgetConfig.js\";\nimport { WidgetState } from \"./WidgetState.js\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport { StatusBarWidgetComposerControl } from \"./StatusBarWidgetComposerControl.js\";\nimport {\n getTabLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n} from \"../layout/state/TabLocation.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\nimport { Widget } from \"./Widget.js\";\n\n/** Widget State Changed Event Args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface WidgetStateChangedEventArgs {\n widgetDef: WidgetDef;\n widgetState: WidgetState;\n}\n\n/** Widget State Changed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class WidgetStateChangedEvent extends UiEvent<WidgetStateChangedEventArgs> {}\n\n/** Widget type enum.\n * @public\n */\nexport enum WidgetType {\n Tool,\n Navigation,\n Rectangular,\n ToolSettings,\n StatusBar,\n}\n\n// -----------------------------------------------------------------------------\n\n/** A Widget Definition in the 9-Zone Layout system.\n * @public\n */\nexport class WidgetDef {\n private static _sId = 0;\n private _label: string | ConditionalStringValue | StringGetter = \"\";\n private _tooltip: string | ConditionalStringValue | StringGetter = \"\";\n private _widgetReactNode: React.ReactNode;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _widgetControl!: WidgetControl;\n private _defaultState: WidgetState = WidgetState.Closed;\n private _id: string;\n private _priority: number = 0;\n private _stateChanged: boolean = false;\n private _widgetType: WidgetType = WidgetType.Rectangular;\n private _applicationData?: any;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _iconSpec?: IconSpec;\n private _internalData?: Map<string, any>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _badge?: BadgeType;\n private _badgeKind?: BadgeKind;\n private _saveTransientState?: () => void;\n private _restoreTransientState?: () => boolean;\n private _preferredPanelSize: \"fit-content\" | undefined;\n private _defaultFloatingSize: SizeProps | undefined;\n private _canPopout?: boolean;\n private _floatingContainerId?: string;\n private _defaultFloatingPosition: XAndY | undefined;\n\n private _hideWithUiWhenFloating?: boolean;\n private _allowedPanelTargets?: ReadonlyArray<StagePanelLocation>;\n private _initialConfig?: WidgetConfig;\n\n public get state(): WidgetState {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const nineZone = frontstageDef?.nineZoneState;\n if (!nineZone) return this.defaultState;\n if (!frontstageDef.findWidgetDef(this.id)) return this.defaultState;\n return getWidgetState(this.id, nineZone);\n }\n\n public get id(): string {\n return this._id;\n }\n\n public get priority(): number {\n return this._priority;\n }\n\n public get isFloatingStateSupported(): boolean {\n if (!this.initialConfig) return true;\n\n const allowedPanels = this.initialConfig.allowedPanels;\n if (allowedPanels && allowedPanels.length === 0) {\n return true;\n }\n\n const canFloat = this.initialConfig.canFloat;\n if (canFloat === undefined) return true;\n return !!canFloat;\n }\n\n public get isFloatingStateWindowResizable(): boolean {\n const canFloat = this.initialConfig?.canFloat;\n if (typeof canFloat === \"object\") {\n return canFloat.isResizable === undefined ? true : canFloat.isResizable;\n }\n\n return true;\n }\n\n public get isToolSettings(): boolean {\n return this._widgetType === WidgetType.ToolSettings;\n }\n public get isStatusBar(): boolean {\n return this._widgetType === WidgetType.StatusBar;\n }\n public get stateChanged(): boolean {\n return this._stateChanged;\n }\n public get applicationData(): any {\n return this._applicationData;\n }\n public get isFloating(): boolean {\n return this.state === WidgetState.Floating;\n }\n\n /** @deprecated in 4.16.0. Use {@link Widget.iconNode} instead. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public get iconSpec(): IconSpec {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return this._iconSpec === IconHelper.reactIconKey\n ? IconHelper.getIconReactNode(this._iconSpec, this._internalData) // eslint-disable-line @typescript-eslint/no-deprecated\n : this._iconSpec;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public set iconSpec(spec: IconSpec) {\n // Setter is deprecated as well: ae-setter-with-docs.\n this._iconSpec = this._internalData\n ? IconHelper.getIconData(spec, this._internalData) // eslint-disable-line @typescript-eslint/no-deprecated\n : spec;\n }\n /** @deprecated in 4.16.0. Use `badgeKind` instead. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public get badgeType(): BadgeType | undefined {\n return this._badge;\n }\n public get badgeKind(): BadgeKind | undefined {\n return this._badgeKind;\n }\n public get initialConfig(): WidgetConfig | undefined {\n return this._initialConfig;\n }\n\n public get widgetType(): WidgetType {\n return this._widgetType;\n }\n public set widgetType(type: WidgetType) {\n this._widgetType = type;\n }\n\n /** @internal */\n public get defaultFloatingPosition() {\n return this._defaultFloatingPosition;\n }\n public set defaultFloatingPosition(position: XAndY | undefined) {\n this._defaultFloatingPosition = position;\n }\n\n /** @internal */\n public get defaultFloatingSize() {\n return this._defaultFloatingSize;\n }\n public set defaultFloatingSize(size: SizeProps | undefined) {\n this._defaultFloatingSize = size;\n }\n\n public get defaultState() {\n return this._defaultState;\n }\n\n constructor() {\n WidgetDef._sId++;\n this._id = `Widget-${WidgetDef._sId}`;\n }\n\n /** @internal */\n public static create(\n config: WidgetConfig,\n type: WidgetType = WidgetType.Rectangular\n ) {\n const def = new WidgetDef();\n def.initializeFromConfig(config, type);\n return def;\n }\n\n private initializeFromConfig(config: WidgetConfig, type: WidgetType) {\n this._widgetType = type;\n this._initialConfig = config;\n this._id = config.id;\n\n if (config.label) this._label = config.label;\n else if (config.labelKey)\n this._label = IModelApp.localization.getLocalizedString(config.labelKey);\n else if (type === WidgetType.ToolSettings) this._label = \"Tool Settings\";\n\n this.setCanPopout(config.canPopout);\n\n const canFloat = config.canFloat;\n if (typeof canFloat === \"object\") {\n this.setFloatingContainerId(canFloat.containerId);\n this.defaultFloatingPosition = canFloat.defaultPosition;\n this._hideWithUiWhenFloating = !!canFloat.hideWithUi;\n this._defaultFloatingSize = canFloat.defaultSize;\n }\n\n if (\"allowedPanels\" in config) {\n this.allowedPanelTargets = config.allowedPanels;\n } else if (type === WidgetType.ToolSettings)\n this.allowedPanelTargets = [\n StagePanelLocation.Bottom,\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n ];\n\n if (config.priority !== undefined) this._priority = config.priority;\n\n if (config.tooltip) this.setTooltip(config.tooltip);\n else if (config.tooltipKey)\n this._tooltip = IModelApp.localization.getLocalizedString(\n config.tooltipKey\n );\n\n if (config.defaultState !== undefined) {\n this._defaultState = config.defaultState;\n }\n\n if (\n config.allowedPanels &&\n config.allowedPanels.length === 0 &&\n config.defaultState === WidgetState.Open\n ) {\n this._defaultState = WidgetState.Floating;\n }\n\n this._widgetReactNode = config.content;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._iconSpec = config.iconNode ?? config.icon;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._badge = config.badge;\n this._badgeKind = config.badgeKind;\n\n this._preferredPanelSize = config.preferredPanelSize;\n }\n\n /** @alpha */\n public get preferredPanelSize() {\n return this._preferredPanelSize;\n }\n\n /** Get the label string */\n public get label(): string {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return PropsHelper.getStringFromSpec(this._label);\n }\n\n /** Set the label.\n * @param labelSpec A string or a function to get the string.\n */\n public setLabel(labelSpec: string | ConditionalStringValue | StringGetter) {\n this._label = labelSpec; // TODO: handle ConditionalStringValue\n\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const label = PropsHelper.getStringFromSpec(labelSpec);\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SET_LABEL\",\n id: this.id,\n label,\n });\n }\n\n /** Get the tooltip string */\n public get tooltip(): string {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return PropsHelper.getStringFromSpec(this._tooltip);\n }\n\n /** Set the tooltip.\n * @param v A string or a function to get the string.\n */\n public setTooltip(v: string | ConditionalStringValue | StringGetter) {\n this._tooltip = v;\n }\n\n public get reactNode(): React.ReactNode {\n if (!this._widgetReactNode) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControl = this.getWidgetControl(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ConfigurableUiControlType.Widget\n );\n\n if (widgetControl && widgetControl.reactNode)\n this._widgetReactNode = widgetControl.reactNode;\n }\n\n return this._widgetReactNode;\n }\n\n public set reactNode(node: React.ReactNode) {\n this._widgetReactNode = node;\n }\n\n public setWidgetState(newState: WidgetState): void {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const nineZone = frontstageDef?.nineZoneState;\n if (!nineZone || this.isStatusBar) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n switch (newState) {\n case WidgetState.Closed: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_CLOSE\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Floating: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: this.id,\n position: this._defaultFloatingPosition,\n });\n break;\n }\n case WidgetState.Hidden: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_HIDE\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Open: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_OPEN\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Unloaded: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_UNLOAD\",\n id: this.id,\n });\n break;\n }\n }\n }\n\n /** @internal */\n public handleWidgetStateChanged(newState: WidgetState) {\n this._stateChanged = true;\n UiFramework.frontstages.onWidgetStateChangedEvent.emit({\n widgetDef: this,\n widgetState: newState,\n });\n this.onWidgetStateChanged();\n }\n\n public setCanPopout(value: boolean | undefined) {\n this._canPopout = value;\n }\n\n public get canPopout(): boolean | undefined {\n return this._canPopout;\n }\n\n public setFloatingContainerId(value: string | undefined) {\n this._floatingContainerId = value;\n }\n\n public get floatingContainerId(): string | undefined {\n return this._floatingContainerId;\n }\n\n public canOpen(): boolean {\n return this.isFloating || this.isActive;\n }\n\n public get isVisible(): boolean {\n return (\n WidgetState.Hidden !== this.state && WidgetState.Unloaded !== this.state\n );\n }\n\n public get activeState(): WidgetState {\n return this.state;\n }\n\n public get isActive(): boolean {\n return WidgetState.Open === this.activeState;\n }\n\n public set hideWithUiWhenFloating(hide: boolean | undefined) {\n this._hideWithUiWhenFloating = !!hide;\n }\n\n public get hideWithUiWhenFloating(): boolean {\n return !!this._hideWithUiWhenFloating;\n }\n\n public get allowedPanelTargets():\n | ReadonlyArray<StagePanelLocation>\n | undefined {\n return this._allowedPanelTargets;\n }\n\n public set allowedPanelTargets(\n targets: ReadonlyArray<StagePanelLocation> | undefined\n ) {\n this._allowedPanelTargets = targets;\n }\n\n public onWidgetStateChanged(): void {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.widgetControl && this.widgetControl.onWidgetStateChanged();\n }\n\n /** Overwrite to save transient DOM state (i.e. scroll offset). */\n public saveTransientState(): void {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.widgetControl && this.widgetControl.saveTransientState();\n this._saveTransientState && this._saveTransientState();\n }\n\n /** Overwrite to restore transient DOM state.\n * @note Return true if the state is restored or the Widget will remount.\n */\n public restoreTransientState(): boolean {\n let result = true;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (this.widgetControl || this._restoreTransientState) {\n let result1 = false,\n result2 = false;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (this.widgetControl)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n result1 = this.widgetControl.restoreTransientState();\n if (this._restoreTransientState) result2 = this._restoreTransientState();\n result = !(result1 || result2);\n }\n return result;\n }\n\n /** Opens the widget and makes it visible to the user.\n * @note Opens the stage panel if needed.\n * @note Brings the floating widget to the front.\n * @note Brings the window of the popout widget to the front (if allowed by the browser).\n * @public\n */\n public show() {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const nineZone = frontstageDef?.nineZoneState;\n if (!nineZone) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n const tabLocation = getTabLocation(nineZone, this.id);\n if (tabLocation && isPopoutTabLocation(tabLocation)) {\n const testWindow = UiFramework.childWindows.find(\n tabLocation.popoutWidgetId\n );\n // Try to bring the window of the popout widget to the front.\n testWindow?.window.focus();\n }\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SHOW\",\n id: this.id,\n });\n }\n\n /** Opens the widget and expands it to fill full size of the stage panel.\n * @public\n */\n public expand() {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const nineZone = frontstageDef?.nineZoneState;\n if (!nineZone) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_EXPAND\",\n id: this.id,\n });\n }\n\n /* eslint-disable @typescript-eslint/no-deprecated */\n\n /** @deprecated in 4.16.0. Uses a deprecated type {@link ConfigurableUiControlConstructor}. */\n public get classId(): string | ConfigurableUiControlConstructor | undefined {\n return undefined;\n }\n\n /** @deprecated in 4.16.0. Returns an instance of a deprecated type {@link WidgetControl}. */\n public get widgetControl(): WidgetControl | undefined {\n return this._widgetControl;\n }\n\n /** @deprecated in 4.16.0. Returns an instance of a deprecated type {@link WidgetControl}. */\n public getWidgetControl(\n type: ConfigurableUiControlType\n ): WidgetControl | undefined {\n if (!this._widgetControl && this.classId) {\n let usedClassId: string = \"\";\n\n if (typeof this.classId === \"string\") {\n if (this.classId)\n this._widgetControl = UiFramework.controls.create(\n this.classId,\n this.id,\n this.applicationData\n ) as WidgetControl;\n usedClassId = this.classId;\n } else {\n const info = new ConfigurableCreateInfo(\n this.classId.name,\n this.id,\n this.id\n );\n usedClassId = this.classId.name;\n this._widgetControl = new this.classId(\n info,\n this.applicationData\n ) as WidgetControl;\n }\n\n if (this._widgetControl) {\n if (this._widgetControl.getType() !== type) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"WidgetDef\"),\n `getWidgetControl: '${usedClassId}' is NOT a ${type}; it is a ${this._widgetControl.getType()}`\n );\n }\n\n this._widgetControl.widgetDef = this;\n this._widgetControl.initialize();\n }\n }\n\n if (!this._widgetControl && this.isStatusBar) {\n const info = new ConfigurableCreateInfo(\n \"StatusBarWidgetComposerControl\",\n StatusBarWidgetComposerControl.controlId,\n StatusBarWidgetComposerControl.controlId\n );\n this._widgetControl = new StatusBarWidgetComposerControl(info, undefined);\n this._widgetControl.widgetDef = this;\n this._widgetControl.initialize();\n }\n\n return this._widgetControl;\n }\n\n /* eslint-enable @typescript-eslint/no-deprecated */\n}\n\n/** @internal */\nexport function getWidgetState(\n widgetId: WidgetDef[\"id\"],\n nineZone: NineZoneState\n) {\n const tab = nineZone.tabs[widgetId];\n if (tab && tab.unloaded) {\n return WidgetState.Unloaded;\n }\n\n if (nineZone.draggedTab?.tabId === widgetId) {\n return WidgetState.Closed;\n }\n\n const toolSettingsTabId = nineZone.toolSettings?.tabId;\n if (\n toolSettingsTabId === widgetId &&\n nineZone.toolSettings?.type === \"docked\"\n ) {\n return nineZone.toolSettings.hidden ? WidgetState.Hidden : WidgetState.Open;\n }\n\n const location = getTabLocation(nineZone, widgetId);\n if (!location) {\n return WidgetState.Hidden;\n }\n\n if (isFloatingTabLocation(location)) {\n return WidgetState.Floating;\n }\n\n if (isPanelTabLocation(location)) {\n const panel = nineZone.panels[location.side];\n if (panel.collapsed || undefined === panel.size || 0 === panel.size)\n return WidgetState.Closed;\n }\n\n const widget = nineZone.widgets[location.widgetId];\n if (widget.minimized || widgetId !== widget.activeTabId)\n return WidgetState.Closed;\n\n return WidgetState.Open;\n}\n"]}
1
+ {"version":3,"file":"WidgetDef.js","sourceRoot":"","sources":["../../../src/appui-react/widgets/WidgetDef.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 Widget\n */\n\nimport type * as React from \"react\";\nimport type {\n ConditionalStringValue,\n StringGetter,\n} from \"@itwin/appui-abstract\";\nimport { UiError, UiEvent } from \"@itwin/appui-abstract\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ConfigurableUiControlConstructor } from \"../configurableui/ConfigurableUiControl.js\";\nimport {\n ConfigurableCreateInfo,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { PropsHelper } from \"../utils/PropsHelper.js\";\nimport type { WidgetControl } from \"./WidgetControl.js\";\nimport type { BadgeType, IconSpec } from \"@itwin/core-react\";\nimport type { BadgeKind } from \"@itwin/core-react/internal\";\nimport { IconHelper } from \"@itwin/core-react\";\nimport type { WidgetConfig } from \"./WidgetConfig.js\";\nimport { WidgetState } from \"./WidgetState.js\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport { StatusBarWidgetComposerControl } from \"./StatusBarWidgetComposerControl.js\";\nimport {\n getTabLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n} from \"../layout/state/TabLocation.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\nimport { Widget } from \"./Widget.js\";\n\n/** Widget State Changed Event Args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface WidgetStateChangedEventArgs {\n widgetDef: WidgetDef;\n widgetState: WidgetState;\n}\n\n/** Widget State Changed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class WidgetStateChangedEvent extends UiEvent<WidgetStateChangedEventArgs> {}\n\n/** Widget type enum.\n * @public\n */\nexport enum WidgetType {\n Tool,\n Navigation,\n Rectangular,\n ToolSettings,\n StatusBar,\n}\n\n// -----------------------------------------------------------------------------\n\n/** A Widget Definition in the 9-Zone Layout system.\n * @public\n */\nexport class WidgetDef {\n private static _sId = 0;\n private _label: string | ConditionalStringValue | StringGetter = \"\";\n private _tooltip: string | ConditionalStringValue | StringGetter = \"\";\n private _widgetReactNode: React.ReactNode;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _widgetControl!: WidgetControl;\n private _defaultState: WidgetState = WidgetState.Closed;\n private _id: string;\n private _priority: number = 0;\n private _stateChanged: boolean = false;\n private _widgetType: WidgetType = WidgetType.Rectangular;\n private _applicationData?: any;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _iconSpec?: IconSpec;\n private _internalData?: Map<string, any>;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _badge?: BadgeType;\n private _badgeKind?: BadgeKind;\n private _saveTransientState?: () => void;\n private _restoreTransientState?: () => boolean;\n private _preferredPanelSize: \"fit-content\" | undefined;\n private _defaultFloatingSize: SizeProps | undefined;\n private _canPopout?: boolean;\n private _floatingContainerId?: string;\n private _defaultFloatingPosition: XAndY | undefined;\n\n private _hideWithUiWhenFloating?: boolean;\n private _allowedPanelTargets?: ReadonlyArray<StagePanelLocation>;\n private _initialConfig?: WidgetConfig;\n\n public get state(): WidgetState {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const nineZone = frontstageDef?.nineZoneState;\n if (!nineZone) return this.defaultState;\n if (!frontstageDef.findWidgetDef(this.id)) return this.defaultState;\n return getWidgetState(this.id, nineZone);\n }\n\n public get id(): string {\n return this._id;\n }\n\n public get priority(): number {\n return this._priority;\n }\n\n public get isFloatingStateSupported(): boolean {\n if (!this.initialConfig) return true;\n\n const allowedPanels = this.initialConfig.allowedPanels;\n if (allowedPanels && allowedPanels.length === 0) {\n return true;\n }\n\n const canFloat = this.initialConfig.canFloat;\n if (canFloat === undefined) return true;\n return !!canFloat;\n }\n\n public get isFloatingStateWindowResizable(): boolean {\n const canFloat = this.initialConfig?.canFloat;\n if (typeof canFloat === \"object\") {\n return canFloat.isResizable === undefined ? true : canFloat.isResizable;\n }\n\n return true;\n }\n\n public get isToolSettings(): boolean {\n return this._widgetType === WidgetType.ToolSettings;\n }\n public get isStatusBar(): boolean {\n return this._widgetType === WidgetType.StatusBar;\n }\n public get stateChanged(): boolean {\n return this._stateChanged;\n }\n public get applicationData(): any {\n return this._applicationData;\n }\n public get isFloating(): boolean {\n return this.state === WidgetState.Floating;\n }\n\n /** @deprecated in 4.16.0. Use {@link Widget.iconNode} instead. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public get iconSpec(): IconSpec {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return this._iconSpec === IconHelper.reactIconKey\n ? IconHelper.getIconReactNode(this._iconSpec, this._internalData) // eslint-disable-line @typescript-eslint/no-deprecated\n : this._iconSpec;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public set iconSpec(spec: IconSpec) {\n // Setter is deprecated as well: ae-setter-with-docs.\n this._iconSpec = this._internalData\n ? IconHelper.getIconData(spec, this._internalData) // eslint-disable-line @typescript-eslint/no-deprecated\n : spec;\n }\n /** @deprecated in 4.16.0. Use `badgeKind` instead. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public get badgeType(): BadgeType | undefined {\n return this._badge;\n }\n public get badgeKind(): BadgeKind | undefined {\n return this._badgeKind;\n }\n public get initialConfig(): WidgetConfig | undefined {\n return this._initialConfig;\n }\n\n public get widgetType(): WidgetType {\n return this._widgetType;\n }\n public set widgetType(type: WidgetType) {\n this._widgetType = type;\n }\n\n /** @internal */\n public get defaultFloatingPosition() {\n return this._defaultFloatingPosition;\n }\n public set defaultFloatingPosition(position: XAndY | undefined) {\n this._defaultFloatingPosition = position;\n }\n\n /** @internal */\n public get defaultFloatingSize() {\n return this._defaultFloatingSize;\n }\n public set defaultFloatingSize(size: SizeProps | undefined) {\n this._defaultFloatingSize = size;\n }\n\n public get defaultState() {\n return this._defaultState;\n }\n\n constructor() {\n WidgetDef._sId++;\n this._id = `Widget-${WidgetDef._sId}`;\n }\n\n /** @internal */\n public static create(\n config: WidgetConfig,\n type: WidgetType = WidgetType.Rectangular\n ) {\n const def = new WidgetDef();\n def.initializeFromConfig(config, type);\n return def;\n }\n\n private initializeFromConfig(config: WidgetConfig, type: WidgetType) {\n this._widgetType = type;\n this._initialConfig = config;\n this._id = config.id;\n\n if (config.label) this._label = config.label;\n else if (config.labelKey)\n this._label = IModelApp.localization.getLocalizedString(config.labelKey);\n else if (type === WidgetType.ToolSettings) this._label = \"Tool Settings\";\n\n this.setCanPopout(config.canPopout);\n\n const canFloat = config.canFloat;\n if (typeof canFloat === \"object\") {\n this.setFloatingContainerId(canFloat.containerId);\n this.defaultFloatingPosition = canFloat.defaultPosition;\n this._hideWithUiWhenFloating = !!canFloat.hideWithUi;\n this._defaultFloatingSize = canFloat.defaultSize;\n }\n\n if (\"allowedPanels\" in config) {\n this.allowedPanelTargets = config.allowedPanels;\n } else if (type === WidgetType.ToolSettings)\n this.allowedPanelTargets = [\n StagePanelLocation.Bottom,\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n ];\n\n if (config.priority !== undefined) this._priority = config.priority;\n\n if (config.tooltip) this.setTooltip(config.tooltip);\n else if (config.tooltipKey)\n this._tooltip = IModelApp.localization.getLocalizedString(\n config.tooltipKey\n );\n\n if (config.defaultState !== undefined) {\n this._defaultState = config.defaultState;\n }\n\n if (\n config.allowedPanels &&\n config.allowedPanels.length === 0 &&\n config.defaultState === WidgetState.Open\n ) {\n this._defaultState = WidgetState.Floating;\n }\n\n this._widgetReactNode = config.content;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._iconSpec = config.iconNode ?? config.icon;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._badge = config.badge;\n this._badgeKind = config.badgeKind;\n\n this._preferredPanelSize = config.preferredPanelSize;\n }\n\n /** @alpha */\n public get preferredPanelSize() {\n return this._preferredPanelSize;\n }\n\n /** Get the label string */\n public get label(): string {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return PropsHelper.getStringFromSpec(this._label);\n }\n\n /** Set the label.\n * @param labelSpec A string or a function to get the string.\n */\n public setLabel(labelSpec: string | ConditionalStringValue | StringGetter) {\n this._label = labelSpec; // TODO: handle ConditionalStringValue\n\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const label = PropsHelper.getStringFromSpec(labelSpec);\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SET_LABEL\",\n id: this.id,\n label,\n });\n }\n\n /** Get the tooltip string */\n public get tooltip(): string {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return PropsHelper.getStringFromSpec(this._tooltip);\n }\n\n /** Set the tooltip.\n * @param v A string or a function to get the string.\n */\n public setTooltip(v: string | ConditionalStringValue | StringGetter) {\n this._tooltip = v;\n }\n\n public get reactNode(): React.ReactNode {\n if (!this._widgetReactNode) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControl = this.getWidgetControl(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ConfigurableUiControlType.Widget\n );\n\n if (widgetControl && widgetControl.reactNode)\n this._widgetReactNode = widgetControl.reactNode;\n }\n\n return this._widgetReactNode;\n }\n\n public set reactNode(node: React.ReactNode) {\n this._widgetReactNode = node;\n }\n\n public setWidgetState(newState: WidgetState): void {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const nineZone = frontstageDef?.nineZoneState;\n if (!nineZone || this.isStatusBar) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n switch (newState) {\n case WidgetState.Closed: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_CLOSE\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Floating: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: this.id,\n position: this._defaultFloatingPosition,\n });\n break;\n }\n case WidgetState.Hidden: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_HIDE\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Open: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_OPEN\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Unloaded: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_UNLOAD\",\n id: this.id,\n });\n break;\n }\n }\n }\n\n /** @internal */\n public handleWidgetStateChanged(newState: WidgetState) {\n this._stateChanged = true;\n UiFramework.frontstages.onWidgetStateChangedEvent.emit({\n widgetDef: this,\n widgetState: newState,\n });\n this.onWidgetStateChanged();\n }\n\n public setCanPopout(value: boolean | undefined) {\n this._canPopout = value;\n }\n\n public get canPopout(): boolean | undefined {\n return this._canPopout;\n }\n\n public setFloatingContainerId(value: string | undefined) {\n this._floatingContainerId = value;\n }\n\n public get floatingContainerId(): string | undefined {\n return this._floatingContainerId;\n }\n\n public canOpen(): boolean {\n return this.isFloating || this.isActive;\n }\n\n public get isVisible(): boolean {\n return (\n WidgetState.Hidden !== this.state && WidgetState.Unloaded !== this.state\n );\n }\n\n public get activeState(): WidgetState {\n return this.state;\n }\n\n public get isActive(): boolean {\n return WidgetState.Open === this.activeState;\n }\n\n public set hideWithUiWhenFloating(hide: boolean | undefined) {\n this._hideWithUiWhenFloating = !!hide;\n }\n\n public get hideWithUiWhenFloating(): boolean {\n return !!this._hideWithUiWhenFloating;\n }\n\n public get allowedPanelTargets():\n | ReadonlyArray<StagePanelLocation>\n | undefined {\n return this._allowedPanelTargets;\n }\n\n public set allowedPanelTargets(\n targets: ReadonlyArray<StagePanelLocation> | undefined\n ) {\n this._allowedPanelTargets = targets;\n }\n\n public onWidgetStateChanged(): void {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.widgetControl && this.widgetControl.onWidgetStateChanged();\n }\n\n /** Overwrite to save transient DOM state (i.e. scroll offset). */\n public saveTransientState(): void {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.widgetControl && this.widgetControl.saveTransientState();\n this._saveTransientState && this._saveTransientState();\n }\n\n /** Overwrite to restore transient DOM state.\n * @note Return true if the state is restored or the Widget will remount.\n */\n public restoreTransientState(): boolean {\n let result = true;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (this.widgetControl || this._restoreTransientState) {\n let result1 = false,\n result2 = false;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (this.widgetControl)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n result1 = this.widgetControl.restoreTransientState();\n if (this._restoreTransientState) result2 = this._restoreTransientState();\n result = !(result1 || result2);\n }\n return result;\n }\n\n /** Opens the widget and makes it visible to the user.\n * @note Opens the stage panel if needed.\n * @note Brings the floating widget to the front.\n * @note Brings the window of the popout widget to the front (if allowed by the browser).\n * @public\n */\n public show() {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const nineZone = frontstageDef?.nineZoneState;\n if (!nineZone) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n const tabLocation = getTabLocation(nineZone, this.id);\n if (tabLocation && isPopoutTabLocation(tabLocation)) {\n const testWindow = UiFramework.childWindows.find(\n tabLocation.popoutWidgetId\n );\n // Try to bring the window of the popout widget to the front.\n testWindow?.window.focus();\n }\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SHOW\",\n id: this.id,\n });\n }\n\n /** Opens the widget and expands it to fill full size of the stage panel.\n * @public\n */\n public expand() {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const nineZone = frontstageDef?.nineZoneState;\n if (!nineZone) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_EXPAND\",\n id: this.id,\n });\n }\n\n /* eslint-disable @typescript-eslint/no-deprecated */\n\n /** @deprecated in 4.16.0. Uses a deprecated type {@link ConfigurableUiControlConstructor}. */\n public get classId(): string | ConfigurableUiControlConstructor | undefined {\n return undefined;\n }\n\n /** @deprecated in 4.16.0. Returns an instance of a deprecated type {@link WidgetControl}. */\n public get widgetControl(): WidgetControl | undefined {\n return this._widgetControl;\n }\n\n /** @deprecated in 4.16.0. Returns an instance of a deprecated type {@link WidgetControl}. */\n public getWidgetControl(\n type: ConfigurableUiControlType\n ): WidgetControl | undefined {\n if (!this._widgetControl && this.classId) {\n let usedClassId: string = \"\";\n\n if (typeof this.classId === \"string\") {\n if (this.classId)\n this._widgetControl = UiFramework.controls.create(\n this.classId,\n this.id,\n this.applicationData\n ) as WidgetControl;\n usedClassId = this.classId;\n } else {\n const info = new ConfigurableCreateInfo(\n this.classId.name,\n this.id,\n this.id\n );\n usedClassId = this.classId.name;\n this._widgetControl = new this.classId(\n info,\n this.applicationData\n ) as WidgetControl;\n }\n\n if (this._widgetControl) {\n if (this._widgetControl.getType() !== type) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"WidgetDef\"),\n `getWidgetControl: '${usedClassId}' is NOT a ${type}; it is a ${this._widgetControl.getType()}`\n );\n }\n\n this._widgetControl.widgetDef = this;\n this._widgetControl.initialize();\n }\n }\n\n if (!this._widgetControl && this.isStatusBar) {\n const info = new ConfigurableCreateInfo(\n \"StatusBarWidgetComposerControl\",\n StatusBarWidgetComposerControl.controlId,\n StatusBarWidgetComposerControl.controlId\n );\n this._widgetControl = new StatusBarWidgetComposerControl(info, undefined);\n this._widgetControl.widgetDef = this;\n this._widgetControl.initialize();\n }\n\n return this._widgetControl;\n }\n\n /* eslint-enable @typescript-eslint/no-deprecated */\n}\n\n/** @internal */\nexport function getWidgetState(\n widgetId: WidgetDef[\"id\"],\n nineZone: NineZoneState\n) {\n const tab = nineZone.tabs[widgetId];\n if (tab && tab.unloaded) {\n return WidgetState.Unloaded;\n }\n\n if (nineZone.draggedTab?.tabId === widgetId) {\n return WidgetState.Closed;\n }\n\n const toolSettingsTabId = nineZone.toolSettings?.tabId;\n if (\n toolSettingsTabId === widgetId &&\n nineZone.toolSettings?.type === \"docked\"\n ) {\n return nineZone.toolSettings.hidden ? WidgetState.Hidden : WidgetState.Open;\n }\n\n const location = getTabLocation(nineZone, widgetId);\n if (!location) {\n return WidgetState.Hidden;\n }\n\n if (isFloatingTabLocation(location)) {\n return WidgetState.Floating;\n }\n\n if (isPanelTabLocation(location)) {\n const panel = nineZone.panels[location.side];\n if (panel.collapsed || undefined === panel.size || 0 === panel.size)\n return WidgetState.Closed;\n }\n\n const widget = nineZone.widgets[location.widgetId];\n if (widget.minimized || widgetId !== widget.activeTabId)\n return WidgetState.Closed;\n\n return WidgetState.Open;\n}\n"]}
@@ -11,12 +11,12 @@ import { UiFramework } from "../UiFramework.js";
11
11
  * @public
12
12
  */
13
13
  export class WidgetHost {
14
+ _widgetDefs = new Array();
15
+ _dynamicWidgetDefs;
16
+ _sortedWidgetDefs = [];
14
17
  /** Constructor for WidgetHost.
15
18
  */
16
- constructor() {
17
- this._widgetDefs = new Array();
18
- this._sortedWidgetDefs = [];
19
- }
19
+ constructor() { }
20
20
  /** Adds a WidgetDef to the list of Widgets.
21
21
  * @param widgetDef Definition of the Widget to add
22
22
  */