@itwin/appui-react 5.19.0 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/lib/appui-react/UiFramework.js +20 -13
  3. package/lib/appui-react/UiFramework.js.map +1 -1
  4. package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  5. package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  6. package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
  7. package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  8. package/lib/appui-react/accudraw/Calculator.js +92 -98
  9. package/lib/appui-react/accudraw/Calculator.js.map +1 -1
  10. package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
  11. package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  12. package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
  13. package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
  14. package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
  15. package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  16. package/lib/appui-react/accudraw/MenuButton.js +20 -20
  17. package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
  18. package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
  19. package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
  20. package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
  21. package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  22. package/lib/appui-react/backstage/BackstageManager.js +1 -3
  23. package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
  24. package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
  25. package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
  26. package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
  27. package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  28. package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
  29. package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
  30. package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  31. package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
  32. package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  33. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
  34. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  35. package/lib/appui-react/configurableui/TimeTracker.js +25 -27
  36. package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
  37. package/lib/appui-react/content/ContentControl.js +2 -1
  38. package/lib/appui-react/content/ContentControl.js.map +1 -1
  39. package/lib/appui-react/content/ContentGroup.js +8 -4
  40. package/lib/appui-react/content/ContentGroup.js.map +1 -1
  41. package/lib/appui-react/content/ContentLayout.js +47 -38
  42. package/lib/appui-react/content/ContentLayout.js.map +1 -1
  43. package/lib/appui-react/content/IModelViewport.js +28 -23
  44. package/lib/appui-react/content/IModelViewport.js.map +1 -1
  45. package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
  46. package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  47. package/lib/appui-react/content/InternalContentViewManager.js +9 -8
  48. package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
  49. package/lib/appui-react/content/StandardContentLayouts.js +141 -141
  50. package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
  51. package/lib/appui-react/content/ViewportContentControl.js +25 -22
  52. package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
  53. package/lib/appui-react/cursor/CursorInformation.js +7 -6
  54. package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
  55. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
  56. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  57. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
  58. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  59. package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
  60. package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
  61. package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
  62. package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  63. package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
  64. package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  65. package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
  66. package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  67. package/lib/appui-react/dialog/ModelessDialog.js +3 -3
  68. package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
  69. package/lib/appui-react/feedback/ElementTooltip.js +3 -1
  70. package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
  71. package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
  72. package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
  73. package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
  74. package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
  75. package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
  76. package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  77. package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
  78. package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  79. package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
  80. package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  81. package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
  82. package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  83. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
  84. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  85. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
  86. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  87. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
  88. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  89. package/lib/appui-react/layout/backstage/Backstage.js +11 -14
  90. package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
  91. package/lib/appui-react/layout/base/DragManager.js +6 -7
  92. package/lib/appui-react/layout/base/DragManager.js.map +1 -1
  93. package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
  94. package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  95. package/lib/appui-react/layout/popup/Tooltip.js +8 -11
  96. package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
  97. package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
  98. package/lib/appui-react/layout/widget/Tab.js +7 -5
  99. package/lib/appui-react/layout/widget/Tab.js.map +1 -1
  100. package/lib/appui-react/messages/InputField.js +21 -24
  101. package/lib/appui-react/messages/InputField.js.map +1 -1
  102. package/lib/appui-react/messages/MessageManager.js +39 -38
  103. package/lib/appui-react/messages/MessageManager.js.map +1 -1
  104. package/lib/appui-react/messages/Pointer.js +38 -38
  105. package/lib/appui-react/messages/Pointer.js.map +1 -1
  106. package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
  107. package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
  108. package/lib/appui-react/messages/StatusMessageManager.js +2 -4
  109. package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
  110. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  111. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  112. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  113. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  114. package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
  115. package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  116. package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
  117. package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  118. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
  119. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  120. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
  121. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  122. package/lib/appui-react/pickers/ListPicker.js +28 -28
  123. package/lib/appui-react/pickers/ListPicker.js.map +1 -1
  124. package/lib/appui-react/pickers/ViewSelector.js +87 -86
  125. package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
  126. package/lib/appui-react/popup/CardPopup.js +18 -21
  127. package/lib/appui-react/popup/CardPopup.js.map +1 -1
  128. package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
  129. package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
  130. package/lib/appui-react/popup/InputEditorPopup.js +18 -20
  131. package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
  132. package/lib/appui-react/popup/PopupManager.js +22 -25
  133. package/lib/appui-react/popup/PopupManager.js.map +1 -1
  134. package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
  135. package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  136. package/lib/appui-react/popup/ToolbarPopup.js +18 -21
  137. package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
  138. package/lib/appui-react/redux/ReducerRegistry.js +2 -0
  139. package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
  140. package/lib/appui-react/redux/StateManager.js +4 -1
  141. package/lib/appui-react/redux/StateManager.js.map +1 -1
  142. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
  143. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  144. package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
  145. package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  146. package/lib/appui-react/shared/CommandItemDef.js +3 -3
  147. package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
  148. package/lib/appui-react/shared/CustomItemDef.js +4 -2
  149. package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
  150. package/lib/appui-react/shared/ItemDefBase.js +13 -5
  151. package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
  152. package/lib/appui-react/shared/MenuItem.js +6 -1
  153. package/lib/appui-react/shared/MenuItem.js.map +1 -1
  154. package/lib/appui-react/shared/ToolItemDef.js +1 -1
  155. package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
  156. package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
  157. package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  158. package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
  159. package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  160. package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
  161. package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
  162. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
  163. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  164. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
  165. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  166. package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
  167. package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  168. package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
  169. package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  170. package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
  171. package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  172. package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
  173. package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  174. package/lib/appui-react/toolbar/GroupItem.js +11 -5
  175. package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
  176. package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
  177. package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  178. package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
  179. package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  180. package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
  181. package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  182. package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
  183. package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
  184. package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
  185. package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  186. package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
  187. package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
  188. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
  189. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  190. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
  191. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  192. package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
  193. package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
  194. package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
  195. package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
  196. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
  197. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  198. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
  199. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  200. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
  201. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  202. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
  203. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  204. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
  205. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  206. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
  207. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  208. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
  209. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  210. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
  211. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  212. package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
  213. package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  214. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
  215. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  216. package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
  217. package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  218. package/lib/appui-react/uistate/AppUiSettings.js +41 -33
  219. package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
  220. package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
  221. package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  222. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
  223. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  224. package/lib/appui-react/widgets/WidgetControl.js +2 -0
  225. package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
  226. package/lib/appui-react/widgets/WidgetDef.js +28 -7
  227. package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
  228. package/lib/appui-react/widgets/WidgetHost.js +4 -4
  229. package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
  230. package/lib/appui-react/widgets/WidgetManager.js +5 -7
  231. package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
  232. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  233. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  234. package/package.json +9 -9
