@itwin/appui-react 4.6.3 → 4.7.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 (417) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/lib/cjs/appui-react/UiFramework.d.ts +29 -14
  3. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/cjs/appui-react/UiFramework.js +28 -15
  5. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  7. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +4 -7
  8. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  9. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  10. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js +3 -3
  11. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  12. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts +8 -0
  13. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.js +8 -0
  15. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.js.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.d.ts.map +1 -1
  17. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js +3 -4
  18. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  19. package/lib/cjs/appui-react/accudraw/Calculator.d.ts.map +1 -1
  20. package/lib/cjs/appui-react/accudraw/Calculator.js +11 -12
  21. package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
  22. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts +9 -1
  23. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  24. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +9 -1
  25. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  26. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts +2 -2
  27. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  28. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +16 -11
  29. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  30. package/lib/cjs/appui-react/childwindow/PopoutWidget.d.ts +2 -4
  31. package/lib/cjs/appui-react/childwindow/PopoutWidget.d.ts.map +1 -1
  32. package/lib/cjs/appui-react/childwindow/PopoutWidget.js +6 -3
  33. package/lib/cjs/appui-react/childwindow/PopoutWidget.js.map +1 -1
  34. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  35. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +3 -1
  36. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  37. package/lib/cjs/appui-react/configurableui/state.d.ts.map +1 -1
  38. package/lib/cjs/appui-react/configurableui/state.js +5 -2
  39. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  40. package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  41. package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -2
  42. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  43. package/lib/cjs/appui-react/content/IModelViewport.d.ts.map +1 -1
  44. package/lib/cjs/appui-react/content/IModelViewport.js +2 -0
  45. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  46. package/lib/cjs/appui-react/feedback/ValidationTextbox.js +3 -3
  47. package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
  48. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.d.ts +2 -2
  49. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.d.ts.map +1 -1
  50. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.js.map +1 -1
  51. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +6 -8
  52. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  53. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +26 -16
  54. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  55. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.d.ts.map +1 -1
  56. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +1 -1
  57. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  58. package/lib/cjs/appui-react/frontstage/NestedFrontstage.d.ts.map +1 -1
  59. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js +1 -2
  60. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  61. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js +2 -2
  62. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  63. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  64. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js +42 -2
  65. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  66. package/lib/cjs/appui-react/messages/AppNotificationManager.d.ts +9 -3
  67. package/lib/cjs/appui-react/messages/AppNotificationManager.d.ts.map +1 -1
  68. package/lib/cjs/appui-react/messages/AppNotificationManager.js +9 -3
  69. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  70. package/lib/cjs/appui-react/messages/MessageManager.d.ts +10 -0
  71. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  72. package/lib/cjs/appui-react/messages/MessageManager.js +51 -6
  73. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  74. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.d.ts.map +1 -1
  75. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js +1 -3
  76. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  77. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.scss +0 -15
  78. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.d.ts.map +1 -1
  79. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +8 -8
  80. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  81. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +1 -1
  82. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  83. package/lib/cjs/appui-react/pickers/ViewSelector.js +2 -3
  84. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  85. package/lib/cjs/appui-react/popup/CardPopup.d.ts.map +1 -1
  86. package/lib/cjs/appui-react/popup/CardPopup.js +2 -2
  87. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  88. package/lib/cjs/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +7 -6
  90. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  91. package/lib/cjs/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  92. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js +2 -2
  93. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  94. package/lib/cjs/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  95. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js +2 -2
  96. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  97. package/lib/cjs/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  98. package/lib/cjs/appui-react/popup/ToolbarPopup.js +2 -2
  99. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  100. package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts +47 -0
  101. package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts.map +1 -0
  102. package/lib/cjs/appui-react/preview/PreviewFeatures.js +95 -0
  103. package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -0
  104. package/lib/cjs/appui-react/safearea/SafeAreaContext.d.ts +9 -2
  105. package/lib/cjs/appui-react/safearea/SafeAreaContext.d.ts.map +1 -1
  106. package/lib/cjs/appui-react/safearea/SafeAreaContext.js +9 -2
  107. package/lib/cjs/appui-react/safearea/SafeAreaContext.js.map +1 -1
  108. package/lib/cjs/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  109. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +10 -10
  110. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  111. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts +2 -3
  112. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  113. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +9 -6
  114. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  115. package/lib/cjs/appui-react/statusbar/StatusBar.d.ts +1 -28
  116. package/lib/cjs/appui-react/statusbar/StatusBar.d.ts.map +1 -1
  117. package/lib/cjs/appui-react/statusbar/StatusBar.js +1 -69
  118. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  119. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  120. package/lib/cjs/appui-react/statusfields/MessageCenter.js +1 -3
  121. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  122. package/lib/cjs/appui-react/statusfields/SectionsField.d.ts.map +1 -1
  123. package/lib/cjs/appui-react/statusfields/SectionsField.js +1 -3
  124. package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
  125. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts +4 -7
  126. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  127. package/lib/cjs/appui-react/statusfields/SelectionScope.js +2 -7
  128. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  129. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  130. package/lib/cjs/appui-react/statusfields/SnapMode.js +8 -10
  131. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  132. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  133. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +8 -4
  134. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  135. package/lib/cjs/appui-react/theme/ThemeManager.d.ts +38 -7
  136. package/lib/cjs/appui-react/theme/ThemeManager.d.ts.map +1 -1
  137. package/lib/cjs/appui-react/theme/ThemeManager.js +52 -11
  138. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  139. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  140. package/lib/cjs/appui-react/toolbar/Toolbar.js +12 -1
  141. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  142. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts +21 -0
  143. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  144. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  145. package/lib/cjs/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
  146. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +7 -7
  147. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  148. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts +10 -1
  149. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
  150. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js +12 -4
  151. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  152. package/lib/cjs/appui-react/tools/KeyinPaletteTools.d.ts.map +1 -1
  153. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js +1 -2
  154. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  155. package/lib/cjs/appui-react/tools/OpenSettingsTool.d.ts.map +1 -1
  156. package/lib/cjs/appui-react/tools/OpenSettingsTool.js +1 -2
  157. package/lib/cjs/appui-react/tools/OpenSettingsTool.js.map +1 -1
  158. package/lib/cjs/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
  159. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js +2 -3
  160. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  161. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts +15 -0
  162. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  163. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +133 -105
  164. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  165. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.d.ts +10 -4
  166. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.d.ts.map +1 -1
  167. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +80 -65
  168. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  169. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.d.ts +30 -4
  170. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.d.ts.map +1 -1
  171. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.js.map +1 -1
  172. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.d.ts +11 -2
  173. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.d.ts.map +1 -1
  174. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +9 -1
  175. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  176. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts +5 -4
  177. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  178. package/lib/cjs/appui-react/uistate/AppUiSettings.js +2 -2
  179. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  180. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +10 -1
  181. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  182. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +10 -1
  183. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  184. package/lib/cjs/appui-react/utils/matchesWords.d.ts +22 -0
  185. package/lib/cjs/appui-react/utils/matchesWords.d.ts.map +1 -0
  186. package/lib/cjs/appui-react/utils/matchesWords.js +103 -0
  187. package/lib/cjs/appui-react/utils/matchesWords.js.map +1 -0
  188. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  189. package/lib/cjs/appui-react/widget-panels/Frontstage.js +42 -9
  190. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  191. package/lib/cjs/appui-react/widget-panels/Frontstage.scss +19 -0
  192. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts +4 -1
  193. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  194. package/lib/cjs/appui-react/widget-panels/ToolSettings.js +34 -12
  195. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  196. package/lib/cjs/appui-react/widgets/BackstageAppButton.d.ts.map +1 -1
  197. package/lib/cjs/appui-react/widgets/BackstageAppButton.js +2 -7
  198. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
  199. package/lib/cjs/appui-react/widgets/Widget.d.ts +23 -1
  200. package/lib/cjs/appui-react/widgets/Widget.d.ts.map +1 -1
  201. package/lib/cjs/appui-react/widgets/Widget.js.map +1 -1
  202. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  203. package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -0
  204. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  205. package/lib/cjs/appui-react.d.ts +1 -0
  206. package/lib/cjs/appui-react.d.ts.map +1 -1
  207. package/lib/cjs/appui-react.js +3 -0
  208. package/lib/cjs/appui-react.js.map +1 -1
  209. package/lib/esm/appui-react/UiFramework.d.ts +29 -14
  210. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  211. package/lib/esm/appui-react/UiFramework.js +29 -16
  212. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  213. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  214. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +4 -7
  215. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  216. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  217. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js +3 -3
  218. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  219. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts +8 -0
  220. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts.map +1 -1
  221. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.js +8 -0
  222. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.js.map +1 -1
  223. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.d.ts.map +1 -1
  224. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js +3 -4
  225. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  226. package/lib/esm/appui-react/accudraw/Calculator.d.ts.map +1 -1
  227. package/lib/esm/appui-react/accudraw/Calculator.js +11 -12
  228. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  229. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts +9 -1
  230. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  231. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +9 -1
  232. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  233. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts +2 -2
  234. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  235. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +16 -11
  236. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  237. package/lib/esm/appui-react/childwindow/PopoutWidget.d.ts +2 -4
  238. package/lib/esm/appui-react/childwindow/PopoutWidget.d.ts.map +1 -1
  239. package/lib/esm/appui-react/childwindow/PopoutWidget.js +6 -3
  240. package/lib/esm/appui-react/childwindow/PopoutWidget.js.map +1 -1
  241. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  242. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +3 -1
  243. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  244. package/lib/esm/appui-react/configurableui/state.d.ts.map +1 -1
  245. package/lib/esm/appui-react/configurableui/state.js +5 -2
  246. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  247. package/lib/esm/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  248. package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -2
  249. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  250. package/lib/esm/appui-react/content/IModelViewport.d.ts.map +1 -1
  251. package/lib/esm/appui-react/content/IModelViewport.js +2 -0
  252. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  253. package/lib/esm/appui-react/feedback/ValidationTextbox.js +3 -3
  254. package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
  255. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.d.ts +2 -2
  256. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.d.ts.map +1 -1
  257. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.js.map +1 -1
  258. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +6 -8
  259. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  260. package/lib/esm/appui-react/frontstage/FrontstageDef.js +27 -17
  261. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  262. package/lib/esm/appui-react/frontstage/ModalSettingsStage.d.ts.map +1 -1
  263. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -2
  264. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  265. package/lib/esm/appui-react/frontstage/NestedFrontstage.d.ts.map +1 -1
  266. package/lib/esm/appui-react/frontstage/NestedFrontstage.js +1 -2
  267. package/lib/esm/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  268. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js +2 -2
  269. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  270. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  271. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js +41 -1
  272. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  273. package/lib/esm/appui-react/messages/AppNotificationManager.d.ts +9 -3
  274. package/lib/esm/appui-react/messages/AppNotificationManager.d.ts.map +1 -1
  275. package/lib/esm/appui-react/messages/AppNotificationManager.js +9 -3
  276. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  277. package/lib/esm/appui-react/messages/MessageManager.d.ts +10 -0
  278. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  279. package/lib/esm/appui-react/messages/MessageManager.js +52 -7
  280. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  281. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.d.ts.map +1 -1
  282. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js +1 -3
  283. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  284. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.scss +0 -15
  285. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.d.ts.map +1 -1
  286. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +9 -9
  287. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  288. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +1 -1
  289. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  290. package/lib/esm/appui-react/pickers/ViewSelector.js +2 -3
  291. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  292. package/lib/esm/appui-react/popup/CardPopup.d.ts.map +1 -1
  293. package/lib/esm/appui-react/popup/CardPopup.js +2 -2
  294. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  295. package/lib/esm/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  296. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +6 -5
  297. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  298. package/lib/esm/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  299. package/lib/esm/appui-react/popup/KeyinPalettePopup.js +2 -2
  300. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  301. package/lib/esm/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  302. package/lib/esm/appui-react/popup/ToolSettingsPopup.js +2 -2
  303. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  304. package/lib/esm/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  305. package/lib/esm/appui-react/popup/ToolbarPopup.js +2 -2
  306. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  307. package/lib/esm/appui-react/preview/PreviewFeatures.d.ts +47 -0
  308. package/lib/esm/appui-react/preview/PreviewFeatures.d.ts.map +1 -0
  309. package/lib/esm/appui-react/preview/PreviewFeatures.js +90 -0
  310. package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -0
  311. package/lib/esm/appui-react/safearea/SafeAreaContext.d.ts +9 -2
  312. package/lib/esm/appui-react/safearea/SafeAreaContext.d.ts.map +1 -1
  313. package/lib/esm/appui-react/safearea/SafeAreaContext.js +9 -2
  314. package/lib/esm/appui-react/safearea/SafeAreaContext.js.map +1 -1
  315. package/lib/esm/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  316. package/lib/esm/appui-react/selection/SelectionContextItemDef.js +11 -11
  317. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  318. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts +2 -3
  319. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  320. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +9 -6
  321. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  322. package/lib/esm/appui-react/statusbar/StatusBar.d.ts +1 -28
  323. package/lib/esm/appui-react/statusbar/StatusBar.d.ts.map +1 -1
  324. package/lib/esm/appui-react/statusbar/StatusBar.js +1 -69
  325. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  326. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  327. package/lib/esm/appui-react/statusfields/MessageCenter.js +2 -4
  328. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  329. package/lib/esm/appui-react/statusfields/SectionsField.d.ts.map +1 -1
  330. package/lib/esm/appui-react/statusfields/SectionsField.js +1 -3
  331. package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
  332. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts +4 -7
  333. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  334. package/lib/esm/appui-react/statusfields/SelectionScope.js +2 -7
  335. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  336. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  337. package/lib/esm/appui-react/statusfields/SnapMode.js +8 -10
  338. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  339. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  340. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +8 -4
  341. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  342. package/lib/esm/appui-react/theme/ThemeManager.d.ts +38 -7
  343. package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
  344. package/lib/esm/appui-react/theme/ThemeManager.js +51 -10
  345. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  346. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  347. package/lib/esm/appui-react/toolbar/Toolbar.js +11 -0
  348. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  349. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts +21 -0
  350. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  351. package/lib/esm/appui-react/toolbar/ToolbarItem.js.map +1 -1
  352. package/lib/esm/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
  353. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +8 -8
  354. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  355. package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts +10 -1
  356. package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
  357. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js +12 -4
  358. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  359. package/lib/esm/appui-react/tools/KeyinPaletteTools.d.ts.map +1 -1
  360. package/lib/esm/appui-react/tools/KeyinPaletteTools.js +1 -2
  361. package/lib/esm/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  362. package/lib/esm/appui-react/tools/OpenSettingsTool.d.ts.map +1 -1
  363. package/lib/esm/appui-react/tools/OpenSettingsTool.js +1 -2
  364. package/lib/esm/appui-react/tools/OpenSettingsTool.js.map +1 -1
  365. package/lib/esm/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
  366. package/lib/esm/appui-react/tools/RestoreLayoutTool.js +2 -3
  367. package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  368. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts +15 -0
  369. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  370. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +131 -104
  371. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  372. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.d.ts +10 -4
  373. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.d.ts.map +1 -1
  374. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +81 -66
  375. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  376. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.d.ts +30 -4
  377. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.d.ts.map +1 -1
  378. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.js.map +1 -1
  379. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.d.ts +11 -2
  380. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.d.ts.map +1 -1
  381. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +9 -1
  382. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  383. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts +5 -4
  384. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  385. package/lib/esm/appui-react/uistate/AppUiSettings.js +2 -2
  386. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  387. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +10 -1
  388. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  389. package/lib/esm/appui-react/uistate/useUiStateStorage.js +10 -1
  390. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  391. package/lib/esm/appui-react/utils/matchesWords.d.ts +22 -0
  392. package/lib/esm/appui-react/utils/matchesWords.d.ts.map +1 -0
  393. package/lib/esm/appui-react/utils/matchesWords.js +99 -0
  394. package/lib/esm/appui-react/utils/matchesWords.js.map +1 -0
  395. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  396. package/lib/esm/appui-react/widget-panels/Frontstage.js +44 -11
  397. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  398. package/lib/esm/appui-react/widget-panels/Frontstage.scss +19 -0
  399. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts +4 -1
  400. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  401. package/lib/esm/appui-react/widget-panels/ToolSettings.js +32 -11
  402. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  403. package/lib/esm/appui-react/widgets/BackstageAppButton.d.ts.map +1 -1
  404. package/lib/esm/appui-react/widgets/BackstageAppButton.js +2 -7
  405. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
  406. package/lib/esm/appui-react/widgets/Widget.d.ts +23 -1
  407. package/lib/esm/appui-react/widgets/Widget.d.ts.map +1 -1
  408. package/lib/esm/appui-react/widgets/Widget.js.map +1 -1
  409. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  410. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -0
  411. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  412. package/lib/esm/appui-react.d.ts +1 -0
  413. package/lib/esm/appui-react.d.ts.map +1 -1
  414. package/lib/esm/appui-react.js +1 -0
  415. package/lib/esm/appui-react.js.map +1 -1
  416. package/lib/public/locales/en/UiFramework.json +6 -4
  417. package/package.json +13 -11
