@itwin/appui-react 3.0.0-dev.147 → 3.0.0-dev.148

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 (207) hide show
  1. package/lib/cjs/appui-react/UiFramework.d.ts +2 -1
  2. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  3. package/lib/cjs/appui-react/UiFramework.js +2 -2
  4. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  5. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  6. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  7. package/lib/cjs/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  8. package/lib/cjs/appui-react/backstage/CommandLaunch.js.map +1 -1
  9. package/lib/cjs/appui-react/content/ContentControl.d.ts +1 -1
  10. package/lib/cjs/appui-react/content/ContentControl.d.ts.map +1 -1
  11. package/lib/cjs/appui-react/content/ContentControl.js +2 -2
  12. package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
  13. package/lib/cjs/appui-react/content/ContentLayout.d.ts +2 -2
  14. package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
  15. package/lib/cjs/appui-react/content/ContentLayout.js +2 -1
  16. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  17. package/lib/cjs/appui-react/content/ContentViewManager.d.ts +1 -1
  18. package/lib/cjs/appui-react/content/ContentViewManager.d.ts.map +1 -1
  19. package/lib/cjs/appui-react/content/ContentViewManager.js +3 -3
  20. package/lib/cjs/appui-react/content/ContentViewManager.js.map +1 -1
  21. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts +1 -2
  22. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  23. package/lib/cjs/appui-react/cursor/CursorInformation.js +1 -1
  24. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  25. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  26. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  27. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  28. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  29. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +3 -3
  30. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  31. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  32. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  33. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -2
  34. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  35. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts +2 -2
  36. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  37. package/lib/cjs/appui-react/feedback/ElementTooltip.js +2 -1
  38. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  39. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  40. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  41. package/lib/cjs/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  42. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  43. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  44. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  45. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  46. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  47. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -1
  48. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  49. package/lib/cjs/appui-react/messages/MessageManager.d.ts +1 -2
  50. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  51. package/lib/cjs/appui-react/messages/MessageManager.js +8 -8
  52. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  53. package/lib/cjs/appui-react/messages/Pointer.d.ts +2 -2
  54. package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
  55. package/lib/cjs/appui-react/messages/Pointer.js +2 -2
  56. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  57. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  58. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  59. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js +2 -2
  60. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  61. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  62. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  63. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  64. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  65. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +1 -1
  66. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  67. package/lib/cjs/appui-react/pickers/ViewSelector.js +3 -3
  68. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  69. package/lib/cjs/appui-react/popup/PopupManager.d.ts +2 -2
  70. package/lib/cjs/appui-react/popup/PopupManager.d.ts.map +1 -1
  71. package/lib/cjs/appui-react/popup/PopupManager.js +1 -1
  72. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  73. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  74. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  75. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts +2 -2
  76. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  77. package/lib/cjs/appui-react/syncui/BooleanListener.js +2 -1
  78. package/lib/cjs/appui-react/syncui/BooleanListener.js.map +1 -1
  79. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -16
  80. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  81. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +28 -101
  82. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  83. package/lib/cjs/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  84. package/lib/cjs/appui-react/toolbar/ActionItemButton.js.map +1 -1
  85. package/lib/cjs/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  86. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  87. package/lib/cjs/appui-react/toolbar/ToolButton.js.map +1 -1
  88. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/toolbar/Toolbar.js +1 -1
  90. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  91. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  92. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  93. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  94. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  95. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  96. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -2
  97. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  98. package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -2
  99. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  100. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  101. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  102. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js +3 -2
  103. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  104. package/lib/esm/appui-react/UiFramework.d.ts +2 -1
  105. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  106. package/lib/esm/appui-react/UiFramework.js +2 -2
  107. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  108. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  109. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  110. package/lib/esm/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  111. package/lib/esm/appui-react/backstage/CommandLaunch.js.map +1 -1
  112. package/lib/esm/appui-react/content/ContentControl.d.ts +1 -1
  113. package/lib/esm/appui-react/content/ContentControl.d.ts.map +1 -1
  114. package/lib/esm/appui-react/content/ContentControl.js +1 -1
  115. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  116. package/lib/esm/appui-react/content/ContentLayout.d.ts +2 -2
  117. package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
  118. package/lib/esm/appui-react/content/ContentLayout.js +2 -1
  119. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  120. package/lib/esm/appui-react/content/ContentViewManager.d.ts +1 -1
  121. package/lib/esm/appui-react/content/ContentViewManager.d.ts.map +1 -1
  122. package/lib/esm/appui-react/content/ContentViewManager.js +1 -1
  123. package/lib/esm/appui-react/content/ContentViewManager.js.map +1 -1
  124. package/lib/esm/appui-react/cursor/CursorInformation.d.ts +1 -2
  125. package/lib/esm/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  126. package/lib/esm/appui-react/cursor/CursorInformation.js +2 -2
  127. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  128. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  129. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  130. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  131. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  132. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +2 -2
  133. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  134. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  135. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  136. package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -1
  137. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  138. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts +2 -2
  139. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  140. package/lib/esm/appui-react/feedback/ElementTooltip.js +2 -1
  141. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  142. package/lib/esm/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  143. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  144. package/lib/esm/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  145. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  146. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  147. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  148. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  149. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  150. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +2 -2
  151. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  152. package/lib/esm/appui-react/messages/MessageManager.d.ts +1 -2
  153. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  154. package/lib/esm/appui-react/messages/MessageManager.js +2 -2
  155. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  156. package/lib/esm/appui-react/messages/Pointer.d.ts +2 -2
  157. package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
  158. package/lib/esm/appui-react/messages/Pointer.js +2 -2
  159. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  160. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  161. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  162. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js +1 -1
  163. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  164. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  165. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  166. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  167. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  168. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +1 -1
  169. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  170. package/lib/esm/appui-react/pickers/ViewSelector.js +1 -1
  171. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  172. package/lib/esm/appui-react/popup/PopupManager.d.ts +2 -2
  173. package/lib/esm/appui-react/popup/PopupManager.d.ts.map +1 -1
  174. package/lib/esm/appui-react/popup/PopupManager.js +2 -2
  175. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  176. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  177. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  178. package/lib/esm/appui-react/syncui/BooleanListener.d.ts +2 -2
  179. package/lib/esm/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  180. package/lib/esm/appui-react/syncui/BooleanListener.js +2 -1
  181. package/lib/esm/appui-react/syncui/BooleanListener.js.map +1 -1
  182. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -16
  183. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  184. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +27 -99
  185. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  186. package/lib/esm/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  187. package/lib/esm/appui-react/toolbar/ActionItemButton.js.map +1 -1
  188. package/lib/esm/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  189. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  190. package/lib/esm/appui-react/toolbar/ToolButton.js.map +1 -1
  191. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  192. package/lib/esm/appui-react/toolbar/Toolbar.js +1 -1
  193. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  194. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  195. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  196. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  197. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  198. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  199. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -2
  200. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  201. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -2
  202. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  203. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  204. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  205. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js +2 -1
  206. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  207. package/package.json +34 -34
@@ -1,8 +1,8 @@
1
1
  /** @packageDocumentation
2
2
  * @module SyncUi
3
3
  */
4
+ import { UiSyncEvent, UiSyncEventArgs } from "@itwin/appui-abstract";
4
5
  import { IModelConnection } from "@itwin/core-frontend";
5
- import { UiEvent } from "@itwin/core-react";
6
6
  /** Event Id used to sync UI components. Used to refresh visibility or enable state of control.
7
7
  * @public
8
8
  */
@@ -56,27 +56,19 @@ export declare enum SyncUiEventId {
56
56
  ShowHideManagerSettingChange = "show-hide-setting-change"
57
57
  }
58
58
  /** SyncUi Event arguments. Contains a set of lower case event Ids.
59
- * @public
59
+ * @public @deprecated use UiSyncEventArgs in appui-abstract instead
60
60
  */
61
- export interface SyncUiEventArgs {
62
- eventIds: Set<string>;
63
- }
61
+ export declare type SyncUiEventArgs = UiSyncEventArgs;
64
62
  /** SyncUi Event class.
65
- * @public
63
+ * @public @deprecated use UiSyncEvent in appui-abstract instead
66
64
  */