@@ -39,6 +39,16 @@ export const isReactContent = (content) => {
39
39
  * @public
40
40
  */
41
41
  export class PopupManager {
42
+ static _popups = [];
43
+ static _editorId = "InputEditor";
44
+ static _toolbarId = "Toolbar";
45
+ static _htmlElementId = "HTMLElement";
46
+ static _cardId = "Card";
47
+ static _toolSettingsId = "ToolSettings";
48
+ static _keyPalettePopupId = "KeyinPalette";
49
+ static _defaultOffset = { x: 8, y: 8 };
50
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
51
+ static onPopupsChangedEvent = new PopupsChangedEvent();
42
52
  static get popupCount() {
43
53
  return this._popups.length;
44
54
  }
@@ -274,33 +284,16 @@ export class PopupManager {
274
284
  return position;
275
285
  }
276
286
  }
277
- PopupManager._popups = [];
278
- PopupManager._editorId = "InputEditor";
279
- PopupManager._toolbarId = "Toolbar";
280
- PopupManager._htmlElementId = "HTMLElement";
281
- PopupManager._cardId = "Card";
282
- PopupManager._toolSettingsId = "ToolSettings";
283
- PopupManager._keyPalettePopupId = "KeyinPalette";
284
- PopupManager._defaultOffset = { x: 8, y: 8 };
285
- // eslint-disable-next-line @typescript-eslint/no-deprecated
286
- PopupManager.onPopupsChangedEvent = new PopupsChangedEvent();
287
287
  /** Popup Renderer.
288
288
  * @public
289
289
  */
290
290
  export class PopupRenderer extends React.Component {
291
- constructor() {
292
- super(...arguments);
293
- this.state = {
294
- parentDocument: null,
295
- popups: PopupManager.popups,
296
- };
297
- this._handleRefSet = (popupDiv) => {
298
- this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });
299
- };
300
- this._handlePopupsChangedEvent = (args) => {
301
- this.setState({ popups: args.popups });
302
- };
303
- }
291
+ /** @internal */
292
+ static contextType = WrapperContext;
293
+ state = {
294
+ parentDocument: null,
295
+ popups: PopupManager.popups,
296
+ };
304
297
  componentDidMount() {
305
298
  Logger.logInfo("PopupManager", `mounting PopupManager`);
306
299
  PopupManager.onPopupsChangedEvent.addListener(this._handlePopupsChangedEvent);
@@ -309,6 +302,9 @@ export class PopupRenderer extends React.Component {
309
302
  Logger.logInfo("PopupManager", `un-mounting PopupManager`);
310
303
  PopupManager.onPopupsChangedEvent.removeListener(this._handlePopupsChangedEvent);
311
304
  }
305
+ _handleRefSet = (popupDiv) => {
306
+ this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });
307
+ };
312
308
  render() {
313
309
  if (PopupManager.popupCount <= 0)
314
310
  return null;
@@ -322,7 +318,8 @@ export class PopupRenderer extends React.Component {
322
318
  return (React.createElement(React.Fragment, { key: popupInfo.id }, popupInfo.component));
323
319
  })));
324
320
  }
321
+ _handlePopupsChangedEvent = (args) => {
322
+ this.setState({ popups: args.popups });
323
+ };
325
324
  }
326
- /** @internal */
327
- PopupRenderer.contextType = WrapperContext;
328
325
  //# sourceMappingURL=PopupManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../src/appui-react/popup/PopupManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\nimport * as React from \"react\";\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { Orientation } from \"@itwin/components-react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ListenerType, Point } from \"@itwin/core-react/internal\";\nimport { Rectangle } from \"@itwin/core-react/internal\";\nimport { offsetAndContainInContainer } from \"../layout/popup/Tooltip.js\";\nimport type { KeyinEntry } from \"../keyins/Keyins.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { CardPopup } from \"./CardPopup.js\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup.js\";\nimport {\n InputEditorCommitHandler,\n InputEditorPopup,\n} from \"./InputEditorPopup.js\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup.js\";\nimport { ToolbarPopup } from \"./ToolbarPopup.js\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup.js\";\nimport { ComponentPopup } from \"./ComponentPopup.js\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement.js\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem.js\";\nimport type { ToolbarProps } from \"../toolbar/Toolbar.js\";\nimport { InternalConfigurableUiManager } from \"../configurableui/InternalConfigurableUiManager.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n /** @deprecated in 4.11.0. Please use the optional `parent` property moving forward. */\n parentDocument: Document;\n /** will become standard once `parentDocument` is removed. */\n parent?: Document;\n}\n\n/** @internal */\ninterface CommonPopupOptions {\n onCancel: () => void;\n location: XAndY;\n offset: XAndY;\n placement: Placement;\n anchor?: HTMLElement;\n id?: string;\n}\n\ninterface DisplayCardPopupOptions extends CommonPopupOptions {\n title: string | PropertyRecord | undefined;\n toolbarProps?: ToolbarProps;\n onItemExecuted: (item: any) => void;\n}\n\n/**\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 PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(\"PopupManager\"),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: () => void\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: (item: any) => void,\n onCancel?: () => void\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const cancelFn = onCancel ?? (() => PopupManager.hideKeyinPalette());\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n el={el}\n onItemExecuted={onItemExecuted}\n onCancel={cancelFn}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.displayToolbar} instead. */\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n PopupManager.displayToolbar(toolbarProps.items, {\n anchor: el,\n location: pt,\n offset,\n onCancel,\n placement: mapToPlacement(relativePosition),\n onItemExecuted,\n });\n return true;\n }\n\n public static displayToolbar(\n items: ToolbarItem[],\n options: CommonPopupOptions & { onItemExecuted: (item: any) => void }\n ): boolean {\n const id = options.id ?? PopupManager._toolbarId;\n const { anchor, location, offset, onCancel, placement, onItemExecuted } =\n options;\n\n const component = (\n <ToolbarPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n items={items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.showComponent} instead. */\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.hideComponent} instead. */\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n /**\n * Displays a React component as a popup.\n * @param displayElement The React component to display.\n * @param options for displaying the component.\n */\n public static showComponent(\n displayElement: React.ReactElement,\n options: CommonPopupOptions\n ): boolean {\n const { onCancel, location, offset, placement, anchor, id } = options;\n const _id = PopupManager._htmlElementId;\n\n const component = (\n <ComponentPopup\n id={id ?? _id}\n anchor={anchor ?? undefined}\n pt={location}\n offset={offset}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n >\n {displayElement}\n </ComponentPopup>\n );\n\n const popupInfo: PopupInfo = {\n id: id ?? _id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideComponent(id?: string): boolean {\n return PopupManager.removePopup(id ?? PopupManager._htmlElementId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.displayCard} instead. */\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const placement = mapToPlacement(relativePosition);\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={toolbarProps ? toolbarProps.items : undefined}\n placement={placement}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static displayCard(\n content: React.ReactNode,\n options: DisplayCardPopupOptions\n ): boolean {\n const id = options.id ?? PopupManager._cardId;\n const {\n onCancel,\n location,\n placement,\n offset,\n anchor,\n title,\n toolbarProps,\n onItemExecuted,\n } = options;\n const component = (\n <CardPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n content={{ reactNode: content }}\n title={title}\n items={toolbarProps?.items}\n placement={placement}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(id?: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id ?? PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer.\n * @public\n */\nexport class PopupRenderer extends React.Component<object, PopupRendererState> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n Logger.logInfo(\"PopupManager\", `mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n Logger.logInfo(\"PopupManager\", `un-mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter(\n (info) =>\n (info.parent ??\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n info.parentDocument ??\n this.context.ownerDocument) === this.state.parentDocument\n )\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n private _handlePopupsChangedEvent: ListenerType<\n typeof PopupManager.onPopupsChangedEvent\n > = (args) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
