@itwin/appui-react 3.3.0-dev.6 → 3.3.0-dev.60

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 (205) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/lib/cjs/appui-react/UiFramework.d.ts +3 -0
  3. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/cjs/appui-react/UiFramework.js +9 -0
  5. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  6. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts +2 -2
  7. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  8. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  9. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +1 -1
  10. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  11. package/lib/cjs/appui-react/configurableui/state.d.ts +4 -1
  12. package/lib/cjs/appui-react/configurableui/state.d.ts.map +1 -1
  13. package/lib/cjs/appui-react/configurableui/state.js +6 -0
  14. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  15. package/lib/cjs/appui-react/content/ContentGroup.d.ts.map +1 -1
  16. package/lib/cjs/appui-react/content/ContentGroup.js +0 -2
  17. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  18. package/lib/cjs/appui-react/content/ContentViewManager.d.ts.map +1 -1
  19. package/lib/cjs/appui-react/content/ContentViewManager.js +6 -2
  20. package/lib/cjs/appui-react/content/ContentViewManager.js.map +1 -1
  21. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  22. package/lib/cjs/appui-react/feedback/ElementTooltip.js +1 -0
  23. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  24. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  25. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +14 -3
  26. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  27. package/lib/cjs/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
  28. package/lib/cjs/appui-react/frontstage/FrontstageManager.js +2 -0
  29. package/lib/cjs/appui-react/frontstage/FrontstageManager.js.map +1 -1
  30. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.d.ts +2 -0
  31. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
  32. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +4 -3
  33. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  34. package/lib/cjs/appui-react/imodel-components/models-tree/Hierarchy.GroupedByClass.json +2 -0
  35. package/lib/cjs/appui-react/imodel-components/models-tree/Hierarchy.json +2 -0
  36. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts.map +1 -1
  37. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +40 -27
  38. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
  39. package/lib/cjs/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  40. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +13 -10
  41. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  42. package/lib/cjs/appui-react/redux/FrameworkState.d.ts +1 -1
  43. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  44. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +12 -3
  45. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  46. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts +1 -0
  47. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  48. package/lib/cjs/appui-react/statusbar/StatusBarWidgetControl.d.ts +6 -2
  49. package/lib/cjs/appui-react/statusbar/StatusBarWidgetControl.d.ts.map +1 -1
  50. package/lib/cjs/appui-react/statusbar/StatusBarWidgetControl.js.map +1 -1
  51. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts +1 -1
  52. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  53. package/lib/cjs/appui-react/statusfields/MessageCenter.js +21 -10
  54. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  55. package/lib/cjs/appui-react/statusfields/SelectionScope.js +1 -1
  56. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  57. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts +0 -1
  58. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  59. package/lib/cjs/appui-react/statusfields/SnapMode.js +0 -2
  60. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  61. package/lib/cjs/appui-react/statusfields/StatusFieldProps.d.ts +8 -4
  62. package/lib/cjs/appui-react/statusfields/StatusFieldProps.d.ts.map +1 -1
  63. package/lib/cjs/appui-react/statusfields/StatusFieldProps.js +0 -7
  64. package/lib/cjs/appui-react/statusfields/StatusFieldProps.js.map +1 -1
  65. package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  66. package/lib/cjs/appui-react/statusfields/ViewAttributes.js +1 -0
  67. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  68. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +1 -0
  69. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  70. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +13 -9
  71. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  72. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  73. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +19 -16
  74. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  75. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts +2 -0
  76. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  77. package/lib/cjs/appui-react/uistate/AppUiSettings.js +4 -0
  78. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  79. package/lib/cjs/appui-react/widget-panels/Content.d.ts.map +1 -1
  80. package/lib/cjs/appui-react/widget-panels/Content.js +10 -0
  81. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  82. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +5 -1
  83. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  84. package/lib/cjs/appui-react/widget-panels/Frontstage.js +107 -14
  85. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  86. package/lib/cjs/appui-react/widget-panels/useTransientState.d.ts +8 -0
  87. package/lib/cjs/appui-react/widget-panels/useTransientState.d.ts.map +1 -0
  88. package/lib/cjs/appui-react/widget-panels/useTransientState.js +19 -0
  89. package/lib/cjs/appui-react/widget-panels/useTransientState.js.map +1 -0
  90. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.d.ts.map +1 -1
  91. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.js +1 -0
  92. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  93. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -0
  94. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  95. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  96. package/lib/cjs/appui-react/widgets/WidgetHost.d.ts.map +1 -1
  97. package/lib/cjs/appui-react/widgets/WidgetHost.js +3 -1
  98. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  99. package/lib/cjs/appui-react.d.ts +1 -0
  100. package/lib/cjs/appui-react.d.ts.map +1 -1
  101. package/lib/cjs/appui-react.js +1 -0
  102. package/lib/cjs/appui-react.js.map +1 -1
  103. package/lib/esm/appui-react/UiFramework.d.ts +3 -0
  104. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  105. package/lib/esm/appui-react/UiFramework.js +9 -0
  106. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  107. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts +2 -2
  108. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  109. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  110. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +1 -1
  111. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  112. package/lib/esm/appui-react/configurableui/state.d.ts +4 -1
  113. package/lib/esm/appui-react/configurableui/state.d.ts.map +1 -1
  114. package/lib/esm/appui-react/configurableui/state.js +6 -0
  115. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  116. package/lib/esm/appui-react/content/ContentGroup.d.ts.map +1 -1
  117. package/lib/esm/appui-react/content/ContentGroup.js +0 -2
  118. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  119. package/lib/esm/appui-react/content/ContentViewManager.d.ts.map +1 -1
  120. package/lib/esm/appui-react/content/ContentViewManager.js +6 -2
  121. package/lib/esm/appui-react/content/ContentViewManager.js.map +1 -1
  122. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  123. package/lib/esm/appui-react/feedback/ElementTooltip.js +1 -0
  124. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  125. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  126. package/lib/esm/appui-react/frontstage/FrontstageDef.js +14 -3
  127. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  128. package/lib/esm/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
  129. package/lib/esm/appui-react/frontstage/FrontstageManager.js +2 -0
  130. package/lib/esm/appui-react/frontstage/FrontstageManager.js.map +1 -1
  131. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.d.ts +2 -0
  132. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
  133. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +4 -3
  134. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  135. package/lib/esm/appui-react/imodel-components/models-tree/Hierarchy.GroupedByClass.json +2 -0
  136. package/lib/esm/appui-react/imodel-components/models-tree/Hierarchy.json +2 -0
  137. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts.map +1 -1
  138. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +40 -27
  139. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
  140. package/lib/esm/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  141. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +13 -10
  142. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  143. package/lib/esm/appui-react/redux/FrameworkState.d.ts +1 -1
  144. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  145. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +12 -3
  146. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  147. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts +1 -0
  148. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  149. package/lib/esm/appui-react/statusbar/StatusBarWidgetControl.d.ts +6 -2
  150. package/lib/esm/appui-react/statusbar/StatusBarWidgetControl.d.ts.map +1 -1
  151. package/lib/esm/appui-react/statusbar/StatusBarWidgetControl.js.map +1 -1
  152. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts +1 -1
  153. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  154. package/lib/esm/appui-react/statusfields/MessageCenter.js +21 -10
  155. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  156. package/lib/esm/appui-react/statusfields/SelectionScope.js +1 -1
  157. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  158. package/lib/esm/appui-react/statusfields/SnapMode.d.ts +0 -1
  159. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  160. package/lib/esm/appui-react/statusfields/SnapMode.js +0 -2
  161. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  162. package/lib/esm/appui-react/statusfields/StatusFieldProps.d.ts +8 -4
  163. package/lib/esm/appui-react/statusfields/StatusFieldProps.d.ts.map +1 -1
  164. package/lib/esm/appui-react/statusfields/StatusFieldProps.js +0 -7
  165. package/lib/esm/appui-react/statusfields/StatusFieldProps.js.map +1 -1
  166. package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  167. package/lib/esm/appui-react/statusfields/ViewAttributes.js +1 -0
  168. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  169. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +1 -0
  170. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  171. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +13 -9
  172. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  173. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  174. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +19 -16
  175. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  176. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts +2 -0
  177. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  178. package/lib/esm/appui-react/uistate/AppUiSettings.js +4 -0
  179. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  180. package/lib/esm/appui-react/widget-panels/Content.d.ts.map +1 -1
  181. package/lib/esm/appui-react/widget-panels/Content.js +10 -0
  182. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  183. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +5 -1
  184. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  185. package/lib/esm/appui-react/widget-panels/Frontstage.js +108 -15
  186. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  187. package/lib/esm/appui-react/widget-panels/useTransientState.d.ts +8 -0
  188. package/lib/esm/appui-react/widget-panels/useTransientState.d.ts.map +1 -0
  189. package/lib/esm/appui-react/widget-panels/useTransientState.js +15 -0
  190. package/lib/esm/appui-react/widget-panels/useTransientState.js.map +1 -0
  191. package/lib/esm/appui-react/widget-panels/useWidgetDirection.d.ts.map +1 -1
  192. package/lib/esm/appui-react/widget-panels/useWidgetDirection.js +1 -0
  193. package/lib/esm/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  194. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -0
  195. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  196. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  197. package/lib/esm/appui-react/widgets/WidgetHost.d.ts.map +1 -1
  198. package/lib/esm/appui-react/widgets/WidgetHost.js +3 -1
  199. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  200. package/lib/esm/appui-react.d.ts +1 -0
  201. package/lib/esm/appui-react.d.ts.map +1 -1
  202. package/lib/esm/appui-react.js +1 -0
  203. package/lib/esm/appui-react.js.map +1 -1
  204. package/lib/public/locales/en/UiFramework.json +6 -1
  205. package/package.json +37 -37
