@itwin/appui-react 5.18.0 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/lib/appui-react/UiFramework.js +20 -13
  3. package/lib/appui-react/UiFramework.js.map +1 -1
  4. package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  5. package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  6. package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
  7. package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  8. package/lib/appui-react/accudraw/Calculator.js +92 -98
  9. package/lib/appui-react/accudraw/Calculator.js.map +1 -1
  10. package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
  11. package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  12. package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
  13. package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
  14. package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
  15. package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  16. package/lib/appui-react/accudraw/MenuButton.js +20 -20
  17. package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
  18. package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
  19. package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
  20. package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
  21. package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  22. package/lib/appui-react/backstage/BackstageManager.js +1 -3
  23. package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
  24. package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
  25. package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
  26. package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
  27. package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  28. package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
  29. package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
  30. package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  31. package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
  32. package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  33. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
  34. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  35. package/lib/appui-react/configurableui/TimeTracker.js +25 -27
  36. package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
  37. package/lib/appui-react/content/ContentControl.js +2 -1
  38. package/lib/appui-react/content/ContentControl.js.map +1 -1
  39. package/lib/appui-react/content/ContentGroup.js +8 -4
  40. package/lib/appui-react/content/ContentGroup.js.map +1 -1
  41. package/lib/appui-react/content/ContentLayout.js +47 -38
  42. package/lib/appui-react/content/ContentLayout.js.map +1 -1
  43. package/lib/appui-react/content/IModelViewport.js +28 -23
  44. package/lib/appui-react/content/IModelViewport.js.map +1 -1
  45. package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
  46. package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  47. package/lib/appui-react/content/InternalContentViewManager.js +9 -8
  48. package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
  49. package/lib/appui-react/content/StandardContentLayouts.js +141 -141
  50. package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
  51. package/lib/appui-react/content/ViewportContentControl.js +25 -22
  52. package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
  53. package/lib/appui-react/cursor/CursorInformation.js +7 -6
  54. package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
  55. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
  56. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  57. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
  58. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  59. package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
  60. package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
  61. package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
  62. package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  63. package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
  64. package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  65. package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
  66. package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  67. package/lib/appui-react/dialog/ModelessDialog.js +3 -3
  68. package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
  69. package/lib/appui-react/feedback/ElementTooltip.js +3 -1
  70. package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
  71. package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
  72. package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
  73. package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
  74. package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
  75. package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
  76. package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  77. package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
  78. package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  79. package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
  80. package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  81. package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
  82. package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  83. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
  84. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  85. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
  86. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  87. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
  88. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  89. package/lib/appui-react/layout/backstage/Backstage.js +11 -14
  90. package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
  91. package/lib/appui-react/layout/base/DragManager.js +6 -7
  92. package/lib/appui-react/layout/base/DragManager.js.map +1 -1
  93. package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
  94. package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  95. package/lib/appui-react/layout/popup/Tooltip.js +8 -11
  96. package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
  97. package/lib/appui-react/layout/state/NineZoneStateReducer.d.ts.map +1 -1
  98. package/lib/appui-react/layout/state/NineZoneStateReducer.js +8 -4
  99. package/lib/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  100. package/lib/appui-react/layout/widget/Overflow.d.ts.map +1 -1
  101. package/lib/appui-react/layout/widget/Overflow.js +11 -17
  102. package/lib/appui-react/layout/widget/Overflow.js.map +1 -1
  103. package/lib/appui-react/layout/widget/Overflow.scss +3 -48
  104. package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
  105. package/lib/appui-react/layout/widget/Tab.js +7 -5
  106. package/lib/appui-react/layout/widget/Tab.js.map +1 -1
  107. package/lib/appui-react/messages/InputField.js +21 -24
  108. package/lib/appui-react/messages/InputField.js.map +1 -1
  109. package/lib/appui-react/messages/MessageManager.js +39 -38
  110. package/lib/appui-react/messages/MessageManager.js.map +1 -1
  111. package/lib/appui-react/messages/Pointer.js +38 -38
  112. package/lib/appui-react/messages/Pointer.js.map +1 -1
  113. package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
  114. package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
  115. package/lib/appui-react/messages/StatusMessageManager.js +2 -4
  116. package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
  117. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  118. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  119. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  120. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  121. package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
  122. package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  123. package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
  124. package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  125. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
  126. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  127. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
  128. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  129. package/lib/appui-react/pickers/ListPicker.js +28 -28
  130. package/lib/appui-react/pickers/ListPicker.js.map +1 -1
  131. package/lib/appui-react/pickers/ViewSelector.js +87 -86
  132. package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
  133. package/lib/appui-react/popup/CardPopup.js +18 -21
  134. package/lib/appui-react/popup/CardPopup.js.map +1 -1
  135. package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
  136. package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
  137. package/lib/appui-react/popup/InputEditorPopup.js +18 -20
  138. package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
  139. package/lib/appui-react/popup/PopupManager.js +22 -25
  140. package/lib/appui-react/popup/PopupManager.js.map +1 -1
  141. package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
  142. package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  143. package/lib/appui-react/popup/ToolbarPopup.js +18 -21
  144. package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
  145. package/lib/appui-react/redux/ReducerRegistry.js +2 -0
  146. package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
  147. package/lib/appui-react/redux/StateManager.js +4 -1
  148. package/lib/appui-react/redux/StateManager.js.map +1 -1
  149. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
  150. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  151. package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
  152. package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  153. package/lib/appui-react/shared/CommandItemDef.js +3 -3
  154. package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
  155. package/lib/appui-react/shared/CustomItemDef.js +4 -2
  156. package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
  157. package/lib/appui-react/shared/ItemDefBase.js +13 -5
  158. package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
  159. package/lib/appui-react/shared/MenuItem.js +6 -1
  160. package/lib/appui-react/shared/MenuItem.js.map +1 -1
  161. package/lib/appui-react/shared/ToolItemDef.js +1 -1
  162. package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
  163. package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
  164. package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  165. package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
  166. package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  167. package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
  168. package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
  169. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
  170. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  171. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
  172. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  173. package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
  174. package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  175. package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
  176. package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  177. package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
  178. package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  179. package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
  180. package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  181. package/lib/appui-react/toolbar/GroupItem.js +11 -5
  182. package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
  183. package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
  184. package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  185. package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
  186. package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  187. package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
  188. package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  189. package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
  190. package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
  191. package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
  192. package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  193. package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
  194. package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
  195. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
  196. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  197. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
  198. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  199. package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
  200. package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
  201. package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
  202. package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
  203. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
  204. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  205. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
  206. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  207. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
  208. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  209. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
  210. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  211. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
  212. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  213. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
  214. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  215. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
  216. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  217. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
  218. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  219. package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
  220. package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  221. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
  222. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  223. package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
  224. package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  225. package/lib/appui-react/uistate/AppUiSettings.js +41 -33
  226. package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
  227. package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
  228. package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  229. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
  230. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  231. package/lib/appui-react/widgets/WidgetControl.js +2 -0
  232. package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
  233. package/lib/appui-react/widgets/WidgetDef.js +28 -7
  234. package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
  235. package/lib/appui-react/widgets/WidgetHost.js +4 -4
  236. package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
  237. package/lib/appui-react/widgets/WidgetManager.js +5 -7
  238. package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
  239. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  240. package/lib/cjs/appui-react/layout/widget/Overflow.scss +3 -48
  241. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  242. package/lib/esm/appui-react/layout/widget/Overflow.scss +3 -48
  243. package/package.json +10 -11
  244. package/lib/appui-react/layout/widget/Menu.d.ts +0 -16
  245. package/lib/appui-react/layout/widget/Menu.d.ts.map +0 -1
  246. package/lib/appui-react/layout/widget/Menu.js +0 -21
  247. package/lib/appui-react/layout/widget/Menu.js.map +0 -1
  248. package/lib/appui-react/layout/widget/Menu.scss +0 -12
  249. package/lib/cjs/appui-react/layout/widget/Menu.scss +0 -12
  250. package/lib/esm/appui-react/layout/widget/Menu.scss +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"InternalBackstageManager.js","sourceRoot":"","sources":["../../../src/appui-react/backstage/InternalBackstageManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAArC;QACU,YAAO,GAAG,KAAK,CAAC;QAExB,uDAAuD;QACvC,cAAS,GAAG,IAAI,OAAO,EAEpC,CAAC;IAuCN,CAAC;IArCC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,SAAS,CAAC,MAAe;QAC/B,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO;QACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACxB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,mGAAmG;IACnG,4DAA4D;IACrD,yBAAyB,CAAC,gBAA2B;QAC1D,4DAA4D;QAC5D,OAAO,IAAI,cAAc,CAAC;YACxB,SAAS,EAAE,2BAA2B;YACtC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW;YAC3D,QAAQ,EAAE,uCAAuC;YACjD,OAAO,EAAE,GAAG,EAAE;gBACZ,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACjC,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Backstage\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { IconSpec } from \"@itwin/core-react\";\nimport { CommandItemDef } from \"../shared/CommandItemDef.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { BackstageToggledArgs } from \"../framework/FrameworkBackstage.js\";\n\n/** Controls backstage.\n * @internal\n */\nexport class InternalBackstageManager {\n private _isOpen = false;\n\n /** Event raised when backstage is opened or closed. */\n public readonly onToggled = new BeEvent<\n (args: BackstageToggledArgs) => void\n >();\n\n public get isOpen() {\n return this._isOpen;\n }\n\n private setIsOpen(isOpen: boolean) {\n if (isOpen === this._isOpen) return;\n this._isOpen = isOpen;\n this.onToggled.raiseEvent({\n isOpen,\n });\n }\n\n public open() {\n this.setIsOpen(true);\n }\n\n public close() {\n this.setIsOpen(false);\n }\n\n public toggle() {\n this.setIsOpen(!this.isOpen);\n }\n\n /** Get CommandItemDef that will toggle display of Backstage and allow iconSpec to be overridden */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public getBackstageToggleCommand(overrideIconSpec?: IconSpec) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return new CommandItemDef({\n commandId: \"UiFramework.openBackstage\",\n iconSpec: overrideIconSpec ? overrideIconSpec : \"icon-home\",\n labelKey: \"UiFramework:buttons.openBackstageMenu\",\n execute: () => {\n UiFramework.backstage.toggle();\n },\n });\n }\n}\n"]}