1
+ {"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../src/appui-react/popup/PopupManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\nimport * as React from \"react\";\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { Orientation } from \"@itwin/components-react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ListenerType, Point } from \"@itwin/core-react/internal\";\nimport { Rectangle } from \"@itwin/core-react/internal\";\nimport { offsetAndContainInContainer } from \"../layout/popup/Tooltip.js\";\nimport type { KeyinEntry } from \"../keyins/Keyins.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { CardPopup } from \"./CardPopup.js\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup.js\";\nimport {\n InputEditorCommitHandler,\n InputEditorPopup,\n} from \"./InputEditorPopup.js\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup.js\";\nimport { ToolbarPopup } from \"./ToolbarPopup.js\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup.js\";\nimport { ComponentPopup } from \"./ComponentPopup.js\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement.js\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem.js\";\nimport type { ToolbarProps } from \"../toolbar/Toolbar.js\";\nimport { InternalConfigurableUiManager } from \"../configurableui/InternalConfigurableUiManager.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n /** @deprecated in 4.11.0. Please use the optional `parent` property moving forward. */\n parentDocument: Document;\n /** will become standard once `parentDocument` is removed. */\n parent?: Document;\n}\n\n/** @internal */\ninterface CommonPopupOptions {\n onCancel: () => void;\n location: XAndY;\n offset: XAndY;\n placement: Placement;\n anchor?: HTMLElement;\n id?: string;\n}\n\ninterface DisplayCardPopupOptions extends CommonPopupOptions {\n title: string | PropertyRecord | undefined;\n toolbarProps?: ToolbarProps;\n onItemExecuted: (item: any) => void;\n}\n\n/**\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 PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(\"PopupManager\"),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: () => void\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: (item: any) => void,\n onCancel?: () => void\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const cancelFn = onCancel ?? (() => PopupManager.hideKeyinPalette());\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n el={el}\n onItemExecuted={onItemExecuted}\n onCancel={cancelFn}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.displayToolbar} instead. */\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n PopupManager.displayToolbar(toolbarProps.items, {\n anchor: el,\n location: pt,\n offset,\n onCancel,\n placement: mapToPlacement(relativePosition),\n onItemExecuted,\n });\n return true;\n }\n\n public static displayToolbar(\n items: ToolbarItem[],\n options: CommonPopupOptions & { onItemExecuted: (item: any) => void }\n ): boolean {\n const id = options.id ?? PopupManager._toolbarId;\n const { anchor, location, offset, onCancel, placement, onItemExecuted } =\n options;\n\n const component = (\n <ToolbarPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n items={items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.showComponent} instead. */\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.hideComponent} instead. */\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n /**\n * Displays a React component as a popup.\n * @param displayElement The React component to display.\n * @param options for displaying the component.\n */\n public static showComponent(\n displayElement: React.ReactElement,\n options: CommonPopupOptions\n ): boolean {\n const { onCancel, location, offset, placement, anchor, id } = options;\n const _id = PopupManager._htmlElementId;\n\n const component = (\n <ComponentPopup\n id={id ?? _id}\n anchor={anchor ?? undefined}\n pt={location}\n offset={offset}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n >\n {displayElement}\n </ComponentPopup>\n );\n\n const popupInfo: PopupInfo = {\n id: id ?? _id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideComponent(id?: string): boolean {\n return PopupManager.removePopup(id ?? PopupManager._htmlElementId);\n }\n\n /** @deprecated in 4.16.0. Use {@link PopupManager.displayCard} instead. */\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const placement = mapToPlacement(relativePosition);\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={toolbarProps ? toolbarProps.items : undefined}\n placement={placement}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static displayCard(\n content: React.ReactNode,\n options: DisplayCardPopupOptions\n ): boolean {\n const id = options.id ?? PopupManager._cardId;\n const {\n onCancel,\n location,\n placement,\n offset,\n anchor,\n title,\n toolbarProps,\n onItemExecuted,\n } = options;\n const component = (\n <CardPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n content={{ reactNode: content }}\n title={title}\n items={toolbarProps?.items}\n placement={placement}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(id?: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id ?? PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer.\n * @public\n */\nexport class PopupRenderer extends React.Component<object, PopupRendererState> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n Logger.logInfo(\"PopupManager\", `mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n Logger.logInfo(\"PopupManager\", `un-mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter(\n (info) =>\n (info.parent ??\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n info.parentDocument ??\n this.context.ownerDocument) === this.state.parentDocument\n )\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n private _handlePopupsChangedEvent: ListenerType<\n typeof PopupManager.onPopupsChangedEvent\n > = (args) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
@@ -18,26 +18,26 @@ import { DialogGridContainer } from "../uiprovider/DefaultDialogGridContainer.js
18
18
  * @beta
19
19
  */
20
20
  export class ToolSettingsPopup extends React.PureComponent {
21
+ state = {
22
+ size: { width: -1, height: -1 },
23
+ };
21
24
  constructor(props) {
22
25
  super(props);
23
- this.state = {
24
- size: { width: -1, height: -1 },
25
- };
26
- this._onSizeKnown = (newSize) => {
27
- if (newSize.height === this.state.size.height &&
28
- newSize.width === this.state.size.width)
29
- return;
30
- this.setState({ size: newSize });
31
- };
32
- this._handleKeyDown = (e) => {
33
- switch (e.key) {
34
- case Key.Escape.valueOf():
35
- if (this.props.onCancel)
36
- this.props.onCancel();
37
- break;
38
- }
39
- };
40
26
  }
27
+ _onSizeKnown = (newSize) => {
28
+ if (newSize.height === this.state.size.height &&
29
+ newSize.width === this.state.size.width)
30
+ return;
31
+ this.setState({ size: newSize });
32
+ };
33
+ _handleKeyDown = (e) => {
34
+ switch (e.key) {
35
+ case Key.Escape.valueOf():
36
+ if (this.props.onCancel)
37
+ this.props.onCancel();
38
+ break;
39
+ }
40
+ };
41
41
  render() {
42
42
  const componentGenerator = new ComponentGenerator(this.props.dataProvider, this.props.onCancel);
43
43
  let point = PopupManager.getPopupPosition(this.props.el, this.props.pt, new Point(), this.state.size);
@@ -1 +1 @@
1
- {"version":3,"file":"ToolSettingsPopup.js","sourceRoot":"","sources":["../../../src/appui-react/popup/ToolSettingsPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type {\n DialogLayoutDataProvider,\n OnCancelFunc,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport type { Orientation } from \"@itwin/components-react\";\nimport { DivWithOutsideClick } from \"@itwin/core-react\";\nimport { FocusTrap, Point } from \"@itwin/core-react/internal\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup.js\";\nimport type { PopupPropsBase } from \"./PopupManager.js\";\nimport { PopupManager } from \"./PopupManager.js\";\nimport { PositionPopup, PositionPopupContent } from \"./PositionPopup.js\";\nimport { ComponentGenerator } from \"../uiprovider/ComponentGenerator.js\";\nimport { DialogGridContainer } from \"../uiprovider/DefaultDialogGridContainer.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Props for defining a popup tool settings component\n * @beta */\nexport interface ToolSettingsPopupProps extends PopupPropsBase {\n dataProvider: DialogLayoutDataProvider;\n relativePosition: RelativePosition;\n orientation: Orientation;\n onCancel: OnCancelFunc;\n}\n\ninterface ToolSettingsPopupState {\n size: SizeProps;\n}\n\n/** Popup component for Tool Settings\n * @beta\n */\nexport class ToolSettingsPopup extends React.PureComponent<\n ToolSettingsPopupProps,\n ToolSettingsPopupState\n> {\n public override readonly state = {\n size: { width: -1, height: -1 },\n };\n\n constructor(props: ToolSettingsPopupProps) {\n super(props);\n }\n\n private _onSizeKnown = (newSize: SizeProps) => {\n if (\n newSize.height === this.state.size.height &&\n newSize.width === this.state.size.width\n )\n return;\n this.setState({ size: newSize });\n };\n\n private _handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case Key.Escape.valueOf():\n if (this.props.onCancel) this.props.onCancel();\n break;\n }\n };\n\n public override render() {\n const componentGenerator = new ComponentGenerator(\n this.props.dataProvider,\n this.props.onCancel\n );\n let point = PopupManager.getPopupPosition(\n this.props.el,\n this.props.pt,\n new Point(),\n this.state.size\n );\n const popupRect = CursorPopup.getPopupRect(\n point,\n this.props.offset,\n this.state.size,\n this.props.relativePosition\n );\n point = new Point(popupRect.left, popupRect.top);\n\n return (\n <PositionPopup\n key={this.props.id}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <DivWithOutsideClick\n onOutsideClick={this.props.onCancel}\n onKeyDown={this._handleKeyDown}\n >\n <PositionPopupContent>\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n {componentGenerator && (\n <DialogGridContainer componentGenerator={componentGenerator} />\n )}\n </FocusTrap>\n </PositionPopupContent>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ToolSettingsPopup.js","sourceRoot":"","sources":["../../../src/appui-react/popup/ToolSettingsPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type {\n DialogLayoutDataProvider,\n OnCancelFunc,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport type { Orientation } from \"@itwin/components-react\";\nimport { DivWithOutsideClick } from \"@itwin/core-react\";\nimport { FocusTrap, Point } from \"@itwin/core-react/internal\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup.js\";\nimport type { PopupPropsBase } from \"./PopupManager.js\";\nimport { PopupManager } from \"./PopupManager.js\";\nimport { PositionPopup, PositionPopupContent } from \"./PositionPopup.js\";\nimport { ComponentGenerator } from \"../uiprovider/ComponentGenerator.js\";\nimport { DialogGridContainer } from \"../uiprovider/DefaultDialogGridContainer.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Props for defining a popup tool settings component\n * @beta */\nexport interface ToolSettingsPopupProps extends PopupPropsBase {\n dataProvider: DialogLayoutDataProvider;\n relativePosition: RelativePosition;\n orientation: Orientation;\n onCancel: OnCancelFunc;\n}\n\ninterface ToolSettingsPopupState {\n size: SizeProps;\n}\n\n/** Popup component for Tool Settings\n * @beta\n */\nexport class ToolSettingsPopup extends React.PureComponent<\n ToolSettingsPopupProps,\n ToolSettingsPopupState\n> {\n public override readonly state = {\n size: { width: -1, height: -1 },\n };\n\n constructor(props: ToolSettingsPopupProps) {\n super(props);\n }\n\n private _onSizeKnown = (newSize: SizeProps) => {\n if (\n newSize.height === this.state.size.height &&\n newSize.width === this.state.size.width\n )\n return;\n this.setState({ size: newSize });\n };\n\n private _handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case Key.Escape.valueOf():\n if (this.props.onCancel) this.props.onCancel();\n break;\n }\n };\n\n public override render() {\n const componentGenerator = new ComponentGenerator(\n this.props.dataProvider,\n this.props.onCancel\n );\n let point = PopupManager.getPopupPosition(\n this.props.el,\n this.props.pt,\n new Point(),\n this.state.size\n );\n const popupRect = CursorPopup.getPopupRect(\n point,\n this.props.offset,\n this.state.size,\n this.props.relativePosition\n );\n point = new Point(popupRect.left, popupRect.top);\n\n return (\n <PositionPopup\n key={this.props.id}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <DivWithOutsideClick\n onOutsideClick={this.props.onCancel}\n onKeyDown={this._handleKeyDown}\n >\n <PositionPopupContent>\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n {componentGenerator && (\n <DialogGridContainer componentGenerator={componentGenerator} />\n )}\n </FocusTrap>\n </PositionPopupContent>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
@@ -20,25 +20,24 @@ import { mapToPlacement } from "../utils/Placement.js";
20
20
  * @beta
21
21
  */
22
22
  export class ToolbarPopup extends React.PureComponent {
23
- constructor() {
24
- super(...arguments);
25
- this.state = {
26
- size: { width: -1, height: -1 },
27
- };
28
- this._onSizeKnown = (newSize) => {
29
- if (this.state.size.width === newSize.width &&
30
- this.state.size.height === newSize.height)
31
- return;
32
- this.setState({ size: newSize });
33
- };
34
- this._handleKeyDown = (event) => {
35
- switch (event.key) {
36
- case Key.Escape.valueOf():
37
- this._cancel();
38
- break;
39
- }
40
- };
41
- }
23
+ /** @internal */
24
+ static contextType = WrapperContext;
25
+ state = {
26
+ size: { width: -1, height: -1 },
27
+ };
28
+ _onSizeKnown = (newSize) => {
29
+ if (this.state.size.width === newSize.width &&
30
+ this.state.size.height === newSize.height)
31
+ return;
32
+ this.setState({ size: newSize });
33
+ };
34
+ _handleKeyDown = (event) => {
35
+ switch (event.key) {
36
+ case Key.Escape.valueOf():
37
+ this._cancel();
38
+ break;
39
+ }
40
+ };
42
41
  _cancel() {
43
42
  if (this.props.onCancel) {
44
43
  this.props.onCancel();
@@ -56,6 +55,4 @@ export class ToolbarPopup extends React.PureComponent {
56
55
  React.createElement(Toolbar, { expandsTo: Direction.Bottom, panelAlignment: ToolbarPanelAlignment.Start, items: this.props.items, useDragInteraction: true, toolbarOpacitySetting: ToolbarOpacitySetting.Defaults, onItemExecuted: this.props.onItemExecuted })))));
57
56
  }
58
57
  }
59
- /** @internal */
60
- ToolbarPopup.contextType = WrapperContext;
61
58
  //# sourceMappingURL=ToolbarPopup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarPopup.js","sourceRoot":"","sources":["../../../src/appui-react/popup/ToolbarPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { RequireAtLeastOne } from \"@itwin/core-bentley\";\nimport { DivWithOutsideClick } from \"@itwin/core-react\";\nimport { FocusTrap, Point } from \"@itwin/core-react/internal\";\nimport type { Orientation } from \"@itwin/components-react\";\nimport {\n Direction,\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"@itwin/components-react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup.js\";\nimport type { PopupPropsBase } from \"./PopupManager.js\";\nimport { PopupManager } from \"./PopupManager.js\";\nimport { PositionPopup } from \"./PositionPopup.js\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem.js\";\nimport { Toolbar } from \"../toolbar/Toolbar.js\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Props for a popup toolbar\n * @beta\n */\nexport type ToolbarPopupProps = Omit<PopupPropsBase, \"el\"> & {\n items: ToolbarItem[];\n orientation: Orientation;\n onCancel: () => void;\n onItemExecuted: (item: any) => void;\n el?: HTMLElement;\n} & RequireAtLeastOne<{\n /** @deprecated in 4.16.0. Use `placement` property instead. */\n relativePosition: RelativePosition;\n placement: Placement;\n }>;\n\ninterface ToolbarPopupState {\n size: SizeProps;\n}\n\n/** Popup component for Toolbar\n * @beta\n */\nexport class ToolbarPopup extends React.PureComponent<\n ToolbarPopupProps,\n ToolbarPopupState\n> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n public override readonly state = {\n size: { width: -1, height: -1 },\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n if (\n this.state.size.width === newSize.width &&\n this.state.size.height === newSize.height\n )\n return;\n this.setState({ size: newSize });\n };\n\n private _handleKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ): void => {\n switch (event.key) {\n case Key.Escape.valueOf():\n this._cancel();\n break;\n }\n };\n\n private _cancel() {\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n\n public override render() {\n let point = PopupManager.getPopupPosition(\n this.props.el ?? this.context,\n this.props.pt,\n new Point(),\n this.state.size\n );\n const popupRect = CursorPopup.getPopupRect(\n point,\n this.props.offset,\n this.state.size,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.props.placement ?? mapToPlacement(this.props.relativePosition)\n );\n point = new Point(popupRect.left, popupRect.top);\n return (\n <PositionPopup\n key={this.props.id}\n className=\"uifw-no-border\"\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <DivWithOutsideClick\n onOutsideClick={this.props.onCancel}\n onKeyDown={this._handleKeyDown}\n >\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n <Toolbar\n expandsTo={Direction.Bottom}\n panelAlignment={ToolbarPanelAlignment.Start}\n items={this.props.items}\n useDragInteraction={true}\n toolbarOpacitySetting={ToolbarOpacitySetting.Defaults}\n onItemExecuted={this.props.onItemExecuted}\n />\n </FocusTrap>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ToolbarPopup.js","sourceRoot":"","sources":["../../../src/appui-react/popup/ToolbarPopup.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAkB,MAAM,uBAAuB,CAAC;AAsBvE;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,aAGvC;IACC,gBAAgB;IACT,MAAM,CAAU,WAAW,GAAG,cAAc,CAAC;IAI3B,KAAK,GAAG;QAC/B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;KAChC,CAAC;IAEM,YAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;QAC5C,IACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;YACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YAEzC,OAAO;QACT,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC;IAEM,cAAc,GAAG,CACvB,KAA0C,EACpC,EAAE;QACR,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM;QACV,CAAC;IACH,CAAC,CAAC;IAEM,OAAO;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAEe,MAAM;QACpB,IAAI,KAAK,GAAG,YAAY,CAAC,gBAAgB,CACvC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,EAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,KAAK,EAAE,EACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;QACF,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CACxC,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI;QACf,4DAA4D;QAC5D,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACpE,CAAC;QACF,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,CACL,oBAAC,aAAa,IACZ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAG9B,oBAAC,mBAAmB,IAClB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnC,SAAS,EAAE,IAAI,CAAC,cAAc;gBAE9B,oBAAC,SAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI;oBACpD,oBAAC,OAAO,IACN,SAAS,EAAE,SAAS,CAAC,MAAM,EAC3B,cAAc,EAAE,qBAAqB,CAAC,KAAK,EAC3C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,kBAAkB,EAAE,IAAI,EACxB,qBAAqB,EAAE,qBAAqB,CAAC,QAAQ,EACrD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GACzC,CACQ,CACQ,CACR,CACjB,CAAC;IACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { RequireAtLeastOne } from \"@itwin/core-bentley\";\nimport { DivWithOutsideClick } from \"@itwin/core-react\";\nimport { FocusTrap, Point } from \"@itwin/core-react/internal\";\nimport type { Orientation } from \"@itwin/components-react\";\nimport {\n Direction,\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"@itwin/components-react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup.js\";\nimport type { PopupPropsBase } from \"./PopupManager.js\";\nimport { PopupManager } from \"./PopupManager.js\";\nimport { PositionPopup } from \"./PositionPopup.js\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem.js\";\nimport { Toolbar } from \"../toolbar/Toolbar.js\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Props for a popup toolbar\n * @beta\n */\nexport type ToolbarPopupProps = Omit<PopupPropsBase, \"el\"> & {\n items: ToolbarItem[];\n orientation: Orientation;\n onCancel: () => void;\n onItemExecuted: (item: any) => void;\n el?: HTMLElement;\n} & RequireAtLeastOne<{\n /** @deprecated in 4.16.0. Use `placement` property instead. */\n relativePosition: RelativePosition;\n placement: Placement;\n }>;\n\ninterface ToolbarPopupState {\n size: SizeProps;\n}\n\n/** Popup component for Toolbar\n * @beta\n */\nexport class ToolbarPopup extends React.PureComponent<\n ToolbarPopupProps,\n ToolbarPopupState\n> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n public override readonly state = {\n size: { width: -1, height: -1 },\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n if (\n this.state.size.width === newSize.width &&\n this.state.size.height === newSize.height\n )\n return;\n this.setState({ size: newSize });\n };\n\n private _handleKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ): void => {\n switch (event.key) {\n case Key.Escape.valueOf():\n this._cancel();\n break;\n }\n };\n\n private _cancel() {\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n\n public override render() {\n let point = PopupManager.getPopupPosition(\n this.props.el ?? this.context,\n this.props.pt,\n new Point(),\n this.state.size\n );\n const popupRect = CursorPopup.getPopupRect(\n point,\n this.props.offset,\n this.state.size,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.props.placement ?? mapToPlacement(this.props.relativePosition)\n );\n point = new Point(popupRect.left, popupRect.top);\n return (\n <PositionPopup\n key={this.props.id}\n className=\"uifw-no-border\"\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <DivWithOutsideClick\n onOutsideClick={this.props.onCancel}\n onKeyDown={this._handleKeyDown}\n >\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n <Toolbar\n expandsTo={Direction.Bottom}\n panelAlignment={ToolbarPanelAlignment.Start}\n items={this.props.items}\n useDragInteraction={true}\n toolbarOpacitySetting={ToolbarOpacitySetting.Defaults}\n onItemExecuted={this.props.onItemExecuted}\n />\n </FocusTrap>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
@@ -14,6 +14,8 @@ import { UiFramework } from "../UiFramework.js";
14
14
  * @deprecated in 4.15.0. Use your preferred state management library instead.
15
15
  */
16
16
  export class ReducerRegistry {
17
+ _onReducerListChanged;
18
+ _reducers;
17
19
  /** ReducerRegistry constructor that initializes an empty reducer map to be populated by called to registerReducer. */
18
20
  constructor() {
19
21
  this._reducers = {};
@@ -1 +1 @@
1
- {"version":3,"file":"ReducerRegistry.js","sourceRoot":"","sources":["../../../src/appui-react/redux/ReducerRegistry.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAYhD;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAM1B,sHAAsH;IACtH;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,+CAA+C;IACxC,eAAe,CACpB,IAAY,EACZ,OAAyC;QAEzC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,4DAA4D;YAC5D,MAAM,IAAI,OAAO,CACf,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAC7C,wCAAwC,IAAI,yBAAyB,CACtE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,QAA8C;QACrE,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;IACxC,CAAC;IAED,0CAA0C;IACnC,WAAW;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module State\n */\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { UiFramework } from \"../UiFramework.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** NameToReducerMap used by Reducer Registry\n * @public\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport interface NameToReducerMap {\n [name: string]: (state: any, action: any) => any;\n}\n\n/** Redux Reducer Registry.\n * Follows the example at http://nicolasgallagher.com/redux-modules-and-code-splitting/\n * Allows for small modules to provide their own reducers so that the they can manage their own state\n * @public\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport class ReducerRegistry {\n private _onReducerListChanged:\n | ((reducers: NameToReducerMap) => void)\n | undefined;\n private _reducers: NameToReducerMap;\n\n /** ReducerRegistry constructor that initializes an empty reducer map to be populated by called to registerReducer. */\n constructor() {\n this._reducers = {};\n }\n\n /** Call to register a reducer and its name. */\n public registerReducer(\n name: string,\n reducer: (state: any, action: any) => any\n ) {\n if (this._reducers[name]) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"ReducerRegistry\"),\n `Redux Reducer with matching name of '${name}' is already registered`\n );\n }\n\n this._reducers = { ...this._reducers, [name]: reducer };\n if (this._onReducerListChanged) {\n this._onReducerListChanged(this._reducers);\n }\n }\n\n /** Supports a single listener which should be the Redux store, see [[StoreManager]].\n * @internal\n */\n public setChangeListener(listener: (reducers: NameToReducerMap) => void) {\n this._onReducerListChanged = listener;\n }\n\n /** Returns map of registered Reducers. */\n public getReducers() {\n return this._reducers;\n }\n\n /** Clear reducers only required for unit testing\n * @internal\n */\n public clearReducers() {\n this._reducers = {};\n if (this._onReducerListChanged) {\n this._onReducerListChanged(this._reducers);\n }\n }\n}\n\n/** ReducerRegistryInstance singleton instance of Reducer Registry\n * @beta\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport const ReducerRegistryInstance = new ReducerRegistry();\n"]}
1
+ {"version":3,"file":"ReducerRegistry.js","sourceRoot":"","sources":["../../../src/appui-react/redux/ReducerRegistry.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAYhD;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAClB,qBAAqB,CAEf;IACN,SAAS,CAAmB;IAEpC,sHAAsH;IACtH;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,+CAA+C;IACxC,eAAe,CACpB,IAAY,EACZ,OAAyC;QAEzC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,4DAA4D;YAC5D,MAAM,IAAI,OAAO,CACf,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAC7C,wCAAwC,IAAI,yBAAyB,CACtE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,QAA8C;QACrE,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;IACxC,CAAC;IAED,0CAA0C;IACnC,WAAW;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module State\n */\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { UiFramework } from \"../UiFramework.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** NameToReducerMap used by Reducer Registry\n * @public\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport interface NameToReducerMap {\n [name: string]: (state: any, action: any) => any;\n}\n\n/** Redux Reducer Registry.\n * Follows the example at http://nicolasgallagher.com/redux-modules-and-code-splitting/\n * Allows for small modules to provide their own reducers so that the they can manage their own state\n * @public\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport class ReducerRegistry {\n private _onReducerListChanged:\n | ((reducers: NameToReducerMap) => void)\n | undefined;\n private _reducers: NameToReducerMap;\n\n /** ReducerRegistry constructor that initializes an empty reducer map to be populated by called to registerReducer. */\n constructor() {\n this._reducers = {};\n }\n\n /** Call to register a reducer and its name. */\n public registerReducer(\n name: string,\n reducer: (state: any, action: any) => any\n ) {\n if (this._reducers[name]) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"ReducerRegistry\"),\n `Redux Reducer with matching name of '${name}' is already registered`\n );\n }\n\n this._reducers = { ...this._reducers, [name]: reducer };\n if (this._onReducerListChanged) {\n this._onReducerListChanged(this._reducers);\n }\n }\n\n /** Supports a single listener which should be the Redux store, see [[StoreManager]].\n * @internal\n */\n public setChangeListener(listener: (reducers: NameToReducerMap) => void) {\n this._onReducerListChanged = listener;\n }\n\n /** Returns map of registered Reducers. */\n public getReducers() {\n return this._reducers;\n }\n\n /** Clear reducers only required for unit testing\n * @internal\n */\n public clearReducers() {\n this._reducers = {};\n if (this._onReducerListChanged) {\n this._onReducerListChanged(this._reducers);\n }\n }\n}\n\n/** ReducerRegistryInstance singleton instance of Reducer Registry\n * @beta\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport const ReducerRegistryInstance = new ReducerRegistry();\n"]}
@@ -17,6 +17,10 @@ import { ReducerRegistryInstance } from "./ReducerRegistry.js";
17
17
  * @deprecated in 4.15.0. Use your preferred state management library instead.
18
18
  */
19
19
  export class StateManager {
20
+ static _LOG_CATEGORY = "StateManager";
21
+ _store;
22
+ _defaultReducers;
23
+ static _singletonStore;
20
24
  /**
21
25
  * StateManager construct.
22
26
  * @param defaultReducers Default set of Reducers used by the current application. If this object does not contain the [[FrameworkReducer]] it will automatically be added.
@@ -93,5 +97,4 @@ export class StateManager {
93
97
  StateManager._singletonStore = undefined;
94
98
  }
95
99
  }
96
- StateManager._LOG_CATEGORY = "StateManager";
97
100
  //# sourceMappingURL=StateManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateManager.js","sourceRoot":"","sources":["../../../src/appui-react/redux/StateManager.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 State\n */\n\nimport type { ReducersMapObject, Store } from \"redux\";\nimport { combineReducers, createStore } from \"redux\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { FrameworkReducer, type FrameworkState } from \"./FrameworkState.js\";\nimport type { NameToReducerMap } from \"./ReducerRegistry.js\";\nimport { ReducerRegistryInstance } from \"./ReducerRegistry.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Generic 'root' state for the appui-react package. Since this state contains common values needed by many applications\n * it is automatically added to the Redux store when using [[StateManager]].\n * @beta\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport interface FrameworkRootState {\n frameworkState: FrameworkState;\n}\n\n/** Centralized state management class using Redux actions, reducers and store. This class monitors the ReducerRegistry and will\n * automatically update the store when a new reducer is registered. This allows the store to be incrementally constructed as modules\n * and/or extensions are loaded.\n * @public\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport class StateManager {\n private static _LOG_CATEGORY = \"StateManager\";\n private _store: Store<any>;\n private _defaultReducers: NameToReducerMap;\n\n private static _singletonStore: Store<any> | undefined;\n\n /**\n * StateManager construct.\n * @param defaultReducers Default set of Reducers used by the current application. If this object does not contain the [[FrameworkReducer]] it will automatically be added.\n */\n constructor(defaultReducers?: NameToReducerMap) {\n if (defaultReducers) {\n this._defaultReducers = defaultReducers;\n const keys = Object.keys(defaultReducers);\n // ensure frameworkState is included in the set of defaultReducers\n if (-1 === keys.findIndex((key) => key === \"frameworkState\"))\n this._defaultReducers = {\n ...defaultReducers,\n frameworkState: FrameworkReducer,\n };\n } else {\n this._defaultReducers = { frameworkState: FrameworkReducer };\n }\n\n const dynamicallyRegisteredReducers = ReducerRegistryInstance.getReducers();\n let allReducers: any = this.combineDynamicAndDefaultReducers(\n dynamicallyRegisteredReducers,\n this._defaultReducers\n );\n\n // create the Redux Store.\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._store = createStore(\n allReducers,\n (window as any).__REDUX_DEVTOOLS_EXTENSION__ &&\n (window as any).__REDUX_DEVTOOLS_EXTENSION__()\n );\n\n ReducerRegistryInstance.setChangeListener((newDynamicReducers) => {\n allReducers = this.combineDynamicAndDefaultReducers(\n newDynamicReducers,\n this._defaultReducers\n );\n this._store.replaceReducer(allReducers);\n });\n StateManager._singletonStore = this._store;\n }\n\n /** Method to test if the StateManager has been initialized.\n * @param suppressErrorLog If true and the StateManager is not initialized a log message will be output.\n */\n\n public static isInitialized(suppressErrorLog = false): boolean {\n if (!StateManager._singletonStore) {\n if (!suppressErrorLog)\n Logger.logError(\n StateManager._LOG_CATEGORY,\n \"Accessing store before it is created.\"\n );\n return false;\n } else {\n return true;\n }\n }\n\n /** Return the current Redux store. Useful when using connect method to connect a Ui Component to the store. */\n public static get store(): Store<any> {\n if (StateManager.isInitialized()) {\n return StateManager._singletonStore!;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n StateManager._LOG_CATEGORY,\n `Redux Store has not been initialized`\n );\n }\n }\n\n /** Return the current state from the Redux store. */\n public static get state(): any {\n if (StateManager.isInitialized()) {\n return StateManager._singletonStore!.getState();\n } else {\n return undefined;\n }\n }\n\n private combineDynamicAndDefaultReducers(\n dynamicallyRegisteredReducers: ReducersMapObject,\n defaultReducers: ReducersMapObject\n ) {\n const allReducers = {\n ...defaultReducers,\n ...dynamicallyRegisteredReducers,\n };\n\n return combineReducers(allReducers);\n }\n\n /** To be used only in unit test\n * @internal\n */\n public static clearStore() {\n StateManager._singletonStore = undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"StateManager.js","sourceRoot":"","sources":["../../../src/appui-react/redux/StateManager.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 State\n */\n\nimport type { ReducersMapObject, Store } from \"redux\";\nimport { combineReducers, createStore } from \"redux\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { FrameworkReducer, type FrameworkState } from \"./FrameworkState.js\";\nimport type { NameToReducerMap } from \"./ReducerRegistry.js\";\nimport { ReducerRegistryInstance } from \"./ReducerRegistry.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** Generic 'root' state for the appui-react package. Since this state contains common values needed by many applications\n * it is automatically added to the Redux store when using [[StateManager]].\n * @beta\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport interface FrameworkRootState {\n frameworkState: FrameworkState;\n}\n\n/** Centralized state management class using Redux actions, reducers and store. This class monitors the ReducerRegistry and will\n * automatically update the store when a new reducer is registered. This allows the store to be incrementally constructed as modules\n * and/or extensions are loaded.\n * @public\n * @deprecated in 4.15.0. Use your preferred state management library instead.\n */\nexport class StateManager {\n private static _LOG_CATEGORY = \"StateManager\";\n private _store: Store<any>;\n private _defaultReducers: NameToReducerMap;\n\n private static _singletonStore: Store<any> | undefined;\n\n /**\n * StateManager construct.\n * @param defaultReducers Default set of Reducers used by the current application. If this object does not contain the [[FrameworkReducer]] it will automatically be added.\n */\n constructor(defaultReducers?: NameToReducerMap) {\n if (defaultReducers) {\n this._defaultReducers = defaultReducers;\n const keys = Object.keys(defaultReducers);\n // ensure frameworkState is included in the set of defaultReducers\n if (-1 === keys.findIndex((key) => key === \"frameworkState\"))\n this._defaultReducers = {\n ...defaultReducers,\n frameworkState: FrameworkReducer,\n };\n } else {\n this._defaultReducers = { frameworkState: FrameworkReducer };\n }\n\n const dynamicallyRegisteredReducers = ReducerRegistryInstance.getReducers();\n let allReducers: any = this.combineDynamicAndDefaultReducers(\n dynamicallyRegisteredReducers,\n this._defaultReducers\n );\n\n // create the Redux Store.\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._store = createStore(\n allReducers,\n (window as any).__REDUX_DEVTOOLS_EXTENSION__ &&\n (window as any).__REDUX_DEVTOOLS_EXTENSION__()\n );\n\n ReducerRegistryInstance.setChangeListener((newDynamicReducers) => {\n allReducers = this.combineDynamicAndDefaultReducers(\n newDynamicReducers,\n this._defaultReducers\n );\n this._store.replaceReducer(allReducers);\n });\n StateManager._singletonStore = this._store;\n }\n\n /** Method to test if the StateManager has been initialized.\n * @param suppressErrorLog If true and the StateManager is not initialized a log message will be output.\n */\n\n public static isInitialized(suppressErrorLog = false): boolean {\n if (!StateManager._singletonStore) {\n if (!suppressErrorLog)\n Logger.logError(\n StateManager._LOG_CATEGORY,\n \"Accessing store before it is created.\"\n );\n return false;\n } else {\n return true;\n }\n }\n\n /** Return the current Redux store. Useful when using connect method to connect a Ui Component to the store. */\n public static get store(): Store<any> {\n if (StateManager.isInitialized()) {\n return StateManager._singletonStore!;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n StateManager._LOG_CATEGORY,\n `Redux Store has not been initialized`\n );\n }\n }\n\n /** Return the current state from the Redux store. */\n public static get state(): any {\n if (StateManager.isInitialized()) {\n return StateManager._singletonStore!.getState();\n } else {\n return undefined;\n }\n }\n\n private combineDynamicAndDefaultReducers(\n dynamicallyRegisteredReducers: ReducersMapObject,\n defaultReducers: ReducersMapObject\n ) {\n const allReducers = {\n ...defaultReducers,\n ...dynamicallyRegisteredReducers,\n };\n\n return combineReducers(allReducers);\n }\n\n /** To be used only in unit test\n * @internal\n */\n public static clearStore() {\n StateManager._singletonStore = undefined;\n }\n}\n"]}
@@ -29,6 +29,8 @@ export var HideIsolateEmphasizeAction;
29
29
  * @public
30
30
  */
31
31
  class ModelOverrideProvider {
32
+ modelIds;
33
+ defaultAppearance;
32
34
  constructor(modelIds, defaultAppearance) {
33
35
  this.modelIds = modelIds;
34
36
  this.defaultAppearance = defaultAppearance;
@@ -46,6 +48,8 @@ class ModelOverrideProvider {
46
48
  * @public
47
49
  */
48
50
  class SubCategoryOverrideProvider {
51
+ subCategoryIds;
52
+ defaultAppearance;
49
53
  constructor(subCategoryIds, defaultAppearance) {
50
54
  this.subCategoryIds = subCategoryIds;
51
55
  this.defaultAppearance = defaultAppearance;
@@ -64,16 +68,18 @@ class SubCategoryOverrideProvider {
64
68
  * @public
65
69
  */
66
70
  export class HideIsolateEmphasizeActionHandler {
71
+ static emphasizeElementsChanged = new BeEvent();
67
72
  /** String Id sent to allow UI to refresh its display state. */
68
73
  static get hideIsolateEmphasizeUiSyncId() {
69
74
  return "selection-context-emphasize-elements-changed";
70
75
  }
71
76
  }
72
- HideIsolateEmphasizeActionHandler.emphasizeElementsChanged = new BeEvent();
73
77
  /** Provides helper functions for doing commands on logical selection like categories and subjects.
74
78
  * @public
75
79
  */
76
80
  export class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
81
+ static _overrideCategoryIds = new Map();
82
+ static _overrideModelIds = new Map();
77
83
  /** Returns true if there is only a category hilited. */
78
84
  static categorySelected(vp) {
79
85
  const subcategories = vp.iModel.hilited.subcategories;
@@ -560,6 +566,4 @@ export class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandl
560
566
  this._overrideModelIds.delete(vp);
561
567
  }
562
568
  }
563
- HideIsolateEmphasizeManager._overrideCategoryIds = new Map();
564
- HideIsolateEmphasizeManager._overrideModelIds = new Map();
565
569
  //# sourceMappingURL=HideIsolateEmphasizeManager.js.map