@@ -1 +1 @@
1
- {"version":3,"file":"AppUiSettings.js","sourceRoot":"","sources":["../../../../src/appui-react/uistate/AppUiSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Settings\r\n */\r\n\r\nimport { UiStateEntry, UiStateStorage } from \"@itwin/core-react\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { FrameworkVersionId, UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n// cSpell:ignore configurableui\r\n\r\n/** Default values that may be specified for [[AppUiSettings]].\r\n * @public\r\n */\r\nexport interface InitialAppUiSettings {\r\n colorTheme: string;\r\n dragInteraction: boolean;\r\n frameworkVersion: FrameworkVersionId;\r\n widgetOpacity: number;\r\n showWidgetIcon?: boolean;\r\n /** @alpha */\r\n autoCollapseUnpinnedPanels?: boolean;\r\n animateToolSettings?: boolean;\r\n}\r\n\r\n/** These are the UI settings that are stored in the Redux store. They control the color theme, the UI version,\r\n * how toolbar group buttons work, and the opacity of widgets in 1.0 and floating widget in 2.0 when the cursor\r\n * is not inside them. It is expect that an IModelApp using App UI components will create and register AppUiSettings with\r\n * defaults specific to their application. This would be done by calling the following.\r\n *\r\n * ```ts\r\n * UiFramework.registerUserSettingsProvider(new AppUiSettings(defaults));\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class AppUiSettings implements UserSettingsProvider {\r\n public readonly providerId = \"AppUiSettingsProvider\";\r\n\r\n private static _settingNamespace = \"AppUiSettings\";\r\n private _settings: Array<UiStateEntry<any>> = [];\r\n private _applyingLocalSettings = false;\r\n\r\n public colorTheme: UiStateEntry<string>;\r\n public dragInteraction: UiStateEntry<boolean>;\r\n public frameworkVersion: UiStateEntry<FrameworkVersionId>;\r\n public widgetOpacity: UiStateEntry<number>;\r\n public showWidgetIcon: UiStateEntry<boolean>;\r\n public autoCollapseUnpinnedPanels: UiStateEntry<boolean>;\r\n public animateToolSettings: UiStateEntry<boolean>;\r\n\r\n private setColorTheme = (theme: string) => {\r\n UiFramework.setColorTheme(theme);\r\n // always store to local storage to avoid flicker during startup if user is not yet logged-in\r\n window.localStorage.setItem(\"uifw:defaultTheme\", theme);\r\n };\r\n\r\n constructor(defaults: Partial<InitialAppUiSettings>) {\r\n this._settings = [];\r\n\r\n this.colorTheme = new UiStateEntry<string>(AppUiSettings._settingNamespace, \"ColorTheme\", UiFramework.getColorTheme, this.setColorTheme, defaults.colorTheme);\r\n this._settings.push(this.colorTheme);\r\n\r\n this.dragInteraction = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"DragInteraction\",\r\n () => UiFramework.useDragInteraction,\r\n (value: boolean) => UiFramework.setUseDragInteraction(value), defaults.dragInteraction);\r\n this._settings.push(this.dragInteraction);\r\n\r\n this.showWidgetIcon = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"ShowWidgetIcon\",\r\n () => UiFramework.showWidgetIcon,\r\n (value: boolean) => UiFramework.setShowWidgetIcon(value), defaults.showWidgetIcon);\r\n this._settings.push(this.showWidgetIcon);\r\n\r\n this.autoCollapseUnpinnedPanels = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"AutoCollapseUnpinnedPanels\",\r\n () => UiFramework.autoCollapseUnpinnedPanels,\r\n (value: boolean) => UiFramework.setAutoCollapseUnpinnedPanels(value), defaults.autoCollapseUnpinnedPanels);\r\n this._settings.push(this.autoCollapseUnpinnedPanels);\r\n\r\n this.frameworkVersion = new UiStateEntry<FrameworkVersionId>(AppUiSettings._settingNamespace, \"FrameworkVersion\",\r\n () => UiFramework.uiVersion,\r\n (value: FrameworkVersionId) => UiFramework.setUiVersion(value), defaults.frameworkVersion);\r\n this._settings.push(this.frameworkVersion);\r\n\r\n this.widgetOpacity = new UiStateEntry<number>(AppUiSettings._settingNamespace, \"WidgetOpacity\",\r\n () => UiFramework.getWidgetOpacity(), (value: number) => UiFramework.setWidgetOpacity(value), defaults.widgetOpacity);\r\n this._settings.push(this.widgetOpacity);\r\n\r\n this.animateToolSettings = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"AnimateToolSettings\",\r\n () => UiFramework.animateToolSettings,\r\n (value: boolean) => UiFramework.setAnimateToolSettings(value), defaults.animateToolSettings);\r\n this._settings.push(this.animateToolSettings);\r\n\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this.handleSyncUiEvent);\r\n }\r\n\r\n private handleSyncUiEvent = async (args: UiSyncEventArgs) => {\r\n if (this._applyingLocalSettings)\r\n return;\r\n\r\n if (args.eventIds.has(\"configurableui:set_theme\")) {\r\n await this.colorTheme.saveSetting(UiFramework.getUiStateStorage());\r\n // always store as default theme in local storage to avoid flicker during startup if user is not yet logged-in\r\n window.localStorage.setItem(\"uifw:defaultTheme\", UiFramework.getColorTheme());\r\n }\r\n\r\n if (args.eventIds.has(\"configurableui:set-drag-interaction\"))\r\n await this.dragInteraction.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-framework-version\"))\r\n await this.frameworkVersion.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-show-widget-icon\"))\r\n await this.showWidgetIcon.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-auto-collapse-unpinned-panels\"))\r\n await this.autoCollapseUnpinnedPanels.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set_widget_opacity\"))\r\n await this.widgetOpacity.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-animate-tool-settings\"))\r\n await this.animateToolSettings.saveSetting(UiFramework.getUiStateStorage());\r\n };\r\n\r\n public async apply(storage: UiStateStorage): Promise<void> {\r\n this._applyingLocalSettings = true;\r\n for await (const setting of this._settings) {\r\n await setting.getSettingAndApplyValue(storage);\r\n }\r\n this._applyingLocalSettings = false;\r\n }\r\n\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n await this.apply(storage);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AppUiSettings.js","sourceRoot":"","sources":["../../../../src/appui-react/uistate/AppUiSettings.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Settings\r\n */\r\n\r\nimport { UiStateEntry, UiStateStorage } from \"@itwin/core-react\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { FrameworkVersionId, UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n// cSpell:ignore configurableui\r\n\r\n/** Default values that may be specified for [[AppUiSettings]].\r\n * @public\r\n */\r\nexport interface InitialAppUiSettings {\r\n colorTheme: string;\r\n dragInteraction: boolean;\r\n frameworkVersion: FrameworkVersionId;\r\n widgetOpacity: number;\r\n showWidgetIcon?: boolean;\r\n /** @alpha */\r\n autoCollapseUnpinnedPanels?: boolean;\r\n animateToolSettings?: boolean;\r\n useToolAsToolSettingsLabel?: boolean;\r\n}\r\n\r\n/** These are the UI settings that are stored in the Redux store. They control the color theme, the UI version,\r\n * how toolbar group buttons work, and the opacity of widgets in 1.0 and floating widget in 2.0 when the cursor\r\n * is not inside them. It is expect that an IModelApp using App UI components will create and register AppUiSettings with\r\n * defaults specific to their application. This would be done by calling the following.\r\n *\r\n * ```ts\r\n * UiFramework.registerUserSettingsProvider(new AppUiSettings(defaults));\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class AppUiSettings implements UserSettingsProvider {\r\n public readonly providerId = \"AppUiSettingsProvider\";\r\n\r\n private static _settingNamespace = \"AppUiSettings\";\r\n private _settings: Array<UiStateEntry<any>> = [];\r\n private _applyingLocalSettings = false;\r\n\r\n public colorTheme: UiStateEntry<string>;\r\n public dragInteraction: UiStateEntry<boolean>;\r\n public frameworkVersion: UiStateEntry<FrameworkVersionId>;\r\n public widgetOpacity: UiStateEntry<number>;\r\n public showWidgetIcon: UiStateEntry<boolean>;\r\n public autoCollapseUnpinnedPanels: UiStateEntry<boolean>;\r\n public animateToolSettings: UiStateEntry<boolean>;\r\n public useToolAsToolSettingsLabel: UiStateEntry<boolean>;\r\n\r\n private setColorTheme = (theme: string) => {\r\n UiFramework.setColorTheme(theme);\r\n // always store to local storage to avoid flicker during startup if user is not yet logged-in\r\n window.localStorage.setItem(\"uifw:defaultTheme\", theme);\r\n };\r\n\r\n constructor(defaults: Partial<InitialAppUiSettings>) {\r\n this._settings = [];\r\n\r\n this.colorTheme = new UiStateEntry<string>(AppUiSettings._settingNamespace, \"ColorTheme\", UiFramework.getColorTheme, this.setColorTheme, defaults.colorTheme);\r\n this._settings.push(this.colorTheme);\r\n\r\n this.dragInteraction = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"DragInteraction\",\r\n () => UiFramework.useDragInteraction,\r\n (value: boolean) => UiFramework.setUseDragInteraction(value), defaults.dragInteraction);\r\n this._settings.push(this.dragInteraction);\r\n\r\n this.showWidgetIcon = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"ShowWidgetIcon\",\r\n () => UiFramework.showWidgetIcon,\r\n (value: boolean) => UiFramework.setShowWidgetIcon(value), defaults.showWidgetIcon);\r\n this._settings.push(this.showWidgetIcon);\r\n\r\n this.autoCollapseUnpinnedPanels = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"AutoCollapseUnpinnedPanels\",\r\n () => UiFramework.autoCollapseUnpinnedPanels,\r\n (value: boolean) => UiFramework.setAutoCollapseUnpinnedPanels(value), defaults.autoCollapseUnpinnedPanels);\r\n this._settings.push(this.autoCollapseUnpinnedPanels);\r\n\r\n this.frameworkVersion = new UiStateEntry<FrameworkVersionId>(AppUiSettings._settingNamespace, \"FrameworkVersion\",\r\n () => UiFramework.uiVersion,\r\n (value: FrameworkVersionId) => UiFramework.setUiVersion(value), defaults.frameworkVersion);\r\n this._settings.push(this.frameworkVersion);\r\n\r\n this.widgetOpacity = new UiStateEntry<number>(AppUiSettings._settingNamespace, \"WidgetOpacity\",\r\n () => UiFramework.getWidgetOpacity(), (value: number) => UiFramework.setWidgetOpacity(value), defaults.widgetOpacity);\r\n this._settings.push(this.widgetOpacity);\r\n\r\n this.animateToolSettings = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"AnimateToolSettings\",\r\n () => UiFramework.animateToolSettings,\r\n (value: boolean) => UiFramework.setAnimateToolSettings(value), defaults.animateToolSettings);\r\n this._settings.push(this.animateToolSettings);\r\n\r\n this.useToolAsToolSettingsLabel = new UiStateEntry<boolean>(AppUiSettings._settingNamespace, \"UseToolAsToolSettingsLabel\",\r\n () => UiFramework.useToolAsToolSettingsLabel,\r\n (value: boolean) => UiFramework.setUseToolAsToolSettingsLabel(value), defaults.useToolAsToolSettingsLabel);\r\n this._settings.push(this.useToolAsToolSettingsLabel);\r\n\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this.handleSyncUiEvent);\r\n }\r\n\r\n private handleSyncUiEvent = async (args: UiSyncEventArgs) => {\r\n if (this._applyingLocalSettings)\r\n return;\r\n\r\n if (args.eventIds.has(\"configurableui:set_theme\")) {\r\n await this.colorTheme.saveSetting(UiFramework.getUiStateStorage());\r\n // always store as default theme in local storage to avoid flicker during startup if user is not yet logged-in\r\n window.localStorage.setItem(\"uifw:defaultTheme\", UiFramework.getColorTheme());\r\n }\r\n\r\n if (args.eventIds.has(\"configurableui:set-drag-interaction\"))\r\n await this.dragInteraction.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-framework-version\"))\r\n await this.frameworkVersion.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-show-widget-icon\"))\r\n await this.showWidgetIcon.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-auto-collapse-unpinned-panels\"))\r\n await this.autoCollapseUnpinnedPanels.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set_widget_opacity\"))\r\n await this.widgetOpacity.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-animate-tool-settings\"))\r\n await this.animateToolSettings.saveSetting(UiFramework.getUiStateStorage());\r\n\r\n if (args.eventIds.has(\"configurableui:set-use-tool-as-tool-settings-label\"))\r\n await this.useToolAsToolSettingsLabel.saveSetting(UiFramework.getUiStateStorage());\r\n };\r\n\r\n public async apply(storage: UiStateStorage): Promise<void> {\r\n this._applyingLocalSettings = true;\r\n for await (const setting of this._settings) {\r\n await setting.getSettingAndApplyValue(storage);\r\n }\r\n this._applyingLocalSettings = false;\r\n }\r\n\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n await this.apply(storage);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Content.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,gBAAgB;AAChB,wBAAgB,aAAa,gBAY5B;AAED,gBAAgB;AAChB,wBAAgB,YAAY,IAAI,SAAS,GAAG,SAAS,CAyBpD"}
1
+ {"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Content.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,gBAAgB;AAChB,wBAAgB,aAAa,gBAqB5B;AAED,gBAAgB;AAChB,wBAAgB,YAAY,IAAI,SAAS,GAAG,SAAS,CAyBpD"}
@@ -10,12 +10,22 @@ import { UiItemsManager } from "@itwin/appui-abstract";
10
10
  import { ScrollableWidgetContent, TabIdContext } from "@itwin/appui-layout-react";
11
11
  import { useActiveFrontstageDef } from "../frontstage/Frontstage";
12
12
  import { FrontstageManager } from "../frontstage/FrontstageManager";
13
+ import { useTransientState } from "./useTransientState";
13
14
  /** @internal */
14
15
  export function WidgetContent() {
15
16
  var _a, _b, _c;
16
17
  const widget = useWidgetDef();
17
18
  // istanbul ignore next
18
19
  const itemId = (_b = (_a = widget === null || widget === void 0 ? void 0 : widget.id) !== null && _a !== void 0 ? _a : widget === null || widget === void 0 ? void 0 : widget.label) !== null && _b !== void 0 ? _b : "unknown";
20
+ const onSave = React.useCallback(() => {
21
+ // istanbul ignore next
22
+ widget === null || widget === void 0 ? void 0 : widget.saveTransientState();
23
+ }, [widget]);
24
+ const onRestore = React.useCallback(() => {
25
+ // istanbul ignore next
26
+ widget === null || widget === void 0 ? void 0 : widget.restoreTransientState();
27
+ }, [widget]);
28
+ useTransientState(onSave, onRestore);
19
29
  return (React.createElement(ScrollableWidgetContent, { itemId: itemId, providerId: (_c = widget === null || widget === void 0 ? void 0 : widget.initialProps) === null || _c === void 0 ? void 0 : _c.providerId }, widget === null || widget === void 0 ? void 0 : widget.reactNode));
20
30
  }
21
31
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Content.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,gBAAgB;AAChB,MAAM,UAAU,aAAa;;IAC3B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,uBAAuB;IACvB,MAAM,MAAM,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,mCAAI,SAAS,CAAC;IACxD,OAAO,CACL,oBAAC,uBAAuB,IACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,0CAAE,UAAU,IAE3C,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CACM,CAC3B,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,sBAAsB,EAAE,CAAC;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,CAAC,IAA6C,EAAE,EAAE;YACjE,uBAAuB;YACvB,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,cAAc,IAAI,UAAU,CAAC,oBAAoB;gBAClH,OAAO;YACT,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC;QACF,OAAO,iBAAiB,CAAC,qCAAqC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvF,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAExB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,uBAAuB;QACvB,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC5B,YAAY,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,OAAO,cAAc,CAAC,2BAA2B,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAClF,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAExB,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Widget\r\n */\r\nimport * as React from \"react\";\r\nimport { UiItemsManager } from \"@itwin/appui-abstract\";\r\nimport { ScrollableWidgetContent, TabIdContext } from \"@itwin/appui-layout-react\";\r\nimport { useActiveFrontstageDef } from \"../frontstage/Frontstage\";\r\nimport { WidgetDef } from \"../widgets/WidgetDef\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { FrontstageNineZoneStateChangedEventArgs } from \"../frontstage/FrontstageDef\";\r\n\r\n/** @internal */\r\nexport function WidgetContent() {\r\n const widget = useWidgetDef();\r\n // istanbul ignore next\r\n const itemId = widget?.id ?? widget?.label ?? \"unknown\";\r\n return (\r\n <ScrollableWidgetContent\r\n itemId={itemId}\r\n providerId={widget?.initialProps?.providerId}\r\n >\r\n {widget?.reactNode}\r\n </ScrollableWidgetContent>\r\n );\r\n}\r\n\r\n/** @internal */\r\nexport function useWidgetDef(): WidgetDef | undefined {\r\n const tabId = React.useContext(TabIdContext);\r\n const frontstage = useActiveFrontstageDef();\r\n const [widgetDef, setWidgetDef] = React.useState(() => frontstage?.findWidgetDef(tabId));\r\n\r\n React.useEffect(() => {\r\n const listener = (args: FrontstageNineZoneStateChangedEventArgs) => {\r\n // istanbul ignore next\r\n if (args.frontstageDef !== frontstage || !frontstage || frontstage.isStageClosing || frontstage.isApplicationClosing)\r\n return;\r\n setWidgetDef(frontstage.findWidgetDef(tabId));\r\n };\r\n return FrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(listener);\r\n }, [frontstage, tabId]);\r\n\r\n React.useEffect(() => {\r\n // istanbul ignore next\r\n const handlerActivated = () => {\r\n setWidgetDef(frontstage?.findWidgetDef(tabId));\r\n };\r\n\r\n return UiItemsManager.onUiProviderRegisteredEvent.addListener(handlerActivated);\r\n }, [frontstage, tabId]);\r\n\r\n return widgetDef;\r\n}\r\n"]}
1
+ {"version":3,"file":"Content.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Content.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Widget\r\n */\r\nimport * as React from \"react\";\r\nimport { UiItemsManager } from \"@itwin/appui-abstract\";\r\nimport { ScrollableWidgetContent, TabIdContext } from \"@itwin/appui-layout-react\";\r\nimport { useActiveFrontstageDef } from \"../frontstage/Frontstage\";\r\nimport { WidgetDef } from \"../widgets/WidgetDef\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { FrontstageNineZoneStateChangedEventArgs } from \"../frontstage/FrontstageDef\";\r\nimport { useTransientState } from \"./useTransientState\";\r\n\r\n/** @internal */\r\nexport function WidgetContent() {\r\n const widget = useWidgetDef();\r\n // istanbul ignore next\r\n const itemId = widget?.id ?? widget?.label ?? \"unknown\";\r\n const onSave = React.useCallback(() => {\r\n // istanbul ignore next\r\n widget?.saveTransientState();\r\n }, [widget]);\r\n const onRestore = React.useCallback(() => {\r\n // istanbul ignore next\r\n widget?.restoreTransientState();\r\n }, [widget]);\r\n useTransientState(onSave, onRestore);\r\n return (\r\n <ScrollableWidgetContent\r\n itemId={itemId}\r\n providerId={widget?.initialProps?.providerId}\r\n >\r\n {widget?.reactNode}\r\n </ScrollableWidgetContent>\r\n );\r\n}\r\n\r\n/** @internal */\r\nexport function useWidgetDef(): WidgetDef | undefined {\r\n const tabId = React.useContext(TabIdContext);\r\n const frontstage = useActiveFrontstageDef();\r\n const [widgetDef, setWidgetDef] = React.useState(() => frontstage?.findWidgetDef(tabId));\r\n\r\n React.useEffect(() => {\r\n const listener = (args: FrontstageNineZoneStateChangedEventArgs) => {\r\n // istanbul ignore next\r\n if (args.frontstageDef !== frontstage || !frontstage || frontstage.isStageClosing || frontstage.isApplicationClosing)\r\n return;\r\n setWidgetDef(frontstage.findWidgetDef(tabId));\r\n };\r\n return FrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(listener);\r\n }, [frontstage, tabId]);\r\n\r\n React.useEffect(() => {\r\n // istanbul ignore next\r\n const handlerActivated = () => {\r\n setWidgetDef(frontstage?.findWidgetDef(tabId));\r\n };\r\n\r\n return UiItemsManager.onUiProviderRegisteredEvent.addListener(handlerActivated);\r\n }, [frontstage, tabId]);\r\n\r\n return widgetDef;\r\n}\r\n"]}
@@ -114,6 +114,7 @@ export declare const setWidgetState: (base: {
114
114
  readonly side: PanelSide;
115
115
  };
116
116
  readonly userSized?: boolean | undefined;
117
+ readonly hidden?: boolean | undefined;
117
118
  };