1
+ {"version":3,"file":"InternalBackstageManager.js","sourceRoot":"","sources":["../../../src/appui-react/backstage/InternalBackstageManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAC3B,OAAO,GAAG,KAAK,CAAC;IAExB,uDAAuD;IACvC,SAAS,GAAG,IAAI,OAAO,EAEpC,CAAC;IAEJ,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,SAAS,CAAC,MAAe;QAC/B,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO;QACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACxB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,mGAAmG;IACnG,4DAA4D;IACrD,yBAAyB,CAAC,gBAA2B;QAC1D,4DAA4D;QAC5D,OAAO,IAAI,cAAc,CAAC;YACxB,SAAS,EAAE,2BAA2B;YACtC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW;YAC3D,QAAQ,EAAE,uCAAuC;YACjD,OAAO,EAAE,GAAG,EAAE;gBACZ,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACjC,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Backstage\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { IconSpec } from \"@itwin/core-react\";\nimport { CommandItemDef } from \"../shared/CommandItemDef.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { BackstageToggledArgs } from \"../framework/FrameworkBackstage.js\";\n\n/** Controls backstage.\n * @internal\n */\nexport class InternalBackstageManager {\n private _isOpen = false;\n\n /** Event raised when backstage is opened or closed. */\n public readonly onToggled = new BeEvent<\n (args: BackstageToggledArgs) => void\n >();\n\n public get isOpen() {\n return this._isOpen;\n }\n\n private setIsOpen(isOpen: boolean) {\n if (isOpen === this._isOpen) return;\n this._isOpen = isOpen;\n this.onToggled.raiseEvent({\n isOpen,\n });\n }\n\n public open() {\n this.setIsOpen(true);\n }\n\n public close() {\n this.setIsOpen(false);\n }\n\n public toggle() {\n this.setIsOpen(!this.isOpen);\n }\n\n /** Get CommandItemDef that will toggle display of Backstage and allow iconSpec to be overridden */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public getBackstageToggleCommand(overrideIconSpec?: IconSpec) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return new CommandItemDef({\n commandId: \"UiFramework.openBackstage\",\n iconSpec: overrideIconSpec ? overrideIconSpec : \"icon-home\",\n labelKey: \"UiFramework:buttons.openBackstageMenu\",\n execute: () => {\n UiFramework.backstage.toggle();\n },\n });\n }\n}\n"]}
@@ -45,38 +45,9 @@ function addChildHTML(window) {
45
45
  * @internal
46
46
  */
47
47
  export class InternalChildWindowManager {
48
- constructor() {
49
- this._openChildWindows = [];
50
- this._childWindowToUnregister = new Map();
51
- this.onChildWindowsChanged = new BeEvent();
52
- /**
53
- * Close a specific child window.
54
- * @param childWindowId Id of the window to close.
55
- * @param processWindowClose should the `close` method be called on the closing window. (defaults to true).
56
- * @returns false if the window could not be found.
57
- */
58
- this.close = (childWindowId, processWindowClose = true) => {
59
- const windowIndex = this.openChildWindows.findIndex((openWindow) => openWindow.childWindowId === childWindowId);
60
- if (windowIndex === -1)
61
- return false;
62
- const { onClosePopoutWidget } = usePopoutsStore.getState();
63
- onClosePopoutWidget.raiseEvent({ windowId: childWindowId });
64
- const childWindow = this.openChildWindows[windowIndex];
65
- this._openChildWindows.splice(windowIndex, 1);
66
- this._childWindowToUnregister.get(childWindowId)?.();
67
- this._childWindowToUnregister.delete(childWindowId);
68
- this.onChildWindowsChanged.raiseEvent();
69
- if (processWindowClose) {
70
- childWindow.window.close();
71
- }
72
- else {
73
- // call the following to convert popout to docked widget
74
- const frontStageDef = UiFramework.frontstages.activeFrontstageDef;
75
- frontStageDef?.dockWidgetContainerByContainerId(childWindowId);
76
- }
77
- return true;
78
- };
79
- }
48
+ _openChildWindows = [];
49
+ _childWindowToUnregister = new Map();
50
+ onChildWindowsChanged = new BeEvent();
80
51
  get openChildWindows() {
81
52
  return this._openChildWindows;
82
53
  }
@@ -120,6 +91,33 @@ export class InternalChildWindowManager {
120
91
  this._openChildWindows = [];
121
92
  this.onChildWindowsChanged.raiseEvent();
122
93
  }
94
+ /**
95
+ * Close a specific child window.
96
+ * @param childWindowId Id of the window to close.
97
+ * @param processWindowClose should the `close` method be called on the closing window. (defaults to true).
98
+ * @returns false if the window could not be found.
99
+ */
100
+ close = (childWindowId, processWindowClose = true) => {
101
+ const windowIndex = this.openChildWindows.findIndex((openWindow) => openWindow.childWindowId === childWindowId);
102
+ if (windowIndex === -1)
103
+ return false;
104
+ const { onClosePopoutWidget } = usePopoutsStore.getState();
105
+ onClosePopoutWidget.raiseEvent({ windowId: childWindowId });
106
+ const childWindow = this.openChildWindows[windowIndex];
107
+ this._openChildWindows.splice(windowIndex, 1);
108
+ this._childWindowToUnregister.get(childWindowId)?.();
109
+ this._childWindowToUnregister.delete(childWindowId);
110
+ this.onChildWindowsChanged.raiseEvent();
111
+ if (processWindowClose) {
112
+ childWindow.window.close();
113
+ }
114
+ else {
115
+ // call the following to convert popout to docked widget
116
+ const frontStageDef = UiFramework.frontstages.activeFrontstageDef;
117
+ frontStageDef?.dockWidgetContainerByContainerId(childWindowId);
118
+ }
119
+ return true;
120
+ };
123
121
  adjustWindowLocation(location) {
124
122
  // If no location is provided, child window will open in the center of the current window.
125
123
  if (location.top === 0 && location.left === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"InternalChildWindowManager.js","sourceRoot":"","sources":["../../../src/appui-react/childwindow/InternalChildWindowManager.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\n/** @packageDocumentation\n * @module ChildWindowManager\n */\n\nimport type * as React from \"react\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type {\n ChildWindowLocationProps,\n FrameworkChildWindows,\n OpenChildWindowInfo,\n} from \"../framework/FrameworkChildWindows.js\";\nimport { usePopoutsStore } from \"../preview/reparent-popout-widgets/usePopoutsStore.js\";\nimport type { TabState } from \"../layout/state/TabState.js\";\n\nfunction addChildHTML(window: Window) {\n const doc = window.document;\n\n const meta = doc.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n doc.head.appendChild(meta);\n\n const style = doc.createElement(\"style\");\n style.textContent = `\n html,\n body {\n height: 100%;\n width: 100%;\n margin: 0;\n overflow: hidden;\n }\n #root {\n height: 100%;\n }\n `;\n doc.head.appendChild(style);\n\n // Fixes a FF specific issue where document.baseURI is \"about:blank\"\n const opener: Window | undefined = window.opener;\n const baseURI = opener?.document.baseURI;\n if (doc.baseURI === \"about:blank\" && baseURI) {\n const base = doc.createElement(\"base\");\n base.href = baseURI;\n doc.head.appendChild(base);\n }\n\n const noScript = doc.createElement(\"noscript\");\n noScript.textContent = \"You need to enable JavaScript to run this app.\";\n doc.body.appendChild(noScript);\n\n const root = doc.createElement(\"div\");\n root.id = \"root\";\n doc.body.appendChild(root);\n}\n\n/** @internal */\nexport interface InternalOpenChildWindowInfo extends OpenChildWindowInfo {\n content?: React.ReactNode;\n tabId?: TabState[\"id\"];\n}\n\ninterface OpenWindowArgs {\n childWindowId: string;\n title: string;\n content: React.ReactNode;\n location: ChildWindowLocationProps;\n useDefaultPopoutUrl: boolean;\n tabId?: TabState[\"id\"];\n}\n\n/** Supports opening a child browser window from the main application window. The child window is managed by the main application\n * and is running in the same security context. The application must deliver the html file iTwinPopup.html along side its index.html.\n * See also: [Child Window Manager]($docs/learning/ui/appui-react/ChildWindows.md)\n * @internal\n */\nexport class InternalChildWindowManager implements FrameworkChildWindows {\n private _openChildWindows: InternalOpenChildWindowInfo[] = [];\n private _childWindowToUnregister = new Map<\n InternalOpenChildWindowInfo[\"childWindowId\"],\n () => void\n >();\n\n public readonly onChildWindowsChanged = new BeEvent<() => void>();\n\n public get openChildWindows() {\n return this._openChildWindows;\n }\n\n /**\n * Returns the OpenChildWindowInfo for the related id.\n * @param childWindowId Id of the window to retrieve.\n * @returns undefined if not found.\n */\n public find(\n childWindowId: string | undefined\n ): OpenChildWindowInfo | undefined {\n if (undefined === childWindowId) return undefined;\n\n return this.openChildWindows.find(\n (openWindow) => openWindow.childWindowId === childWindowId\n );\n }\n\n /**\n * Return the childWindowId of the provided window.\n * @param contentWindow Window element to identify\n * @returns undefined if not found\n */\n public findId(contentWindow: Window | undefined | null): string | undefined {\n if (!contentWindow) return undefined;\n\n const childWindow = this.openChildWindows.find(\n (openWindow) => openWindow.window === contentWindow\n );\n return childWindow?.childWindowId;\n }\n\n private renderChildWindowContents(\n childWindow: Window,\n childWindowId: string,\n content: React.ReactNode,\n title: string,\n tabId?: TabState[\"id\"]\n ) {\n childWindow.document.title = title;\n\n this._openChildWindows.push({\n childWindowId,\n window: childWindow,\n parentWindow: window,\n content,\n tabId,\n });\n this.onChildWindowsChanged.raiseEvent();\n }\n\n /** Close all child/pop-out windows. This typically is called when the frontstage is changed. */\n public closeAll() {\n this.openChildWindows.forEach((openChildWindow) =>\n openChildWindow.window.close()\n );\n this._childWindowToUnregister.forEach((unregister) => unregister());\n this._childWindowToUnregister.clear();\n this._openChildWindows = [];\n this.onChildWindowsChanged.raiseEvent();\n }\n\n /**\n * Close a specific child window.\n * @param childWindowId Id of the window to close.\n * @param processWindowClose should the `close` method be called on the closing window. (defaults to true).\n * @returns false if the window could not be found.\n */\n public close = (childWindowId: string, processWindowClose = true) => {\n const windowIndex = this.openChildWindows.findIndex(\n (openWindow) => openWindow.childWindowId === childWindowId\n );\n if (windowIndex === -1) return false;\n const { onClosePopoutWidget } = usePopoutsStore.getState();\n onClosePopoutWidget.raiseEvent({ windowId: childWindowId });\n\n const childWindow = this.openChildWindows[windowIndex];\n this._openChildWindows.splice(windowIndex, 1);\n this._childWindowToUnregister.get(childWindowId)?.();\n this._childWindowToUnregister.delete(childWindowId);\n\n this.onChildWindowsChanged.raiseEvent();\n if (processWindowClose) {\n childWindow.window.close();\n } else {\n // call the following to convert popout to docked widget\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n frontStageDef?.dockWidgetContainerByContainerId(childWindowId);\n }\n return true;\n };\n\n private adjustWindowLocation(location: ChildWindowLocationProps) {\n // If no location is provided, child window will open in the center of the current window.\n if (location.top === 0 && location.left === 0) {\n location.left =\n window.outerWidth / 2 + window.screenX - location.width / 2;\n location.top =\n window.outerHeight / 2 + window.screenY - location.height / 2;\n }\n }\n\n /**\n * Open a new child window.\n * @param childWindowId Id to assign to the newly created window.\n * @param title Title to display on the window.\n * @param content ReactNode to be rendered in the window.\n * @param location Position and size information\n * @param useDefaultPopoutUrl use \"/iTwinPopup.html\" as the window Url, \"\" otherwise.\n * @returns true if the window is opened successfully.\n */\n public open(\n childWindowId: string,\n title: string,\n content: React.ReactNode,\n location: ChildWindowLocationProps,\n useDefaultPopoutUrl?: boolean\n ) {\n const childWindow = this.openWindow({\n childWindowId,\n title,\n content,\n location,\n useDefaultPopoutUrl: useDefaultPopoutUrl ?? false,\n });\n return !!childWindow;\n }\n\n /** Used internally to open child windows and popout widgets. */\n public openWindow({\n childWindowId,\n location,\n useDefaultPopoutUrl,\n content,\n title,\n tabId,\n }: OpenWindowArgs) {\n if (this.find(childWindowId)) return undefined;\n\n this.adjustWindowLocation(location);\n const url = useDefaultPopoutUrl ? \"/iTwinPopup.html\" : \"\";\n const childWindow = window.open(\n url,\n \"\",\n `width=${location.width},height=${location.height},left=${location.left},top=${location.top},menubar=no,resizable=yes,scrollbars=no,status=no,location=no`\n );\n if (!childWindow) return undefined;\n\n const onPageHide = () => {\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontStageDef) return;\n frontStageDef.saveChildWindowSizeAndPosition(childWindowId, childWindow);\n\n // Trigger first so popout can be converted back to main window widget\n this.close(childWindowId, false);\n };\n childWindow.addEventListener(\"pagehide\", onPageHide);\n\n const onDOMContentLoaded = () => {\n this.renderChildWindowContents(\n childWindow,\n childWindowId,\n content,\n title,\n tabId\n );\n };\n if (url.length === 0) {\n addChildHTML(childWindow);\n onDOMContentLoaded();\n } else {\n childWindow.addEventListener(\"DOMContentLoaded\", onDOMContentLoaded);\n }\n\n const onUnload = () => {\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n if (frontStageDef) {\n this.close(childWindowId, true);\n }\n };\n window.addEventListener(\"unload\", onUnload);\n\n this._childWindowToUnregister.set(childWindowId, () => {\n childWindow.removeEventListener(\"pagehide\", onPageHide);\n childWindow.removeEventListener(\"DOMContentLoaded\", onDOMContentLoaded);\n window.removeEventListener(\"unload\", onUnload);\n });\n\n return childWindow;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalChildWindowManager.js","sourceRoot":"","sources":["../../../src/appui-react/childwindow/InternalChildWindowManager.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\n/** @packageDocumentation\n * @module ChildWindowManager\n */\n\nimport type * as React from \"react\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type {\n ChildWindowLocationProps,\n FrameworkChildWindows,\n OpenChildWindowInfo,\n} from \"../framework/FrameworkChildWindows.js\";\nimport { usePopoutsStore } from \"../preview/reparent-popout-widgets/usePopoutsStore.js\";\nimport type { TabState } from \"../layout/state/TabState.js\";\n\nfunction addChildHTML(window: Window) {\n const doc = window.document;\n\n const meta = doc.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n doc.head.appendChild(meta);\n\n const style = doc.createElement(\"style\");\n style.textContent = `\n html,\n body {\n height: 100%;\n width: 100%;\n margin: 0;\n overflow: hidden;\n }\n #root {\n height: 100%;\n }\n `;\n doc.head.appendChild(style);\n\n // Fixes a FF specific issue where document.baseURI is \"about:blank\"\n const opener: Window | undefined = window.opener;\n const baseURI = opener?.document.baseURI;\n if (doc.baseURI === \"about:blank\" && baseURI) {\n const base = doc.createElement(\"base\");\n base.href = baseURI;\n doc.head.appendChild(base);\n }\n\n const noScript = doc.createElement(\"noscript\");\n noScript.textContent = \"You need to enable JavaScript to run this app.\";\n doc.body.appendChild(noScript);\n\n const root = doc.createElement(\"div\");\n root.id = \"root\";\n doc.body.appendChild(root);\n}\n\n/** @internal */\nexport interface InternalOpenChildWindowInfo extends OpenChildWindowInfo {\n content?: React.ReactNode;\n tabId?: TabState[\"id\"];\n}\n\ninterface OpenWindowArgs {\n childWindowId: string;\n title: string;\n content: React.ReactNode;\n location: ChildWindowLocationProps;\n useDefaultPopoutUrl: boolean;\n tabId?: TabState[\"id\"];\n}\n\n/** Supports opening a child browser window from the main application window. The child window is managed by the main application\n * and is running in the same security context. The application must deliver the html file iTwinPopup.html along side its index.html.\n * See also: [Child Window Manager]($docs/learning/ui/appui-react/ChildWindows.md)\n * @internal\n */\nexport class InternalChildWindowManager implements FrameworkChildWindows {\n private _openChildWindows: InternalOpenChildWindowInfo[] = [];\n private _childWindowToUnregister = new Map<\n InternalOpenChildWindowInfo[\"childWindowId\"],\n () => void\n >();\n\n public readonly onChildWindowsChanged = new BeEvent<() => void>();\n\n public get openChildWindows() {\n return this._openChildWindows;\n }\n\n /**\n * Returns the OpenChildWindowInfo for the related id.\n * @param childWindowId Id of the window to retrieve.\n * @returns undefined if not found.\n */\n public find(\n childWindowId: string | undefined\n ): OpenChildWindowInfo | undefined {\n if (undefined === childWindowId) return undefined;\n\n return this.openChildWindows.find(\n (openWindow) => openWindow.childWindowId === childWindowId\n );\n }\n\n /**\n * Return the childWindowId of the provided window.\n * @param contentWindow Window element to identify\n * @returns undefined if not found\n */\n public findId(contentWindow: Window | undefined | null): string | undefined {\n if (!contentWindow) return undefined;\n\n const childWindow = this.openChildWindows.find(\n (openWindow) => openWindow.window === contentWindow\n );\n return childWindow?.childWindowId;\n }\n\n private renderChildWindowContents(\n childWindow: Window,\n childWindowId: string,\n content: React.ReactNode,\n title: string,\n tabId?: TabState[\"id\"]\n ) {\n childWindow.document.title = title;\n\n this._openChildWindows.push({\n childWindowId,\n window: childWindow,\n parentWindow: window,\n content,\n tabId,\n });\n this.onChildWindowsChanged.raiseEvent();\n }\n\n /** Close all child/pop-out windows. This typically is called when the frontstage is changed. */\n public closeAll() {\n this.openChildWindows.forEach((openChildWindow) =>\n openChildWindow.window.close()\n );\n this._childWindowToUnregister.forEach((unregister) => unregister());\n this._childWindowToUnregister.clear();\n this._openChildWindows = [];\n this.onChildWindowsChanged.raiseEvent();\n }\n\n /**\n * Close a specific child window.\n * @param childWindowId Id of the window to close.\n * @param processWindowClose should the `close` method be called on the closing window. (defaults to true).\n * @returns false if the window could not be found.\n */\n public close = (childWindowId: string, processWindowClose = true) => {\n const windowIndex = this.openChildWindows.findIndex(\n (openWindow) => openWindow.childWindowId === childWindowId\n );\n if (windowIndex === -1) return false;\n const { onClosePopoutWidget } = usePopoutsStore.getState();\n onClosePopoutWidget.raiseEvent({ windowId: childWindowId });\n\n const childWindow = this.openChildWindows[windowIndex];\n this._openChildWindows.splice(windowIndex, 1);\n this._childWindowToUnregister.get(childWindowId)?.();\n this._childWindowToUnregister.delete(childWindowId);\n\n this.onChildWindowsChanged.raiseEvent();\n if (processWindowClose) {\n childWindow.window.close();\n } else {\n // call the following to convert popout to docked widget\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n frontStageDef?.dockWidgetContainerByContainerId(childWindowId);\n }\n return true;\n };\n\n private adjustWindowLocation(location: ChildWindowLocationProps) {\n // If no location is provided, child window will open in the center of the current window.\n if (location.top === 0 && location.left === 0) {\n location.left =\n window.outerWidth / 2 + window.screenX - location.width / 2;\n location.top =\n window.outerHeight / 2 + window.screenY - location.height / 2;\n }\n }\n\n /**\n * Open a new child window.\n * @param childWindowId Id to assign to the newly created window.\n * @param title Title to display on the window.\n * @param content ReactNode to be rendered in the window.\n * @param location Position and size information\n * @param useDefaultPopoutUrl use \"/iTwinPopup.html\" as the window Url, \"\" otherwise.\n * @returns true if the window is opened successfully.\n */\n public open(\n childWindowId: string,\n title: string,\n content: React.ReactNode,\n location: ChildWindowLocationProps,\n useDefaultPopoutUrl?: boolean\n ) {\n const childWindow = this.openWindow({\n childWindowId,\n title,\n content,\n location,\n useDefaultPopoutUrl: useDefaultPopoutUrl ?? false,\n });\n return !!childWindow;\n }\n\n /** Used internally to open child windows and popout widgets. */\n public openWindow({\n childWindowId,\n location,\n useDefaultPopoutUrl,\n content,\n title,\n tabId,\n }: OpenWindowArgs) {\n if (this.find(childWindowId)) return undefined;\n\n this.adjustWindowLocation(location);\n const url = useDefaultPopoutUrl ? \"/iTwinPopup.html\" : \"\";\n const childWindow = window.open(\n url,\n \"\",\n `width=${location.width},height=${location.height},left=${location.left},top=${location.top},menubar=no,resizable=yes,scrollbars=no,status=no,location=no`\n );\n if (!childWindow) return undefined;\n\n const onPageHide = () => {\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontStageDef) return;\n frontStageDef.saveChildWindowSizeAndPosition(childWindowId, childWindow);\n\n // Trigger first so popout can be converted back to main window widget\n this.close(childWindowId, false);\n };\n childWindow.addEventListener(\"pagehide\", onPageHide);\n\n const onDOMContentLoaded = () => {\n this.renderChildWindowContents(\n childWindow,\n childWindowId,\n content,\n title,\n tabId\n );\n };\n if (url.length === 0) {\n addChildHTML(childWindow);\n onDOMContentLoaded();\n } else {\n childWindow.addEventListener(\"DOMContentLoaded\", onDOMContentLoaded);\n }\n\n const onUnload = () => {\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n if (frontStageDef) {\n this.close(childWindowId, true);\n }\n };\n window.addEventListener(\"unload\", onUnload);\n\n this._childWindowToUnregister.set(childWindowId, () => {\n childWindow.removeEventListener(\"pagehide\", onPageHide);\n childWindow.removeEventListener(\"DOMContentLoaded\", onDOMContentLoaded);\n window.removeEventListener(\"unload\", onUnload);\n });\n\n return childWindow;\n }\n}\n"]}
@@ -10,39 +10,21 @@ import { InternalConfigurableUiManager } from "./InternalConfigurableUiManager.j
10
10
  * @internal
11
11
  */
12
12
  export class ActivityTracker {
13
- constructor() {
14
- this._intervalTimeout = 1000;
15
- this._events = [
16
- "keydown",
17
- "wheel",
18
- "scroll",
19
- "mousedown",
20
- "mousemove",
21
- "touchstart",
22
- "touchmove",
23
- "pointerdown",
24
- "pointermove",
25
- "visibilitychange",
26
- ];
27
- this._bindEvents = () => {
28
- this._events.forEach((e) => {
29
- window.addEventListener(e, this._trackUiActivity, { capture: true });
30
- });
31
- };
32
- this._unbindEvents = () => {
33
- this._events.forEach((e) => {
34
- window.removeEventListener(e, this._trackUiActivity, { capture: true });
35
- });
36
- };
37
- this._trackUiInterval = () => {
38
- InternalConfigurableUiManager.onUiIntervalEvent.emit({
39
- idleTimeout: this._idleTimeout,
40
- });
41
- };
42
- this._trackUiActivity = (event) => {
43
- InternalConfigurableUiManager.onUiActivityEvent.emit({ event });
44
- };
45
- }
13
+ _intervalId;
14
+ _idleTimeout;
15
+ _intervalTimeout = 1000;
16
+ _events = [
17
+ "keydown",
18
+ "wheel",
19
+ "scroll",
20
+ "mousedown",
21
+ "mousemove",
22
+ "touchstart",
23
+ "touchmove",
24
+ "pointerdown",
25
+ "pointermove",
26
+ "visibilitychange",
27
+ ];
46
28
  /** Initializes the time tracker and adds event listeners
47
29
  */
48
30
  initialize(props) {
@@ -63,5 +45,23 @@ export class ActivityTracker {
63
45
  this._intervalId = undefined;
64
46
  }
65
47
  }
48
+ _bindEvents = () => {
49
+ this._events.forEach((e) => {
50
+ window.addEventListener(e, this._trackUiActivity, { capture: true });
51
+ });
52
+ };
53
+ _unbindEvents = () => {
54
+ this._events.forEach((e) => {
55
+ window.removeEventListener(e, this._trackUiActivity, { capture: true });
56
+ });
57
+ };
58
+ _trackUiInterval = () => {
59
+ InternalConfigurableUiManager.onUiIntervalEvent.emit({
60
+ idleTimeout: this._idleTimeout,
61
+ });
62
+ };
63
+ _trackUiActivity = (event) => {
64
+ InternalConfigurableUiManager.onUiActivityEvent.emit({ event });
65
+ };
66
66
  }
67
67
  //# sourceMappingURL=ActivityTracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityTracker.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/ActivityTracker.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAUnF;;GAEG;AACH,MAAM,OAAO,eAAe;IAA5B;QAGU,qBAAgB,GAAG,IAAI,CAAC;QAExB,YAAO,GAAG;YAChB,SAAS;YACT,OAAO;YACP,QAAQ;YACR,WAAW;YACX,WAAW;YACX,YAAY;YACZ,WAAW;YACX,aAAa;YACb,aAAa;YACb,kBAAkB;SACnB,CAAC;QA8BM,gBAAW,GAAG,GAAS,EAAE;YAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAS,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,qBAAgB,GAAG,GAAS,EAAE;YACpC,6BAA6B,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACnD,WAAW,EAAE,IAAI,CAAC,YAAY;aAC/B,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,qBAAgB,GAAG,CAAC,KAAY,EAAQ,EAAE;YAChD,6BAA6B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC;IACJ,CAAC;IAjDC;OACG;IACI,UAAU,CAAC,KAA4B;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;YACtC,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;gBACrC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAC5B,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,gBAAgB,CACtB,CAAC;IACJ,CAAC;IAED;OACG;IACI,SAAS;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC;CAuBF","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 ConfigurableUi\n */\n\nimport { InternalConfigurableUiManager } from \"./InternalConfigurableUiManager.js\";\n\n/** Properties for [[ActivityTracker]]\n * @internal\n */\nexport interface ActivityTrackerProps {\n idleTimeout?: number;\n intervalTimeout?: number;\n}\n\n/** Activity Tracker utility class\n * @internal\n */\nexport class ActivityTracker {\n private _intervalId?: any;\n private _idleTimeout?: number;\n private _intervalTimeout = 1000;\n\n private _events = [\n \"keydown\",\n \"wheel\",\n \"scroll\",\n \"mousedown\",\n \"mousemove\",\n \"touchstart\",\n \"touchmove\",\n \"pointerdown\",\n \"pointermove\",\n \"visibilitychange\",\n ];\n\n /** Initializes the time tracker and adds event listeners\n */\n public initialize(props?: ActivityTrackerProps): void {\n if (props) {\n this._idleTimeout = props.idleTimeout;\n if (props.intervalTimeout !== undefined)\n this._intervalTimeout = props.intervalTimeout;\n }\n\n this._bindEvents();\n\n this._intervalId = setInterval(\n this._trackUiInterval,\n this._intervalTimeout\n );\n }\n\n /** Terminates the time tracker and removes event listeners\n */\n public terminate(): void {\n this._unbindEvents();\n\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = undefined;\n }\n }\n\n private _bindEvents = (): void => {\n this._events.forEach((e) => {\n window.addEventListener(e, this._trackUiActivity, { capture: true });\n });\n };\n\n private _unbindEvents = (): void => {\n this._events.forEach((e) => {\n window.removeEventListener(e, this._trackUiActivity, { capture: true });\n });\n };\n\n private _trackUiInterval = (): void => {\n InternalConfigurableUiManager.onUiIntervalEvent.emit({\n idleTimeout: this._idleTimeout,\n });\n };\n\n private _trackUiActivity = (event: Event): void => {\n InternalConfigurableUiManager.onUiActivityEvent.emit({ event });\n };\n}\n"]}
1
+ {"version":3,"file":"ActivityTracker.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/ActivityTracker.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAUnF;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,WAAW,CAAO;IAClB,YAAY,CAAU;IACtB,gBAAgB,GAAG,IAAI,CAAC;IAExB,OAAO,GAAG;QAChB,SAAS;QACT,OAAO;QACP,QAAQ;QACR,WAAW;QACX,WAAW;QACX,YAAY;QACZ,WAAW;QACX,aAAa;QACb,aAAa;QACb,kBAAkB;KACnB,CAAC;IAEF;OACG;IACI,UAAU,CAAC,KAA4B;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;YACtC,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;gBACrC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,eAAe,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAC5B,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,gBAAgB,CACtB,CAAC;IACJ,CAAC;IAED;OACG;IACI,SAAS;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,WAAW,GAAG,GAAS,EAAE;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEM,aAAa,GAAG,GAAS,EAAE;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEM,gBAAgB,GAAG,GAAS,EAAE;QACpC,6BAA6B,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACnD,WAAW,EAAE,IAAI,CAAC,YAAY;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC;IAEM,gBAAgB,GAAG,CAAC,KAAY,EAAQ,EAAE;QAChD,6BAA6B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC;CACH","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 ConfigurableUi\n */\n\nimport { InternalConfigurableUiManager } from \"./InternalConfigurableUiManager.js\";\n\n/** Properties for [[ActivityTracker]]\n * @internal\n */\nexport interface ActivityTrackerProps {\n idleTimeout?: number;\n intervalTimeout?: number;\n}\n\n/** Activity Tracker utility class\n * @internal\n */\nexport class ActivityTracker {\n private _intervalId?: any;\n private _idleTimeout?: number;\n private _intervalTimeout = 1000;\n\n private _events = [\n \"keydown\",\n \"wheel\",\n \"scroll\",\n \"mousedown\",\n \"mousemove\",\n \"touchstart\",\n \"touchmove\",\n \"pointerdown\",\n \"pointermove\",\n \"visibilitychange\",\n ];\n\n /** Initializes the time tracker and adds event listeners\n */\n public initialize(props?: ActivityTrackerProps): void {\n if (props) {\n this._idleTimeout = props.idleTimeout;\n if (props.intervalTimeout !== undefined)\n this._intervalTimeout = props.intervalTimeout;\n }\n\n this._bindEvents();\n\n this._intervalId = setInterval(\n this._trackUiInterval,\n this._intervalTimeout\n );\n }\n\n /** Terminates the time tracker and removes event listeners\n */\n public terminate(): void {\n this._unbindEvents();\n\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = undefined;\n }\n }\n\n private _bindEvents = (): void => {\n this._events.forEach((e) => {\n window.addEventListener(e, this._trackUiActivity, { capture: true });\n });\n };\n\n private _unbindEvents = (): void => {\n this._events.forEach((e) => {\n window.removeEventListener(e, this._trackUiActivity, { capture: true });\n });\n };\n\n private _trackUiInterval = (): void => {\n InternalConfigurableUiManager.onUiIntervalEvent.emit({\n idleTimeout: this._idleTimeout,\n });\n };\n\n private _trackUiActivity = (event: Event): void => {\n InternalConfigurableUiManager.onUiActivityEvent.emit({ event });\n };\n}\n"]}
@@ -12,7 +12,6 @@
12
12
  width: 100%;
13
13
  height: 100%;
14
14
  overflow: hidden;
15
- font-size: var(--iui-font-size-1);
16
15
  }
17
16
 
18
17
  #uifw-frontstage-composer {
@@ -10,6 +10,9 @@
10
10
  * @deprecated in 4.16.0. Used in a deprecated type {@link ConfigurableUiControlConstructor}.
11
11
  */
12
12
  export class ConfigurableCreateInfo {
13
+ classId;
14
+ uniqueId;
15
+ id;
13
16
  constructor(classId, uniqueId, id) {
14
17
  this.classId = classId;
15
18
  this.uniqueId = uniqueId;
@@ -21,6 +24,10 @@ export class ConfigurableCreateInfo {
21
24
  * @deprecated in 4.16.0. Base class for a deprecated interface {@link ConfigurableUiElement}.
22
25
  */
23
26
  export class ConfigurableBase {
27
+ _uniqueId;
28
+ _classId;
29
+ _name;
30
+ _appDataOptions;
24
31
  constructor(info, options) {
25
32
  this._uniqueId = info.uniqueId;
26
33
  this._classId = info.classId;
@@ -72,6 +79,7 @@ export var ConfigurableUiControlType;
72
79
  * @deprecated in 4.16.0. Use React components returned by the control instead.
73
80
  */
74
81
  export class ConfigurableUiControl extends ConfigurableBase {
82
+ _cid;
75
83
  /** Creates an instance of ConfigurableUiControl.
76
84
  * @param info An object that the subclass must pass to this base class.
77
85
  * @param options Options provided to the control
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigurableUiControl.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/ConfigurableUiControl.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAcH;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IACjC,YACkB,OAAe,EACf,QAAgB,EAChB,EAAU;QAFV,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,OAAE,GAAF,EAAE,CAAQ;IACzB,CAAC;CACL;AAED;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAM3B,YAAY,IAA4B,EAAE,OAAY;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,KAAK;YACR,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3E,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,gBAAgB;IAChB,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,4DAA4D;IAC5D,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,gDAAgD;IAChD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,yBAOX;AAPD,WAAY,yBAAyB;IACnC,uDAA0B,CAAA;IAC1B,mEAAsC,CAAA;IACtC,uEAA0C,CAAA;IAC1C,8DAAiC,CAAA;IACjC,gEAAmC,CAAA;IACnC,qDAAwB,CAAA;AAC1B,CAAC,EAPW,yBAAyB,KAAzB,yBAAyB,QAOpC;AAWD;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,qBAAsB,SAAQ,gBAAgB;IAGlE;;;;;;OAMG;IACH,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;IACtB,CAAC;IAED;OACG;IACI,UAAU;QACf,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,sDAAsD;IAC/C,YAAY,KAAU,CAAC;IAE9B,6CAA6C;IACtC,uBAAuB,KAAU,CAAC;IAEzC,uCAAuC;IAChC,iBAAiB,KAAU,CAAC;IAEnC;OACG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAMD;OACG;IACH,IAAW,OAAO;QAChB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ConfigurableUi\n */\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Interface for a ConfigurableUi element\n * @public\n * @deprecated in 4.16.0. Used in a deprecated type {@link ConfigurableUiControlConstructor}.\n */\nexport interface ConfigurableUiElement {\n uniqueId: string;\n classId: string;\n name: string;\n}\n\n/** Information for creating a ConfigurableUi element\n * @public\n * @deprecated in 4.16.0. Used in a deprecated type {@link ConfigurableUiControlConstructor}.\n */\nexport class ConfigurableCreateInfo {\n constructor(\n public readonly classId: string,\n public readonly uniqueId: string,\n public readonly id: string\n ) {}\n}\n\n/** The base class for all ConfigurableUi elements\n * @public\n * @deprecated in 4.16.0. Base class for a deprecated interface {@link ConfigurableUiElement}.\n */\nexport class ConfigurableBase implements ConfigurableUiElement {\n private _uniqueId: string;\n private _classId: string;\n private _name: string;\n protected _appDataOptions: any;\n\n constructor(info: ConfigurableCreateInfo, options: any) {\n this._uniqueId = info.uniqueId;\n this._classId = info.classId;\n this._name =\n options && options.hasOwnProperty(\"name\") ? options.name : info.uniqueId;\n this._appDataOptions = options;\n }\n\n /** @internal */\n public get uniqueId(): string {\n return this._uniqueId;\n }\n\n /** allow options set via appData to be seen by API calls */\n public get applicationData(): any {\n return this._appDataOptions;\n }\n\n /** Gets the class Id of configurable element */\n public get classId(): string {\n return this._classId;\n }\n\n /** Get internal name of configurable element. If no name is defined in configuration\n * then the name will match the UniqueId.\n */\n public get name(): string {\n return this._name;\n }\n}\n\n/** The type of the ConfigurableUiControl.\n * @public\n * @deprecated in 4.16.0. Used in a deprecated class {@link ConfigurableUiControl}.\n */\nexport enum ConfigurableUiControlType {\n Content = \"ContentControl\",\n NavigationAid = \"NavigationAidControl\",\n StatusBarWidget = \"StatusBarWidgetControl\",\n ToolUiProvider = \"ToolUiProvider\",\n Viewport = \"ViewportContentControl\",\n Widget = \"WidgetControl\",\n}\n\n/** Prototype for ConfigurableUiControl constructor\n * @public\n * @deprecated in 4.16.0. Use React components instead.\n */\nexport type ConfigurableUiControlConstructor = new (\n info: ConfigurableCreateInfo,\n options: any\n) => ConfigurableUiElement;\n\n/** The abstract base class for all Frontstage controls.\n * @note This is an abstract class which should not be derived from by the applications.\n * Instead, applications should derive from one of\n * [[ContentControl]],\n * [[ViewportContentControl]],\n * [[WidgetControl]],\n * [[StatusBarWidgetControl]] or\n * [[NavigationAidControl]].\n * @public\n * @deprecated in 4.16.0. Use React components returned by the control instead.\n */\nexport abstract class ConfigurableUiControl extends ConfigurableBase {\n private _cid: string;\n\n /** Creates an instance of ConfigurableUiControl.\n * @param info An object that the subclass must pass to this base class.\n * @param options Options provided to the control\n * @note Subclasses must pass all arguments to the base class and not add themselves\n * to any container - the control is added automatically.\n * @protected\n */\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n this._cid = info.id;\n }\n\n /** @internal\n */\n public initialize(): void {\n this.onInitialize();\n }\n\n /** Called to initialize the ConfigurableUiControl. */\n public onInitialize(): void {}\n\n /** Called when Frontstage is deactivated. */\n public onFrontstageDeactivated(): void {}\n\n /** Called when Frontstage is ready. */\n public onFrontstageReady(): void {}\n\n /** Returns the ID of this ConfigurableUiControl.\n */\n public get controlId(): string {\n return this._cid;\n }\n\n /** Get the type of this control.\n */\n public abstract getType(): ConfigurableUiControlType;\n\n /** Returns a promise that resolves when the control is ready for usage.\n */\n public get isReady(): Promise<void> {\n return Promise.resolve();\n }\n}\n"]}
1
+ {"version":3,"file":"ConfigurableUiControl.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/ConfigurableUiControl.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAcH;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAEf;IACA;IACA;IAHlB,YACkB,OAAe,EACf,QAAgB,EAChB,EAAU;QAFV,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,OAAE,GAAF,EAAE,CAAQ;IACzB,CAAC;CACL;AAED;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,KAAK,CAAS;IACZ,eAAe,CAAM;IAE/B,YAAY,IAA4B,EAAE,OAAY;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,KAAK;YACR,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3E,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,gBAAgB;IAChB,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,4DAA4D;IAC5D,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,gDAAgD;IAChD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,yBAOX;AAPD,WAAY,yBAAyB;IACnC,uDAA0B,CAAA;IAC1B,mEAAsC,CAAA;IACtC,uEAA0C,CAAA;IAC1C,8DAAiC,CAAA;IACjC,gEAAmC,CAAA;IACnC,qDAAwB,CAAA;AAC1B,CAAC,EAPW,yBAAyB,KAAzB,yBAAyB,QAOpC;AAWD;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,qBAAsB,SAAQ,gBAAgB;IAC1D,IAAI,CAAS;IAErB;;;;;;OAMG;IACH,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;IACtB,CAAC;IAED;OACG;IACI,UAAU;QACf,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,sDAAsD;IAC/C,YAAY,KAAU,CAAC;IAE9B,6CAA6C;IACtC,uBAAuB,KAAU,CAAC;IAEzC,uCAAuC;IAChC,iBAAiB,KAAU,CAAC;IAEnC;OACG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAMD;OACG;IACH,IAAW,OAAO;QAChB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ConfigurableUi\n */\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Interface for a ConfigurableUi element\n * @public\n * @deprecated in 4.16.0. Used in a deprecated type {@link ConfigurableUiControlConstructor}.\n */\nexport interface ConfigurableUiElement {\n uniqueId: string;\n classId: string;\n name: string;\n}\n\n/** Information for creating a ConfigurableUi element\n * @public\n * @deprecated in 4.16.0. Used in a deprecated type {@link ConfigurableUiControlConstructor}.\n */\nexport class ConfigurableCreateInfo {\n constructor(\n public readonly classId: string,\n public readonly uniqueId: string,\n public readonly id: string\n ) {}\n}\n\n/** The base class for all ConfigurableUi elements\n * @public\n * @deprecated in 4.16.0. Base class for a deprecated interface {@link ConfigurableUiElement}.\n */\nexport class ConfigurableBase implements ConfigurableUiElement {\n private _uniqueId: string;\n private _classId: string;\n private _name: string;\n protected _appDataOptions: any;\n\n constructor(info: ConfigurableCreateInfo, options: any) {\n this._uniqueId = info.uniqueId;\n this._classId = info.classId;\n this._name =\n options && options.hasOwnProperty(\"name\") ? options.name : info.uniqueId;\n this._appDataOptions = options;\n }\n\n /** @internal */\n public get uniqueId(): string {\n return this._uniqueId;\n }\n\n /** allow options set via appData to be seen by API calls */\n public get applicationData(): any {\n return this._appDataOptions;\n }\n\n /** Gets the class Id of configurable element */\n public get classId(): string {\n return this._classId;\n }\n\n /** Get internal name of configurable element. If no name is defined in configuration\n * then the name will match the UniqueId.\n */\n public get name(): string {\n return this._name;\n }\n}\n\n/** The type of the ConfigurableUiControl.\n * @public\n * @deprecated in 4.16.0. Used in a deprecated class {@link ConfigurableUiControl}.\n */\nexport enum ConfigurableUiControlType {\n Content = \"ContentControl\",\n NavigationAid = \"NavigationAidControl\",\n StatusBarWidget = \"StatusBarWidgetControl\",\n ToolUiProvider = \"ToolUiProvider\",\n Viewport = \"ViewportContentControl\",\n Widget = \"WidgetControl\",\n}\n\n/** Prototype for ConfigurableUiControl constructor\n * @public\n * @deprecated in 4.16.0. Use React components instead.\n */\nexport type ConfigurableUiControlConstructor = new (\n info: ConfigurableCreateInfo,\n options: any\n) => ConfigurableUiElement;\n\n/** The abstract base class for all Frontstage controls.\n * @note This is an abstract class which should not be derived from by the applications.\n * Instead, applications should derive from one of\n * [[ContentControl]],\n * [[ViewportContentControl]],\n * [[WidgetControl]],\n * [[StatusBarWidgetControl]] or\n * [[NavigationAidControl]].\n * @public\n * @deprecated in 4.16.0. Use React components returned by the control instead.\n */\nexport abstract class ConfigurableUiControl extends ConfigurableBase {\n private _cid: string;\n\n /** Creates an instance of ConfigurableUiControl.\n * @param info An object that the subclass must pass to this base class.\n * @param options Options provided to the control\n * @note Subclasses must pass all arguments to the base class and not add themselves\n * to any container - the control is added automatically.\n * @protected\n */\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n this._cid = info.id;\n }\n\n /** @internal\n */\n public initialize(): void {\n this.onInitialize();\n }\n\n /** Called to initialize the ConfigurableUiControl. */\n public onInitialize(): void {}\n\n /** Called when Frontstage is deactivated. */\n public onFrontstageDeactivated(): void {}\n\n /** Called when Frontstage is ready. */\n public onFrontstageReady(): void {}\n\n /** Returns the ID of this ConfigurableUiControl.\n */\n public get controlId(): string {\n return this._cid;\n }\n\n /** Get the type of this control.\n */\n public abstract getType(): ConfigurableUiControlType;\n\n /** Returns a promise that resolves when the control is ready for usage.\n */\n public get isReady(): Promise<void> {\n return Promise.resolve();\n }\n}\n"]}
@@ -28,6 +28,14 @@ import { SyncUiEventDispatcher } from "../syncui/SyncUiEventDispatcher.js";
28
28
  * @internal
29
29
  */
30
30
  export class InternalConfigurableUiManager {
31
+ static _registeredControls = new Map();
32
+ static _initialized = false;
33
+ /** @internal */
34
+ static activityTracker = new ActivityTracker();
35
+ /** @internal */
36
+ static onUiActivityEvent = new BeUiEvent();
37
+ /** @internal */
38
+ static onUiIntervalEvent = new BeUiEvent();
31
39
  /** Initializes the InternalConfigurableUiManager and registers core controls.
32
40
  * @internal
33
41
  */
@@ -134,12 +142,4 @@ export class InternalConfigurableUiManager {
134
142
  PopupManager.clearPopups();
135
143
  }
136
144
  }
137
- InternalConfigurableUiManager._registeredControls = new Map();
138
- InternalConfigurableUiManager._initialized = false;
139
- /** @internal */
140
- InternalConfigurableUiManager.activityTracker = new ActivityTracker();
141
- /** @internal */
142
- InternalConfigurableUiManager.onUiActivityEvent = new BeUiEvent();
143
- /** @internal */
144
- InternalConfigurableUiManager.onUiIntervalEvent = new BeUiEvent();
145
145
  //# sourceMappingURL=InternalConfigurableUiManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InternalConfigurableUiManager.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/InternalConfigurableUiManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ConfigurableUi\n */\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { CubeNavigationAidControl } from \"../navigationaids/CubeNavigationAidControl.js\";\nimport { DrawingNavigationAidControl } from \"../navigationaids/DrawingNavigationAidControl.js\";\nimport { SheetNavigationAidControl } from \"../navigationaids/SheetNavigationAid.js\";\nimport { StandardRotationNavigationAidControl } from \"../navigationaids/StandardRotationNavigationAid.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type {\n ConfigurableUiControlConstructor,\n ConfigurableUiElement,\n} from \"./ConfigurableUiControl.js\";\nimport { ConfigurableCreateInfo } from \"./ConfigurableUiControl.js\";\nimport { MessageManager } from \"../messages/MessageManager.js\";\nimport { PopupManager } from \"../popup/PopupManager.js\";\nimport { ActivityTracker } from \"./ActivityTracker.js\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager.js\";\nimport { InternalToolSettingsManager } from \"../toolsettings/InternalToolSettingsManager.js\";\nimport { InternalModelessDialogManager } from \"../dialog/InternalModelessDialogManager.js\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager.js\";\nimport { InternalKeyboardShortcutManager } from \"../keyboardshortcut/InternalKeyboardShortcut.js\";\nimport { InternalModalDialogManager } from \"../dialog/InternalModalDialogManager.js\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Configurable Ui Manager maintains controls, Frontstages, Content Groups, Content Layouts, Tasks and Workflows.\n * @internal\n */\nexport class InternalConfigurableUiManager {\n private static _registeredControls = new Map<\n string,\n ConfigurableUiControlConstructor\n >();\n private static _initialized = false;\n\n /** @internal */\n public static readonly activityTracker = new ActivityTracker();\n /** @internal */\n public static readonly onUiActivityEvent = new BeUiEvent<{\n event: Event;\n }>();\n /** @internal */\n public static readonly onUiIntervalEvent = new BeUiEvent<{\n idleTimeout?: number;\n }>();\n\n /** Initializes the InternalConfigurableUiManager and registers core controls.\n * @internal\n */\n public static initialize() {\n if (this._initialized) return;\n\n // Register core controls\n InternalConfigurableUiManager.register(\n StandardRotationNavigationAidControl.navigationAidId,\n StandardRotationNavigationAidControl\n );\n InternalConfigurableUiManager.register(\n SheetNavigationAidControl.navigationAidId,\n SheetNavigationAidControl\n );\n InternalConfigurableUiManager.register(\n DrawingNavigationAidControl.navigationAidId,\n DrawingNavigationAidControl\n );\n InternalConfigurableUiManager.register(\n CubeNavigationAidControl.navigationAidId,\n CubeNavigationAidControl\n );\n\n // Initialize SyncUiEventDispatcher so it can register event callbacks.\n SyncUiEventDispatcher.initialize();\n\n // Initialize the FrontstageManager\n InternalFrontstageManager.initialize();\n\n // Initialize the ToolSettingsManager that manages Tool Settings properties.\n InternalToolSettingsManager.initialize();\n\n // Initialize dialog managers that allow one or more dialogs to be open at a time. These managers adjust the z-indexing\n // to ensure the most recently focused dialog of a specific type displays above its siblings.\n InternalModelessDialogManager.initialize();\n\n // ContentDialog have a z-index just above the fixed content views and below all other UI elements.\n InternalContentDialogManager.initialize();\n\n // Initialize the Keyboard Shortcut manager\n InternalKeyboardShortcutManager.initialize();\n\n this._initialized = true;\n }\n\n /** Registers a control implementing the [[ConfigurableUiElement]] interface.\n * These controls can be a\n * [[ContentControl]],\n * [[NavigationAidControl]],\n * [[StatusBarWidgetControl]],\n * [[WidgetControl]] or\n * [ToolUiProvider]($appui-react).\n * @param classId the class id of the control to register\n * @param constructor the constructor of the control to register\n */\n public static register(\n classId: string,\n constructor: ConfigurableUiControlConstructor\n ): void {\n if (this._registeredControls.get(classId) !== undefined) {\n throw new UiError(\n UiFramework.loggerCategory(\"InternalConfigurableUiManager\"),\n `registerControl: classId '${classId}' already registered`\n );\n }\n\n this._registeredControls.set(classId, constructor);\n }\n\n /** Determines if a control has been registered based on its classId.\n * @param classId the class id of the control to test\n * @returns true if the control is registered or false if not\n */\n public static isRegistered(classId: string): boolean {\n const constructor = this._registeredControls.get(classId);\n return constructor !== undefined;\n }\n\n /** Determines if a control has been registered.\n * @internal\n */\n public static getConstructorClassId(\n constructor: ConfigurableUiControlConstructor\n ): string | undefined {\n for (const [key, value] of this._registeredControls.entries()) {\n if (value === constructor) return key;\n }\n\n return undefined;\n }\n\n /** Unregisters a control that has been registered.\n * @param classId the class id of the control to unregister\n */\n public static unregister(classId: string): void {\n const constructor = this._registeredControls.get(classId);\n if (constructor) this._registeredControls.delete(classId);\n }\n\n /** Creates a control registered by calling registerControl.\n * @param classId the class id of the control to create\n * @param uniqueId a unique id for the control\n * @param options options passed to the constructor of the control\n * @param controlId controlId which may not be unique across all control instances.\n * @returns the created control\n */\n public static create(\n classId: string,\n uniqueId: string,\n options?: any,\n controlId?: string\n ): ConfigurableUiElement | undefined {\n const info = new ConfigurableCreateInfo(\n classId,\n uniqueId,\n controlId ?? uniqueId\n );\n const constructor = this._registeredControls.get(info.classId);\n if (!constructor) {\n throw new UiError(\n UiFramework.loggerCategory(\"InternalConfigurableUiManager\"),\n `createControl: classId '${classId}' not registered`\n );\n }\n\n const control = new constructor(info, options);\n return control;\n }\n\n /** Gets the HTML wrapper element for Configurable UI */\n public static getWrapperElement(): HTMLElement {\n const wrapper = document.getElementById(\"uifw-configurableui-wrapper\");\n const htmlElement = wrapper!;\n return htmlElement;\n }\n\n /** Assists in the transition to context wrapper exported from Configurable UI */\n public static getWrapperDocument(): Document {\n const wrapper = document.getElementById(\"uifw-configurableui-wrapper\");\n return wrapper?.ownerDocument ?? document;\n }\n\n /** Closes all UI popups currently open */\n public static closeUi(): void {\n MessageManager.closeAllMessages();\n InternalModelessDialogManager.closeAll();\n InternalModalDialogManager.closeAll();\n InternalContentDialogManager.closeAll();\n UiFramework.keyboardShortcuts.closeMenu();\n UiFramework.closeCursorMenu();\n PopupManager.clearPopups();\n }\n}\n"]}
1
+ {"version":3,"file":"InternalConfigurableUiManager.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/InternalConfigurableUiManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ConfigurableUi\n */\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { CubeNavigationAidControl } from \"../navigationaids/CubeNavigationAidControl.js\";\nimport { DrawingNavigationAidControl } from \"../navigationaids/DrawingNavigationAidControl.js\";\nimport { SheetNavigationAidControl } from \"../navigationaids/SheetNavigationAid.js\";\nimport { StandardRotationNavigationAidControl } from \"../navigationaids/StandardRotationNavigationAid.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type {\n ConfigurableUiControlConstructor,\n ConfigurableUiElement,\n} from \"./ConfigurableUiControl.js\";\nimport { ConfigurableCreateInfo } from \"./ConfigurableUiControl.js\";\nimport { MessageManager } from \"../messages/MessageManager.js\";\nimport { PopupManager } from \"../popup/PopupManager.js\";\nimport { ActivityTracker } from \"./ActivityTracker.js\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager.js\";\nimport { InternalToolSettingsManager } from \"../toolsettings/InternalToolSettingsManager.js\";\nimport { InternalModelessDialogManager } from \"../dialog/InternalModelessDialogManager.js\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager.js\";\nimport { InternalKeyboardShortcutManager } from \"../keyboardshortcut/InternalKeyboardShortcut.js\";\nimport { InternalModalDialogManager } from \"../dialog/InternalModalDialogManager.js\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Configurable Ui Manager maintains controls, Frontstages, Content Groups, Content Layouts, Tasks and Workflows.\n * @internal\n */\nexport class InternalConfigurableUiManager {\n private static _registeredControls = new Map<\n string,\n ConfigurableUiControlConstructor\n >();\n private static _initialized = false;\n\n /** @internal */\n public static readonly activityTracker = new ActivityTracker();\n /** @internal */\n public static readonly onUiActivityEvent = new BeUiEvent<{\n event: Event;\n }>();\n /** @internal */\n public static readonly onUiIntervalEvent = new BeUiEvent<{\n idleTimeout?: number;\n }>();\n\n /** Initializes the InternalConfigurableUiManager and registers core controls.\n * @internal\n */\n public static initialize() {\n if (this._initialized) return;\n\n // Register core controls\n InternalConfigurableUiManager.register(\n StandardRotationNavigationAidControl.navigationAidId,\n StandardRotationNavigationAidControl\n );\n InternalConfigurableUiManager.register(\n SheetNavigationAidControl.navigationAidId,\n SheetNavigationAidControl\n );\n InternalConfigurableUiManager.register(\n DrawingNavigationAidControl.navigationAidId,\n DrawingNavigationAidControl\n );\n InternalConfigurableUiManager.register(\n CubeNavigationAidControl.navigationAidId,\n CubeNavigationAidControl\n );\n\n // Initialize SyncUiEventDispatcher so it can register event callbacks.\n SyncUiEventDispatcher.initialize();\n\n // Initialize the FrontstageManager\n InternalFrontstageManager.initialize();\n\n // Initialize the ToolSettingsManager that manages Tool Settings properties.\n InternalToolSettingsManager.initialize();\n\n // Initialize dialog managers that allow one or more dialogs to be open at a time. These managers adjust the z-indexing\n // to ensure the most recently focused dialog of a specific type displays above its siblings.\n InternalModelessDialogManager.initialize();\n\n // ContentDialog have a z-index just above the fixed content views and below all other UI elements.\n InternalContentDialogManager.initialize();\n\n // Initialize the Keyboard Shortcut manager\n InternalKeyboardShortcutManager.initialize();\n\n this._initialized = true;\n }\n\n /** Registers a control implementing the [[ConfigurableUiElement]] interface.\n * These controls can be a\n * [[ContentControl]],\n * [[NavigationAidControl]],\n * [[StatusBarWidgetControl]],\n * [[WidgetControl]] or\n * [ToolUiProvider]($appui-react).\n * @param classId the class id of the control to register\n * @param constructor the constructor of the control to register\n */\n public static register(\n classId: string,\n constructor: ConfigurableUiControlConstructor\n ): void {\n if (this._registeredControls.get(classId) !== undefined) {\n throw new UiError(\n UiFramework.loggerCategory(\"InternalConfigurableUiManager\"),\n `registerControl: classId '${classId}' already registered`\n );\n }\n\n this._registeredControls.set(classId, constructor);\n }\n\n /** Determines if a control has been registered based on its classId.\n * @param classId the class id of the control to test\n * @returns true if the control is registered or false if not\n */\n public static isRegistered(classId: string): boolean {\n const constructor = this._registeredControls.get(classId);\n return constructor !== undefined;\n }\n\n /** Determines if a control has been registered.\n * @internal\n */\n public static getConstructorClassId(\n constructor: ConfigurableUiControlConstructor\n ): string | undefined {\n for (const [key, value] of this._registeredControls.entries()) {\n if (value === constructor) return key;\n }\n\n return undefined;\n }\n\n /** Unregisters a control that has been registered.\n * @param classId the class id of the control to unregister\n */\n public static unregister(classId: string): void {\n const constructor = this._registeredControls.get(classId);\n if (constructor) this._registeredControls.delete(classId);\n }\n\n /** Creates a control registered by calling registerControl.\n * @param classId the class id of the control to create\n * @param uniqueId a unique id for the control\n * @param options options passed to the constructor of the control\n * @param controlId controlId which may not be unique across all control instances.\n * @returns the created control\n */\n public static create(\n classId: string,\n uniqueId: string,\n options?: any,\n controlId?: string\n ): ConfigurableUiElement | undefined {\n const info = new ConfigurableCreateInfo(\n classId,\n uniqueId,\n controlId ?? uniqueId\n );\n const constructor = this._registeredControls.get(info.classId);\n if (!constructor) {\n throw new UiError(\n UiFramework.loggerCategory(\"InternalConfigurableUiManager\"),\n `createControl: classId '${classId}' not registered`\n );\n }\n\n const control = new constructor(info, options);\n return control;\n }\n\n /** Gets the HTML wrapper element for Configurable UI */\n public static getWrapperElement(): HTMLElement {\n const wrapper = document.getElementById(\"uifw-configurableui-wrapper\");\n const htmlElement = wrapper!;\n return htmlElement;\n }\n\n /** Assists in the transition to context wrapper exported from Configurable UI */\n public static getWrapperDocument(): Document {\n const wrapper = document.getElementById(\"uifw-configurableui-wrapper\");\n return wrapper?.ownerDocument ?? document;\n }\n\n /** Closes all UI popups currently open */\n public static closeUi(): void {\n MessageManager.closeAllMessages();\n InternalModelessDialogManager.closeAll();\n InternalModalDialogManager.closeAll();\n InternalContentDialogManager.closeAll();\n UiFramework.keyboardShortcuts.closeMenu();\n UiFramework.closeCursorMenu();\n PopupManager.clearPopups();\n }\n}\n"]}
@@ -10,33 +10,14 @@ import { InternalConfigurableUiManager } from "./InternalConfigurableUiManager.j
10
10
  * @internal
11
11
  */
12
12
  export class TimeTracker {
13
- constructor() {
14
- this._firstActiveTimestamp = 0;
15
- this._idleStartTimestamp = 0;
16
- this._lastActiveTimestamp = 0;
17
- this._totalIdleTime = 0;
18
- this._idleCount = 0;
19
- this._idleTimeout = 5000;
20
- this._totalTime = 0;
21
- this._idleTime = 0;
22
- this._idleTimeCounter = (args) => {
23
- const idleTimeout = args.idleTimeout ?? this._idleTimeout;
24
- if (this._lastActiveTimestamp > 0 &&
25
- this._idleStartTimestamp === 0 &&
26
- Date.now() - this._lastActiveTimestamp >= idleTimeout) {
27
- this._idleStartTimestamp = Date.now();
28
- this._idleCount++;
29
- }
30
- };
31
- this._trackActivity = () => {
32
- this._lastActiveTimestamp = Date.now();
33
- if (this._idleStartTimestamp > 0) {
34
- const lastIdleTime = this._lastActiveTimestamp - this._idleStartTimestamp;
35
- this._totalIdleTime += lastIdleTime;
36
- this._idleStartTimestamp = 0;
37
- }
38
- };
39
- }
13
+ _firstActiveTimestamp = 0;
14
+ _idleStartTimestamp = 0;
15
+ _lastActiveTimestamp = 0;
16
+ _totalIdleTime = 0;
17
+ _idleCount = 0;
18
+ _idleTimeout = 5000;
19
+ _totalTime = 0;
20
+ _idleTime = 0;
40
21
  /** Starts time tracking
41
22
  */
42
23
  startTiming() {
@@ -73,5 +54,22 @@ export class TimeTracker {
73
54
  getIdleTimeSeconds() {
74
55
  return this._idleTime / 1000;
75
56
  }
57
+ _idleTimeCounter = (args) => {
58
+ const idleTimeout = args.idleTimeout ?? this._idleTimeout;
59
+ if (this._lastActiveTimestamp > 0 &&
60
+ this._idleStartTimestamp === 0 &&
61
+ Date.now() - this._lastActiveTimestamp >= idleTimeout) {
62
+ this._idleStartTimestamp = Date.now();
63
+ this._idleCount++;
64
+ }
65
+ };
66
+ _trackActivity = () => {
67
+ this._lastActiveTimestamp = Date.now();
68
+ if (this._idleStartTimestamp > 0) {
69
+ const lastIdleTime = this._lastActiveTimestamp - this._idleStartTimestamp;
70
+ this._totalIdleTime += lastIdleTime;
71
+ this._idleStartTimestamp = 0;
72
+ }
73
+ };
76
74
  }
77
75
  //# sourceMappingURL=TimeTracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeTracker.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/TimeTracker.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ConfigurableUi\n */\n\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { InternalConfigurableUiManager } from \"./InternalConfigurableUiManager.js\";\n\n/** Time Tracker utility class\n * @internal\n */\nexport class TimeTracker {\n private _firstActiveTimestamp: number = 0;\n private _idleStartTimestamp: number = 0;\n private _lastActiveTimestamp: number = 0;\n private _totalIdleTime: number = 0;\n private _idleCount: number = 0;\n private _idleTimeout: number = 5000;\n private _totalTime: number = 0;\n private _idleTime: number = 0;\n\n /** Starts time tracking\n */\n public startTiming(): void {\n this._totalIdleTime = 0;\n this._idleStartTimestamp = 0;\n this._idleCount = 0;\n this._totalTime = 0;\n this._idleTime = 0;\n\n this._firstActiveTimestamp = Date.now();\n this._lastActiveTimestamp = this._firstActiveTimestamp;\n\n InternalConfigurableUiManager.onUiIntervalEvent.addListener(\n this._idleTimeCounter\n );\n InternalConfigurableUiManager.onUiActivityEvent.addListener(\n this._trackActivity\n );\n }\n\n /** Stops time tracking\n */\n public stopTiming(): void {\n InternalConfigurableUiManager.onUiIntervalEvent.removeListener(\n this._idleTimeCounter\n );\n InternalConfigurableUiManager.onUiActivityEvent.removeListener(\n this._trackActivity\n );\n\n this._totalTime = Date.now() - this._firstActiveTimestamp;\n this._idleTime = this._totalIdleTime + this._idleCount * this._idleTimeout;\n }\n\n /** Gets engagement time in seconds\n */\n public getEngagementTimeSeconds(): number {\n return (this._totalTime - this._idleTime) / 1000;\n }\n\n /** Gets total time in seconds\n */\n public getTotalTimeSeconds(): number {\n return this._totalTime / 1000;\n }\n\n /** Gets idle time in seconds\n */\n public getIdleTimeSeconds(): number {\n return this._idleTime / 1000;\n }\n\n private _idleTimeCounter: ListenerType<\n typeof InternalConfigurableUiManager.onUiIntervalEvent\n > = (args): void => {\n const idleTimeout = args.idleTimeout ?? this._idleTimeout;\n if (\n this._lastActiveTimestamp > 0 &&\n this._idleStartTimestamp === 0 &&\n Date.now() - this._lastActiveTimestamp >= idleTimeout\n ) {\n this._idleStartTimestamp = Date.now();\n this._idleCount++;\n }\n };\n\n private _trackActivity: ListenerType<\n typeof InternalConfigurableUiManager.onUiActivityEvent\n > = (): void => {\n this._lastActiveTimestamp = Date.now();\n\n if (this._idleStartTimestamp > 0) {\n const lastIdleTime = this._lastActiveTimestamp - this._idleStartTimestamp;\n this._totalIdleTime += lastIdleTime;\n this._idleStartTimestamp = 0;\n }\n };\n}\n"]}
1
+ {"version":3,"file":"TimeTracker.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/TimeTracker.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,qBAAqB,GAAW,CAAC,CAAC;IAClC,mBAAmB,GAAW,CAAC,CAAC;IAChC,oBAAoB,GAAW,CAAC,CAAC;IACjC,cAAc,GAAW,CAAC,CAAC;IAC3B,UAAU,GAAW,CAAC,CAAC;IACvB,YAAY,GAAW,IAAI,CAAC;IAC5B,UAAU,GAAW,CAAC,CAAC;IACvB,SAAS,GAAW,CAAC,CAAC;IAE9B;OACG;IACI,WAAW;QAChB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAEvD,6BAA6B,CAAC,iBAAiB,CAAC,WAAW,CACzD,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,6BAA6B,CAAC,iBAAiB,CAAC,WAAW,CACzD,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;IAED;OACG;IACI,UAAU;QACf,6BAA6B,CAAC,iBAAiB,CAAC,cAAc,CAC5D,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,6BAA6B,CAAC,iBAAiB,CAAC,cAAc,CAC5D,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;IAC7E,CAAC;IAED;OACG;IACI,wBAAwB;QAC7B,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACnD,CAAC;IAED;OACG;IACI,mBAAmB;QACxB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAChC,CAAC;IAED;OACG;IACI,kBAAkB;QACvB,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC/B,CAAC;IAEO,gBAAgB,GAEpB,CAAC,IAAI,EAAQ,EAAE;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC;QAC1D,IACE,IAAI,CAAC,oBAAoB,GAAG,CAAC;YAC7B,IAAI,CAAC,mBAAmB,KAAK,CAAC;YAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,IAAI,WAAW,EACrD,CAAC;YACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEM,cAAc,GAElB,GAAS,EAAE;QACb,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvC,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAC1E,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC;YACpC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;CACH","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 ConfigurableUi\n */\n\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { InternalConfigurableUiManager } from \"./InternalConfigurableUiManager.js\";\n\n/** Time Tracker utility class\n * @internal\n */\nexport class TimeTracker {\n private _firstActiveTimestamp: number = 0;\n private _idleStartTimestamp: number = 0;\n private _lastActiveTimestamp: number = 0;\n private _totalIdleTime: number = 0;\n private _idleCount: number = 0;\n private _idleTimeout: number = 5000;\n private _totalTime: number = 0;\n private _idleTime: number = 0;\n\n /** Starts time tracking\n */\n public startTiming(): void {\n this._totalIdleTime = 0;\n this._idleStartTimestamp = 0;\n this._idleCount = 0;\n this._totalTime = 0;\n this._idleTime = 0;\n\n this._firstActiveTimestamp = Date.now();\n this._lastActiveTimestamp = this._firstActiveTimestamp;\n\n InternalConfigurableUiManager.onUiIntervalEvent.addListener(\n this._idleTimeCounter\n );\n InternalConfigurableUiManager.onUiActivityEvent.addListener(\n this._trackActivity\n );\n }\n\n /** Stops time tracking\n */\n public stopTiming(): void {\n InternalConfigurableUiManager.onUiIntervalEvent.removeListener(\n this._idleTimeCounter\n );\n InternalConfigurableUiManager.onUiActivityEvent.removeListener(\n this._trackActivity\n );\n\n this._totalTime = Date.now() - this._firstActiveTimestamp;\n this._idleTime = this._totalIdleTime + this._idleCount * this._idleTimeout;\n }\n\n /** Gets engagement time in seconds\n */\n public getEngagementTimeSeconds(): number {\n return (this._totalTime - this._idleTime) / 1000;\n }\n\n /** Gets total time in seconds\n */\n public getTotalTimeSeconds(): number {\n return this._totalTime / 1000;\n }\n\n /** Gets idle time in seconds\n */\n public getIdleTimeSeconds(): number {\n return this._idleTime / 1000;\n }\n\n private _idleTimeCounter: ListenerType<\n typeof InternalConfigurableUiManager.onUiIntervalEvent\n > = (args): void => {\n const idleTimeout = args.idleTimeout ?? this._idleTimeout;\n if (\n this._lastActiveTimestamp > 0 &&\n this._idleStartTimestamp === 0 &&\n Date.now() - this._lastActiveTimestamp >= idleTimeout\n ) {\n this._idleStartTimestamp = Date.now();\n this._idleCount++;\n }\n };\n\n private _trackActivity: ListenerType<\n typeof InternalConfigurableUiManager.onUiActivityEvent\n > = (): void => {\n this._lastActiveTimestamp = Date.now();\n\n if (this._idleStartTimestamp > 0) {\n const lastIdleTime = this._lastActiveTimestamp - this._idleStartTimestamp;\n this._totalIdleTime += lastIdleTime;\n this._idleStartTimestamp = 0;\n }\n };\n}\n"]}
@@ -20,13 +20,14 @@ export class ContentControlActivatedEvent extends UiEvent {
20
20
  * @deprecated in 4.16.0. Extends a deprecated class {@link ConfigurableUiControl}.
21
21
  */
22
22
  export class ContentControl extends ConfigurableUiControl {
23
+ _reactNode;
24
+ _keyAdded = false;
23
25
  /** Creates an instance of ContentControl.
24
26
  * @param info An object that the subclass must pass to this base class.
25
27
  * @param options Options provided via the applicationData in a [[ContentProps]].
26
28
  */
27
29
  constructor(info, options) {
28
30
  super(info, options);
29
- this._keyAdded = false;
30
31
  }
31
32
  /** Called when this ContentControl is activated */
32
33
  onActivated() { }
@@ -1 +1 @@
1
- {"version":3,"file":"ContentControl.js","sourceRoot":"","sources":["../../../src/appui-react/content/ContentControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4CAA4C,CAAC;AAgBpD;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,4BAA6B,SAAQ,OAAyC;CAAG;AAkB9F;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,qBAAqB;IAIvD;;;OAGG;IACH,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAPf,cAAS,GAAG,KAAK,CAAC;IAQ1B,CAAC;IAED,mDAAmD;IAC5C,WAAW,KAAU,CAAC;IAE7B,qDAAqD;IAC9C,aAAa,KAAU,CAAC;IAE/B,8EAA8E;IACvE,OAAO;QACZ,OAAO,yBAAyB,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,0DAA0D;IAC1D,IAAW,UAAU;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,uDAAuD;IACvD,IAAW,QAAQ;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,iBAAiB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAE,IAAI,CAAC,UAAsC,CAAC,GAAG,EAAE,CAAC;gBACtD,MAAM,eAAe,GAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAES,YAAY;QACpB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAED,mDAAmD;IACnD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,IAAW,SAAS,CAAC,CAAkB;QACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,uEAAuE;IACvE,IAAW,oBAAoB;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,YAAY,QAAgB,EAAE,IAAY,EAAE,IAAqB;QAC/D,KAAK,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContentView\n */\n\nimport * as React from \"react\";\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type {\n IModelConnection,\n ScreenViewport,\n ViewState,\n} from \"@itwin/core-frontend\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport {\n ConfigurableCreateInfo,\n ConfigurableUiControl,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl.js\";\nimport { Widget } from \"../widgets/Widget.js\";\nimport { UiItemsProvider } from \"../ui-items-provider/UiItemsProvider.js\";\nimport { ContentOverlay } from \"./ContentOverlay.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** ControlControl Activated Event Args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ContentControlActivatedEventArgs {\n activeContentControl: ContentControl;\n oldContentControl?: ContentControl;\n}\n\n/** ContentControl Activated Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class ContentControlActivatedEvent extends UiEvent<ContentControlActivatedEventArgs> {}\n\n/** Interface to be implemented when the ContentControl supports ViewSelector changes\n * @public\n * @deprecated in 4.16.0. Implemented by classes derived from a deprecated {@link ContentControl}.\n */\nexport interface SupportsViewSelectorChange {\n /** Returns true if this control supports reacting to ViewSelector changes. */\n supportsViewSelectorChange: boolean;\n /** Process a ViewSelector change. */\n processViewSelectorChange(\n iModel: IModelConnection,\n viewDefinitionId: Id64String,\n viewState: ViewState,\n name: string\n ): Promise<void>;\n}\n\n/** The base class for Frontstage content controls.\n * @public\n * @deprecated in 4.16.0. Extends a deprecated class {@link ConfigurableUiControl}.\n */\nexport class ContentControl extends ConfigurableUiControl {\n protected _reactNode: React.ReactNode;\n private _keyAdded = false;\n\n /** Creates an instance of ContentControl.\n * @param info An object that the subclass must pass to this base class.\n * @param options Options provided via the applicationData in a [[ContentProps]].\n */\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n }\n\n /** Called when this ContentControl is activated */\n public onActivated(): void {}\n\n /** Called when this ContentControl is deactivated */\n public onDeactivated(): void {}\n\n /** Gets the type of ConfigurableUiControl, which is 'Content' in this case */\n public getType(): ConfigurableUiControlType {\n return ConfigurableUiControlType.Content;\n }\n\n /** Returns true if this control is a Viewport control. */\n public get isViewport(): boolean {\n return false;\n }\n /** Returns the ScreenViewport if isViewport is true */\n public get viewport(): ScreenViewport | undefined {\n return undefined;\n }\n\n protected getKeyedReactNode(): React.ReactNode {\n if (!this._keyAdded && React.isValidElement(this._reactNode)) {\n if (!(this._reactNode as React.ReactElement<any>).key) {\n const additionalProps: any = { key: this.uniqueId };\n this._reactNode = React.cloneElement(this._reactNode, additionalProps);\n }\n this._keyAdded = true;\n }\n\n return this._reactNode;\n }\n\n protected getReactNode(): React.ReactNode {\n return this.getKeyedReactNode();\n }\n\n /** The React node associated with this control. */\n public get reactNode(): React.ReactNode {\n return this.getReactNode();\n }\n\n public set reactNode(r: React.ReactNode) {\n this._reactNode = r;\n }\n\n /** Get the NavigationAidControl associated with this ContentControl */\n public get navigationAidControl(): string {\n return \"\";\n }\n}\n\n/**\n * @beta\n * @deprecated in 4.16.0. Use {@link UiItemsProvider} to provide a floating {@link Widget} instead.\n * Additionally, use {@link ContentOverlay} component to display the active content indicator.\n */\nexport class FloatingContentControl extends ContentControl {\n constructor(uniqueId: string, name: string, node: React.ReactNode) {\n super(new ConfigurableCreateInfo(name, uniqueId, name), undefined);\n this._reactNode = node;\n }\n}\n"]}
1
+ {"version":3,"file":"ContentControl.js","sourceRoot":"","sources":["../../../src/appui-react/content/ContentControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4CAA4C,CAAC;AAgBpD;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,4BAA6B,SAAQ,OAAyC;CAAG;AAkB9F;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,qBAAqB;IAC7C,UAAU,CAAkB;IAC9B,SAAS,GAAG,KAAK,CAAC;IAE1B;;;OAGG;IACH,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,mDAAmD;IAC5C,WAAW,KAAU,CAAC;IAE7B,qDAAqD;IAC9C,aAAa,KAAU,CAAC;IAE/B,8EAA8E;IACvE,OAAO;QACZ,OAAO,yBAAyB,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,0DAA0D;IAC1D,IAAW,UAAU;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,uDAAuD;IACvD,IAAW,QAAQ;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,iBAAiB;QACzB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAE,IAAI,CAAC,UAAsC,CAAC,GAAG,EAAE,CAAC;gBACtD,MAAM,eAAe,GAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAES,YAAY;QACpB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAED,mDAAmD;IACnD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,IAAW,SAAS,CAAC,CAAkB;QACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,uEAAuE;IACvE,IAAW,oBAAoB;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,YAAY,QAAgB,EAAE,IAAY,EAAE,IAAqB;QAC/D,KAAK,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContentView\n */\n\nimport * as React from \"react\";\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type {\n IModelConnection,\n ScreenViewport,\n ViewState,\n} from \"@itwin/core-frontend\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport {\n ConfigurableCreateInfo,\n ConfigurableUiControl,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl.js\";\nimport { Widget } from \"../widgets/Widget.js\";\nimport { UiItemsProvider } from \"../ui-items-provider/UiItemsProvider.js\";\nimport { ContentOverlay } from \"./ContentOverlay.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** ControlControl Activated Event Args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ContentControlActivatedEventArgs {\n activeContentControl: ContentControl;\n oldContentControl?: ContentControl;\n}\n\n/** ContentControl Activated Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class ContentControlActivatedEvent extends UiEvent<ContentControlActivatedEventArgs> {}\n\n/** Interface to be implemented when the ContentControl supports ViewSelector changes\n * @public\n * @deprecated in 4.16.0. Implemented by classes derived from a deprecated {@link ContentControl}.\n */\nexport interface SupportsViewSelectorChange {\n /** Returns true if this control supports reacting to ViewSelector changes. */\n supportsViewSelectorChange: boolean;\n /** Process a ViewSelector change. */\n processViewSelectorChange(\n iModel: IModelConnection,\n viewDefinitionId: Id64String,\n viewState: ViewState,\n name: string\n ): Promise<void>;\n}\n\n/** The base class for Frontstage content controls.\n * @public\n * @deprecated in 4.16.0. Extends a deprecated class {@link ConfigurableUiControl}.\n */\nexport class ContentControl extends ConfigurableUiControl {\n protected _reactNode: React.ReactNode;\n private _keyAdded = false;\n\n /** Creates an instance of ContentControl.\n * @param info An object that the subclass must pass to this base class.\n * @param options Options provided via the applicationData in a [[ContentProps]].\n */\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n }\n\n /** Called when this ContentControl is activated */\n public onActivated(): void {}\n\n /** Called when this ContentControl is deactivated */\n public onDeactivated(): void {}\n\n /** Gets the type of ConfigurableUiControl, which is 'Content' in this case */\n public getType(): ConfigurableUiControlType {\n return ConfigurableUiControlType.Content;\n }\n\n /** Returns true if this control is a Viewport control. */\n public get isViewport(): boolean {\n return false;\n }\n /** Returns the ScreenViewport if isViewport is true */\n public get viewport(): ScreenViewport | undefined {\n return undefined;\n }\n\n protected getKeyedReactNode(): React.ReactNode {\n if (!this._keyAdded && React.isValidElement(this._reactNode)) {\n if (!(this._reactNode as React.ReactElement<any>).key) {\n const additionalProps: any = { key: this.uniqueId };\n this._reactNode = React.cloneElement(this._reactNode, additionalProps);\n }\n this._keyAdded = true;\n }\n\n return this._reactNode;\n }\n\n protected getReactNode(): React.ReactNode {\n return this.getKeyedReactNode();\n }\n\n /** The React node associated with this control. */\n public get reactNode(): React.ReactNode {\n return this.getReactNode();\n }\n\n public set reactNode(r: React.ReactNode) {\n this._reactNode = r;\n }\n\n /** Get the NavigationAidControl associated with this ContentControl */\n public get navigationAidControl(): string {\n return \"\";\n }\n}\n\n/**\n * @beta\n * @deprecated in 4.16.0. Use {@link UiItemsProvider} to provide a floating {@link Widget} instead.\n * Additionally, use {@link ContentOverlay} component to display the active content indicator.\n */\nexport class FloatingContentControl extends ContentControl {\n constructor(uniqueId: string, name: string, node: React.ReactNode) {\n super(new ConfigurableCreateInfo(name, uniqueId, name), undefined);\n this._reactNode = node;\n }\n}\n"]}