67
- export declare class SyncUiEvent extends UiEvent<SyncUiEventArgs> {
68
- }
65
+ export declare type SyncUiEvent = UiSyncEvent;
69
66
  /** This class is used to send eventIds to interested UI components so the component can determine if it needs
70
67
  * to refresh its display by calling setState on itself.
71
68
  * @public
72
69
  */
73
70
  export declare class SyncUiEventDispatcher {
74
- private static _syncEventTimerId;
75
- private static _eventIds;
76
- private static _eventIdAdded;
77
- private static _syncUiEvent;
78
- private static _timeoutPeriod;
79
- private static _secondaryTimeoutPeriod;
71
+ private static _uiEventDispatcher;
80
72
  private static _unregisterListenerFunc?;
81
73
  private static _unregisterListenerFuncs;
82
74
  private static initialized;
@@ -92,8 +84,6 @@ export declare class SyncUiEventDispatcher {
92
84
  static dispatchSyncUiEvent(eventId: string): void;
93
85
  /** Save multiple eventIds in Set for processing. */
94
86
  static dispatchSyncUiEvents(eventIds: string[]): void;
95
- /** Trigger registered event processing when timer has expired and no addition eventId are added. */
96
- private static checkForAdditionalIds;
97
87
  /** Checks to see if an eventId of interest is contained in the set of eventIds */
98
88
  static hasEventOfInterest(eventIds: Set<string>, idsOfInterest: string[]): boolean;
99
89
  private static _dispatchViewChange;
@@ -1 +1 @@
1
- {"version":3,"file":"SyncUiEventDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyncUiEventDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAqB,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAa,gBAAgB,EAAkD,MAAM,sBAAsB,CAAC;AAiBnH;;GAEG;AACH,oBAAY,aAAa;IACvB,yCAAyC;IACzC,0BAA0B,+BAA+B;IACzD,qCAAqC;IACrC,uBAAuB,4BAA4B;IACnD,8EAA8E;IAC9E,oBAAoB,yBAAyB;IAC7C,iEAAiE;IACjE,qBAAqB,0BAA0B;IAC/C;;OAEG;IACH,mBAAmB,wBAAwB;IAC3C,iCAAiC;IACjC,cAAc,mBAAmB;IACjC,4CAA4C;IAC5C,sBAAsB,2BAA2B;IACjD,4EAA4E;IAC5E,uBAAuB,4BAA4B;IACnD,kCAAkC;IAClC,oBAAoB,yBAAyB;IAC7C,yEAAyE;IACzE,eAAe,oBAAoB;IACnC,oDAAoD;IACpD,sBAAsB,2BAA2B;IACjD,gDAAgD;IAChD,kBAAkB,uBAAuB;IACzC,0CAA0C;IAC1C,sBAAsB,2BAA2B;IACjD,+DAA+D;IAC/D,aAAa,kBAAkB;IAC/B;qBACiB;IACjB,aAAa,kBAAkB;IAC/B,yCAAyC;IACzC,kBAAkB,uBAAuB;IACzC;qBACiB;IACjB,iBAAiB,sBAAsB;IACvC,oEAAoE;IACpE,mBAAmB,wBAAwB;IAC3C,kFAAkF;IAClF,wBAAwB,6BAA6B;IACrD,mFAAmF;IACnF,gBAAgB,qBAAqB;IACrC,mEAAmE;IACnE,qBAAqB,0BAA0B;IAC/C,4BAA4B,6BAA6B;CAC1D;AAED;;GAEG;AACH,oBAAY,eAAe,GAAG,eAAe,CAAC;AAE9C;;GAEG;AACH,oBAAY,WAAW,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA2B;IAC5D,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAa;IACpD,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAyB;IAChE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAS;IAEnC,wCAAwC;WAE1B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpD,+DAA+D;IAC/D,WAAkB,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAE5C;IAED,oEAAoE;IAEpE,WAAkB,aAAa,IAAI,WAAW,CAE7C;IAED,iDAAiD;WACnC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjE,0CAA0C;WAC5B,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQxD,oDAAoD;WACtC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ5D,kFAAkF;WACpE,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE;IAK/E,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAIlC,gFAAgF;WAClE,UAAU;IA0ExB,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAItC,qFAAqF;WACvE,qBAAqB,CAAC,gBAAgB,EAAE,gBAAgB;IAKtE,0FAA0F;WAC5E,0BAA0B,CAAC,gBAAgB,EAAE,gBAAgB;CA4C5E"}
@@ -5,12 +5,12 @@
5
5
  /** @packageDocumentation
6
6
  * @module SyncUi
7
7
  */
8
+ import { UiEventDispatcher } from "@itwin/appui-abstract";
8
9
  import { Logger } from "@itwin/core-bentley";
9
10
  import { IModelApp } from "@itwin/core-frontend";
10
11
  import { getInstancesCount } from "@itwin/presentation-common";
11
12
  import { Presentation } from "@itwin/presentation-frontend";
12
13
  // cSpell:ignore configurableui
13
- import { UiEvent } from "@itwin/core-react";
14
14
  import { Backstage } from "../backstage/Backstage";
15
15
  import { ContentViewManager } from "../content/ContentViewManager";
16
16
  import { FrontstageManager } from "../frontstage/FrontstageManager";
@@ -75,11 +75,6 @@ export var SyncUiEventId;
75
75
  SyncUiEventId["UiStateStorageChanged"] = "uistatestoragechanged";
76
76
  SyncUiEventId["ShowHideManagerSettingChange"] = "show-hide-setting-change";
77
77
  })(SyncUiEventId || (SyncUiEventId = {}));
78
- /** SyncUi Event class.
79
- * @public
80
- */
81
- export class SyncUiEvent extends UiEvent {
82
- }
83
78
  /** This class is used to send eventIds to interested UI components so the component can determine if it needs
84
79
  * to refresh its display by calling setState on itself.
85
80
  * @public
@@ -88,109 +83,44 @@ export class SyncUiEventDispatcher {
88
83
  /** @internal - used for testing only */
89
84
  /* istanbul ignore next */
90
85
  static setTimeoutPeriod(period) {
91
- SyncUiEventDispatcher._timeoutPeriod = period;
92
- SyncUiEventDispatcher._secondaryTimeoutPeriod = Math.floor(SyncUiEventDispatcher._timeoutPeriod / 2);
93
- if (SyncUiEventDispatcher._secondaryTimeoutPeriod < 1)
94
- SyncUiEventDispatcher._secondaryTimeoutPeriod = 1;
95
- if (SyncUiEventDispatcher._syncEventTimerId) {
96
- window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);
97
- SyncUiEventDispatcher._syncEventTimerId = undefined;
98
- }
99
- if (SyncUiEventDispatcher._eventIds)
100
- SyncUiEventDispatcher._eventIds.clear();
101
- SyncUiEventDispatcher._eventIdAdded = false;
86
+ SyncUiEventDispatcher._uiEventDispatcher.setTimeoutPeriod(period);
102
87
  }
103
88
  /** Return set of event ids that will be sent to listeners/. */
104
89
  static get syncEventIds() {
105
- if (!SyncUiEventDispatcher._eventIds)
106
- SyncUiEventDispatcher._eventIds = new Set();
107
- return SyncUiEventDispatcher._eventIds;
90
+ return SyncUiEventDispatcher._uiEventDispatcher.syncEventIds;
108
91
  }
109
92
  /** Return SyncUiEvent so callers can register an event callback. */
93
+ // eslint-disable-next-line deprecation/deprecation
110
94
  static get onSyncUiEvent() {
111
- if (!SyncUiEventDispatcher._syncUiEvent)
112
- SyncUiEventDispatcher._syncUiEvent = new SyncUiEvent();
113
- return SyncUiEventDispatcher._syncUiEvent;
95
+ return SyncUiEventDispatcher._uiEventDispatcher.onSyncUiEvent;
114
96
  }
115
97
  /** Immediately trigger sync event processing. */
116
98
  static dispatchImmediateSyncUiEvent(eventId) {
117
- const eventIds = new Set();
118
- eventIds.add(eventId.toLowerCase());
119
- SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });
99
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchImmediateSyncUiEvent(eventId);
120
100
  }
121
101
  /** Save eventId in Set for processing. */
122
102
  static dispatchSyncUiEvent(eventId) {
123
- if (0 === SyncUiEventDispatcher._timeoutPeriod) {
124
- Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvent] not processed because _timeoutPeriod=0`);
103
+ if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {
104
+ Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvent] not processed because timeoutPeriod=0`);
125
105
  return;