118
119
  };
119
120
  readonly allIds: readonly string[];
@@ -286,6 +287,7 @@ export declare const showWidget: (base: {
286
287
  readonly side: PanelSide;
287
288
  };
288
289
  readonly userSized?: boolean | undefined;
290
+ readonly hidden?: boolean | undefined;
289
291
  };
290
292
  };
291
293
  readonly allIds: readonly string[];
@@ -458,6 +460,7 @@ export declare const expandWidget: (base: {
458
460
  readonly side: PanelSide;
459
461
  };
460
462
  readonly userSized?: boolean | undefined;
463
+ readonly hidden?: boolean | undefined;
461
464
  };
462
465
  };
463
466
  readonly allIds: readonly string[];
@@ -630,6 +633,7 @@ export declare const setWidgetLabel: (base: {
630
633
  readonly side: PanelSide;
631
634
  };
632
635
  readonly userSized?: boolean | undefined;
636
+ readonly hidden?: boolean | undefined;
633
637
  };
634
638
  };
635
639
  readonly allIds: readonly string[];
@@ -781,7 +785,7 @@ export declare const FRONTSTAGE_SETTINGS_NAMESPACE = "uifw-frontstageSettings";
781
785
  /** @internal */
782
786
  export declare function getFrontstageStateSettingName(frontstageId: WidgetPanelsFrontstageState["id"]): string;