@@ -2,7 +2,6 @@
2
2
  * @module Frontstage
3
3
  */
4
4
  import type { ScreenViewport } from "@itwin/core-frontend";
5
- import type { XAndY } from "@itwin/core-geometry";
6
5
  import type { RectangleProps, SizeProps } from "@itwin/core-react";
7
6
  import type { NineZoneDispatch, NineZoneState } from "@itwin/appui-layout-react";
8
7
  import type { ContentControl } from "../content/ContentControl";
@@ -16,6 +15,7 @@ import { TimeTracker } from "../configurableui/TimeTracker";
16
15
  import type { FrontstageConfig } from "./FrontstageConfig";
17
16
  import { StagePanelLocation } from "../stagepanels/StagePanelLocation";
18
17
  import { WidgetState } from "../widgets/WidgetState";
18
+ import type { XAndY } from "@itwin/core-geometry";
19
19
  /** @internal */
20
20
  export interface FrontstageEventArgs {
21
21
  frontstageDef: FrontstageDef;
@@ -131,14 +131,13 @@ export declare class FrontstageDef {
131
131
  * @beta
132
132
  */
133
133
  restoreLayout(): void;
134
- /** Used only in UI 2.0 to determine WidgetState from NinezoneState
134
+ /** Used to determine WidgetState from NinezoneState
135
135
  * @internal
136
136
  */
137
137
  getWidgetCurrentState(widgetDef: WidgetDef): WidgetState | undefined;
138
138
  isPopoutWidget(widgetId: string): boolean;
139
139
  isFloatingWidget(widgetId: string): boolean;
140
- /** Create a new floating panel that contains the widget specified by its Id. Supported only when in
141
- * UI 2.0 or higher.
140
+ /** Create a new floating panel that contains the widget specified by its Id.
142
141
  * @param widgetId case sensitive Widget Id
143
142
  * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.
144
143
  * @param size defines the width and height of the floating panel. If undefined and widget has been floated before
@@ -154,9 +153,8 @@ export declare class FrontstageDef {
154
153
  /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.
155
154
  * @internal
156
155
  */
157
- openPopoutWidgetContainer(widgetContainerId: string): void;
158
- /** Create a new popout/child window that contains the widget specified by its Id. Supported only when in
159
- * UI 2.0 or higher.
156
+ openPopoutWidgetContainer(widgetContainerId: string, oldState: NineZoneState | undefined): boolean;
157
+ /** Create a new popout/child window that contains the widget specified by its Id.
160
158
  * @param widgetId case sensitive Widget Id
161
159
  * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.
162
160
  * @param size defines the width and height of the floating panel. If undefined and widget has been floated before
@@ -173,7 +171,7 @@ export declare class FrontstageDef {
173
171
  dockWidgetContainerByContainerId(widgetContainerId: string): void;
174
172
  /** Finds the container with the specified widget and re-docks all widgets
175
173
  * back to the panel zone location that was used when the floating container
176
- * was generated. Supported only when in UI 2.0 or higher.
174
+ * was generated.
177
175
  * @param widgetId case sensitive Widget Id.
178
176
  * @beta
179
177
  */
@@ -1 +1 @@
1
- {"version":3,"file":"FrontstageDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FrontstageDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  // cSpell:ignore popout
9
9
  import * as React from "react";
10
- import { IModelApp } from "@itwin/core-frontend";
10
+ import { IModelApp, NotifyMessageDetails, OutputMessagePriority, OutputMessageType, } from "@itwin/core-frontend";
11
11
  import { UiError } from "@itwin/appui-abstract";
12
12
  import { Rectangle, Size } from "@itwin/core-react";
13
13
  import { getTabLocation, getWidgetLocation, isFloatingTabLocation, isFloatingWidgetLocation, isPanelTabLocation, isPopoutTabLocation, isPopoutWidgetLocation, NineZoneStateReducer, panelSides, } from "@itwin/appui-layout-react";
@@ -185,8 +185,11 @@ export class FrontstageDef {
185
185
  UiFramework.childWindows.close(popoutId, true);
186
186
  }
187
187
  for (const popoutId of popoutsToOpen) {
188
- this.openPopoutWidgetContainer(popoutId);
188
+ const result = this.openPopoutWidgetContainer(popoutId, oldState);
189
+ if (!result)
190
+ return result;
189
191
  }
192
+ return true;
190
193
  }
191
194
  /** @internal */
192
195
  get nineZoneState() {
@@ -197,13 +200,17 @@ export class FrontstageDef {
197
200
  return;
198
201
  const oldState = this._nineZoneState;
199
202
  this._nineZoneState = state;
200
- this.handlePopouts(oldState);
203
+ const popoutResult = this.handlePopouts(oldState);
201
204
  if (oldState) {
202
205
  this.triggerStateChangeEvents(oldState);
203
206
  }
204
207
  const isClosing = this._isStageClosing || this._isApplicationClosing;
205
208
  if (isClosing && !this.isReady)
206
209
  return;
210
+ if (popoutResult === false) {
211
+ IModelApp.notifications.outputMessage(new NotifyMessageDetails(OutputMessagePriority.Error, "Widget Failed To Popout", undefined, OutputMessageType.Toast));
212
+ return;
213
+ }
207
214
  InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({
208
215
  frontstageDef: this,
209
216
  state,
@@ -524,7 +531,7 @@ export class FrontstageDef {
524
531
  frontstageDef: this,
525
532
  });
526
533
  }
527
- /** Used only in UI 2.0 to determine WidgetState from NinezoneState
534
+ /** Used to determine WidgetState from NinezoneState
528
535
  * @internal
529
536
  */
530
537
  getWidgetCurrentState(widgetDef) {
@@ -578,8 +585,7 @@ export class FrontstageDef {
578
585
  }
579
586
  return false;
580
587
  }
581
- /** Create a new floating panel that contains the widget specified by its Id. Supported only when in
582
- * UI 2.0 or higher.
588
+ /** Create a new floating panel that contains the widget specified by its Id.
583
589
  * @param widgetId case sensitive Widget Id
584
590
  * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.
585
591
  * @param size defines the width and height of the floating panel. If undefined and widget has been floated before
@@ -621,24 +627,24 @@ export class FrontstageDef {
621
627
  /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.
622
628
  * @internal
623
629
  */
624
- openPopoutWidgetContainer(widgetContainerId) {
630
+ openPopoutWidgetContainer(widgetContainerId, oldState) {
625
631
  const state = this.nineZoneState;
626
632
  if (!state)
627
- return;
633
+ return false;
628
634
  const location = getWidgetLocation(state, widgetContainerId);
629
635
  if (!location)
630
- return;
636
+ return false;
631
637
  if (!isPopoutWidgetLocation(location))
632
- return;
638
+ return false;
633
639
  const widget = state.widgets[widgetContainerId];
634
640
  // Popout widget should only contain a single tab.
635
641
  if (widget.tabs.length !== 1)
636
- return;
642
+ return false;
637
643
  const tabId = widget.tabs[0];
638
644
  const widgetDef = this.findWidgetDef(tabId);
639
645
  if (!widgetDef)
640
- return;
641
- const popoutContent = (React.createElement(PopoutWidget, { widgetContainerId: widgetContainerId, widgetDef: widgetDef }));
646
+ return false;
647
+ const popoutContent = (React.createElement(PopoutWidget, { widgetContainerId: widgetContainerId }));
642
648
  const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];
643
649
  const bounds = Rectangle.create(popoutWidget.bounds);
644
650
  const position = {
@@ -647,10 +653,14 @@ export class FrontstageDef {
647
653
  left: bounds.left,
648
654
  top: bounds.top,
649
655
  };
650
- UiFramework.childWindows.open(widgetContainerId, widgetDef.label, popoutContent, position, UiFramework.useDefaultPopoutUrl);
656
+ const result = UiFramework.childWindows.open(widgetContainerId, widgetDef.label, popoutContent, position, UiFramework.useDefaultPopoutUrl);
657
+ if (!result && oldState) {
658
+ this.nineZoneState = oldState;
659
+ return false;
660
+ }
661
+ return true;
651
662
  }
652
- /** Create a new popout/child window that contains the widget specified by its Id. Supported only when in
653
- * UI 2.0 or higher.
663
+ /** Create a new popout/child window that contains the widget specified by its Id.
654
664
  * @param widgetId case sensitive Widget Id
655
665
  * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.
656
666
  * @param size defines the width and height of the floating panel. If undefined and widget has been floated before
@@ -732,7 +742,7 @@ export class FrontstageDef {
732
742
  }
733
743
  /** Finds the container with the specified widget and re-docks all widgets
734
744
  * back to the panel zone location that was used when the floating container
735
- * was generated. Supported only when in UI 2.0 or higher.
745
+ * was generated.
736
746
  * @param widgetId case sensitive Widget Id.
737
747
  * @beta
738
748
  */
@@ -1 +1 @@
1
- {"version":3,"file":"FrontstageDef.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\n// cSpell:ignore popout\n\nimport * as React from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport type { RectangleProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle, Size } from \"@itwin/core-react\";\nimport type {\n NineZoneDispatch,\n NineZoneState,\n PanelSide,\n} from \"@itwin/appui-layout-react\";\nimport {\n getTabLocation,\n getWidgetLocation,\n isFloatingTabLocation,\n isFloatingWidgetLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n isPopoutWidgetLocation,\n NineZoneStateReducer,\n panelSides,\n} from \"@itwin/appui-layout-react\";\nimport type { ContentControl } from \"../content/ContentControl\";\nimport type { ContentGroup } from \"../content/ContentGroup\";\nimport { ContentGroupProvider } from \"../content/ContentGroup\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout\";\nimport { StagePanelDef, StagePanelState } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { WidgetControl } from \"../widgets/WidgetControl\";\nimport { WidgetDef, WidgetType } from \"../widgets/WidgetDef\";\nimport type { FrontstageProvider } from \"./FrontstageProvider\";\nimport { TimeTracker } from \"../configurableui/TimeTracker\";\nimport type { ChildWindowLocationProps } from \"../framework/FrameworkChildWindows\";\nimport { PopoutWidget } from \"../childwindow/PopoutWidget\";\nimport { BentleyStatus, ProcessDetector } from \"@itwin/core-bentley\";\nimport type { FrontstageConfig } from \"./FrontstageConfig\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig\";\nimport type { WidgetConfig } from \"../widgets/WidgetConfig\";\nimport { StageUsage } from \"./StageUsage\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { WidgetState } from \"../widgets/WidgetState\";\nimport { InternalFrontstageManager } from \"./InternalFrontstageManager\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager\";\n\n/** @internal */\nexport interface FrontstageEventArgs {\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport interface FrontstageNineZoneStateChangedEventArgs\n extends FrontstageEventArgs {\n state: NineZoneState | undefined;\n}\n\n/** FrontstageDef class provides an API for a Frontstage.\n * @public\n */\nexport class FrontstageDef {\n private _id: string = \"\";\n private _initialConfig?: FrontstageConfig;\n private _isStageClosing = false;\n private _isReady = false;\n private _isApplicationClosing = false;\n private _usage?: string;\n private _version: number = 0;\n private _toolSettings?: WidgetDef;\n private _statusBar?: WidgetDef;\n private _contentManipulation?: WidgetDef;\n private _viewNavigation?: WidgetDef;\n private _topPanel?: StagePanelDef;\n private _leftPanel?: StagePanelDef;\n private _rightPanel?: StagePanelDef;\n private _bottomPanel?: StagePanelDef;\n private _contentLayoutDef?: ContentLayoutDef;\n private _contentGroup?: ContentGroup;\n private _frontstageProvider?: FrontstageProvider;\n private _timeTracker = new TimeTracker();\n private _nineZoneState?: NineZoneState;\n private _contentGroupProvider?: ContentGroupProvider;\n private _floatingContentControls?: ContentControl[];\n private _toolAdminDefaultToolId?: string;\n private _dispatch?: NineZoneDispatch;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n public get floatingContentControls() {\n return this._floatingContentControls;\n }\n\n public get toolSettings(): WidgetDef | undefined {\n return this._toolSettings;\n }\n public get statusBar(): WidgetDef | undefined {\n return this._statusBar;\n }\n public get contentManipulation(): WidgetDef | undefined {\n return this._contentManipulation;\n }\n public get viewNavigation(): WidgetDef | undefined {\n return this._viewNavigation;\n }\n\n public get topPanel(): StagePanelDef | undefined {\n return this._topPanel;\n }\n public get leftPanel(): StagePanelDef | undefined {\n return this._leftPanel;\n }\n public get rightPanel(): StagePanelDef | undefined {\n return this._rightPanel;\n }\n public get bottomPanel(): StagePanelDef | undefined {\n return this._bottomPanel;\n }\n\n public get contentLayoutDef(): ContentLayoutDef | undefined {\n return this._contentLayoutDef;\n }\n public get contentGroup(): ContentGroup | undefined {\n return this._contentGroup;\n }\n public get frontstageProvider(): FrontstageProvider | undefined {\n return this._frontstageProvider;\n }\n\n private toStagePanelLocation(side: PanelSide): StagePanelLocation {\n switch (side) {\n case \"bottom\":\n return StagePanelLocation.Bottom;\n case \"left\":\n return StagePanelLocation.Left;\n case \"right\":\n return StagePanelLocation.Right;\n case \"top\":\n return StagePanelLocation.Top;\n }\n }\n\n private populateStateMaps(\n nineZone: NineZoneState,\n panelMap: Map<StagePanelDef, StagePanelState>,\n widgetMap: Map<WidgetDef, WidgetState>\n ) {\n for (const panelSide of panelSides) {\n const panel = nineZone.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n const panelState = panel.collapsed\n ? StagePanelState.Minimized\n : StagePanelState.Open;\n panelMap.set(panelDef, panelState);\n }\n\n for (const widgetDef of this.widgetDefs) {\n const widgetId = widgetDef.id;\n if (widgetDef === this.toolSettings) {\n if (!nineZone.toolSettings) {\n widgetMap.set(widgetDef, WidgetState.Hidden);\n continue;\n } else if (nineZone.toolSettings.type === \"docked\") {\n widgetMap.set(widgetDef, WidgetState.Open);\n continue;\n }\n }\n\n if (nineZone.draggedTab?.tabId === widgetId) {\n widgetMap.set(widgetDef, WidgetState.Closed);\n continue;\n }\n\n const tabLocation = getTabLocation(nineZone, widgetId);\n if (!tabLocation) {\n widgetMap.set(widgetDef, WidgetState.Hidden);\n continue;\n }\n\n const widget = nineZone.widgets[tabLocation.widgetId];\n let widgetState = WidgetState.Open;\n if (widget.minimized || widgetId !== widget.activeTabId)\n widgetState = WidgetState.Closed;\n widgetMap.set(widgetDef, widgetState);\n }\n }\n\n private triggerStateChangeEvents(oldState: NineZoneState) {\n const newState = this.nineZoneState;\n if (!newState) return;\n\n if (this._isStageClosing || this._isApplicationClosing) return;\n\n const originalPanelStateMap = new Map<StagePanelDef, StagePanelState>();\n const originalWidgetStateMap = new Map<WidgetDef, WidgetState>();\n const newPanelStateMap = new Map<StagePanelDef, StagePanelState>();\n const newWidgetStateMap = new Map<WidgetDef, WidgetState>();\n this.populateStateMaps(\n oldState,\n originalPanelStateMap,\n originalWidgetStateMap\n );\n this.populateStateMaps(newState, newPanelStateMap, newWidgetStateMap);\n\n // Now walk and trigger set state events\n newWidgetStateMap.forEach((newWidgetState, widgetDef) => {\n const originalState = originalWidgetStateMap.get(widgetDef);\n if (originalState === newWidgetState) return;\n widgetDef.handleWidgetStateChanged(newWidgetState);\n });\n newPanelStateMap.forEach((newPanelState, panelDef) => {\n const originalState = originalPanelStateMap.get(panelDef);\n if (originalState === newPanelState) return;\n panelDef.handlePanelStateChanged(newPanelState);\n });\n\n for (const panelSide of panelSides) {\n const panel = newState.panels[panelSide];\n const oldPanel = oldState.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n\n if (panel.size !== oldPanel.size) {\n panelDef.handleSizeChanged(panel.size);\n }\n\n if (panel.pinned !== oldPanel.pinned) {\n panelDef.handlePinnedChanged(panel.pinned);\n }\n }\n }\n\n private handlePopouts(oldState: NineZoneState | undefined) {\n const newState = this.nineZoneState;\n\n const oldPopouts = oldState?.popoutWidgets.allIds || [];\n const newPopouts = newState?.popoutWidgets.allIds || [];\n const popoutsToClose = oldPopouts.filter((p) => !newPopouts.includes(p));\n const popoutsToOpen = newPopouts.filter((p) => !oldPopouts.includes(p));\n\n for (const popoutId of popoutsToClose) {\n UiFramework.childWindows.close(popoutId, true);\n }\n\n for (const popoutId of popoutsToOpen) {\n this.openPopoutWidgetContainer(popoutId);\n }\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n if (action.type === \"RESIZE\") {\n InternalFrontstageManager.nineZoneSize = Size.create(action.size);\n }\n\n const state = this.nineZoneState;\n if (!state) return;\n this.nineZoneState = NineZoneStateReducer(state, action);\n });\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** Created a [[FrontstageDef]] and initialize it */\n public static async create(provider: FrontstageProvider) {\n const def = new FrontstageDef();\n def._frontstageProvider = provider;\n\n const config = provider.frontstageConfig();\n await def.initializeFromConfig(config);\n\n return def;\n }\n\n /** Handles when the Frontstage becomes activated */\n protected async _onActivated() {}\n\n /** Handles when the Frontstage becomes activated */\n public async onActivated() {\n this.updateWidgetDefs();\n\n const provider = this._contentGroupProvider;\n if (provider && this._initialConfig) {\n this._contentGroup = await provider.contentGroup(this._initialConfig);\n }\n\n // istanbul ignore next\n if (!this._contentGroup)\n throw new UiError(\n UiFramework.loggerCategory(this),\n `onActivated: Content Group not defined`\n );\n\n this._contentLayoutDef = UiFramework.content.layouts.getForGroup(\n this._contentGroup\n );\n UiFramework.frontstages.onContentLayoutActivatedEvent.emit({\n contentLayout: this._contentLayoutDef,\n contentGroup: this._contentGroup,\n });\n\n this._timeTracker.startTiming();\n await this._onActivated();\n }\n\n /** Handles when the Frontstage becomes inactive */\n protected async _onDeactivated() {}\n\n /** Handles when the Frontstage becomes inactive */\n public async onDeactivated() {\n for (const control of this._widgetControls) {\n control.onFrontstageDeactivated();\n }\n\n for (const control of this.contentControls) {\n control.onFrontstageDeactivated();\n }\n\n // istanbul ignore else\n if (this.contentGroup) this.contentGroup.onFrontstageDeactivated();\n // istanbul ignore next\n if (this.contentGroupProvider)\n await this.contentGroupProvider.onFrontstageDeactivated();\n\n this._timeTracker.stopTiming();\n\n this._isStageClosing = true; // this keeps widgets in child windows from automatically re-docking\n UiFramework.childWindows.closeAll();\n\n if (this._floatingContentControls) {\n InternalContentDialogManager.closeAll();\n this._floatingContentControls = undefined;\n }\n\n if (this._toolAdminDefaultToolId) {\n IModelApp.toolAdmin.defaultToolId = this._toolAdminDefaultToolId;\n this._toolAdminDefaultToolId = undefined;\n }\n\n await this._onDeactivated();\n this._isStageClosing = false;\n }\n\n /** @internal */\n public setIsApplicationClosing(value: boolean) {\n this._isApplicationClosing = value;\n }\n\n /** Returns once the contained widgets and content controls are ready to use */\n public async waitUntilReady(): Promise<void> {\n this._isReady = false;\n // create an array of control-ready promises\n const controlReadyPromises = new Array<Promise<void>>();\n this._widgetControls.forEach((control: WidgetControl) => {\n controlReadyPromises.push(control.isReady);\n });\n\n // istanbul ignore else\n if (this.contentLayoutDef) {\n const usedContentIndexes = this.contentLayoutDef.getUsedContentIndexes();\n this.contentControls.forEach((control: ContentControl, index: number) => {\n // istanbul ignore else\n if (usedContentIndexes.includes(index))\n controlReadyPromises.push(control.isReady);\n });\n }\n\n await Promise.all(controlReadyPromises);\n // Frontstage ready\n this._isReady = true;\n }\n\n /** Handles when the Frontstage becomes active */\n protected _onFrontstageReady(): void {}\n\n /** Handles when the Frontstage becomes active */\n public onFrontstageReady(): void {\n for (const control of this._widgetControls) {\n control.onFrontstageReady();\n }\n\n for (const control of this.contentControls) {\n control.onFrontstageReady();\n }\n\n // istanbul ignore else\n if (this.contentGroup) this.contentGroup.onFrontstageReady();\n\n if (IModelApp.toolAdmin && IModelApp.viewManager && this._initialConfig) {\n const defaultTool = this._initialConfig.defaultTool;\n if (defaultTool) {\n this._toolAdminDefaultToolId = IModelApp.toolAdmin.defaultToolId;\n IModelApp.toolAdmin.defaultToolId = defaultTool;\n void IModelApp.tools.run(defaultTool);\n } else {\n void IModelApp.toolAdmin.startDefaultTool();\n }\n }\n\n this._onFrontstageReady();\n }\n\n /** Sets the Content Layout and Content Group */\n public setContentLayoutAndGroup(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): void {\n this._contentLayoutDef = contentLayoutDef;\n this._contentGroup = contentGroup;\n }\n\n /** Sets the active view content control to the default or first */\n public async setActiveContent(): Promise<boolean> {\n let contentControl: ContentControl | undefined;\n let activated = false;\n\n // istanbul ignore else\n if (!contentControl && this.contentControls.length >= 0) {\n contentControl = this.contentControls[0];\n }\n\n if (contentControl) {\n UiFramework.content.setActive(contentControl.reactNode, true);\n if (contentControl.viewport) {\n const status = await IModelApp.viewManager.setSelectedView(\n contentControl.viewport\n );\n activated = status === BentleyStatus.SUCCESS;\n }\n }\n\n return activated;\n }\n\n /** Sets the active view content control */\n public setActiveView(\n newContent: ContentControl,\n oldContent?: ContentControl\n ): void {\n if (oldContent) oldContent.onDeactivated();\n newContent.onActivated();\n UiFramework.frontstages.onContentControlActivatedEvent.emit({\n activeContentControl: newContent,\n oldContentControl: oldContent,\n });\n }\n\n /** Sets the active view content control based on the selected viewport. */\n public setActiveViewFromViewport(viewport: ScreenViewport): boolean {\n const contentControl = this.contentControls.find(\n (control: ContentControl) => control.viewport === viewport\n );\n // istanbul ignore else\n if (contentControl) {\n UiFramework.content.setActive(contentControl.reactNode, true);\n return true;\n }\n\n // istanbul ignore next\n return false;\n }\n\n /** Gets a [[StagePanelDef]] based on a given panel location\n * @beta\n */\n public getStagePanelDef(\n location: StagePanelLocation\n ): StagePanelDef | undefined {\n let panelDef: StagePanelDef | undefined;\n\n switch (location) {\n case StagePanelLocation.Top:\n panelDef = this.topPanel;\n break;\n case StagePanelLocation.Left:\n panelDef = this.leftPanel;\n break;\n case StagePanelLocation.Right:\n panelDef = this.rightPanel;\n break;\n case StagePanelLocation.Bottom:\n panelDef = this.bottomPanel;\n break;\n }\n\n // Panels can be undefined in a Frontstage\n return panelDef;\n }\n\n /** Gets a list of [[StagePanelDef]]s\n * @beta\n */\n public get panelDefs(): StagePanelDef[] {\n const locations = [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ];\n const panels: StagePanelDef[] = [];\n\n locations.forEach((location: StagePanelLocation) => {\n const panel = this.getStagePanelDef(location);\n if (panel) panels.push(panel);\n });\n\n return panels;\n }\n\n /** Finds a [[WidgetDef]] based on a given id */\n public findWidgetDef(id: string): WidgetDef | undefined {\n for (const widgetDef of this.widgetDefs) {\n if (widgetDef.id === id) return widgetDef;\n }\n return undefined;\n }\n\n /** Gets the list of [[WidgetControl]]s */\n private get _widgetControls(): WidgetControl[] {\n const widgetControls = new Array<WidgetControl>();\n\n this.panelDefs.forEach((panelDef: StagePanelDef) => {\n panelDef.widgetDefs.forEach((widgetDef: WidgetDef) => {\n const widgetControl = widgetDef.widgetControl;\n // istanbul ignore if\n if (widgetControl) widgetControls.push(widgetControl);\n });\n });\n\n return widgetControls;\n }\n\n public addFloatingContentControl(contentControl?: ContentControl) {\n // istanbul ignore next\n if (!contentControl) return;\n if (!this._floatingContentControls)\n this._floatingContentControls = new Array<ContentControl>();\n\n this._floatingContentControls.push(contentControl);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n\n public dropFloatingContentControl(contentControl?: ContentControl) {\n // istanbul ignore next\n if (!contentControl || !this._floatingContentControls) return;\n\n const index = this._floatingContentControls.indexOf(contentControl);\n // istanbul ignore else\n if (index > -1) {\n this._floatingContentControls.splice(index, 1);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n }\n\n /** Gets the list of [[ContentControl]]s */\n public get contentControls(): ContentControl[] {\n const contentControls = new Array<ContentControl>();\n // istanbul ignore else\n if (this.contentGroup) {\n contentControls.push(...this.contentGroup.getContentControls());\n }\n if (this._floatingContentControls) {\n contentControls.push(...this._floatingContentControls);\n }\n return contentControls;\n }\n\n /** Initializes a FrontstageDef from FrontstageConfig.\n * @internal\n */\n public async initializeFromConfig(config: FrontstageConfig): Promise<void> {\n this._id = config.id;\n this._initialConfig = config;\n\n if (config.contentGroup instanceof ContentGroupProvider) {\n this._contentGroupProvider = config.contentGroup;\n } else {\n this._contentGroup = config.contentGroup;\n }\n\n this._usage = config.usage;\n this._version = config.version;\n\n this._toolSettings = createWidgetDef(\n config.toolSettings,\n WidgetType.ToolSettings\n );\n this._statusBar = createWidgetDef(config.statusBar, WidgetType.StatusBar);\n this._contentManipulation = createWidgetDef(\n config.contentManipulation,\n WidgetType.Tool\n );\n this._viewNavigation = createWidgetDef(\n config.viewNavigation,\n WidgetType.Navigation\n );\n this._topPanel = createStagePanelDef(config, StagePanelLocation.Top);\n this._leftPanel = createStagePanelDef(config, StagePanelLocation.Left);\n this._rightPanel = createStagePanelDef(config, StagePanelLocation.Right);\n this._bottomPanel = createStagePanelDef(config, StagePanelLocation.Bottom);\n }\n\n /** @internal */\n public updateWidgetDefs(): void {\n // Tracks provided widgets to prevent duplicates.\n const allStageWidgetDefs: WidgetDef[] = [];\n\n // Process panels before zones so extension can explicitly target a widget for a StagePanelSection\n this.panelDefs.forEach((stagePanelDef: StagePanelDef) => {\n stagePanelDef.updateDynamicWidgetDefs(\n this.id,\n this.usage,\n stagePanelDef.location,\n undefined,\n allStageWidgetDefs\n );\n });\n\n InternalFrontstageManager.onFrontstageWidgetsChangedEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Restores frontstage layout to initial configuration.\n * @beta\n */\n public restoreLayout() {\n for (const panelDef of this.panelDefs) {\n panelDef.size = panelDef.defaultSize;\n panelDef.panelState = panelDef.defaultState;\n }\n for (const widgetDef of this.widgetDefs) {\n widgetDef.setWidgetState(widgetDef.defaultState);\n }\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Used only in UI 2.0 to determine WidgetState from NinezoneState\n * @internal\n */\n public getWidgetCurrentState(widgetDef: WidgetDef): WidgetState | undefined {\n const state = this.nineZoneState;\n\n // istanbul ignore else\n if (state) {\n const toolSettingsTabId = state.toolSettings?.tabId;\n if (\n toolSettingsTabId === widgetDef.id &&\n state.toolSettings?.type === \"docked\"\n ) {\n return WidgetState.Open;\n }\n\n const location = getTabLocation(state, widgetDef.id);\n\n // istanbul ignore next\n if (!location) return WidgetState.Hidden;\n\n if (isFloatingTabLocation(location)) {\n return WidgetState.Floating;\n }\n\n let collapsedPanel = false;\n // istanbul ignore else\n if (\"side\" in location) {\n const panel = state.panels[location.side];\n collapsedPanel =\n panel.collapsed || undefined === panel.size || 0 === panel.size;\n }\n const widgetContainer = state.widgets[location.widgetId];\n if (widgetDef.id === widgetContainer.activeTabId && !collapsedPanel)\n return WidgetState.Open;\n else return WidgetState.Closed;\n }\n return widgetDef.defaultState;\n }\n\n public isPopoutWidget(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location) return isPopoutTabLocation(location);\n }\n\n return false;\n }\n\n public isFloatingWidget(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location) return isFloatingTabLocation(location);\n }\n\n return false;\n }\n\n /** Create a new floating panel that contains the widget specified by its Id. Supported only when in\n * UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n if (!isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n const popoutContent = (\n <PopoutWidget\n widgetContainerId={widgetContainerId}\n widgetDef={widgetDef}\n />\n );\n\n const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];\n const bounds = Rectangle.create(popoutWidget.bounds);\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n UiFramework.childWindows.open(\n widgetContainerId,\n widgetDef.label,\n popoutContent,\n position,\n UiFramework.useDefaultPopoutUrl\n );\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id. Supported only when in\n * UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: Window\n ) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, childWindowId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[location.popoutWidgetId];\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n const adjustmentWidth = ProcessDetector.isElectronAppFrontend ? 16 : 0;\n const adjustmentHeight = ProcessDetector.isElectronAppFrontend ? 39 : 0;\n\n const width = childWindow.innerWidth + adjustmentWidth;\n const height = childWindow.innerHeight + adjustmentHeight;\n const bounds = Rectangle.createFromSize({ width, height }).offset({\n x: childWindow.screenX,\n y: childWindow.screenY,\n });\n\n this.dispatch({\n type: \"WIDGET_TAB_SET_POPOUT_BOUNDS\",\n id: tabId,\n bounds,\n });\n }\n\n /** @internal */\n public dockWidgetContainerByContainerId(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n\n if (isFloatingWidgetLocation(location)) {\n this.dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id: location.floatingWidgetId,\n });\n return;\n }\n if (isPopoutWidgetLocation(location)) {\n this.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id: location.popoutWidgetId,\n });\n return;\n }\n }\n\n /** Finds the container with the specified widget and re-docks all widgets\n * back to the panel zone location that was used when the floating container\n * was generated. Supported only when in UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id.\n * @beta\n */\n public dockWidgetContainer(widgetId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getTabLocation(state, widgetId);\n if (!location) return;\n\n this.dockWidgetContainerByContainerId(location.widgetId);\n }\n\n public setFloatingWidgetContainerBounds(\n floatingWidgetId: string,\n bounds: RectangleProps\n ) {\n if (\n !this.nineZoneState ||\n !(floatingWidgetId in this.nineZoneState.floatingWidgets.byId)\n )\n return false;\n\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_BOUNDS\",\n id: floatingWidgetId,\n bounds,\n });\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_USER_SIZED\",\n id: floatingWidgetId,\n userSized: true,\n });\n return true;\n }\n\n public getFloatingWidgetContainerIds(): string[] {\n if (!this.nineZoneState) return [];\n\n return [...this.nineZoneState.floatingWidgets.allIds];\n }\n\n public getFloatingWidgetContainerIdByWidgetId(\n widgetId: string\n ): string | undefined {\n if (!this.nineZoneState) return undefined;\n\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location && isFloatingTabLocation(location)) {\n return location.floatingWidgetId;\n }\n // istanbul ignore next\n return undefined;\n }\n\n public getFloatingWidgetContainerBounds(\n floatingWidgetId: string | undefined\n ) {\n if (!floatingWidgetId) return undefined;\n\n // istanbul ignore else\n if (\n this.nineZoneState &&\n floatingWidgetId in this.nineZoneState.floatingWidgets.byId\n ) {\n const foundWidget = document.querySelector(\n `div.nz-widget-floatingWidget[data-widget-id='${floatingWidgetId}']`\n );\n // istanbul ignore next\n if (foundWidget) {\n const domRect = foundWidget.getBoundingClientRect();\n return {\n left: domRect.left,\n right: domRect.right,\n top: domRect.top,\n bottom: domRect.bottom,\n };\n }\n return this.nineZoneState.floatingWidgets.byId[floatingWidgetId].bounds;\n }\n return undefined;\n }\n\n private *_widgetDefs(): Iterator<WidgetDef> {\n for (const panelDef of this.panelDefs) {\n for (const widgetDef of panelDef.widgetDefs) {\n yield widgetDef;\n }\n }\n if (this.toolSettings) yield this.toolSettings;\n if (this.statusBar) yield this.statusBar;\n return undefined;\n }\n\n /** Iterable of all widget definitions in a frontstage.\n * @internal\n */\n public get widgetDefs() {\n const defs = this._widgetDefs();\n return {\n [Symbol.iterator]() {\n return defs;\n },\n };\n }\n}\n\nfunction createWidgetDef(\n config: WidgetConfig | undefined,\n type: WidgetType\n): WidgetDef | undefined {\n if (!config) return undefined;\n\n const widgetDef = WidgetDef.create(config, type);\n return widgetDef;\n}\n\nfunction createStagePanelDef(\n frontstageConfig: FrontstageConfig,\n location: StagePanelLocation\n): StagePanelDef {\n const config = getStagePanel(location, frontstageConfig);\n\n const panelDef = new StagePanelDef();\n panelDef.initializeFromConfig(config, location);\n return panelDef;\n}\n\nfunction getStagePanel(\n location: StagePanelLocation,\n config: FrontstageConfig\n): StagePanelConfig | undefined {\n switch (location) {\n case StagePanelLocation.Top:\n return config.topPanel;\n case StagePanelLocation.Left:\n return config.leftPanel;\n case StagePanelLocation.Right:\n return config.rightPanel;\n case StagePanelLocation.Bottom:\n return config.bottomPanel;\n }\n}\n\n/** Hook that returns active frontstage id.\n * @public\n */\nexport const useActiveFrontstageId = () => {\n const def = useActiveFrontstageDef();\n const id = React.useMemo(\n () => (def ? /* istanbul ignore next */ def.id : \"\"),\n [def]\n );\n return id;\n};\n\n/** Hook to return the active Frontstage def.\n * @public\n */\nexport function useActiveFrontstageDef() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n setDef(args.activatedFrontstageDef);\n }\n );\n }, []);\n return def;\n}\n\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\n * @public\n */\nexport function useSpecificWidgetDef(widgetId: string) {\n const frontstageDef = useActiveFrontstageDef();\n const [widgetDef, setWidgetDef] = React.useState(() =>\n frontstageDef?.findWidgetDef(widgetId)\n );\n React.useEffect(() => {\n setWidgetDef(frontstageDef?.findWidgetDef(widgetId));\n return InternalFrontstageManager.onFrontstageWidgetsChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n setWidgetDef(frontstageDef.findWidgetDef(widgetId));\n }\n );\n }, [frontstageDef, widgetId]);\n return widgetDef;\n}\n"]}
1
+ {"version":3,"file":"FrontstageDef.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\n// cSpell:ignore popout\n\nimport * as React from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport type { RectangleProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle, Size } from \"@itwin/core-react\";\nimport type {\n NineZoneDispatch,\n NineZoneState,\n PanelSide,\n} from \"@itwin/appui-layout-react\";\nimport {\n getTabLocation,\n getWidgetLocation,\n isFloatingTabLocation,\n isFloatingWidgetLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n isPopoutWidgetLocation,\n NineZoneStateReducer,\n panelSides,\n} from \"@itwin/appui-layout-react\";\nimport type { ContentControl } from \"../content/ContentControl\";\nimport type { ContentGroup } from \"../content/ContentGroup\";\nimport { ContentGroupProvider } from \"../content/ContentGroup\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout\";\nimport { StagePanelDef, StagePanelState } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { WidgetControl } from \"../widgets/WidgetControl\";\nimport { WidgetDef, WidgetType } from \"../widgets/WidgetDef\";\nimport type { FrontstageProvider } from \"./FrontstageProvider\";\nimport { TimeTracker } from \"../configurableui/TimeTracker\";\nimport type { ChildWindowLocationProps } from \"../framework/FrameworkChildWindows\";\nimport { PopoutWidget } from \"../childwindow/PopoutWidget\";\nimport { BentleyStatus, ProcessDetector } from \"@itwin/core-bentley\";\nimport type { FrontstageConfig } from \"./FrontstageConfig\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig\";\nimport type { WidgetConfig } from \"../widgets/WidgetConfig\";\nimport { StageUsage } from \"./StageUsage\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { WidgetState } from \"../widgets/WidgetState\";\nimport { InternalFrontstageManager } from \"./InternalFrontstageManager\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager\";\nimport type { XAndY } from \"@itwin/core-geometry\";\n\n/** @internal */\nexport interface FrontstageEventArgs {\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport interface FrontstageNineZoneStateChangedEventArgs\n extends FrontstageEventArgs {\n state: NineZoneState | undefined;\n}\n\n/** FrontstageDef class provides an API for a Frontstage.\n * @public\n */\nexport class FrontstageDef {\n private _id: string = \"\";\n private _initialConfig?: FrontstageConfig;\n private _isStageClosing = false;\n private _isReady = false;\n private _isApplicationClosing = false;\n private _usage?: string;\n private _version: number = 0;\n private _toolSettings?: WidgetDef;\n private _statusBar?: WidgetDef;\n private _contentManipulation?: WidgetDef;\n private _viewNavigation?: WidgetDef;\n private _topPanel?: StagePanelDef;\n private _leftPanel?: StagePanelDef;\n private _rightPanel?: StagePanelDef;\n private _bottomPanel?: StagePanelDef;\n private _contentLayoutDef?: ContentLayoutDef;\n private _contentGroup?: ContentGroup;\n private _frontstageProvider?: FrontstageProvider;\n private _timeTracker = new TimeTracker();\n private _nineZoneState?: NineZoneState;\n private _contentGroupProvider?: ContentGroupProvider;\n private _floatingContentControls?: ContentControl[];\n private _toolAdminDefaultToolId?: string;\n private _dispatch?: NineZoneDispatch;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n public get floatingContentControls() {\n return this._floatingContentControls;\n }\n\n public get toolSettings(): WidgetDef | undefined {\n return this._toolSettings;\n }\n public get statusBar(): WidgetDef | undefined {\n return this._statusBar;\n }\n public get contentManipulation(): WidgetDef | undefined {\n return this._contentManipulation;\n }\n public get viewNavigation(): WidgetDef | undefined {\n return this._viewNavigation;\n }\n\n public get topPanel(): StagePanelDef | undefined {\n return this._topPanel;\n }\n public get leftPanel(): StagePanelDef | undefined {\n return this._leftPanel;\n }\n public get rightPanel(): StagePanelDef | undefined {\n return this._rightPanel;\n }\n public get bottomPanel(): StagePanelDef | undefined {\n return this._bottomPanel;\n }\n\n public get contentLayoutDef(): ContentLayoutDef | undefined {\n return this._contentLayoutDef;\n }\n public get contentGroup(): ContentGroup | undefined {\n return this._contentGroup;\n }\n public get frontstageProvider(): FrontstageProvider | undefined {\n return this._frontstageProvider;\n }\n\n private toStagePanelLocation(side: PanelSide): StagePanelLocation {\n switch (side) {\n case \"bottom\":\n return StagePanelLocation.Bottom;\n case \"left\":\n return StagePanelLocation.Left;\n case \"right\":\n return StagePanelLocation.Right;\n case \"top\":\n return StagePanelLocation.Top;\n }\n }\n\n private populateStateMaps(\n nineZone: NineZoneState,\n panelMap: Map<StagePanelDef, StagePanelState>,\n widgetMap: Map<WidgetDef, WidgetState>\n ) {\n for (const panelSide of panelSides) {\n const panel = nineZone.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n const panelState = panel.collapsed\n ? StagePanelState.Minimized\n : StagePanelState.Open;\n panelMap.set(panelDef, panelState);\n }\n\n for (const widgetDef of this.widgetDefs) {\n const widgetId = widgetDef.id;\n if (widgetDef === this.toolSettings) {\n if (!nineZone.toolSettings) {\n widgetMap.set(widgetDef, WidgetState.Hidden);\n continue;\n } else if (nineZone.toolSettings.type === \"docked\") {\n widgetMap.set(widgetDef, WidgetState.Open);\n continue;\n }\n }\n\n if (nineZone.draggedTab?.tabId === widgetId) {\n widgetMap.set(widgetDef, WidgetState.Closed);\n continue;\n }\n\n const tabLocation = getTabLocation(nineZone, widgetId);\n if (!tabLocation) {\n widgetMap.set(widgetDef, WidgetState.Hidden);\n continue;\n }\n\n const widget = nineZone.widgets[tabLocation.widgetId];\n let widgetState = WidgetState.Open;\n if (widget.minimized || widgetId !== widget.activeTabId)\n widgetState = WidgetState.Closed;\n widgetMap.set(widgetDef, widgetState);\n }\n }\n\n private triggerStateChangeEvents(oldState: NineZoneState) {\n const newState = this.nineZoneState;\n if (!newState) return;\n\n if (this._isStageClosing || this._isApplicationClosing) return;\n\n const originalPanelStateMap = new Map<StagePanelDef, StagePanelState>();\n const originalWidgetStateMap = new Map<WidgetDef, WidgetState>();\n const newPanelStateMap = new Map<StagePanelDef, StagePanelState>();\n const newWidgetStateMap = new Map<WidgetDef, WidgetState>();\n this.populateStateMaps(\n oldState,\n originalPanelStateMap,\n originalWidgetStateMap\n );\n this.populateStateMaps(newState, newPanelStateMap, newWidgetStateMap);\n\n // Now walk and trigger set state events\n newWidgetStateMap.forEach((newWidgetState, widgetDef) => {\n const originalState = originalWidgetStateMap.get(widgetDef);\n if (originalState === newWidgetState) return;\n widgetDef.handleWidgetStateChanged(newWidgetState);\n });\n newPanelStateMap.forEach((newPanelState, panelDef) => {\n const originalState = originalPanelStateMap.get(panelDef);\n if (originalState === newPanelState) return;\n panelDef.handlePanelStateChanged(newPanelState);\n });\n\n for (const panelSide of panelSides) {\n const panel = newState.panels[panelSide];\n const oldPanel = oldState.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n\n if (panel.size !== oldPanel.size) {\n panelDef.handleSizeChanged(panel.size);\n }\n\n if (panel.pinned !== oldPanel.pinned) {\n panelDef.handlePinnedChanged(panel.pinned);\n }\n }\n }\n\n private handlePopouts(oldState: NineZoneState | undefined) {\n const newState = this.nineZoneState;\n\n const oldPopouts = oldState?.popoutWidgets.allIds || [];\n const newPopouts = newState?.popoutWidgets.allIds || [];\n const popoutsToClose = oldPopouts.filter((p) => !newPopouts.includes(p));\n const popoutsToOpen = newPopouts.filter((p) => !oldPopouts.includes(p));\n\n for (const popoutId of popoutsToClose) {\n UiFramework.childWindows.close(popoutId, true);\n }\n\n for (const popoutId of popoutsToOpen) {\n const result = this.openPopoutWidgetContainer(popoutId, oldState);\n if (!result) return result;\n }\n\n return true;\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n const popoutResult = this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n if (popoutResult === false) {\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(\n OutputMessagePriority.Error,\n \"Widget Failed To Popout\",\n undefined,\n OutputMessageType.Toast\n )\n );\n return;\n }\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n if (action.type === \"RESIZE\") {\n InternalFrontstageManager.nineZoneSize = Size.create(action.size);\n }\n\n const state = this.nineZoneState;\n if (!state) return;\n this.nineZoneState = NineZoneStateReducer(state, action);\n });\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** Created a [[FrontstageDef]] and initialize it */\n public static async create(provider: FrontstageProvider) {\n const def = new FrontstageDef();\n def._frontstageProvider = provider;\n\n const config = provider.frontstageConfig();\n await def.initializeFromConfig(config);\n\n return def;\n }\n\n /** Handles when the Frontstage becomes activated */\n protected async _onActivated() {}\n\n /** Handles when the Frontstage becomes activated */\n public async onActivated() {\n this.updateWidgetDefs();\n\n const provider = this._contentGroupProvider;\n if (provider && this._initialConfig) {\n this._contentGroup = await provider.contentGroup(this._initialConfig);\n }\n\n // istanbul ignore next\n if (!this._contentGroup)\n throw new UiError(\n UiFramework.loggerCategory(this),\n `onActivated: Content Group not defined`\n );\n\n this._contentLayoutDef = UiFramework.content.layouts.getForGroup(\n this._contentGroup\n );\n UiFramework.frontstages.onContentLayoutActivatedEvent.emit({\n contentLayout: this._contentLayoutDef,\n contentGroup: this._contentGroup,\n });\n\n this._timeTracker.startTiming();\n await this._onActivated();\n }\n\n /** Handles when the Frontstage becomes inactive */\n protected async _onDeactivated() {}\n\n /** Handles when the Frontstage becomes inactive */\n public async onDeactivated() {\n for (const control of this._widgetControls) {\n control.onFrontstageDeactivated();\n }\n\n for (const control of this.contentControls) {\n control.onFrontstageDeactivated();\n }\n\n // istanbul ignore else\n if (this.contentGroup) this.contentGroup.onFrontstageDeactivated();\n // istanbul ignore next\n if (this.contentGroupProvider)\n await this.contentGroupProvider.onFrontstageDeactivated();\n\n this._timeTracker.stopTiming();\n\n this._isStageClosing = true; // this keeps widgets in child windows from automatically re-docking\n UiFramework.childWindows.closeAll();\n\n if (this._floatingContentControls) {\n InternalContentDialogManager.closeAll();\n this._floatingContentControls = undefined;\n }\n\n if (this._toolAdminDefaultToolId) {\n IModelApp.toolAdmin.defaultToolId = this._toolAdminDefaultToolId;\n this._toolAdminDefaultToolId = undefined;\n }\n\n await this._onDeactivated();\n this._isStageClosing = false;\n }\n\n /** @internal */\n public setIsApplicationClosing(value: boolean) {\n this._isApplicationClosing = value;\n }\n\n /** Returns once the contained widgets and content controls are ready to use */\n public async waitUntilReady(): Promise<void> {\n this._isReady = false;\n // create an array of control-ready promises\n const controlReadyPromises = new Array<Promise<void>>();\n this._widgetControls.forEach((control: WidgetControl) => {\n controlReadyPromises.push(control.isReady);\n });\n\n // istanbul ignore else\n if (this.contentLayoutDef) {\n const usedContentIndexes = this.contentLayoutDef.getUsedContentIndexes();\n this.contentControls.forEach((control: ContentControl, index: number) => {\n // istanbul ignore else\n if (usedContentIndexes.includes(index))\n controlReadyPromises.push(control.isReady);\n });\n }\n\n await Promise.all(controlReadyPromises);\n // Frontstage ready\n this._isReady = true;\n }\n\n /** Handles when the Frontstage becomes active */\n protected _onFrontstageReady(): void {}\n\n /** Handles when the Frontstage becomes active */\n public onFrontstageReady(): void {\n for (const control of this._widgetControls) {\n control.onFrontstageReady();\n }\n\n for (const control of this.contentControls) {\n control.onFrontstageReady();\n }\n\n // istanbul ignore else\n if (this.contentGroup) this.contentGroup.onFrontstageReady();\n\n if (IModelApp.toolAdmin && IModelApp.viewManager && this._initialConfig) {\n const defaultTool = this._initialConfig.defaultTool;\n if (defaultTool) {\n this._toolAdminDefaultToolId = IModelApp.toolAdmin.defaultToolId;\n IModelApp.toolAdmin.defaultToolId = defaultTool;\n void IModelApp.tools.run(defaultTool);\n } else {\n void IModelApp.toolAdmin.startDefaultTool();\n }\n }\n\n this._onFrontstageReady();\n }\n\n /** Sets the Content Layout and Content Group */\n public setContentLayoutAndGroup(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): void {\n this._contentLayoutDef = contentLayoutDef;\n this._contentGroup = contentGroup;\n }\n\n /** Sets the active view content control to the default or first */\n public async setActiveContent(): Promise<boolean> {\n let contentControl: ContentControl | undefined;\n let activated = false;\n\n // istanbul ignore else\n if (!contentControl && this.contentControls.length >= 0) {\n contentControl = this.contentControls[0];\n }\n\n if (contentControl) {\n UiFramework.content.setActive(contentControl.reactNode, true);\n if (contentControl.viewport) {\n const status = await IModelApp.viewManager.setSelectedView(\n contentControl.viewport\n );\n activated = status === BentleyStatus.SUCCESS;\n }\n }\n\n return activated;\n }\n\n /** Sets the active view content control */\n public setActiveView(\n newContent: ContentControl,\n oldContent?: ContentControl\n ): void {\n if (oldContent) oldContent.onDeactivated();\n newContent.onActivated();\n UiFramework.frontstages.onContentControlActivatedEvent.emit({\n activeContentControl: newContent,\n oldContentControl: oldContent,\n });\n }\n\n /** Sets the active view content control based on the selected viewport. */\n public setActiveViewFromViewport(viewport: ScreenViewport): boolean {\n const contentControl = this.contentControls.find(\n (control: ContentControl) => control.viewport === viewport\n );\n // istanbul ignore else\n if (contentControl) {\n UiFramework.content.setActive(contentControl.reactNode, true);\n return true;\n }\n\n // istanbul ignore next\n return false;\n }\n\n /** Gets a [[StagePanelDef]] based on a given panel location\n * @beta\n */\n public getStagePanelDef(\n location: StagePanelLocation\n ): StagePanelDef | undefined {\n let panelDef: StagePanelDef | undefined;\n\n switch (location) {\n case StagePanelLocation.Top:\n panelDef = this.topPanel;\n break;\n case StagePanelLocation.Left:\n panelDef = this.leftPanel;\n break;\n case StagePanelLocation.Right:\n panelDef = this.rightPanel;\n break;\n case StagePanelLocation.Bottom:\n panelDef = this.bottomPanel;\n break;\n }\n\n // Panels can be undefined in a Frontstage\n return panelDef;\n }\n\n /** Gets a list of [[StagePanelDef]]s\n * @beta\n */\n public get panelDefs(): StagePanelDef[] {\n const locations = [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ];\n const panels: StagePanelDef[] = [];\n\n locations.forEach((location: StagePanelLocation) => {\n const panel = this.getStagePanelDef(location);\n if (panel) panels.push(panel);\n });\n\n return panels;\n }\n\n /** Finds a [[WidgetDef]] based on a given id */\n public findWidgetDef(id: string): WidgetDef | undefined {\n for (const widgetDef of this.widgetDefs) {\n if (widgetDef.id === id) return widgetDef;\n }\n return undefined;\n }\n\n /** Gets the list of [[WidgetControl]]s */\n private get _widgetControls(): WidgetControl[] {\n const widgetControls = new Array<WidgetControl>();\n\n this.panelDefs.forEach((panelDef: StagePanelDef) => {\n panelDef.widgetDefs.forEach((widgetDef: WidgetDef) => {\n const widgetControl = widgetDef.widgetControl;\n // istanbul ignore if\n if (widgetControl) widgetControls.push(widgetControl);\n });\n });\n\n return widgetControls;\n }\n\n public addFloatingContentControl(contentControl?: ContentControl) {\n // istanbul ignore next\n if (!contentControl) return;\n if (!this._floatingContentControls)\n this._floatingContentControls = new Array<ContentControl>();\n\n this._floatingContentControls.push(contentControl);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n\n public dropFloatingContentControl(contentControl?: ContentControl) {\n // istanbul ignore next\n if (!contentControl || !this._floatingContentControls) return;\n\n const index = this._floatingContentControls.indexOf(contentControl);\n // istanbul ignore else\n if (index > -1) {\n this._floatingContentControls.splice(index, 1);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n }\n\n /** Gets the list of [[ContentControl]]s */\n public get contentControls(): ContentControl[] {\n const contentControls = new Array<ContentControl>();\n // istanbul ignore else\n if (this.contentGroup) {\n contentControls.push(...this.contentGroup.getContentControls());\n }\n if (this._floatingContentControls) {\n contentControls.push(...this._floatingContentControls);\n }\n return contentControls;\n }\n\n /** Initializes a FrontstageDef from FrontstageConfig.\n * @internal\n */\n public async initializeFromConfig(config: FrontstageConfig): Promise<void> {\n this._id = config.id;\n this._initialConfig = config;\n\n if (config.contentGroup instanceof ContentGroupProvider) {\n this._contentGroupProvider = config.contentGroup;\n } else {\n this._contentGroup = config.contentGroup;\n }\n\n this._usage = config.usage;\n this._version = config.version;\n\n this._toolSettings = createWidgetDef(\n config.toolSettings,\n WidgetType.ToolSettings\n );\n this._statusBar = createWidgetDef(config.statusBar, WidgetType.StatusBar);\n this._contentManipulation = createWidgetDef(\n config.contentManipulation,\n WidgetType.Tool\n );\n this._viewNavigation = createWidgetDef(\n config.viewNavigation,\n WidgetType.Navigation\n );\n this._topPanel = createStagePanelDef(config, StagePanelLocation.Top);\n this._leftPanel = createStagePanelDef(config, StagePanelLocation.Left);\n this._rightPanel = createStagePanelDef(config, StagePanelLocation.Right);\n this._bottomPanel = createStagePanelDef(config, StagePanelLocation.Bottom);\n }\n\n /** @internal */\n public updateWidgetDefs(): void {\n // Tracks provided widgets to prevent duplicates.\n const allStageWidgetDefs: WidgetDef[] = [];\n\n // Process panels before zones so extension can explicitly target a widget for a StagePanelSection\n this.panelDefs.forEach((stagePanelDef: StagePanelDef) => {\n stagePanelDef.updateDynamicWidgetDefs(\n this.id,\n this.usage,\n stagePanelDef.location,\n undefined,\n allStageWidgetDefs\n );\n });\n\n InternalFrontstageManager.onFrontstageWidgetsChangedEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Restores frontstage layout to initial configuration.\n * @beta\n */\n public restoreLayout() {\n for (const panelDef of this.panelDefs) {\n panelDef.size = panelDef.defaultSize;\n panelDef.panelState = panelDef.defaultState;\n }\n for (const widgetDef of this.widgetDefs) {\n widgetDef.setWidgetState(widgetDef.defaultState);\n }\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Used to determine WidgetState from NinezoneState\n * @internal\n */\n public getWidgetCurrentState(widgetDef: WidgetDef): WidgetState | undefined {\n const state = this.nineZoneState;\n\n // istanbul ignore else\n if (state) {\n const toolSettingsTabId = state.toolSettings?.tabId;\n if (\n toolSettingsTabId === widgetDef.id &&\n state.toolSettings?.type === \"docked\"\n ) {\n return WidgetState.Open;\n }\n\n const location = getTabLocation(state, widgetDef.id);\n\n // istanbul ignore next\n if (!location) return WidgetState.Hidden;\n\n if (isFloatingTabLocation(location)) {\n return WidgetState.Floating;\n }\n\n let collapsedPanel = false;\n // istanbul ignore else\n if (\"side\" in location) {\n const panel = state.panels[location.side];\n collapsedPanel =\n panel.collapsed || undefined === panel.size || 0 === panel.size;\n }\n const widgetContainer = state.widgets[location.widgetId];\n if (widgetDef.id === widgetContainer.activeTabId && !collapsedPanel)\n return WidgetState.Open;\n else return WidgetState.Closed;\n }\n return widgetDef.defaultState;\n }\n\n public isPopoutWidget(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location) return isPopoutTabLocation(location);\n }\n\n return false;\n }\n\n public isFloatingWidget(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location) return isFloatingTabLocation(location);\n }\n\n return false;\n }\n\n /** Create a new floating panel that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(\n widgetContainerId: string,\n oldState: NineZoneState | undefined\n ): boolean {\n const state = this.nineZoneState;\n if (!state) return false;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return false;\n if (!isPopoutWidgetLocation(location)) return false;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return false;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return false;\n\n const popoutContent = (\n <PopoutWidget widgetContainerId={widgetContainerId} />\n );\n\n const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];\n const bounds = Rectangle.create(popoutWidget.bounds);\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n\n const result = UiFramework.childWindows.open(\n widgetContainerId,\n widgetDef.label,\n popoutContent,\n position,\n UiFramework.useDefaultPopoutUrl\n );\n\n if (!result && oldState) {\n this.nineZoneState = oldState;\n return false;\n }\n\n return true;\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: Window\n ) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, childWindowId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[location.popoutWidgetId];\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n const adjustmentWidth = ProcessDetector.isElectronAppFrontend ? 16 : 0;\n const adjustmentHeight = ProcessDetector.isElectronAppFrontend ? 39 : 0;\n\n const width = childWindow.innerWidth + adjustmentWidth;\n const height = childWindow.innerHeight + adjustmentHeight;\n const bounds = Rectangle.createFromSize({ width, height }).offset({\n x: childWindow.screenX,\n y: childWindow.screenY,\n });\n\n this.dispatch({\n type: \"WIDGET_TAB_SET_POPOUT_BOUNDS\",\n id: tabId,\n bounds,\n });\n }\n\n /** @internal */\n public dockWidgetContainerByContainerId(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n\n if (isFloatingWidgetLocation(location)) {\n this.dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id: location.floatingWidgetId,\n });\n return;\n }\n if (isPopoutWidgetLocation(location)) {\n this.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id: location.popoutWidgetId,\n });\n return;\n }\n }\n\n /** Finds the container with the specified widget and re-docks all widgets\n * back to the panel zone location that was used when the floating container\n * was generated.\n * @param widgetId case sensitive Widget Id.\n * @beta\n */\n public dockWidgetContainer(widgetId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getTabLocation(state, widgetId);\n if (!location) return;\n\n this.dockWidgetContainerByContainerId(location.widgetId);\n }\n\n public setFloatingWidgetContainerBounds(\n floatingWidgetId: string,\n bounds: RectangleProps\n ) {\n if (\n !this.nineZoneState ||\n !(floatingWidgetId in this.nineZoneState.floatingWidgets.byId)\n )\n return false;\n\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_BOUNDS\",\n id: floatingWidgetId,\n bounds,\n });\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_USER_SIZED\",\n id: floatingWidgetId,\n userSized: true,\n });\n return true;\n }\n\n public getFloatingWidgetContainerIds(): string[] {\n if (!this.nineZoneState) return [];\n\n return [...this.nineZoneState.floatingWidgets.allIds];\n }\n\n public getFloatingWidgetContainerIdByWidgetId(\n widgetId: string\n ): string | undefined {\n if (!this.nineZoneState) return undefined;\n\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location && isFloatingTabLocation(location)) {\n return location.floatingWidgetId;\n }\n // istanbul ignore next\n return undefined;\n }\n\n public getFloatingWidgetContainerBounds(\n floatingWidgetId: string | undefined\n ) {\n if (!floatingWidgetId) return undefined;\n\n // istanbul ignore else\n if (\n this.nineZoneState &&\n floatingWidgetId in this.nineZoneState.floatingWidgets.byId\n ) {\n const foundWidget = document.querySelector(\n `div.nz-widget-floatingWidget[data-widget-id='${floatingWidgetId}']`\n );\n // istanbul ignore next\n if (foundWidget) {\n const domRect = foundWidget.getBoundingClientRect();\n return {\n left: domRect.left,\n right: domRect.right,\n top: domRect.top,\n bottom: domRect.bottom,\n };\n }\n return this.nineZoneState.floatingWidgets.byId[floatingWidgetId].bounds;\n }\n return undefined;\n }\n\n private *_widgetDefs(): Iterator<WidgetDef> {\n for (const panelDef of this.panelDefs) {\n for (const widgetDef of panelDef.widgetDefs) {\n yield widgetDef;\n }\n }\n if (this.toolSettings) yield this.toolSettings;\n if (this.statusBar) yield this.statusBar;\n return undefined;\n }\n\n /** Iterable of all widget definitions in a frontstage.\n * @internal\n */\n public get widgetDefs() {\n const defs = this._widgetDefs();\n return {\n [Symbol.iterator]() {\n return defs;\n },\n };\n }\n}\n\nfunction createWidgetDef(\n config: WidgetConfig | undefined,\n type: WidgetType\n): WidgetDef | undefined {\n if (!config) return undefined;\n\n const widgetDef = WidgetDef.create(config, type);\n return widgetDef;\n}\n\nfunction createStagePanelDef(\n frontstageConfig: FrontstageConfig,\n location: StagePanelLocation\n): StagePanelDef {\n const config = getStagePanel(location, frontstageConfig);\n\n const panelDef = new StagePanelDef();\n panelDef.initializeFromConfig(config, location);\n return panelDef;\n}\n\nfunction getStagePanel(\n location: StagePanelLocation,\n config: FrontstageConfig\n): StagePanelConfig | undefined {\n switch (location) {\n case StagePanelLocation.Top:\n return config.topPanel;\n case StagePanelLocation.Left:\n return config.leftPanel;\n case StagePanelLocation.Right:\n return config.rightPanel;\n case StagePanelLocation.Bottom:\n return config.bottomPanel;\n }\n}\n\n/** Hook that returns active frontstage id.\n * @public\n */\nexport const useActiveFrontstageId = () => {\n const def = useActiveFrontstageDef();\n const id = React.useMemo(\n () => (def ? /* istanbul ignore next */ def.id : \"\"),\n [def]\n );\n return id;\n};\n\n/** Hook to return the active Frontstage def.\n * @public\n */\nexport function useActiveFrontstageDef() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n setDef(args.activatedFrontstageDef);\n }\n );\n }, []);\n return def;\n}\n\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\n * @public\n */\nexport function useSpecificWidgetDef(widgetId: string) {\n const frontstageDef = useActiveFrontstageDef();\n const [widgetDef, setWidgetDef] = React.useState(() =>\n frontstageDef?.findWidgetDef(widgetId)\n );\n React.useEffect(() => {\n setWidgetDef(frontstageDef?.findWidgetDef(widgetId));\n return InternalFrontstageManager.onFrontstageWidgetsChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n setWidgetDef(frontstageDef.findWidgetDef(widgetId));\n }\n );\n }, [frontstageDef, widgetId]);\n return widgetDef;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ModalSettingsStage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/ModalSettingsStage.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,mCAAmC,CAAC;AAqE3C;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAG9C,oBAAoB,CAAC;IAFxC,OAAc,EAAE,SAAoC;IAC7C,KAAK,EAAE,MAAM,CAAwD;gBACzD,oBAAoB,CAAC,oBAAQ;IACzC,kBAAkB,UAAQ;IACjC,IAAW,OAAO,IAAI,KAAK,CAAC,SAAS,CAIpC;IACD,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAI9B;WAEU,sBAAsB,CAClC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM;WAiBR,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,MAAM;CAkC5D"}
1
+ {"version":3,"file":"ModalSettingsStage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/ModalSettingsStage.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,mCAAmC,CAAC;AAqE3C;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAG9C,oBAAoB,CAAC;IAFxC,OAAc,EAAE,SAAoC;IAC7C,KAAK,EAAE,MAAM,CAAwD;gBACzD,oBAAoB,CAAC,oBAAQ;IACzC,kBAAkB,UAAQ;IACjC,IAAW,OAAO,IAAI,KAAK,CAAC,SAAS,CAIpC;IACD,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAI9B;WAEU,sBAAsB,CAClC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM;WAiBR,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,MAAM;CAkC5D"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import "./ModalSettingsStage.scss";
9
9
  import * as React from "react";
10
- import { ConditionalBooleanValue, IconSpecUtilities, } from "@itwin/appui-abstract";
10
+ import { ConditionalBooleanValue } from "@itwin/appui-abstract";
11
11
  import settingsIconSvg from "@bentley/icons-generic/icons/settings.svg";
12
12
  import { IModelApp, NotifyMessageDetails, OutputMessagePriority, OutputMessageType, } from "@itwin/core-frontend";
13
13
  import { Logger } from "@itwin/core-bentley";
@@ -56,7 +56,7 @@ class SettingsModalFrontstage {
56
56
  return (React.createElement(ModalSettingsStage, { initialSettingsTabId: this.initialSettingsTabId }));
57
57
  }
58
58
  static getBackstageActionItem(groupPriority, itemPriority) {
59
- return BackstageItemUtilities.createActionItem(SettingsModalFrontstage.id, groupPriority, itemPriority, () => UiFramework.frontstages.openModalFrontstage(new SettingsModalFrontstage()), UiFramework.translate("settings.settingsStageLabel"), undefined, IconSpecUtilities.createWebComponentIconSpec(settingsIconSvg), { isHidden: SettingsModalFrontstage.noSettingsAvailable() });
59
+ return BackstageItemUtilities.createActionItem(SettingsModalFrontstage.id, groupPriority, itemPriority, () => UiFramework.frontstages.openModalFrontstage(new SettingsModalFrontstage()), UiFramework.translate("settings.settingsStageLabel"), undefined, settingsIconSvg, { isHidden: SettingsModalFrontstage.noSettingsAvailable() });
60
60
  }
61
61
  static showSettingsStage(initialSettingsTab) {
62
62
  if (UiFramework.settingsManager.providers.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"ModalSettingsStage.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/ModalSettingsStage.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport \"./ModalSettingsStage.scss\";\nimport * as React from \"react\";\nimport {\n ConditionalBooleanValue,\n IconSpecUtilities,\n} from \"@itwin/appui-abstract\";\nimport settingsIconSvg from \"@bentley/icons-generic/icons/settings.svg\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { Centered, SettingsContainer } from \"@itwin/core-react\";\nimport type {\n ModalFrontstageInfo,\n ModalFrontstageRequestedCloseEventArgs,\n} from \"../framework/FrameworkFrontstages\";\nimport { UiFramework } from \"../UiFramework\";\nimport { SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\nimport { StageUsage } from \"./StageUsage\";\nimport { BackstageItemUtilities } from \"../backstage/BackstageItemUtilities\";\n\nfunction ModalSettingsStage({\n initialSettingsTabId,\n}: {\n initialSettingsTabId?: string;\n}) {\n const id = UiFramework.frontstages.activeFrontstageDef?.id ?? \"none\";\n const stageUsage =\n UiFramework.frontstages.activeFrontstageDef?.usage ?? StageUsage.General;\n const tabEntries = UiFramework.settingsManager.getSettingEntries(\n id,\n stageUsage\n );\n const noSettingsAvailableLabel = React.useRef(\n UiFramework.translate(\"settings.noSettingsAvailable\")\n );\n\n const currentSettingsTab = React.useCallback(() => {\n const categoryToFind = initialSettingsTabId\n ? initialSettingsTabId.toLowerCase()\n : tabEntries[0].tabId.toLowerCase();\n let foundTab = tabEntries.find(\n (entry) => entry.tabId.toLowerCase() === categoryToFind\n );\n if (!foundTab)\n foundTab = tabEntries.find(\n (entry) => entry.label.toLowerCase() === categoryToFind\n );\n return foundTab;\n }, [initialSettingsTabId, tabEntries]);\n\n React.useEffect(() => {\n const handleFrontstageCloseRequested = ({\n modalFrontstage,\n stageCloseFunc,\n }: ModalFrontstageRequestedCloseEventArgs) => {\n // istanbul ignore else\n if (\n modalFrontstage instanceof SettingsModalFrontstage &&\n stageCloseFunc\n ) {\n UiFramework.settingsManager.closeSettingsContainer(stageCloseFunc);\n }\n };\n return UiFramework.frontstages.onCloseModalFrontstageRequestedEvent.addListener(\n handleFrontstageCloseRequested\n );\n }, [tabEntries]);\n\n return (\n <div className=\"uifw-settings-container\">\n {tabEntries.length ? (\n <SettingsContainer\n tabs={tabEntries}\n currentSettingsTab={currentSettingsTab()}\n settingsManager={UiFramework.settingsManager}\n />\n ) : (\n <Centered>{noSettingsAvailableLabel.current}</Centered>\n )}\n </div>\n );\n}\n\n/** Modal frontstage displaying and editing settings from registered settings providers. See [SettingsManager]($core-react)\n * and [SettingsContainer]($core-react).\n * @beta\n */\nexport class SettingsModalFrontstage implements ModalFrontstageInfo {\n public static id = \"appui-react.modalSettingsStage\";\n public title: string = UiFramework.translate(\"settings.settingsStageLabel\");\n constructor(public initialSettingsTabId?: string) {}\n public notifyCloseRequest = true;\n public get content(): React.ReactNode {\n return (\n <ModalSettingsStage initialSettingsTabId={this.initialSettingsTabId} />\n );\n }\n private static noSettingsAvailable = () =>\n new ConditionalBooleanValue(\n () => 0 === UiFramework.settingsManager.providers.length,\n [SyncUiEventId.SettingsProvidersChanged]\n );\n\n public static getBackstageActionItem(\n groupPriority: number,\n itemPriority: number\n ) {\n return BackstageItemUtilities.createActionItem(\n SettingsModalFrontstage.id,\n groupPriority,\n itemPriority,\n () =>\n UiFramework.frontstages.openModalFrontstage(\n new SettingsModalFrontstage()\n ),\n UiFramework.translate(\"settings.settingsStageLabel\"),\n undefined,\n IconSpecUtilities.createWebComponentIconSpec(settingsIconSvg),\n { isHidden: SettingsModalFrontstage.noSettingsAvailable() }\n );\n }\n\n public static showSettingsStage(initialSettingsTab?: string) {\n if (UiFramework.settingsManager.providers.length) {\n // Check to see if it is already open\n // istanbul ignore else\n if (\n UiFramework.frontstages.activeModalFrontstage &&\n UiFramework.frontstages.activeModalFrontstage instanceof\n SettingsModalFrontstage\n ) {\n if (initialSettingsTab) {\n UiFramework.settingsManager.activateSettingsTab(initialSettingsTab);\n return;\n }\n }\n UiFramework.frontstages.openModalFrontstage(\n new SettingsModalFrontstage(initialSettingsTab)\n );\n } else {\n const briefMessage = UiFramework.translate(\n \"settings.noSettingsAvailable\"\n );\n const detailedMessage = UiFramework.translate(\n \"settings.noSettingsProvidersRegistered\"\n );\n const info = new NotifyMessageDetails(\n OutputMessagePriority.Info,\n briefMessage,\n detailedMessage,\n OutputMessageType.Toast\n );\n IModelApp.notifications.outputMessage(info);\n Logger.logInfo(UiFramework.loggerCategory(this), detailedMessage);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ModalSettingsStage.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/ModalSettingsStage.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport \"./ModalSettingsStage.scss\";\nimport * as React from \"react\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport settingsIconSvg from \"@bentley/icons-generic/icons/settings.svg\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { Centered, SettingsContainer } from \"@itwin/core-react\";\nimport type {\n ModalFrontstageInfo,\n ModalFrontstageRequestedCloseEventArgs,\n} from \"../framework/FrameworkFrontstages\";\nimport { UiFramework } from \"../UiFramework\";\nimport { SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\nimport { StageUsage } from \"./StageUsage\";\nimport { BackstageItemUtilities } from \"../backstage/BackstageItemUtilities\";\n\nfunction ModalSettingsStage({\n initialSettingsTabId,\n}: {\n initialSettingsTabId?: string;\n}) {\n const id = UiFramework.frontstages.activeFrontstageDef?.id ?? \"none\";\n const stageUsage =\n UiFramework.frontstages.activeFrontstageDef?.usage ?? StageUsage.General;\n const tabEntries = UiFramework.settingsManager.getSettingEntries(\n id,\n stageUsage\n );\n const noSettingsAvailableLabel = React.useRef(\n UiFramework.translate(\"settings.noSettingsAvailable\")\n );\n\n const currentSettingsTab = React.useCallback(() => {\n const categoryToFind = initialSettingsTabId\n ? initialSettingsTabId.toLowerCase()\n : tabEntries[0].tabId.toLowerCase();\n let foundTab = tabEntries.find(\n (entry) => entry.tabId.toLowerCase() === categoryToFind\n );\n if (!foundTab)\n foundTab = tabEntries.find(\n (entry) => entry.label.toLowerCase() === categoryToFind\n );\n return foundTab;\n }, [initialSettingsTabId, tabEntries]);\n\n React.useEffect(() => {\n const handleFrontstageCloseRequested = ({\n modalFrontstage,\n stageCloseFunc,\n }: ModalFrontstageRequestedCloseEventArgs) => {\n // istanbul ignore else\n if (\n modalFrontstage instanceof SettingsModalFrontstage &&\n stageCloseFunc\n ) {\n UiFramework.settingsManager.closeSettingsContainer(stageCloseFunc);\n }\n };\n return UiFramework.frontstages.onCloseModalFrontstageRequestedEvent.addListener(\n handleFrontstageCloseRequested\n );\n }, [tabEntries]);\n\n return (\n <div className=\"uifw-settings-container\">\n {tabEntries.length ? (\n <SettingsContainer\n tabs={tabEntries}\n currentSettingsTab={currentSettingsTab()}\n settingsManager={UiFramework.settingsManager}\n />\n ) : (\n <Centered>{noSettingsAvailableLabel.current}</Centered>\n )}\n </div>\n );\n}\n\n/** Modal frontstage displaying and editing settings from registered settings providers. See [SettingsManager]($core-react)\n * and [SettingsContainer]($core-react).\n * @beta\n */\nexport class SettingsModalFrontstage implements ModalFrontstageInfo {\n public static id = \"appui-react.modalSettingsStage\";\n public title: string = UiFramework.translate(\"settings.settingsStageLabel\");\n constructor(public initialSettingsTabId?: string) {}\n public notifyCloseRequest = true;\n public get content(): React.ReactNode {\n return (\n <ModalSettingsStage initialSettingsTabId={this.initialSettingsTabId} />\n );\n }\n private static noSettingsAvailable = () =>\n new ConditionalBooleanValue(\n () => 0 === UiFramework.settingsManager.providers.length,\n [SyncUiEventId.SettingsProvidersChanged]\n );\n\n public static getBackstageActionItem(\n groupPriority: number,\n itemPriority: number\n ) {\n return BackstageItemUtilities.createActionItem(\n SettingsModalFrontstage.id,\n groupPriority,\n itemPriority,\n () =>\n UiFramework.frontstages.openModalFrontstage(\n new SettingsModalFrontstage()\n ),\n UiFramework.translate(\"settings.settingsStageLabel\"),\n undefined,\n settingsIconSvg,\n { isHidden: SettingsModalFrontstage.noSettingsAvailable() }\n );\n }\n\n public static showSettingsStage(initialSettingsTab?: string) {\n if (UiFramework.settingsManager.providers.length) {\n // Check to see if it is already open\n // istanbul ignore else\n if (\n UiFramework.frontstages.activeModalFrontstage &&\n UiFramework.frontstages.activeModalFrontstage instanceof\n SettingsModalFrontstage\n ) {\n if (initialSettingsTab) {\n UiFramework.settingsManager.activateSettingsTab(initialSettingsTab);\n return;\n }\n }\n UiFramework.frontstages.openModalFrontstage(\n new SettingsModalFrontstage(initialSettingsTab)\n );\n } else {\n const briefMessage = UiFramework.translate(\n \"settings.noSettingsAvailable\"\n );\n const detailedMessage = UiFramework.translate(\n \"settings.noSettingsProvidersRegistered\"\n );\n const info = new NotifyMessageDetails(\n OutputMessagePriority.Info,\n briefMessage,\n detailedMessage,\n OutputMessageType.Toast\n );\n IModelApp.notifications.outputMessage(info);\n Logger.logInfo(UiFramework.loggerCategory(this), detailedMessage);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NestedFrontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/NestedFrontstage.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK1D;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAErB;IACF,sDAAsD;IACtD,WAAkB,+BAA+B,mBAShD;CACF"}
1
+ {"version":3,"file":"NestedFrontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/NestedFrontstage.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAEtD,sDAAsD;IACtD,WAAkB,+BAA+B,mBAShD;CACF"}
@@ -7,7 +7,6 @@
7
7
  */
8
8
  import { CommandItemDef } from "../shared/CommandItemDef";
9
9
  import { UiFramework } from "../UiFramework";
10
- import { IconSpecUtilities } from "@itwin/appui-abstract";
11
10
  import svgProgressBackwardCircular from "@bentley/icons-generic/icons/progress-backward.svg";
12
11
  /**
13
12
  * Nested Frontstage related classes and commands
@@ -26,6 +25,6 @@ class NestedFrontstage {
26
25
  });
27
26
  }
28
27
  }
29
- NestedFrontstage.iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgProgressBackwardCircular);
28
+ NestedFrontstage.iconSpec = svgProgressBackwardCircular;
30
29
  export { NestedFrontstage };
31
30
  //# sourceMappingURL=NestedFrontstage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NestedFrontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/NestedFrontstage.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,2BAA2B,MAAM,oDAAoD,CAAC;AAE7F;;;GAGG;AACH,MAAa,gBAAgB;IAI3B,sDAAsD;IAC/C,MAAM,KAAK,+BAA+B;QAC/C,OAAO,IAAI,cAAc,CAAC;YACxB,SAAS,EAAE,0BAA0B;YACrC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;YACnC,QAAQ,EAAE,+CAA+C;YACzD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,WAAW,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACxD,CAAC;SACF,CAAC,CAAC;IACL,CAAC;;AAbc,yBAAQ,GAAG,iBAAiB,CAAC,0BAA0B,CACpE,2BAA2B,CAC5B,CAAC;SAHS,gBAAgB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { CommandItemDef } from \"../shared/CommandItemDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\nimport svgProgressBackwardCircular from \"@bentley/icons-generic/icons/progress-backward.svg\";\n\n/**\n * Nested Frontstage related classes and commands\n * @public\n */\nexport class NestedFrontstage {\n private static iconSpec = IconSpecUtilities.createWebComponentIconSpec(\n svgProgressBackwardCircular\n );\n /** Command that returns to the previous Frontstage */\n public static get backToPreviousFrontstageCommand() {\n return new CommandItemDef({\n commandId: \"backToPreviousFrontstage\",\n iconSpec: NestedFrontstage.iconSpec,\n labelKey: \"UiFramework:commands.backToPreviousFrontstage\",\n execute: async () => {\n await UiFramework.frontstages.closeNestedFrontstage();\n },\n });\n }\n}\n"]}
1
+ {"version":3,"file":"NestedFrontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/NestedFrontstage.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,2BAA2B,MAAM,oDAAoD,CAAC;AAE7F;;;GAGG;AACH,MAAa,gBAAgB;IAG3B,sDAAsD;IAC/C,MAAM,KAAK,+BAA+B;QAC/C,OAAO,IAAI,cAAc,CAAC;YACxB,SAAS,EAAE,0BAA0B;YACrC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;YACnC,QAAQ,EAAE,+CAA+C;YACzD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,WAAW,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACxD,CAAC;SACF,CAAC,CAAC;IACL,CAAC;;AAZc,yBAAQ,GAAG,2BAA2B,CAAC;SAD3C,gBAAgB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { CommandItemDef } from \"../shared/CommandItemDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport svgProgressBackwardCircular from \"@bentley/icons-generic/icons/progress-backward.svg\";\n\n/**\n * Nested Frontstage related classes and commands\n * @public\n */\nexport class NestedFrontstage {\n private static iconSpec = svgProgressBackwardCircular;\n\n /** Command that returns to the previous Frontstage */\n public static get backToPreviousFrontstageCommand() {\n return new CommandItemDef({\n commandId: \"backToPreviousFrontstage\",\n iconSpec: NestedFrontstage.iconSpec,\n labelKey: \"UiFramework:commands.backToPreviousFrontstage\",\n execute: async () => {\n await UiFramework.frontstages.closeNestedFrontstage();\n },\n });\n }\n}\n"]}