126
106
  }
127
- SyncUiEventDispatcher.syncEventIds.add(eventId.toLowerCase());
128
- if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one
129
- SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);
130
- }
131
- else {
132
- SyncUiEventDispatcher._eventIdAdded = true;
133
- }
107
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(eventId);
134
108
  }
135
109
  /** Save multiple eventIds in Set for processing. */
136
110
  static dispatchSyncUiEvents(eventIds) {
137
111
  // istanbul ignore if
138
- if (0 === SyncUiEventDispatcher._timeoutPeriod) {
112
+ if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {
139
113
  Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`);
140
- return;
141
- }
142
- eventIds.forEach((id) => SyncUiEventDispatcher.syncEventIds.add(id.toLowerCase()));
143
- // istanbul ignore else
144
- if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one
145
- SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);
146
- }
147
- else {
148
- SyncUiEventDispatcher._eventIdAdded = true;
149
- }
150
- }
151
- /** Trigger registered event processing when timer has expired and no addition eventId are added. */
152
- static checkForAdditionalIds() {
153
- /* istanbul ignore else */
154
- if (!SyncUiEventDispatcher._eventIdAdded) {
155
- // istanbul ignore else
156
- if (SyncUiEventDispatcher._syncEventTimerId) {
157
- window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);
158
- SyncUiEventDispatcher._syncEventTimerId = undefined;
159
- }
160
- else {
161
- Logger.logError(UiFramework.loggerCategory(this), "SyncUiEventDispatcher.checkForAdditionalIds - expected _syncEventTimerId to be defined");
162
- }
163
- SyncUiEventDispatcher._eventIdAdded = false;
164
- // istanbul ignore else
165
- if (SyncUiEventDispatcher.syncEventIds.size > 0) {
166
- const eventIds = new Set();
167
- SyncUiEventDispatcher.syncEventIds.forEach((value) => eventIds.add(value));
168
- SyncUiEventDispatcher._eventIds.clear();
169
- SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });
170
- }
171
- return;
172
- }
173
- // istanbul ignore next
174
- if (SyncUiEventDispatcher._syncEventTimerId) {
175
- window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);
176
- SyncUiEventDispatcher._syncEventTimerId = undefined;
177
114
  }
178
- // istanbul ignore next
179
- SyncUiEventDispatcher._eventIdAdded = false;
180
- // if events have been added before the initial timer expired wait half that time to see if events are still being added.
181
- // istanbul ignore next
182
- SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._secondaryTimeoutPeriod);
115
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvents(eventIds);
183
116
  }
184
117
  /** Checks to see if an eventId of interest is contained in the set of eventIds */
185
118
  static hasEventOfInterest(eventIds, idsOfInterest) {
186
- /* istanbul ignore else */
187
- if ((idsOfInterest.length > 0) && idsOfInterest.some((value) => eventIds.has(value.toLowerCase())))
188
- return true;
189
- return false;
119
+ return SyncUiEventDispatcher._uiEventDispatcher.hasEventOfInterest(eventIds, idsOfInterest);
190
120
  }
191
121
  // istanbul ignore next
192
122
  static _dispatchViewChange() {
193
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ViewStateChanged);
123
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ViewStateChanged);
194
124
  }
195
125
  /** Initializes the Monitoring of Events that trigger dispatching sync events */
196
126
  static initialize() {
@@ -200,42 +130,42 @@ export class SyncUiEventDispatcher {
200
130
  SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentControlActivated);
201
131
  }));
202
132
  this._unregisterListenerFuncs.push(FrontstageManager.onContentLayoutActivatedEvent.addListener(() => {
203
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentLayoutActivated);
133
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentLayoutActivated);
204
134
  }));
205
135
  this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageActivatedEvent.addListener(() => {
206
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageActivating);
136
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageActivating);
207
137
  }));
208
138
  this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageReadyEvent.addListener(() => {
209
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageReady);
139
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageReady);
210
140
  }));
211
141
  this._unregisterListenerFuncs.push(FrontstageManager.onModalFrontstageChangedEvent.addListener(() => {
212
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ModalFrontstageChanged);
142
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ModalFrontstageChanged);
213
143
  }));
214
144
  this._unregisterListenerFuncs.push(FrontstageManager.onNavigationAidActivatedEvent.addListener(() => {
215
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.NavigationAidActivated);
145
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.NavigationAidActivated);
216
146
  }));
217
147
  this._unregisterListenerFuncs.push(FrontstageManager.onToolActivatedEvent.addListener(() => {
218
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ToolActivated);
148
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ToolActivated);
219
149
  }));
220
150
  this._unregisterListenerFuncs.push(FrontstageManager.onWidgetStateChangedEvent.addListener(() => {
221
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WidgetStateChanged);
151
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WidgetStateChanged);
222
152
  }));
223
153
  this._unregisterListenerFuncs.push(Backstage.onBackstageEvent.addListener(() => {
224
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.BackstageEvent);
154
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.BackstageEvent);
225
155
  }));
226
156
  this._unregisterListenerFuncs.push(WorkflowManager.onTaskActivatedEvent.addListener(() => {
227
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.TaskActivated); // eslint-disable-line deprecation/deprecation
157
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.TaskActivated); // eslint-disable-line deprecation/deprecation
228
158
  }));
229
159
  this._unregisterListenerFuncs.push(WorkflowManager.onWorkflowActivatedEvent.addListener(() => {
230
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WorkflowActivated); // eslint-disable-line deprecation/deprecation
160
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WorkflowActivated); // eslint-disable-line deprecation/deprecation
231
161
  }));
232
162
  this._unregisterListenerFuncs.push(ContentViewManager.onActiveContentChangedEvent.addListener(() => {
233
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveContentChanged);
163
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveContentChanged);
234
164
  }));
235
165
  // istanbul ignore else
236
166
  if (IModelApp && IModelApp.viewManager) {
237
167
  this._unregisterListenerFuncs.push(IModelApp.viewManager.onSelectedViewportChanged.addListener((args) => {
238
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveViewportChanged);
168
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveViewportChanged);
239
169
  // if this is the first view being opened up start the default tool so tool admin is happy.
240
170
  if (undefined === args.previous) {
241
171
  IModelApp.toolAdmin.startDefaultTool(); // eslint-disable-line @typescript-eslint/no-floating-promises
@@ -254,7 +184,7 @@ export class SyncUiEventDispatcher {
254
184
  }
255
185
  }
256
186
  static selectionChangedHandler(_ev) {
257
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SelectionSetChanged);
187
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SelectionSetChanged);
258
188
  }
259
189
  /** This should be called by IModelApp when the active IModelConnection is closed. */
260
190
  static clearConnectionEvents(iModelConnection) {
@@ -302,9 +232,7 @@ export class SyncUiEventDispatcher {
302
232
  }
303
233
  }
304
234
  }
305
- SyncUiEventDispatcher._eventIdAdded = false;
306
- SyncUiEventDispatcher._timeoutPeriod = 100;
307
- SyncUiEventDispatcher._secondaryTimeoutPeriod = SyncUiEventDispatcher._timeoutPeriod / 2;
235
+ SyncUiEventDispatcher._uiEventDispatcher = new UiEventDispatcher();
308
236
  SyncUiEventDispatcher._unregisterListenerFuncs = [];
309
237
  SyncUiEventDispatcher.initialized = false;
310
238
  //# sourceMappingURL=SyncUiEventDispatcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module SyncUi\r\n */\r\n\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp, IModelConnection, SelectedViewportChangedArgs, SelectionSetEvent } from \"@itwin/core-frontend\";\r\nimport { getInstancesCount, SelectionScope } from \"@itwin/presentation-common\";\r\nimport { ISelectionProvider, Presentation, SelectionChangeEventArgs } from \"@itwin/presentation-frontend\";\r\n// cSpell:ignore configurableui\r\nimport { UiEvent } from \"@itwin/core-react\";\r\nimport { Backstage } from \"../backstage/Backstage\";\r\nimport { ContentViewManager } from \"../content/ContentViewManager\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { PresentationSelectionScope, SessionStateActionId } from \"../redux/SessionState\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { WorkflowManager } from \"../workflow/Workflow\";\r\n\r\n// cSpell:ignore activecontentchanged, activitymessageupdated, activitymessagecancelled, backstagecloseevent, backstageevent, contentlayoutactivated, contentcontrolactivated,\r\n// cSpell:ignore elementtooltipchanged, frontstageactivated, inputfieldmessageadded, inputfieldmessageremoved, modalfrontstagechanged, modaldialogchanged\r\n// cSpell:ignore navigationaidactivated, notificationmessageadded, toolactivated, taskactivated, widgetstatechanged, workflowactivated frontstageactivating\r\n// cSpell:ignore frontstageready activeviewportchanged selectionsetchanged presentationselectionchanged viewstatechanged\r\n// cSpell:ignore accudrawcompassmodechanged accudrawfieldlockchanged accudrawrotationchanged uisettingschanged\r\n\r\n/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.\r\n * @public\r\n */\r\nexport enum SyncUiEventId {\r\n /** AccuDraw compass mode has changed. */\r\n AccuDrawCompassModeChanged = \"accudrawcompassmodechanged\",\r\n /** AccuDraw rotation has changed. */\r\n AccuDrawRotationChanged = \"accudrawrotationchanged\",\r\n /** The active content as maintained by the ContentViewManager has changed. */\r\n ActiveContentChanged = \"activecontentchanged\",\r\n /** The active view maintained by the ViewManager has changed. */\r\n ActiveViewportChanged = \"activeviewportchanged\",\r\n /** Backstage has been closed.\r\n * @deprecated Use BackstageEvent instead\r\n */\r\n BackstageCloseEvent = \"backstagecloseevent\",\r\n /** Backstage has been closed. */\r\n BackstageEvent = \"backstageevent\",\r\n /** A Content Layout has been activated. */\r\n ContentLayoutActivated = \"contentlayoutactivated\",\r\n /** A Content Control maintained by FrontstageManager has been activated. */\r\n ContentControlActivated = \"contentcontrolactivated\",\r\n /** A Frontstage is activating. */\r\n FrontstageActivating = \"frontstageactivating\",\r\n /** A Frontstage has been activated and the content has been assigned. */\r\n FrontstageReady = \"frontstageready\",\r\n /** A Modal Frontstage has been opened or closed. */\r\n ModalFrontstageChanged = \"modalfrontstagechanged\",\r\n /** A Modal Dialog has been opened or closed. */\r\n ModalDialogChanged = \"modaldialogchanged\",\r\n /** A NavigationAid has been activated. */\r\n NavigationAidActivated = \"navigationaidactivated\",\r\n /** An InteractiveTool has been activated via the ToolAdmin. */\r\n ToolActivated = \"toolactivated\",\r\n /** A Task has been activated.\r\n * @deprecated */\r\n TaskActivated = \"taskactivated\",\r\n /** The state of a Widget has changed. */\r\n WidgetStateChanged = \"widgetstatechanged\",\r\n /** A Workflow has been activated.\r\n * @deprecated */\r\n WorkflowActivated = \"workflowactivated\",\r\n /** The SelectionSet for the active IModelConnection has changed. */\r\n SelectionSetChanged = \"selectionsetchanged\",\r\n /** The list of settings providers registered with SettingsManager has changed. */\r\n SettingsProvidersChanged = \"settingsproviderschanged\",\r\n /** The current view state has changed (used by view undo/redo toolbar buttons). */\r\n ViewStateChanged = \"viewstatechanged\",\r\n /** The current object the reads and write UI State has changed. */\r\n UiStateStorageChanged = \"uistatestoragechanged\",\r\n ShowHideManagerSettingChange = \"show-hide-setting-change\",\r\n}\r\n\r\n/** SyncUi Event arguments. Contains a set of lower case event Ids.\r\n * @public\r\n */\r\nexport interface SyncUiEventArgs {\r\n eventIds: Set<string>;\r\n}\r\n\r\n/** SyncUi Event class.\r\n * @public\r\n */\r\nexport class SyncUiEvent extends UiEvent<SyncUiEventArgs> { }\r\n\r\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\r\n * to refresh its display by calling setState on itself.\r\n * @public\r\n */\r\nexport class SyncUiEventDispatcher {\r\n private static _syncEventTimerId: number | undefined;\r\n private static _eventIds: Set<string>;\r\n private static _eventIdAdded = false;\r\n private static _syncUiEvent: SyncUiEvent;\r\n private static _timeoutPeriod = 100;\r\n private static _secondaryTimeoutPeriod = SyncUiEventDispatcher._timeoutPeriod / 2;\r\n private static _unregisterListenerFunc?: () => void;\r\n private static _unregisterListenerFuncs: Array<() => void> = [];\r\n private static initialized = false;\r\n\r\n /** @internal - used for testing only */\r\n /* istanbul ignore next */\r\n public static setTimeoutPeriod(period: number): void {\r\n SyncUiEventDispatcher._timeoutPeriod = period;\r\n SyncUiEventDispatcher._secondaryTimeoutPeriod = Math.floor(SyncUiEventDispatcher._timeoutPeriod / 2);\r\n if (SyncUiEventDispatcher._secondaryTimeoutPeriod < 1)\r\n SyncUiEventDispatcher._secondaryTimeoutPeriod = 1;\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n }\r\n if (SyncUiEventDispatcher._eventIds)\r\n SyncUiEventDispatcher._eventIds.clear();\r\n\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n }\r\n\r\n /** Return set of event ids that will be sent to listeners/. */\r\n public static get syncEventIds(): Set<string> {\r\n if (!SyncUiEventDispatcher._eventIds)\r\n SyncUiEventDispatcher._eventIds = new Set<string>();\r\n\r\n return SyncUiEventDispatcher._eventIds;\r\n }\r\n\r\n /** Return SyncUiEvent so callers can register an event callback. */\r\n public static get onSyncUiEvent(): SyncUiEvent {\r\n if (!SyncUiEventDispatcher._syncUiEvent)\r\n SyncUiEventDispatcher._syncUiEvent = new SyncUiEvent();\r\n\r\n return SyncUiEventDispatcher._syncUiEvent;\r\n }\r\n\r\n /** Immediately trigger sync event processing. */\r\n public static dispatchImmediateSyncUiEvent(eventId: string): void {\r\n const eventIds = new Set<string>();\r\n eventIds.add(eventId.toLowerCase());\r\n SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });\r\n }\r\n\r\n /** Save eventId in Set for processing. */\r\n public static dispatchSyncUiEvent(eventId: string): void {\r\n if (0 === SyncUiEventDispatcher._timeoutPeriod) {\r\n Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvent] not processed because _timeoutPeriod=0`);\r\n return;\r\n }\r\n\r\n SyncUiEventDispatcher.syncEventIds.add(eventId.toLowerCase());\r\n if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);\r\n } else {\r\n SyncUiEventDispatcher._eventIdAdded = true;\r\n }\r\n }\r\n\r\n /** Save multiple eventIds in Set for processing. */\r\n public static dispatchSyncUiEvents(eventIds: string[]): void {\r\n // istanbul ignore if\r\n if (0 === SyncUiEventDispatcher._timeoutPeriod) {\r\n Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`);\r\n return;\r\n }\r\n\r\n eventIds.forEach((id) => SyncUiEventDispatcher.syncEventIds.add(id.toLowerCase()));\r\n // istanbul ignore else\r\n if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);\r\n } else {\r\n SyncUiEventDispatcher._eventIdAdded = true;\r\n }\r\n }\r\n\r\n /** Trigger registered event processing when timer has expired and no addition eventId are added. */\r\n private static checkForAdditionalIds() {\r\n /* istanbul ignore else */\r\n if (!SyncUiEventDispatcher._eventIdAdded) {\r\n // istanbul ignore else\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), \"SyncUiEventDispatcher.checkForAdditionalIds - expected _syncEventTimerId to be defined\");\r\n }\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n // istanbul ignore else\r\n if (SyncUiEventDispatcher.syncEventIds.size > 0) {\r\n const eventIds = new Set<string>();\r\n SyncUiEventDispatcher.syncEventIds.forEach((value) => eventIds.add(value));\r\n SyncUiEventDispatcher._eventIds.clear();\r\n SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });\r\n }\r\n return;\r\n }\r\n\r\n // istanbul ignore next\r\n if (SyncUiEventDispatcher._syncEventTimerId) {\r\n window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);\r\n SyncUiEventDispatcher._syncEventTimerId = undefined;\r\n }\r\n // istanbul ignore next\r\n SyncUiEventDispatcher._eventIdAdded = false;\r\n // if events have been added before the initial timer expired wait half that time to see if events are still being added.\r\n // istanbul ignore next\r\n SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._secondaryTimeoutPeriod);\r\n }\r\n\r\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\r\n public static hasEventOfInterest(eventIds: Set<string>, idsOfInterest: string[]) {\r\n /* istanbul ignore else */\r\n if ((idsOfInterest.length > 0) && idsOfInterest.some((value: string): boolean => eventIds.has(value.toLowerCase())))\r\n return true;\r\n return false;\r\n }\r\n\r\n // istanbul ignore next\r\n private static _dispatchViewChange() {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ViewStateChanged);\r\n }\r\n\r\n /** Initializes the Monitoring of Events that trigger dispatching sync events */\r\n public static initialize() {\r\n // clear any registered listeners - this should only be encountered in unit test scenarios\r\n this._unregisterListenerFuncs.forEach((unregisterListenerFunc) => unregisterListenerFunc());\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onContentControlActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentControlActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onContentLayoutActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentLayoutActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageActivating);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageReadyEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageReady);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onModalFrontstageChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ModalFrontstageChanged);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onNavigationAidActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.NavigationAidActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onToolActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ToolActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onWidgetStateChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WidgetStateChanged);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(Backstage.onBackstageEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.BackstageEvent);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(WorkflowManager.onTaskActivatedEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.TaskActivated); // eslint-disable-line deprecation/deprecation\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(WorkflowManager.onWorkflowActivatedEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WorkflowActivated); // eslint-disable-line deprecation/deprecation\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(ContentViewManager.onActiveContentChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveContentChanged);\r\n }));\r\n\r\n // istanbul ignore else\r\n if (IModelApp && IModelApp.viewManager) {\r\n this._unregisterListenerFuncs.push(IModelApp.viewManager.onSelectedViewportChanged.addListener((args: SelectedViewportChangedArgs) => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveViewportChanged);\r\n\r\n // if this is the first view being opened up start the default tool so tool admin is happy.\r\n if (undefined === args.previous) {\r\n IModelApp.toolAdmin.startDefaultTool();// eslint-disable-line @typescript-eslint/no-floating-promises\r\n } else {\r\n // istanbul ignore next\r\n if (args.previous.onViewChanged && typeof args.previous.onViewChanged.removeListener === \"function\") // not set during unit test\r\n args.previous.onViewChanged.removeListener(SyncUiEventDispatcher._dispatchViewChange);\r\n }\r\n // istanbul ignore next\r\n if (args.current) {\r\n if (args.current.onViewChanged && typeof args.current.onViewChanged.addListener === \"function\") // not set during unit test\r\n args.current.onViewChanged.addListener(SyncUiEventDispatcher._dispatchViewChange);\r\n }\r\n }));\r\n }\r\n }\r\n\r\n private static selectionChangedHandler(_ev: SelectionSetEvent) {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SelectionSetChanged);\r\n }\r\n\r\n /** This should be called by IModelApp when the active IModelConnection is closed. */\r\n public static clearConnectionEvents(iModelConnection: IModelConnection) {\r\n iModelConnection.selectionSet.onChanged.removeListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n SyncUiEventDispatcher._unregisterListenerFunc && SyncUiEventDispatcher._unregisterListenerFunc();\r\n }\r\n\r\n /** This should be called by IModelApp when the active IModelConnection is established. */\r\n public static initializeConnectionEvents(iModelConnection: IModelConnection) {\r\n if (SyncUiEventDispatcher._unregisterListenerFunc)\r\n SyncUiEventDispatcher._unregisterListenerFunc();\r\n\r\n if (iModelConnection.isBlankConnection()) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetNumItemsSelected, 0);\r\n return;\r\n }\r\n\r\n iModelConnection.selectionSet.onChanged.removeListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n iModelConnection.selectionSet.onChanged.addListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n (iModelConnection.iModelId) ? UiFramework.setActiveIModelId(iModelConnection.iModelId) : /* istanbul ignore next */ \"\";\r\n\r\n // listen for changes from presentation rules selection manager (this is done once an iModelConnection is available to ensure Presentation.selection is valid)\r\n SyncUiEventDispatcher._unregisterListenerFunc = Presentation.selection.selectionChange.addListener((args: SelectionChangeEventArgs, provider: ISelectionProvider) => {\r\n // istanbul ignore if\r\n if (args.level !== 0) {\r\n // don't need to handle sub-selections\r\n return;\r\n }\r\n const selection = provider.getSelection(args.imodel, args.level);\r\n const numSelected = getInstancesCount(selection);\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetNumItemsSelected, numSelected);\r\n });\r\n\r\n Presentation.selection.scopes.getSelectionScopes(iModelConnection).then((availableScopes: SelectionScope[]) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // istanbul ignore else\r\n if (availableScopes) {\r\n const presentationScopes: PresentationSelectionScope[] = [];\r\n availableScopes.map((scope) => presentationScopes.push(scope));\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetAvailableSelectionScopes, presentationScopes);\r\n }\r\n });\r\n\r\n const activeSelectionScope = Presentation.selection.scopes.activeScope;\r\n if (activeSelectionScope) {\r\n if (typeof (activeSelectionScope) === \"object\") {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, activeSelectionScope.id);\r\n } else {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, activeSelectionScope);\r\n }\r\n }\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"SyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module SyncUi\r\n */\r\n\r\nimport { UiEventDispatcher, UiSyncEvent, UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp, IModelConnection, SelectedViewportChangedArgs, SelectionSetEvent } from \"@itwin/core-frontend\";\r\nimport { getInstancesCount, SelectionScope } from \"@itwin/presentation-common\";\r\nimport { ISelectionProvider, Presentation, SelectionChangeEventArgs } from \"@itwin/presentation-frontend\";\r\n// cSpell:ignore configurableui\r\nimport { Backstage } from \"../backstage/Backstage\";\r\nimport { ContentViewManager } from \"../content/ContentViewManager\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { PresentationSelectionScope, SessionStateActionId } from \"../redux/SessionState\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { WorkflowManager } from \"../workflow/Workflow\";\r\n\r\n// cSpell:ignore activecontentchanged, activitymessageupdated, activitymessagecancelled, backstagecloseevent, backstageevent, contentlayoutactivated, contentcontrolactivated,\r\n// cSpell:ignore elementtooltipchanged, frontstageactivated, inputfieldmessageadded, inputfieldmessageremoved, modalfrontstagechanged, modaldialogchanged\r\n// cSpell:ignore navigationaidactivated, notificationmessageadded, toolactivated, taskactivated, widgetstatechanged, workflowactivated frontstageactivating\r\n// cSpell:ignore frontstageready activeviewportchanged selectionsetchanged presentationselectionchanged viewstatechanged\r\n// cSpell:ignore accudrawcompassmodechanged accudrawfieldlockchanged accudrawrotationchanged uisettingschanged\r\n\r\n/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.\r\n * @public\r\n */\r\nexport enum SyncUiEventId {\r\n /** AccuDraw compass mode has changed. */\r\n AccuDrawCompassModeChanged = \"accudrawcompassmodechanged\",\r\n /** AccuDraw rotation has changed. */\r\n AccuDrawRotationChanged = \"accudrawrotationchanged\",\r\n /** The active content as maintained by the ContentViewManager has changed. */\r\n ActiveContentChanged = \"activecontentchanged\",\r\n /** The active view maintained by the ViewManager has changed. */\r\n ActiveViewportChanged = \"activeviewportchanged\",\r\n /** Backstage has been closed.\r\n * @deprecated Use BackstageEvent instead\r\n */\r\n BackstageCloseEvent = \"backstagecloseevent\",\r\n /** Backstage has been closed. */\r\n BackstageEvent = \"backstageevent\",\r\n /** A Content Layout has been activated. */\r\n ContentLayoutActivated = \"contentlayoutactivated\",\r\n /** A Content Control maintained by FrontstageManager has been activated. */\r\n ContentControlActivated = \"contentcontrolactivated\",\r\n /** A Frontstage is activating. */\r\n FrontstageActivating = \"frontstageactivating\",\r\n /** A Frontstage has been activated and the content has been assigned. */\r\n FrontstageReady = \"frontstageready\",\r\n /** A Modal Frontstage has been opened or closed. */\r\n ModalFrontstageChanged = \"modalfrontstagechanged\",\r\n /** A Modal Dialog has been opened or closed. */\r\n ModalDialogChanged = \"modaldialogchanged\",\r\n /** A NavigationAid has been activated. */\r\n NavigationAidActivated = \"navigationaidactivated\",\r\n /** An InteractiveTool has been activated via the ToolAdmin. */\r\n ToolActivated = \"toolactivated\",\r\n /** A Task has been activated.\r\n * @deprecated */\r\n TaskActivated = \"taskactivated\",\r\n /** The state of a Widget has changed. */\r\n WidgetStateChanged = \"widgetstatechanged\",\r\n /** A Workflow has been activated.\r\n * @deprecated */\r\n WorkflowActivated = \"workflowactivated\",\r\n /** The SelectionSet for the active IModelConnection has changed. */\r\n SelectionSetChanged = \"selectionsetchanged\",\r\n /** The list of settings providers registered with SettingsManager has changed. */\r\n SettingsProvidersChanged = \"settingsproviderschanged\",\r\n /** The current view state has changed (used by view undo/redo toolbar buttons). */\r\n ViewStateChanged = \"viewstatechanged\",\r\n /** The current object the reads and write UI State has changed. */\r\n UiStateStorageChanged = \"uistatestoragechanged\",\r\n ShowHideManagerSettingChange = \"show-hide-setting-change\",\r\n}\r\n\r\n/** SyncUi Event arguments. Contains a set of lower case event Ids.\r\n * @public @deprecated use UiSyncEventArgs in appui-abstract instead\r\n */\r\nexport type SyncUiEventArgs = UiSyncEventArgs;\r\n\r\n/** SyncUi Event class.\r\n * @public @deprecated use UiSyncEvent in appui-abstract instead\r\n */\r\nexport type SyncUiEvent = UiSyncEvent;\r\n\r\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\r\n * to refresh its display by calling setState on itself.\r\n * @public\r\n */\r\nexport class SyncUiEventDispatcher {\r\n private static _uiEventDispatcher = new UiEventDispatcher();\r\n private static _unregisterListenerFunc?: () => void;\r\n private static _unregisterListenerFuncs: Array<() => void> = [];\r\n private static initialized = false;\r\n\r\n /** @internal - used for testing only */\r\n /* istanbul ignore next */\r\n public static setTimeoutPeriod(period: number): void {\r\n SyncUiEventDispatcher._uiEventDispatcher.setTimeoutPeriod(period);\r\n }\r\n\r\n /** Return set of event ids that will be sent to listeners/. */\r\n public static get syncEventIds(): Set<string> {\r\n return SyncUiEventDispatcher._uiEventDispatcher.syncEventIds;\r\n }\r\n\r\n /** Return SyncUiEvent so callers can register an event callback. */\r\n // eslint-disable-next-line deprecation/deprecation\r\n public static get onSyncUiEvent(): SyncUiEvent {\r\n return SyncUiEventDispatcher._uiEventDispatcher.onSyncUiEvent;\r\n }\r\n\r\n /** Immediately trigger sync event processing. */\r\n public static dispatchImmediateSyncUiEvent(eventId: string): void {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchImmediateSyncUiEvent(eventId);\r\n }\r\n\r\n /** Save eventId in Set for processing. */\r\n public static dispatchSyncUiEvent(eventId: string): void {\r\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\r\n Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvent] not processed because timeoutPeriod=0`);\r\n return;\r\n }\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(eventId);\r\n }\r\n\r\n /** Save multiple eventIds in Set for processing. */\r\n public static dispatchSyncUiEvents(eventIds: string[]): void {\r\n // istanbul ignore if\r\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\r\n Logger.logInfo(UiFramework.loggerCategory(this), `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`);\r\n }\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvents(eventIds);\r\n }\r\n\r\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\r\n public static hasEventOfInterest(eventIds: Set<string>, idsOfInterest: string[]) {\r\n return SyncUiEventDispatcher._uiEventDispatcher.hasEventOfInterest(eventIds, idsOfInterest);\r\n }\r\n\r\n // istanbul ignore next\r\n private static _dispatchViewChange() {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ViewStateChanged);\r\n }\r\n\r\n /** Initializes the Monitoring of Events that trigger dispatching sync events */\r\n public static initialize() {\r\n // clear any registered listeners - this should only be encountered in unit test scenarios\r\n this._unregisterListenerFuncs.forEach((unregisterListenerFunc) => unregisterListenerFunc());\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onContentControlActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentControlActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onContentLayoutActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentLayoutActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageActivating);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onFrontstageReadyEvent.addListener(() => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageReady);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onModalFrontstageChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ModalFrontstageChanged);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onNavigationAidActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.NavigationAidActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onToolActivatedEvent.addListener(() => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ToolActivated);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(FrontstageManager.onWidgetStateChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WidgetStateChanged);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(Backstage.onBackstageEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.BackstageEvent);\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(WorkflowManager.onTaskActivatedEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.TaskActivated); // eslint-disable-line deprecation/deprecation\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(WorkflowManager.onWorkflowActivatedEvent.addListener(() => { // eslint-disable-line deprecation/deprecation\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WorkflowActivated); // eslint-disable-line deprecation/deprecation\r\n }));\r\n\r\n this._unregisterListenerFuncs.push(ContentViewManager.onActiveContentChangedEvent.addListener(() => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveContentChanged);\r\n }));\r\n\r\n // istanbul ignore else\r\n if (IModelApp && IModelApp.viewManager) {\r\n this._unregisterListenerFuncs.push(IModelApp.viewManager.onSelectedViewportChanged.addListener((args: SelectedViewportChangedArgs) => {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveViewportChanged);\r\n\r\n // if this is the first view being opened up start the default tool so tool admin is happy.\r\n if (undefined === args.previous) {\r\n IModelApp.toolAdmin.startDefaultTool();// eslint-disable-line @typescript-eslint/no-floating-promises\r\n } else {\r\n // istanbul ignore next\r\n if (args.previous.onViewChanged && typeof args.previous.onViewChanged.removeListener === \"function\") // not set during unit test\r\n args.previous.onViewChanged.removeListener(SyncUiEventDispatcher._dispatchViewChange);\r\n }\r\n // istanbul ignore next\r\n if (args.current) {\r\n if (args.current.onViewChanged && typeof args.current.onViewChanged.addListener === \"function\") // not set during unit test\r\n args.current.onViewChanged.addListener(SyncUiEventDispatcher._dispatchViewChange);\r\n }\r\n }));\r\n }\r\n }\r\n\r\n private static selectionChangedHandler(_ev: SelectionSetEvent) {\r\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SelectionSetChanged);\r\n }\r\n\r\n /** This should be called by IModelApp when the active IModelConnection is closed. */\r\n public static clearConnectionEvents(iModelConnection: IModelConnection) {\r\n iModelConnection.selectionSet.onChanged.removeListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n SyncUiEventDispatcher._unregisterListenerFunc && SyncUiEventDispatcher._unregisterListenerFunc();\r\n }\r\n\r\n /** This should be called by IModelApp when the active IModelConnection is established. */\r\n public static initializeConnectionEvents(iModelConnection: IModelConnection) {\r\n if (SyncUiEventDispatcher._unregisterListenerFunc)\r\n SyncUiEventDispatcher._unregisterListenerFunc();\r\n\r\n if (iModelConnection.isBlankConnection()) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetNumItemsSelected, 0);\r\n return;\r\n }\r\n\r\n iModelConnection.selectionSet.onChanged.removeListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n iModelConnection.selectionSet.onChanged.addListener(SyncUiEventDispatcher.selectionChangedHandler);\r\n (iModelConnection.iModelId) ? UiFramework.setActiveIModelId(iModelConnection.iModelId) : /* istanbul ignore next */ \"\";\r\n\r\n // listen for changes from presentation rules selection manager (this is done once an iModelConnection is available to ensure Presentation.selection is valid)\r\n SyncUiEventDispatcher._unregisterListenerFunc = Presentation.selection.selectionChange.addListener((args: SelectionChangeEventArgs, provider: ISelectionProvider) => {\r\n // istanbul ignore if\r\n if (args.level !== 0) {\r\n // don't need to handle sub-selections\r\n return;\r\n }\r\n const selection = provider.getSelection(args.imodel, args.level);\r\n const numSelected = getInstancesCount(selection);\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetNumItemsSelected, numSelected);\r\n });\r\n\r\n Presentation.selection.scopes.getSelectionScopes(iModelConnection).then((availableScopes: SelectionScope[]) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // istanbul ignore else\r\n if (availableScopes) {\r\n const presentationScopes: PresentationSelectionScope[] = [];\r\n availableScopes.map((scope) => presentationScopes.push(scope));\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetAvailableSelectionScopes, presentationScopes);\r\n }\r\n });\r\n\r\n const activeSelectionScope = Presentation.selection.scopes.activeScope;\r\n if (activeSelectionScope) {\r\n if (typeof (activeSelectionScope) === \"object\") {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, activeSelectionScope.id);\r\n } else {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, activeSelectionScope);\r\n }\r\n }\r\n }\r\n\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionItemButton.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ActionItemButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAkB,WAAW,EAAQ,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,sEAAsE;IACtE,UAAU,EAAE,mBAAmB,CAAC;IAChC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACzC;AAaD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,aAAa,CAAC;IACzF,OAAO,CAAC,oBAAoB,CAAS;IAErC,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAE5C,KAAK,EAAE,qBAAqB;IAMxC,OAAO,CAAC,kBAAkB,CAsCxB;IAEF,gBAAgB;WACF,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,aAAa;IASzF,gBAAgB;IACA,iBAAiB;IAIjC,gBAAgB;IACA,oBAAoB;IAKpC,OAAO,CAAC,QAAQ,CAKd;IAEF,gBAAgB;IACA,MAAM,IAAI,KAAK,CAAC,SAAS;CAuB1C"}
1
+ {"version":3,"file":"ActionItemButton.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ActionItemButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAkB,WAAW,EAAQ,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAIjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,sEAAsE;IACtE,UAAU,EAAE,mBAAmB,CAAC;IAChC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACzC;AAaD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,aAAa,CAAC;IACzF,OAAO,CAAC,oBAAoB,CAAS;IAErC,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAE5C,KAAK,EAAE,qBAAqB;IAMxC,OAAO,CAAC,kBAAkB,CAsCxB;IAEF,gBAAgB;WACF,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,aAAa;IASzF,gBAAgB;IACA,iBAAiB;IAIjC,gBAAgB;IACA,oBAAoB;IAKpC,OAAO,CAAC,QAAQ,CAKd;IAEF,gBAAgB;IACA,MAAM,IAAI,KAAK,CAAC,SAAS;CAuB1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ActionItemButton.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ActionItemButton.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Item\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { BadgeUtilities, CommonProps, Icon, SizeProps } from \"@itwin/core-react\";\r\nimport { Item } from \"@itwin/appui-layout-react\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { ActionButtonItemDef } from \"../shared/ActionButtonItemDef\";\r\nimport { BaseItemState } from \"../shared/ItemDefBase\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { PropsHelper } from \"../utils/PropsHelper\";\r\nimport { onEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome\";\r\n\r\n/** Properties that must be specified for an [[ActionItemButton]] component\r\n * @public\r\n */\r\nexport interface ActionItemButtonProps extends CommonProps {\r\n /** Action Button item definition containing the action information */\r\n actionItem: ActionButtonItemDef;\r\n /** Indicates whether the button is enabled or disabled */\r\n isEnabled?: boolean;\r\n /** Called when the button is initialized and the size is known */\r\n onSizeKnown?: (size: SizeProps) => void;\r\n}\r\n\r\n/** Helper method to set state from props */\r\nconst getItemStateFromProps = (props: ActionItemButtonProps): BaseItemState => {\r\n\r\n // Parent Component can only modify the isEnable state if the actionItem.isEnabled value is set to true.\r\n return {\r\n isEnabled: undefined !== props.isEnabled ? props.isEnabled && props.actionItem.isEnabled : props.actionItem.isEnabled, // eslint-disable-line deprecation/deprecation\r\n isVisible: props.actionItem.isVisible, // eslint-disable-line deprecation/deprecation\r\n isActive: undefined !== props.actionItem.isActive ? props.actionItem.isActive : /* istanbul ignore next */ false,\r\n };\r\n};\r\n\r\n/** A Toolbar button React Component that executes an action defined by a CommandItemDef or a ToolItemDef.\r\n * @public\r\n */\r\nexport class ActionItemButton extends React.Component<ActionItemButtonProps, BaseItemState> {\r\n private _componentUnmounting = false;\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<BaseItemState>;\r\n\r\n constructor(props: ActionItemButtonProps) {\r\n super(props);\r\n\r\n this.state = getItemStateFromProps(props);\r\n }\r\n\r\n private _handleSyncUiEvent = (args: SyncUiEventArgs): void => {\r\n // istanbul ignore if\r\n if (this._componentUnmounting)\r\n return;\r\n\r\n let refreshState = false;\r\n let newState: BaseItemState = { ...this.state };\r\n\r\n // since this is a tool button automatically monitor the activation of tools so the active state of the button is updated.\r\n if (args.eventIds.has(SyncUiEventId.ToolActivated)) {\r\n newState.isActive = this.props.actionItem.id === FrontstageManager.activeToolId;\r\n refreshState = true;\r\n }\r\n\r\n if (!refreshState && this.props.actionItem.stateSyncIds && this.props.actionItem.stateSyncIds.length > 0) // eslint-disable-line deprecation/deprecation\r\n refreshState = this.props.actionItem.stateSyncIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase())); // eslint-disable-line deprecation/deprecation\r\n\r\n if (refreshState) {\r\n if (this.props.actionItem.stateFunc) // eslint-disable-line deprecation/deprecation\r\n newState = this.props.actionItem.stateFunc(newState); // eslint-disable-line deprecation/deprecation\r\n\r\n if ((this.state.isActive !== newState.isActive) || (this.state.isEnabled !== newState.isEnabled) || (this.state.isVisible !== newState.isVisible)) {\r\n // update actionItem as it hold the 'truth' for all state\r\n /* istanbul ignore else */\r\n if (undefined !== newState.isVisible) // eslint-disable-line deprecation/deprecation\r\n this.props.actionItem.isVisible = newState.isVisible; // eslint-disable-line deprecation/deprecation\r\n\r\n /* istanbul ignore else */\r\n if (undefined !== newState.isActive)\r\n this.props.actionItem.isActive = newState.isActive;\r\n\r\n this.setState({\r\n isActive: newState.isActive,\r\n isEnabled: newState.isEnabled,\r\n isVisible: newState.isVisible,\r\n });\r\n }\r\n }\r\n };\r\n\r\n /** @internal */\r\n public static getDerivedStateFromProps(props: ActionItemButtonProps, state: BaseItemState) {\r\n const updatedState = getItemStateFromProps(props);\r\n // istanbul ignore else\r\n if (!PropsHelper.isShallowEqual(updatedState, state))\r\n return updatedState;\r\n\r\n return null;\r\n }\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this._handleSyncUiEvent);\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._componentUnmounting = true;\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(this._handleSyncUiEvent);\r\n }\r\n\r\n private _execute = () => {\r\n // istanbul ignore else\r\n if (this.props.actionItem.execute) {\r\n this.props.actionItem.execute();\r\n }\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n if (!this.state.isVisible)\r\n return null;\r\n\r\n const { actionItem, ...props } = this.props;\r\n const icon = <Icon iconSpec={actionItem.iconSpec} />;\r\n const badge = BadgeUtilities.getComponentForBadgeType(actionItem.badgeType);\r\n\r\n return (\r\n <Item // eslint-disable-line deprecation/deprecation\r\n {...props}\r\n isActive={this.state.isActive}\r\n isDisabled={!this.state.isEnabled}\r\n title={actionItem.label}\r\n key={actionItem.getKey()}\r\n onClick={this._execute}\r\n onKeyDown={onEscapeSetFocusToHome}\r\n icon={icon}\r\n onSizeKnown={this.props.onSizeKnown}\r\n badge={badge}\r\n />\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ActionItemButton.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ActionItemButton.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Item\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { BadgeUtilities, CommonProps, Icon, SizeProps } from \"@itwin/core-react\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { Item } from \"@itwin/appui-layout-react\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { ActionButtonItemDef } from \"../shared/ActionButtonItemDef\";\r\nimport { BaseItemState } from \"../shared/ItemDefBase\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { PropsHelper } from \"../utils/PropsHelper\";\r\nimport { onEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome\";\r\n\r\n/** Properties that must be specified for an [[ActionItemButton]] component\r\n * @public\r\n */\r\nexport interface ActionItemButtonProps extends CommonProps {\r\n /** Action Button item definition containing the action information */\r\n actionItem: ActionButtonItemDef;\r\n /** Indicates whether the button is enabled or disabled */\r\n isEnabled?: boolean;\r\n /** Called when the button is initialized and the size is known */\r\n onSizeKnown?: (size: SizeProps) => void;\r\n}\r\n\r\n/** Helper method to set state from props */\r\nconst getItemStateFromProps = (props: ActionItemButtonProps): BaseItemState => {\r\n\r\n // Parent Component can only modify the isEnable state if the actionItem.isEnabled value is set to true.\r\n return {\r\n isEnabled: undefined !== props.isEnabled ? props.isEnabled && props.actionItem.isEnabled : props.actionItem.isEnabled, // eslint-disable-line deprecation/deprecation\r\n isVisible: props.actionItem.isVisible, // eslint-disable-line deprecation/deprecation\r\n isActive: undefined !== props.actionItem.isActive ? props.actionItem.isActive : /* istanbul ignore next */ false,\r\n };\r\n};\r\n\r\n/** A Toolbar button React Component that executes an action defined by a CommandItemDef or a ToolItemDef.\r\n * @public\r\n */\r\nexport class ActionItemButton extends React.Component<ActionItemButtonProps, BaseItemState> {\r\n private _componentUnmounting = false;\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<BaseItemState>;\r\n\r\n constructor(props: ActionItemButtonProps) {\r\n super(props);\r\n\r\n this.state = getItemStateFromProps(props);\r\n }\r\n\r\n private _handleSyncUiEvent = (args: UiSyncEventArgs): void => {\r\n // istanbul ignore if\r\n if (this._componentUnmounting)\r\n return;\r\n\r\n let refreshState = false;\r\n let newState: BaseItemState = { ...this.state };\r\n\r\n // since this is a tool button automatically monitor the activation of tools so the active state of the button is updated.\r\n if (args.eventIds.has(SyncUiEventId.ToolActivated)) {\r\n newState.isActive = this.props.actionItem.id === FrontstageManager.activeToolId;\r\n refreshState = true;\r\n }\r\n\r\n if (!refreshState && this.props.actionItem.stateSyncIds && this.props.actionItem.stateSyncIds.length > 0) // eslint-disable-line deprecation/deprecation\r\n refreshState = this.props.actionItem.stateSyncIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase())); // eslint-disable-line deprecation/deprecation\r\n\r\n if (refreshState) {\r\n if (this.props.actionItem.stateFunc) // eslint-disable-line deprecation/deprecation\r\n newState = this.props.actionItem.stateFunc(newState); // eslint-disable-line deprecation/deprecation\r\n\r\n if ((this.state.isActive !== newState.isActive) || (this.state.isEnabled !== newState.isEnabled) || (this.state.isVisible !== newState.isVisible)) {\r\n // update actionItem as it hold the 'truth' for all state\r\n /* istanbul ignore else */\r\n if (undefined !== newState.isVisible) // eslint-disable-line deprecation/deprecation\r\n this.props.actionItem.isVisible = newState.isVisible; // eslint-disable-line deprecation/deprecation\r\n\r\n /* istanbul ignore else */\r\n if (undefined !== newState.isActive)\r\n this.props.actionItem.isActive = newState.isActive;\r\n\r\n this.setState({\r\n isActive: newState.isActive,\r\n isEnabled: newState.isEnabled,\r\n isVisible: newState.isVisible,\r\n });\r\n }\r\n }\r\n };\r\n\r\n /** @internal */\r\n public static getDerivedStateFromProps(props: ActionItemButtonProps, state: BaseItemState) {\r\n const updatedState = getItemStateFromProps(props);\r\n // istanbul ignore else\r\n if (!PropsHelper.isShallowEqual(updatedState, state))\r\n return updatedState;\r\n\r\n return null;\r\n }\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this._handleSyncUiEvent);\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._componentUnmounting = true;\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(this._handleSyncUiEvent);\r\n }\r\n\r\n private _execute = () => {\r\n // istanbul ignore else\r\n if (this.props.actionItem.execute) {\r\n this.props.actionItem.execute();\r\n }\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n if (!this.state.isVisible)\r\n return null;\r\n\r\n const { actionItem, ...props } = this.props;\r\n const icon = <Icon iconSpec={actionItem.iconSpec} />;\r\n const badge = BadgeUtilities.getComponentForBadgeType(actionItem.badgeType);\r\n\r\n return (\r\n <Item // eslint-disable-line deprecation/deprecation\r\n {...props}\r\n isActive={this.state.isActive}\r\n isDisabled={!this.state.isEnabled}\r\n title={actionItem.label}\r\n key={actionItem.getKey()}\r\n onClick={this._execute}\r\n onKeyDown={onEscapeSetFocusToHome}\r\n icon={icon}\r\n onSizeKnown={this.props.onSizeKnown}\r\n badge={badge}\r\n />\r\n );\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupItem.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/GroupItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,kBAAkB,EAAc,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAkB,WAAW,EAAQ,QAAQ,EAAE,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EACL,SAAS,EAEV,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAkBnE;;GAEG;AACH,qBAAa,YAAa,SAAQ,mBAAmB;IACnD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAK;IACxB,OAAc,aAAa,SAAY;IAEhC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAEpC,gBAAgB;IACT,QAAQ,EAAE,OAAO,CAAS;IAEjC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAsD;gBAE7D,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,kBAAkB;IAmB/E,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED,gCAAgC;IAChC,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;OAEG;IACI,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,sBAAsB;IAI/D,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAcnC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIhD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7D,IAAW,SAAS,IAAI,MAAM,CAE7B;IAEe,OAAO,IAAI,IAAI;IAGf,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS;CAalE;AAMD,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClC,YAAY,EAAE,YAAY,CAAC;CAC5B;AACD,aAAK,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAEnD,UAAU,uBAAwB,SAAQ,WAAW;IACnD,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACzC;AAED,UAAU,cAAe,SAAQ,aAAa;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,uBAAuB,EAAE,cAAc,CAAC;IACrF,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACzD,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,IAAI,CAAqC;gBAErC,KAAK,EAAE,uBAAuB;IAY1C,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,kBAAkB,CAoBxB;IAEc,iBAAiB;IAMjB,oBAAoB;IAOpB,qBAAqB,CAAC,SAAS,EAAE,uBAAuB,EAAE,SAAS,EAAE,cAAc;IAgBnG,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;IA6BX,kBAAkB,CAAC,SAAS,EAAE,uBAAuB,EAAE,UAAU,EAAE,cAAc;IASjG,OAAO,KAAK,KAAK,GAOhB;IAED,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,cAAc,CAMpB;IAEc,MAAM,IAAI,KAAK,CAAC,SAAS;IAqEzC,OAAO,CAAC,gBAAgB,CAOtB;IAEF,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,2BAA2B,CAGjC;IAEF,OAAO,CAAC,oBAAoB,CAW1B;IAEF,OAAO,CAAC,kCAAkC,CAMxC;IAEF,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,yBAAyB,CAI/B;IAEF,OAAO,CAAC,2BAA2B,CAMjC;IAEF,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,YAAY;IA8Gb,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IASvD,OAAO,CAAC,WAAW,CASjB;IAEF,OAAO,CAAC,oBAAoB,CAO1B;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc,EAAE,WAAW;CAAI;AAEzE;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,eAUlD;AAED,gBAAgB;AAChB,eAAO,MAAM,YAAY,iBAAkB,YAAY,KAAG,UAAU,GAAG,SAWtE,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,cAAc,iBAAkB,YAAY,KAAG,MAG3D,CAAC"}
1
+ {"version":3,"file":"GroupItem.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/GroupItem.tsx"],"names":[],"mappings":"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"}