783
787
  /** @internal */
784
- export declare function useFrontstageManager(frontstageDef: FrontstageDef): void;
788
+ export declare function useFrontstageManager(frontstageDef: FrontstageDef, useToolAsToolSettingsLabel?: boolean): void;
785
789
  /** @internal */
786
790
  export declare function useItemsManager(frontstageDef: FrontstageDef): void;
787
791
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import { assert, Logger, ProcessDetector } from "@itwin/core-bentley";
14
14
  import { StagePanelLocation, UiItemsManager, WidgetState } from "@itwin/appui-abstract";
15
15
  import { Size, UiStateStorageStatus } from "@itwin/core-react";
16
16
  import { ToolbarPopupAutoHideContext } from "@itwin/components-react";
17
- import { addPanelWidget, addTab, addWidgetTabToFloatingPanel, addWidgetTabToPanelSection, convertAllPopupWidgetContainersToFloating, createNineZoneState, createTabsState, createTabState, createWidgetState, findTab, findWidget, floatingWidgetBringToFront, FloatingWidgets, getUniqueId, getWidgetPanelSectionId, isFloatingLocation, isHorizontalPanelSide, NineZone, NineZoneStateReducer, panelSides, removeTab, toolSettingsTabId, WidgetPanels, } from "@itwin/appui-layout-react";
17
+ import { addPanelWidget, addTab, addWidgetTabToDraftFloatingPanel, addWidgetTabToFloatingPanel, addWidgetTabToPanelSection, convertAllPopupWidgetContainersToFloating, createNineZoneState, createTabsState, createTabState, createWidgetState, findTab, findWidget, floatingWidgetBringToFront, FloatingWidgets, getUniqueId, getWidgetPanelSectionId, isFloatingLocation, isHorizontalPanelSide, isPopoutLocation, NineZone, NineZoneStateReducer, panelSides, removeTab, toolSettingsTabId, WidgetPanels, } from "@itwin/appui-layout-react";
18
18
  import { useActiveFrontstageDef } from "../frontstage/Frontstage";
19
19
  import { FrontstageManager } from "../frontstage/FrontstageManager";
20
20
  import { StagePanelState } from "../stagepanels/StagePanelDef";
@@ -31,6 +31,7 @@ import { ToolSettingsContent, WidgetPanelsToolSettings } from "./ToolSettings";
31
31
  import { useEscapeSetFocusToHome } from "../hooks/useEscapeSetFocusToHome";
32
32
  import { useSelector } from "react-redux";
33
33
  import { useUiVisibility } from "../hooks/useUiVisibility";
34
+ import { IModelApp } from "@itwin/core-frontend";
34
35
  const panelZoneKeys = ["start", "end"];
35
36
  const WidgetInternals = React.memo(function WidgetInternals() {
36
37
  const activeModalFrontstageInfo = useActiveModalFrontstageInfo();
@@ -178,7 +179,6 @@ export function ActiveFrontstageDefProvider({ frontstageDef }) {
178
179
  useUpdateNineZoneSize(frontstageDef);
179
180
  useSavedFrontstageState(frontstageDef);
180
181
  useSaveFrontstageSettings(frontstageDef);
181
- useFrontstageManager(frontstageDef);
182
182
  useItemsManager(frontstageDef);
183
183
  const labels = useLabels();
184
184
  const uiIsVisible = useUiVisibility();
@@ -194,6 +194,11 @@ export function ActiveFrontstageDefProvider({ frontstageDef }) {
194
194
  const frameworkState = state[UiFramework.frameworkStateKey];
195
195
  return !!frameworkState.configurableUiState.animateToolSettings;
196
196
  });
197
+ const useToolAsToolSettingsLabel = useSelector((state) => {
198
+ const frameworkState = state[UiFramework.frameworkStateKey];
199
+ return !!frameworkState.configurableUiState.useToolAsToolSettingsLabel;
200
+ });
201
+ useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel);
197
202
  const handleKeyDown = useEscapeSetFocusToHome();
198
203
  return (React.createElement("div", { className: "uifw-widgetPanels-frontstage", onKeyDown: handleKeyDown, role: "presentation" },
199
204
  React.createElement(NineZone, { dispatch: dispatch, labels: labels, state: nineZone, tab: tabElement, showWidgetIcon: showWidgetIcon, autoCollapseUnpinnedPanels: autoCollapseUnpinnedPanels, toolSettingsContent: toolSettingsContent, widgetContent: widgetContent, animateDockedToolSettings: animateToolSettings, uiIsVisible: uiIsVisible }, widgetPanelsFrontstage)));
@@ -648,6 +653,20 @@ export function restoreNineZoneState(frontstageDef, saved) {
648
653
  }
649
654
  return restored;
650
655
  }
656
+ /**
657
+ * Checks to see whether a widget id is one of our generated uuids
658
+ * @param uuid the string value to test
659
+ * @returns boolean
660
+ */
661
+ function isUUID(uuid) {
662
+ const s = `${uuid}`;
663
+ const result = s.match("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$");
664
+ // istanbul ignore else
665
+ if (result === null) {
666
+ return false;
667
+ }
668
+ return true;
669
+ }
651
670
  /** Prepares NineZoneState to be saved.
652
671
  * @note Removes toolSettings tab.
653
672
  * @note Removes tab labels and iconSpec.
@@ -662,6 +681,9 @@ export function packNineZoneState(state) {
662
681
  for (const [, tab] of Object.entries(state.tabs)) {
663
682
  if (tab.id === toolSettingsTabId)
664
683
  continue;
684
+ // istanbul ignore else
685
+ if (isUUID(tab.id))
686
+ continue;
665
687
  draft.tabs[tab.id] = {
666
688
  id: tab.id,
667
689
  preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,
@@ -671,6 +693,18 @@ export function packNineZoneState(state) {
671
693
  };
672
694
  }
673
695
  });
696
+ packed = produce(packed, (draft) => {
697
+ for (const [, floatingWidget] of Object.entries(state.floatingWidgets.byId)) {
698
+ const widgetId = floatingWidget.id;
699
+ // istanbul ignore else
700
+ if (isUUID(widgetId)) {
701
+ const idIndex = draft.floatingWidgets.allIds.indexOf(widgetId);
702
+ draft.floatingWidgets.allIds.splice(idIndex, 1);
703
+ delete draft.floatingWidgets.byId[widgetId];
704
+ delete draft.widgets[widgetId];
705
+ }
706
+ }
707
+ });
674
708
  return packed;
675
709
  }
676
710
  /** @internal */
@@ -680,6 +714,7 @@ export function isPanelCollapsed(zoneStates, panelStates) {
680
714
  return !openZone && !openPanel;
681
715
  }
682
716
  function addRemovedTab(nineZone, widgetDef) {
717
+ var _a, _b;
683
718
  const newTab = createTabState(widgetDef.id, {
684
719
  label: getWidgetLabel(widgetDef.label),
685
720
  canPopout: widgetDef.canPopout,
@@ -694,6 +729,18 @@ function addRemovedTab(nineZone, widgetDef) {
694
729
  const newTabWidget = nineZone.widgets[widgetId];
695
730
  newTabWidget.tabs.splice(widgetDef.tabLocation.tabIndex, 0, newTab.id);
696
731
  }
732
+ else if (widgetDef.tabLocation.floating) {
733
+ const id = widgetDef.tabLocation.widgetId;
734
+ if (id in nineZone.floatingWidgets.byId) {
735
+ nineZone.floatingWidgets.allIds.push(id);
736
+ nineZone.floatingWidgets.byId[id].hidden = false;
737
+ addWidgetTabToDraftFloatingPanel(nineZone, (_a = widgetDef.floatingContainerId) !== null && _a !== void 0 ? _a : widgetDef.id, widgetDef.id, nineZone.floatingWidgets.byId[id].home, newTab);
738
+ }
739
+ else {
740
+ const home = { side: widgetDef.tabLocation.side, widgetId: widgetDef.floatingContainerId, widgetIndex: 0 };
741
+ addWidgetTabToDraftFloatingPanel(nineZone, (_b = widgetDef.floatingContainerId) !== null && _b !== void 0 ? _b : widgetDef.id, widgetDef.id, home, newTab);
742
+ }
743
+ }
697
744
  else {
698
745
  const newTabPanel = nineZone.panels[widgetDef.tabLocation.side];
699
746
  if (newTabPanel.maxWidgetCount === newTabPanel.widgets.length) {
@@ -713,7 +760,7 @@ function addRemovedTab(nineZone, widgetDef) {
713
760
  }
714
761
  /** @internal */
715
762
  export const setWidgetState = produce((nineZone, widgetDef, state) => {
716
- var _a;
763
+ var _a, _b;
717
764
  if (state === WidgetState.Open) {
718
765
  const id = widgetDef.id;
719
766
  let location = findTab(nineZone, id);
@@ -722,6 +769,9 @@ export const setWidgetState = produce((nineZone, widgetDef, state) => {
722
769
  location = findTab(nineZone, id);
723
770
  assert(!!location);
724
771
  }
772
+ if (!!widgetDef.tabLocation.floating) {
773
+ nineZone.floatingWidgets.byId[(_a = widgetDef.floatingContainerId) !== null && _a !== void 0 ? _a : widgetDef.id].hidden = false;
774
+ }
725
775
  const widget = nineZone.widgets[location.widgetId];
726
776
  widget.minimized = false;
727
777
  widget.activeTabId = id;
@@ -732,7 +782,7 @@ export const setWidgetState = produce((nineZone, widgetDef, state) => {
732
782
  panel.collapsed && (panel.collapsed = false);
733
783
  // istanbul ignore next
734
784
  if (undefined === panel.size || 0 === panel.size) {
735
- panel.size = (_a = panel.minSize) !== null && _a !== void 0 ? _a : 200;
785
+ panel.size = (_b = panel.minSize) !== null && _b !== void 0 ? _b : 200;
736
786
  }
737
787
  }
738
788
  }
@@ -760,16 +810,31 @@ function hideWidget(state, widgetDef) {
760
810
  const location = findTab(state, widgetDef.id);
761
811
  if (!location)
762
812
  return;
763
- const widgetId = location.widgetId;
764
- const side = "side" in location ? location.side : "left";
765
- const widgetIndex = "side" in location ? state.panels[side].widgets.indexOf(widgetId) : 0;
766
- const tabIndex = state.widgets[location.widgetId].tabs.indexOf(widgetDef.id);
767
- widgetDef.tabLocation = {
768
- side,
769
- tabIndex,
770
- widgetId,
771
- widgetIndex,
772
- };
813
+ if (isFloatingLocation(location)) {
814
+ const widget = state.floatingWidgets.byId[location.widgetId];
815
+ widgetDef.setFloatingContainerId(location.floatingWidgetId);
816
+ widgetDef.tabLocation = {
817
+ side: widget.home.side,
818
+ tabIndex: widget.home.widgetIndex,
819
+ widgetId: widgetDef.id,
820
+ widgetIndex: widget.home.widgetIndex,
821
+ floating: true,
822
+ };
823
+ }
824
+ else
825
+ // istanbul ignore else
826
+ if (!isPopoutLocation(location)) {
827
+ const widgetId = location.widgetId;
828
+ const side = "side" in location ? location.side : "left";
829
+ const widgetIndex = "side" in location ? state.panels[side].widgets.indexOf(widgetId) : 0;
830
+ const tabIndex = state.widgets[location.widgetId].tabs.indexOf(widgetDef.id);
831
+ widgetDef.tabLocation = {
832
+ side,
833
+ tabIndex,
834
+ widgetId,
835
+ widgetIndex,
836
+ };
837
+ }
773
838
  removeTab(state, widgetDef.id);
774
839
  }
775
840
  /** @internal */
@@ -907,7 +972,7 @@ const createListener = (frontstageDef, listener) => {
907
972
  };
908
973
  };
909
974
  /** @internal */
910
- export function useFrontstageManager(frontstageDef) {
975
+ export function useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel) {
911
976
  React.useEffect(() => {
912
977
  const listener = createListener(frontstageDef, ({ widgetDef, widgetState }) => {
913
978
  assert(!!frontstageDef.nineZoneState);
@@ -968,6 +1033,34 @@ export function useFrontstageManager(frontstageDef) {
968
1033
  FrontstageManager.onWidgetLabelChangedEvent.removeListener(listener);
969
1034
  };
970
1035
  }, [frontstageDef]);
1036
+ const defaultLabel = React.useMemo(() => UiFramework.translate("widget.labels.toolSettings"), []);
1037
+ React.useEffect(() => {
1038
+ const updateLabel = createListener(frontstageDef, () => {
1039
+ var _a;
1040
+ const toolId = FrontstageManager.activeToolId;
1041
+ assert(!!frontstageDef.nineZoneState);
1042
+ const label = useToolAsToolSettingsLabel ?
1043
+ ((_a = IModelApp.tools.find(toolId)) === null || _a === void 0 ? void 0 : _a.flyover) || defaultLabel : defaultLabel;
1044
+ frontstageDef.nineZoneState = setWidgetLabel(frontstageDef.nineZoneState, toolSettingsTabId, label);
1045
+ });
1046
+ // Whenever the frontstageDef or the useTool... changes, keep the label up to date.
1047
+ updateLabel();
1048
+ // If useTool... is true, listen for events to keep up the label up to date.
1049
+ if (useToolAsToolSettingsLabel) {
1050
+ FrontstageManager.onFrontstageReadyEvent.addListener(updateLabel);
1051
+ FrontstageManager.onFrontstageRestoreLayoutEvent.addListener(updateLabel);
1052
+ FrontstageManager.onToolActivatedEvent.addListener(updateLabel);
1053
+ FrontstageManager.onToolSettingsReloadEvent.addListener(updateLabel);
1054
+ }
1055
+ return () => {
1056
+ if (useToolAsToolSettingsLabel) {
1057
+ FrontstageManager.onFrontstageReadyEvent.removeListener(updateLabel);
1058
+ FrontstageManager.onFrontstageRestoreLayoutEvent.removeListener(updateLabel);
1059
+ FrontstageManager.onToolActivatedEvent.removeListener(updateLabel);
1060
+ FrontstageManager.onToolSettingsReloadEvent.removeListener(updateLabel);
1061
+ }
1062
+ };
1063
+ }, [frontstageDef, useToolAsToolSettingsLabel, defaultLabel]);
971
1064
  }
972
1065
  /** @internal */
973
1066
  // istanbul ignore next