@itwin/appui-react 4.13.2 → 4.13.3

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 (584) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/lib/cjs/appui-react/UiFramework.js +1 -1
  3. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  4. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  5. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  7. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  8. package/lib/cjs/appui-react/accudraw/AccuDrawWidget.js +1 -1
  9. package/lib/cjs/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  10. package/lib/cjs/appui-react/accudraw/Calculator.js +1 -1
  11. package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
  12. package/lib/cjs/appui-react/accudraw/CalculatorEngine.js +2 -2
  13. package/lib/cjs/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +1 -1
  15. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/MenuButton.js.map +1 -1
  17. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  18. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  19. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js +1 -1
  20. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  21. package/lib/cjs/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  22. package/lib/cjs/appui-react/backstage/useDefaultBackstageItems.js.map +1 -1
  23. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  24. package/lib/cjs/appui-react/childwindow/ChildWindowWidget.js.map +1 -1
  25. package/lib/cjs/appui-react/childwindow/CopyStyles.js.map +1 -1
  26. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  27. package/lib/cjs/appui-react/configurableui/ActivityTracker.js.map +1 -1
  28. package/lib/cjs/appui-react/configurableui/ConfigurableUiControl.js +1 -1
  29. package/lib/cjs/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  30. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  31. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  32. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  33. package/lib/cjs/appui-react/configurableui/state.js +1 -1
  34. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  35. package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
  36. package/lib/cjs/appui-react/content/ContentGroup.js +1 -1
  37. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  38. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  39. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  40. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  41. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  42. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +1 -1
  43. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  44. package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
  45. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  46. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
  47. package/lib/cjs/appui-react/content/ViewStateHelper.js.map +1 -1
  48. package/lib/cjs/appui-react/content/ViewportContentControl.js.map +1 -1
  49. package/lib/cjs/appui-react/content/split-pane/Pane.js.map +1 -1
  50. package/lib/cjs/appui-react/content/split-pane/Resizer.js.map +1 -1
  51. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  52. package/lib/cjs/appui-react/cursor/CursorInformation.js +3 -3
  53. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  54. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  55. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js +2 -2
  56. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  57. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +1 -1
  58. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  59. package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  60. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  61. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +1 -1
  62. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  63. package/lib/cjs/appui-react/dialog/InternalContentDialogManager.js +1 -1
  64. package/lib/cjs/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  65. package/lib/cjs/appui-react/dialog/InternalModalDialogManager.js +1 -1
  66. package/lib/cjs/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  67. package/lib/cjs/appui-react/dialog/InternalModelessDialogManager.js +1 -1
  68. package/lib/cjs/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  69. package/lib/cjs/appui-react/dialog/StandardMessageBox.js.map +1 -1
  70. package/lib/cjs/appui-react/dialog/UiDataProvidedDialog.js.map +1 -1
  71. package/lib/cjs/appui-react/feedback/ElementTooltip.js +1 -1
  72. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  73. package/lib/cjs/appui-react/feedback/ValidationTextbox.js +1 -1
  74. package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
  75. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  76. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +1 -1
  77. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  78. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +1 -1
  79. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  80. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js +1 -1
  81. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  82. package/lib/cjs/appui-react/frontstage/StageUsage.js +1 -1
  83. package/lib/cjs/appui-react/frontstage/StageUsage.js.map +1 -1
  84. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  85. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  86. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  87. package/lib/cjs/appui-react/hooks/useConditionalValue.js.map +1 -1
  88. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  89. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  90. package/lib/cjs/appui-react/hooks/useTranslation.js.map +1 -1
  91. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +1 -1
  92. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  93. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  94. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -1
  95. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  96. package/lib/cjs/appui-react/keyins/Keyins.js +1 -1
  97. package/lib/cjs/appui-react/keyins/Keyins.js.map +1 -1
  98. package/lib/cjs/appui-react/layout/backstage/Backstage.js +1 -1
  99. package/lib/cjs/appui-react/layout/backstage/Backstage.js.map +1 -1
  100. package/lib/cjs/appui-react/layout/base/DragManager.js.map +1 -1
  101. package/lib/cjs/appui-react/layout/base/NineZone.js.map +1 -1
  102. package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js +1 -1
  103. package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  104. package/lib/cjs/appui-react/layout/base/usePointerCaptor.js.map +1 -1
  105. package/lib/cjs/appui-react/layout/footer/Indicator.js +1 -1
  106. package/lib/cjs/appui-react/layout/footer/Indicator.js.map +1 -1
  107. package/lib/cjs/appui-react/layout/outline/PanelOutline.js.map +1 -1
  108. package/lib/cjs/appui-react/layout/popup/Tooltip.js +1 -1
  109. package/lib/cjs/appui-react/layout/popup/Tooltip.js.map +1 -1
  110. package/lib/cjs/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  111. package/lib/cjs/appui-react/layout/state/TabLocation.js.map +1 -1
  112. package/lib/cjs/appui-react/layout/state/WidgetLocation.js.map +1 -1
  113. package/lib/cjs/appui-react/layout/state/internal/NineZoneStateHelpers.js.map +1 -1
  114. package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
  115. package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
  116. package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
  117. package/lib/cjs/appui-react/layout/target/PanelTargets.js.map +1 -1
  118. package/lib/cjs/appui-react/layout/target/SectionTarget.js.map +1 -1
  119. package/lib/cjs/appui-react/layout/target/useAllowedSideTarget.js.map +1 -1
  120. package/lib/cjs/appui-react/layout/target/useAllowedWidgetTarget.js.map +1 -1
  121. package/lib/cjs/appui-react/layout/tool-settings/Docked.js.map +1 -1
  122. package/lib/cjs/appui-react/layout/widget/Buttons.js.map +1 -1
  123. package/lib/cjs/appui-react/layout/widget/ContentManager.js.map +1 -1
  124. package/lib/cjs/appui-react/layout/widget/ContentRenderer.js.map +1 -1
  125. package/lib/cjs/appui-react/layout/widget/FloatingWidget.js.map +1 -1
  126. package/lib/cjs/appui-react/layout/widget/Overflow.js.map +1 -1
  127. package/lib/cjs/appui-react/layout/widget/PanelWidget.js.map +1 -1
  128. package/lib/cjs/appui-react/layout/widget/SendBack.js.map +1 -1
  129. package/lib/cjs/appui-react/layout/widget/Tab.js.map +1 -1
  130. package/lib/cjs/appui-react/layout/widget/TabBar.js.map +1 -1
  131. package/lib/cjs/appui-react/layout/widget/Tabs.js.map +1 -1
  132. package/lib/cjs/appui-react/layout/widget/Widget.js.map +1 -1
  133. package/lib/cjs/appui-react/layout/widget/tools/button/Button.js.map +1 -1
  134. package/lib/cjs/appui-react/layout/widget-panels/Expander.js.map +1 -1
  135. package/lib/cjs/appui-react/layout/widget-panels/Grip.js.map +1 -1
  136. package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
  137. package/lib/cjs/appui-react/layout/widget-panels/useAnimatePanel.js.map +1 -1
  138. package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -1
  139. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  140. package/lib/cjs/appui-react/messages/InputField.js.map +1 -1
  141. package/lib/cjs/appui-react/messages/MessageManager.js +1 -1
  142. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  143. package/lib/cjs/appui-react/messages/MessageRenderer.js.map +1 -1
  144. package/lib/cjs/appui-react/messages/Pointer.js +1 -1
  145. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  146. package/lib/cjs/appui-react/messages/StatusMessageManager.js.map +1 -1
  147. package/lib/cjs/appui-react/messages/getToastCategory.js.map +1 -1
  148. package/lib/cjs/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  149. package/lib/cjs/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  150. package/lib/cjs/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  151. package/lib/cjs/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  152. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js +1 -1
  153. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  154. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +1 -1
  155. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  156. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -1
  157. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  158. package/lib/cjs/appui-react/pickers/ListPicker.js +1 -1
  159. package/lib/cjs/appui-react/pickers/ListPicker.js.map +1 -1
  160. package/lib/cjs/appui-react/pickers/ViewSelector.js +1 -1
  161. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  162. package/lib/cjs/appui-react/popup/CardPopup.js +1 -1
  163. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  164. package/lib/cjs/appui-react/popup/ComponentPopup.js.map +1 -1
  165. package/lib/cjs/appui-react/popup/InputEditorPopup.js.map +1 -1
  166. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  167. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  168. package/lib/cjs/appui-react/popup/PopupManager.js +2 -2
  169. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  170. package/lib/cjs/appui-react/popup/PositionPopup.js.map +1 -1
  171. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  172. package/lib/cjs/appui-react/popup/ToolbarPopup.js +1 -1
  173. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  174. package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -1
  175. package/lib/cjs/appui-react/preview/activate-dropped-tab/activateDroppedTab.js.map +1 -1
  176. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -1
  177. package/lib/cjs/appui-react/preview/new-toolbars/ActionItem.js.map +1 -1
  178. package/lib/cjs/appui-react/preview/new-toolbars/CustomItem.js.map +1 -1
  179. package/lib/cjs/appui-react/preview/new-toolbars/GroupItem.js.map +1 -1
  180. package/lib/cjs/appui-react/preview/new-toolbars/ToolGroup.js.map +1 -1
  181. package/lib/cjs/appui-react/preview/new-toolbars/Toolbar.js.map +1 -1
  182. package/lib/cjs/appui-react/preview/new-toolbars/useOverflow.js.map +1 -1
  183. package/lib/cjs/appui-react/preview/reparent-popout-widgets/usePopoutsStore.js.map +1 -1
  184. package/lib/cjs/appui-react/preview/reparent-popout-widgets/useReparentPopoutWidget.js.map +1 -1
  185. package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
  186. package/lib/cjs/appui-react/redux/ReducerRegistry.js.map +1 -1
  187. package/lib/cjs/appui-react/redux/SessionState.js +2 -2
  188. package/lib/cjs/appui-react/redux/SessionState.js.map +1 -1
  189. package/lib/cjs/appui-react/redux/StateManager.js +1 -1
  190. package/lib/cjs/appui-react/redux/StateManager.js.map +1 -1
  191. package/lib/cjs/appui-react/redux/connectIModel.js +3 -3
  192. package/lib/cjs/appui-react/redux/connectIModel.js.map +1 -1
  193. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js +1 -1
  194. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js.map +1 -1
  195. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +3 -3
  196. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  197. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  198. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  199. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  200. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  201. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js +1 -1
  202. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  203. package/lib/cjs/appui-react/shared/CommandItemDef.js +1 -1
  204. package/lib/cjs/appui-react/shared/CommandItemDef.js.map +1 -1
  205. package/lib/cjs/appui-react/shared/CustomItemDef.js +1 -1
  206. package/lib/cjs/appui-react/shared/CustomItemDef.js.map +1 -1
  207. package/lib/cjs/appui-react/shared/MenuItem.js.map +1 -1
  208. package/lib/cjs/appui-react/shared/SelectionScope.js +1 -1
  209. package/lib/cjs/appui-react/shared/SelectionScope.js.map +1 -1
  210. package/lib/cjs/appui-react/shared/ToolItemDef.js.map +1 -1
  211. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  212. package/lib/cjs/appui-react/stagepanels/StagePanelLocation.js +1 -1
  213. package/lib/cjs/appui-react/stagepanels/StagePanelLocation.js.map +1 -1
  214. package/lib/cjs/appui-react/stagepanels/StagePanelSection.js +1 -1
  215. package/lib/cjs/appui-react/stagepanels/StagePanelSection.js.map +1 -1
  216. package/lib/cjs/appui-react/stagepanels/StagePanelState.js +1 -1
  217. package/lib/cjs/appui-react/stagepanels/StagePanelState.js.map +1 -1
  218. package/lib/cjs/appui-react/statusbar/Field.js +2 -4
  219. package/lib/cjs/appui-react/statusbar/Field.js.map +1 -1
  220. package/lib/cjs/appui-react/statusbar/StatusBar.js +1 -1
  221. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  222. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  223. package/lib/cjs/appui-react/statusbar/StatusBarItem.d.ts +3 -3
  224. package/lib/cjs/appui-react/statusbar/StatusBarItem.d.ts.map +1 -1
  225. package/lib/cjs/appui-react/statusbar/StatusBarItem.js +2 -2
  226. package/lib/cjs/appui-react/statusbar/StatusBarItem.js.map +1 -1
  227. package/lib/cjs/appui-react/statusbar/StatusBarItemUtilities.js +1 -1
  228. package/lib/cjs/appui-react/statusbar/StatusBarItemUtilities.js.map +1 -1
  229. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  230. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js +1 -1
  231. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js.map +1 -1
  232. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  233. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  234. package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
  235. package/lib/cjs/appui-react/statusfields/SelectionCount.js.map +1 -1
  236. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  237. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  238. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  239. package/lib/cjs/appui-react/statusfields/message-center/MessageCenterField.js.map +1 -1
  240. package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  241. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  242. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  243. package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  244. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
  245. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  246. package/lib/cjs/appui-react/theme/ThemeManager.js +1 -1
  247. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  248. package/lib/cjs/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  249. package/lib/cjs/appui-react/timeline/ScheduleAnimationProvider.js +1 -1
  250. package/lib/cjs/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  251. package/lib/cjs/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  252. package/lib/cjs/appui-react/toolbar/GroupItem.js +1 -1
  253. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  254. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  255. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  256. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  257. package/lib/cjs/appui-react/toolbar/ToolbarItem.js +2 -2
  258. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  259. package/lib/cjs/appui-react/toolbar/ToolbarItemUtilities.js +1 -1
  260. package/lib/cjs/appui-react/toolbar/ToolbarItemUtilities.js.map +1 -1
  261. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  262. package/lib/cjs/appui-react/toolbar/toUIAToolbarItem.js.map +1 -1
  263. package/lib/cjs/appui-react/toolbar/useActiveStageProvidedToolbarItems.js.map +1 -1
  264. package/lib/cjs/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +1 -1
  265. package/lib/cjs/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  266. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  267. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  268. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js +1 -1
  269. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  270. package/lib/cjs/appui-react/tools/OpenSettingsTool.js +1 -1
  271. package/lib/cjs/appui-react/tools/OpenSettingsTool.js.map +1 -1
  272. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js +2 -2
  273. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  274. package/lib/cjs/appui-react/tools/ToolSettingsTools.js +2 -2
  275. package/lib/cjs/appui-react/tools/ToolSettingsTools.js.map +1 -1
  276. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  277. package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js +1 -1
  278. package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  279. package/lib/cjs/appui-react/toolsettings/ToolInformation.js.map +1 -1
  280. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  281. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  282. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  283. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  284. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  285. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +1 -1
  286. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  287. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  288. package/lib/cjs/appui-react/uistate/AppUiSettings.js +1 -1
  289. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  290. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +2 -2
  291. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  292. package/lib/cjs/appui-react/utils/PropsHelper.js.map +1 -1
  293. package/lib/cjs/appui-react/utils/ToolbarButtonHelper.js.map +1 -1
  294. package/lib/cjs/appui-react/utils/matchesWords.js.map +1 -1
  295. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  296. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  297. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
  298. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  299. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  300. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  301. package/lib/cjs/appui-react/widgets/StableWidgetDef.js.map +1 -1
  302. package/lib/cjs/appui-react/widgets/StatusBarWidgetComposerControl.js +1 -1
  303. package/lib/cjs/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  304. package/lib/cjs/appui-react/widgets/WidgetDef.js +2 -2
  305. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  306. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  307. package/lib/cjs/appui-react/widgets/WidgetManager.js.map +1 -1
  308. package/lib/cjs/appui-react/widgets/WidgetState.js +1 -1
  309. package/lib/cjs/appui-react/widgets/WidgetState.js.map +1 -1
  310. package/lib/cjs/appui-react/widgets/useWidget.js.map +1 -1
  311. package/lib/esm/appui-react/UiFramework.js +1 -2
  312. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  313. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  314. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  315. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js +1 -2
  316. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  317. package/lib/esm/appui-react/accudraw/AccuDrawWidget.js +1 -2
  318. package/lib/esm/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  319. package/lib/esm/appui-react/accudraw/Calculator.js +1 -2
  320. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  321. package/lib/esm/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  322. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +1 -2
  323. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  324. package/lib/esm/appui-react/accudraw/MenuButton.js.map +1 -1
  325. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  326. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  327. package/lib/esm/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  328. package/lib/esm/appui-react/backstage/useDefaultBackstageItems.js.map +1 -1
  329. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  330. package/lib/esm/appui-react/childwindow/ChildWindowWidget.js.map +1 -1
  331. package/lib/esm/appui-react/childwindow/CopyStyles.js.map +1 -1
  332. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  333. package/lib/esm/appui-react/configurableui/ActivityTracker.js.map +1 -1
  334. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -2
  335. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  336. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  337. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  338. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  339. package/lib/esm/appui-react/content/ContentGroup.js +1 -2
  340. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  341. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  342. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  343. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  344. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  345. package/lib/esm/appui-react/content/InternalContentLayoutManager.js +1 -2
  346. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  347. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -2
  348. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  349. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
  350. package/lib/esm/appui-react/content/ViewStateHelper.js.map +1 -1
  351. package/lib/esm/appui-react/content/ViewportContentControl.js.map +1 -1
  352. package/lib/esm/appui-react/content/split-pane/Pane.js.map +1 -1
  353. package/lib/esm/appui-react/content/split-pane/Resizer.js.map +1 -1
  354. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  355. package/lib/esm/appui-react/cursor/CursorInformation.js +1 -2
  356. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  357. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  358. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js +1 -2
  359. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  360. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +1 -2
  361. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  362. package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  363. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  364. package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -2
  365. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  366. package/lib/esm/appui-react/dialog/InternalContentDialogManager.js +1 -2
  367. package/lib/esm/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  368. package/lib/esm/appui-react/dialog/InternalModalDialogManager.js +1 -2
  369. package/lib/esm/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  370. package/lib/esm/appui-react/dialog/InternalModelessDialogManager.js +1 -2
  371. package/lib/esm/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  372. package/lib/esm/appui-react/dialog/StandardMessageBox.js.map +1 -1
  373. package/lib/esm/appui-react/dialog/UiDataProvidedDialog.js.map +1 -1
  374. package/lib/esm/appui-react/feedback/ElementTooltip.js +1 -2
  375. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  376. package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
  377. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  378. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +1 -2
  379. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  380. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +1 -2
  381. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  382. package/lib/esm/appui-react/frontstage/NestedFrontstage.js +1 -2
  383. package/lib/esm/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  384. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  385. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  386. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  387. package/lib/esm/appui-react/hooks/useConditionalValue.js.map +1 -1
  388. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  389. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  390. package/lib/esm/appui-react/hooks/useTranslation.js.map +1 -1
  391. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +1 -2
  392. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  393. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  394. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -2
  395. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  396. package/lib/esm/appui-react/keyins/Keyins.js.map +1 -1
  397. package/lib/esm/appui-react/layout/backstage/Backstage.js +1 -2
  398. package/lib/esm/appui-react/layout/backstage/Backstage.js.map +1 -1
  399. package/lib/esm/appui-react/layout/base/DragManager.js.map +1 -1
  400. package/lib/esm/appui-react/layout/base/NineZone.js.map +1 -1
  401. package/lib/esm/appui-react/layout/base/SafeAreaInsets.js +1 -2
  402. package/lib/esm/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  403. package/lib/esm/appui-react/layout/base/usePointerCaptor.js.map +1 -1
  404. package/lib/esm/appui-react/layout/footer/Indicator.js +1 -1
  405. package/lib/esm/appui-react/layout/footer/Indicator.js.map +1 -1
  406. package/lib/esm/appui-react/layout/outline/PanelOutline.js.map +1 -1
  407. package/lib/esm/appui-react/layout/popup/Tooltip.js +1 -2
  408. package/lib/esm/appui-react/layout/popup/Tooltip.js.map +1 -1
  409. package/lib/esm/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  410. package/lib/esm/appui-react/layout/state/TabLocation.js.map +1 -1
  411. package/lib/esm/appui-react/layout/state/WidgetLocation.js.map +1 -1
  412. package/lib/esm/appui-react/layout/state/internal/NineZoneStateHelpers.js.map +1 -1
  413. package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
  414. package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
  415. package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
  416. package/lib/esm/appui-react/layout/target/PanelTargets.js.map +1 -1
  417. package/lib/esm/appui-react/layout/target/SectionTarget.js.map +1 -1
  418. package/lib/esm/appui-react/layout/target/useAllowedSideTarget.js.map +1 -1
  419. package/lib/esm/appui-react/layout/target/useAllowedWidgetTarget.js.map +1 -1
  420. package/lib/esm/appui-react/layout/tool-settings/Docked.js.map +1 -1
  421. package/lib/esm/appui-react/layout/widget/Buttons.js.map +1 -1
  422. package/lib/esm/appui-react/layout/widget/ContentManager.js.map +1 -1
  423. package/lib/esm/appui-react/layout/widget/ContentRenderer.js.map +1 -1
  424. package/lib/esm/appui-react/layout/widget/FloatingWidget.js.map +1 -1
  425. package/lib/esm/appui-react/layout/widget/Overflow.js.map +1 -1
  426. package/lib/esm/appui-react/layout/widget/PanelWidget.js.map +1 -1
  427. package/lib/esm/appui-react/layout/widget/SendBack.js.map +1 -1
  428. package/lib/esm/appui-react/layout/widget/Tab.js.map +1 -1
  429. package/lib/esm/appui-react/layout/widget/TabBar.js.map +1 -1
  430. package/lib/esm/appui-react/layout/widget/Tabs.js.map +1 -1
  431. package/lib/esm/appui-react/layout/widget/Widget.js.map +1 -1
  432. package/lib/esm/appui-react/layout/widget/tools/button/Button.js.map +1 -1
  433. package/lib/esm/appui-react/layout/widget-panels/Expander.js.map +1 -1
  434. package/lib/esm/appui-react/layout/widget-panels/Grip.js.map +1 -1
  435. package/lib/esm/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
  436. package/lib/esm/appui-react/layout/widget-panels/useAnimatePanel.js.map +1 -1
  437. package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -1
  438. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  439. package/lib/esm/appui-react/messages/InputField.js.map +1 -1
  440. package/lib/esm/appui-react/messages/MessageManager.js +1 -2
  441. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  442. package/lib/esm/appui-react/messages/MessageRenderer.js.map +1 -1
  443. package/lib/esm/appui-react/messages/Pointer.js +1 -2
  444. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  445. package/lib/esm/appui-react/messages/StatusMessageManager.js.map +1 -1
  446. package/lib/esm/appui-react/messages/getToastCategory.js.map +1 -1
  447. package/lib/esm/appui-react/navigationaids/CubeNavigationAidControl.js +1 -2
  448. package/lib/esm/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  449. package/lib/esm/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -2
  450. package/lib/esm/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  451. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js +1 -2
  452. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  453. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +1 -2
  454. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  455. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -2
  456. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  457. package/lib/esm/appui-react/pickers/ListPicker.js.map +1 -1
  458. package/lib/esm/appui-react/pickers/ViewSelector.js +1 -2
  459. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  460. package/lib/esm/appui-react/popup/CardPopup.js +1 -2
  461. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  462. package/lib/esm/appui-react/popup/ComponentPopup.js.map +1 -1
  463. package/lib/esm/appui-react/popup/InputEditorPopup.js.map +1 -1
  464. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  465. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  466. package/lib/esm/appui-react/popup/PopupManager.js +2 -4
  467. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  468. package/lib/esm/appui-react/popup/PositionPopup.js.map +1 -1
  469. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  470. package/lib/esm/appui-react/popup/ToolbarPopup.js +1 -2
  471. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  472. package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -1
  473. package/lib/esm/appui-react/preview/activate-dropped-tab/activateDroppedTab.js.map +1 -1
  474. package/lib/esm/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -1
  475. package/lib/esm/appui-react/preview/new-toolbars/ActionItem.js.map +1 -1
  476. package/lib/esm/appui-react/preview/new-toolbars/CustomItem.js.map +1 -1
  477. package/lib/esm/appui-react/preview/new-toolbars/GroupItem.js.map +1 -1
  478. package/lib/esm/appui-react/preview/new-toolbars/ToolGroup.js.map +1 -1
  479. package/lib/esm/appui-react/preview/new-toolbars/Toolbar.js.map +1 -1
  480. package/lib/esm/appui-react/preview/new-toolbars/useOverflow.js.map +1 -1
  481. package/lib/esm/appui-react/preview/reparent-popout-widgets/usePopoutsStore.js.map +1 -1
  482. package/lib/esm/appui-react/preview/reparent-popout-widgets/useReparentPopoutWidget.js.map +1 -1
  483. package/lib/esm/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
  484. package/lib/esm/appui-react/redux/ReducerRegistry.js.map +1 -1
  485. package/lib/esm/appui-react/redux/SessionState.js +1 -1
  486. package/lib/esm/appui-react/redux/SessionState.js.map +1 -1
  487. package/lib/esm/appui-react/redux/StateManager.js +1 -2
  488. package/lib/esm/appui-react/redux/StateManager.js.map +1 -1
  489. package/lib/esm/appui-react/redux/connectIModel.js +3 -3
  490. package/lib/esm/appui-react/redux/connectIModel.js.map +1 -1
  491. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +2 -4
  492. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  493. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  494. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  495. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  496. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  497. package/lib/esm/appui-react/shared/ActionButtonItemDef.js +1 -2
  498. package/lib/esm/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  499. package/lib/esm/appui-react/shared/CommandItemDef.js +1 -2
  500. package/lib/esm/appui-react/shared/CommandItemDef.js.map +1 -1
  501. package/lib/esm/appui-react/shared/CustomItemDef.js +1 -2
  502. package/lib/esm/appui-react/shared/CustomItemDef.js.map +1 -1
  503. package/lib/esm/appui-react/shared/MenuItem.js.map +1 -1
  504. package/lib/esm/appui-react/shared/ToolItemDef.js.map +1 -1
  505. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  506. package/lib/esm/appui-react/statusbar/Field.js +2 -4
  507. package/lib/esm/appui-react/statusbar/Field.js.map +1 -1
  508. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  509. package/lib/esm/appui-react/statusbar/StatusBarItem.d.ts +3 -3
  510. package/lib/esm/appui-react/statusbar/StatusBarItem.d.ts.map +1 -1
  511. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  512. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  513. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  514. package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
  515. package/lib/esm/appui-react/statusfields/SelectionCount.js.map +1 -1
  516. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  517. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  518. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  519. package/lib/esm/appui-react/statusfields/message-center/MessageCenterField.js.map +1 -1
  520. package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  521. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -2
  522. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  523. package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  524. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +1 -2
  525. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  526. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  527. package/lib/esm/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  528. package/lib/esm/appui-react/timeline/ScheduleAnimationProvider.js +1 -1
  529. package/lib/esm/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  530. package/lib/esm/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  531. package/lib/esm/appui-react/toolbar/GroupItem.js +1 -2
  532. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  533. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  534. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  535. package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  536. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  537. package/lib/esm/appui-react/toolbar/toUIAToolbarItem.js.map +1 -1
  538. package/lib/esm/appui-react/toolbar/useActiveStageProvidedToolbarItems.js.map +1 -1
  539. package/lib/esm/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +1 -1
  540. package/lib/esm/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  541. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  542. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  543. package/lib/esm/appui-react/tools/KeyinPaletteTools.js +1 -2
  544. package/lib/esm/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  545. package/lib/esm/appui-react/tools/OpenSettingsTool.js +1 -2
  546. package/lib/esm/appui-react/tools/OpenSettingsTool.js.map +1 -1
  547. package/lib/esm/appui-react/tools/RestoreLayoutTool.js +2 -4
  548. package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  549. package/lib/esm/appui-react/tools/ToolSettingsTools.js +2 -4
  550. package/lib/esm/appui-react/tools/ToolSettingsTools.js.map +1 -1
  551. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  552. package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js +1 -2
  553. package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  554. package/lib/esm/appui-react/toolsettings/ToolInformation.js.map +1 -1
  555. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  556. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  557. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  558. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  559. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  560. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +1 -2
  561. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  562. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  563. package/lib/esm/appui-react/uistate/AppUiSettings.js +1 -2
  564. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  565. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +2 -4
  566. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  567. package/lib/esm/appui-react/utils/PropsHelper.js.map +1 -1
  568. package/lib/esm/appui-react/utils/ToolbarButtonHelper.js.map +1 -1
  569. package/lib/esm/appui-react/utils/matchesWords.js.map +1 -1
  570. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  571. package/lib/esm/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  572. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
  573. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  574. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  575. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  576. package/lib/esm/appui-react/widgets/StableWidgetDef.js.map +1 -1
  577. package/lib/esm/appui-react/widgets/StatusBarWidgetComposerControl.js +1 -2
  578. package/lib/esm/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  579. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -2
  580. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  581. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  582. package/lib/esm/appui-react/widgets/WidgetManager.js.map +1 -1
  583. package/lib/esm/appui-react/widgets/useWidget.js.map +1 -1
  584. package/package.json +9 -9
@@ -13,7 +13,7 @@ import { UiFramework } from "../UiFramework";
13
13
  /** AccuDraw Widget Control
14
14
  * @beta
15
15
  */
16
- class AccuDrawWidgetControl extends WidgetControl {
16
+ export class AccuDrawWidgetControl extends WidgetControl {
17
17
  static get label() {
18
18
  return UiFramework.translate("accuDraw.dialogTitle");
19
19
  }
@@ -23,7 +23,6 @@ class AccuDrawWidgetControl extends WidgetControl {
23
23
  }
24
24
  }
25
25
  AccuDrawWidgetControl.id = "AccuDrawWidget";
26
- export { AccuDrawWidgetControl };
27
26
  /** AccuDraw Widget displays [[AccuDrawFieldContainer]] for AccuDraw Ui
28
27
  * @beta
29
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AccuDrawWidget.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/AccuDrawWidget.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,MAAa,qBAAsB,SAAQ,aAAa;IAG/C,MAAM,KAAK,KAAK;QACrB,OAAO,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACvD,CAAC;IAED,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,SAAS,GAAG,oBAAC,cAAc,OAAG,CAAC;IACtC,CAAC;;AAVa,wBAAE,GAAG,gBAAgB,CAAC;SADzB,qBAAqB;AAclC;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,GAAG,CAAC;IAEvB,6EAA6E;IAC7E,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAS,EAAE,EAAU,EAAE,EAAE;QAC/D,cAAc,CACZ,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAChE,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,GAAG,GAAG,iBAAiB,CAAiB,YAAY,CAAC,CAAC;IAE5D,OAAO,CACL,6BAAK,GAAG,EAAE,GAAG;QACX,oBAAC,sBAAsB,IAAC,WAAW,EAAE,WAAW,GAAI,CAChD,CACP,CAAC;AACJ,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 AccuDraw\n */\n\nimport * as React from \"react\";\nimport { Orientation, useResizeObserver } from \"@itwin/core-react\";\n\nimport { AccuDrawFieldContainer } from \"./AccuDrawFieldContainer\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl\";\nimport { WidgetControl } from \"../widgets/WidgetControl\";\nimport { UiFramework } from \"../UiFramework\";\n\n/** AccuDraw Widget Control\n * @beta\n */\nexport class AccuDrawWidgetControl extends WidgetControl {\n public static id = \"AccuDrawWidget\";\n\n public static get label(): string {\n return UiFramework.translate(\"accuDraw.dialogTitle\");\n }\n\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n\n this.reactNode = <AccuDrawWidget />;\n }\n}\n\n/** AccuDraw Widget displays [[AccuDrawFieldContainer]] for AccuDraw Ui\n * @beta\n */\nexport function AccuDrawWidget() {\n const [orientation, setOrientation] = React.useState(Orientation.Vertical);\n const breakpoint = 400;\n\n // istanbul ignore next - currently unable to replicate resizing in unit test\n const handleResize = React.useCallback((w: number, _h: number) => {\n setOrientation(\n w <= breakpoint ? Orientation.Vertical : Orientation.Horizontal\n );\n }, []);\n\n const ref = useResizeObserver<HTMLDivElement>(handleResize);\n\n return (\n <div ref={ref}>\n <AccuDrawFieldContainer orientation={orientation} />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"AccuDrawWidget.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/AccuDrawWidget.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IAG/C,MAAM,KAAK,KAAK;QACrB,OAAO,WAAW,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACvD,CAAC;IAED,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,CAAC,SAAS,GAAG,oBAAC,cAAc,OAAG,CAAC;IACtC,CAAC;;AAVa,wBAAE,GAAG,gBAAgB,CAAC;AAatC;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,GAAG,CAAC;IAEvB,6EAA6E;IAC7E,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAS,EAAE,EAAU,EAAE,EAAE;QAC/D,cAAc,CACZ,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAChE,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,GAAG,GAAG,iBAAiB,CAAiB,YAAY,CAAC,CAAC;IAE5D,OAAO,CACL,6BAAK,GAAG,EAAE,GAAG;QACX,oBAAC,sBAAsB,IAAC,WAAW,EAAE,WAAW,GAAI,CAChD,CACP,CAAC;AACJ,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 AccuDraw\n */\n\nimport * as React from \"react\";\nimport { Orientation, useResizeObserver } from \"@itwin/core-react\";\n\nimport { AccuDrawFieldContainer } from \"./AccuDrawFieldContainer\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl\";\nimport { WidgetControl } from \"../widgets/WidgetControl\";\nimport { UiFramework } from \"../UiFramework\";\n\n/** AccuDraw Widget Control\n * @beta\n */\nexport class AccuDrawWidgetControl extends WidgetControl {\n public static id = \"AccuDrawWidget\";\n\n public static get label(): string {\n return UiFramework.translate(\"accuDraw.dialogTitle\");\n }\n\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n\n this.reactNode = <AccuDrawWidget />;\n }\n}\n\n/** AccuDraw Widget displays [[AccuDrawFieldContainer]] for AccuDraw Ui\n * @beta\n */\nexport function AccuDrawWidget() {\n const [orientation, setOrientation] = React.useState(Orientation.Vertical);\n const breakpoint = 400;\n\n // istanbul ignore next - currently unable to replicate resizing in unit test\n const handleResize = React.useCallback((w: number, _h: number) => {\n setOrientation(\n w <= breakpoint ? Orientation.Vertical : Orientation.Horizontal\n );\n }, []);\n\n const ref = useResizeObserver<HTMLDivElement>(handleResize);\n\n return (\n <div ref={ref}>\n <AccuDrawFieldContainer orientation={orientation} />\n </div>\n );\n}\n"]}
@@ -16,7 +16,7 @@ import { SquareButton } from "./SquareButton";
16
16
  import { SvgCheckmark, SvgRemove } from "@itwin/itwinui-icons-react";
17
17
  import backspaceIcon from "./backspace.svg";
18
18
  /** @alpha */
19
- class Calculator extends React.PureComponent {
19
+ export class Calculator extends React.PureComponent {
20
20
  constructor(props) {
21
21
  super(props);
22
22
  this._mainDiv = React.createRef();
@@ -157,7 +157,6 @@ class Calculator extends React.PureComponent {
157
157
  Calculator.defaultProps = {
158
158
  engine: new CalculatorEngine(),
159
159
  };
160
- export { Calculator };
161
160
  class CalculatorKeyPad extends React.PureComponent {
162
161
  render() {
163
162
  return (React.createElement("div", { className: classnames("uifw-calculator-button-grid") },
@@ -1 +1 @@
1
- {"version":3,"file":"Calculator.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/Calculator.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 AccuDraw\n */\n\nimport \"./Calculator.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { OnCancelFunc, OnNumberCommitFunc } from \"@itwin/appui-abstract\";\nimport type { CommonProps, Omit } from \"@itwin/core-react\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport { Button, Input } from \"@itwin/itwinui-react\";\nimport { CalculatorEngine, CalculatorOperator } from \"./CalculatorEngine\";\nimport type { SquareButtonProps } from \"./SquareButton\";\nimport { SquareButton } from \"./SquareButton\";\nimport { SvgCheckmark, SvgRemove } from \"@itwin/itwinui-icons-react\";\nimport backspaceIcon from \"./backspace.svg\";\n\n// cSpell:ignore plusmn\n\n/** @alpha */\nexport interface CalculatorProps extends CommonProps {\n /** Initial value */\n initialValue?: number;\n /** Icon to display beside the calculated result */\n resultIcon?: React.ReactNode;\n /** A function to be run when the OK button is clicked */\n onOk?: OnNumberCommitFunc;\n /** A function to be run when the Cancel button is clicked */\n onCancel?: OnCancelFunc;\n\n /** @internal Calculator state machine. */\n engine: CalculatorEngine;\n}\n\ninterface CalculatorState {\n displayValue: string;\n}\n\n/** @internal */\nexport type CalculatorPropsProps = Pick<CalculatorProps, \"engine\">;\n\n/** @alpha */\nexport class Calculator extends React.PureComponent<\n CalculatorProps,\n CalculatorState\n> {\n private _mainDiv = React.createRef<HTMLDivElement>();\n private _equalsClicked = false;\n\n /** @internal */\n public static readonly defaultProps: CalculatorPropsProps = {\n engine: new CalculatorEngine(),\n };\n\n constructor(props: CalculatorProps) {\n super(props);\n\n let displayValue = \"0\";\n if (this.props.initialValue)\n displayValue = this.props.engine.processValue(\n this.props.initialValue.toString()\n );\n\n this.state = {\n displayValue,\n };\n }\n\n private _onValueButtonClick = (keyChar: string) => {\n const displayValue = this.props.engine.processValue(keyChar);\n this._mainDivFocus();\n this.setState({ displayValue });\n };\n\n private _onOperatorButtonClick = (operator: CalculatorOperator) => {\n if (operator === CalculatorOperator.Clear && this._equalsClicked)\n operator = CalculatorOperator.ClearAll;\n\n const displayValue = this.props.engine.processOperator(operator);\n this._mainDivFocus();\n this.setState({ displayValue });\n\n if (operator === CalculatorOperator.Equals) this._equalsClicked = true;\n else if (operator === CalculatorOperator.ClearAll)\n this._equalsClicked = false;\n };\n\n private _handleOk = (_event: React.MouseEvent): void => {\n this._ok();\n };\n\n private _ok() {\n // istanbul ignore else\n if (this.props.onOk) {\n this.props.onOk(this.props.engine.result);\n }\n this._clearAll();\n }\n\n private _handleCancel = (_event: React.MouseEvent): void => {\n this._cancel();\n };\n\n private _cancel() {\n // istanbul ignore else\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n this._clearAll();\n }\n\n private _clearAll() {\n this.props.engine.clearAll();\n this._equalsClicked = false;\n }\n\n public override componentDidMount() {\n this._mainDivFocus();\n }\n\n private _mainDivFocus() {\n if (this._mainDiv.current) this._mainDiv.current.focus();\n }\n\n public override render() {\n const { className, resultIcon, onOk, onCancel, initialValue, ...props } =\n this.props;\n\n const classNames = classnames(\"uifw-calculator\", className);\n\n const topSection = resultIcon ? (\n // eslint-disable-next-line deprecation/deprecation\n <IconInput\n containerClassName=\"uifw-calculator-top-input\"\n value={this.state.displayValue}\n readOnly={true}\n icon={resultIcon}\n />\n ) : (\n <Input value={this.state.displayValue} readOnly={true} size=\"small\" />\n );\n\n return (\n // The event handler is only being used to capture bubbled events\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n {...props}\n ref={this._mainDiv}\n tabIndex={-1}\n className={classNames}\n onKeyDown={this._handleKeyDown}\n >\n <div className=\"uifw-calculator-top\">{topSection}</div>\n <CalculatorKeyPad\n onValueClick={this._onValueButtonClick}\n onOperatorClick={this._onOperatorButtonClick}\n />\n <div className=\"uifw-calculator-bottom-buttons\">\n <Button\n className={classnames(\n \"uifw-calculator-large-button\",\n \"uifw-calculator-ok-button\"\n )}\n styleType=\"cta\"\n onClick={this._handleOk}\n >\n <Icon iconSpec={<SvgCheckmark />} />\n </Button>\n <Button\n className={classnames(\n \"uifw-calculator-large-button\",\n \"uifw-calculator-cancel-button\"\n )}\n onClick={this._handleCancel}\n >\n <Icon iconSpec={<SvgRemove />} />\n </Button>\n </div>\n </div>\n );\n }\n\n private _handleKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ): void => {\n switch (event.key) {\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n this._onValueButtonClick(event.key);\n break;\n case \"a\":\n case \"A\":\n this._onOperatorButtonClick(CalculatorOperator.ClearAll);\n break;\n case \"c\":\n case \"C\":\n case Key.Clear.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Clear);\n break;\n case Key.Escape.valueOf():\n this._cancel();\n break;\n case Key.Backspace.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Backspace);\n break;\n case \"/\":\n case Key.Divide.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Divide);\n break;\n case \"*\":\n case Key.Multiply.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Multiply);\n break;\n case \"-\":\n case Key.Subtract.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Subtract);\n break;\n case \"+\":\n case Key.Add.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Add);\n break;\n case \".\":\n case Key.Decimal.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Decimal);\n break;\n case \"=\":\n this._onOperatorButtonClick(CalculatorOperator.Equals);\n break;\n case Key.Enter.valueOf():\n if (!this._equalsClicked)\n this._onOperatorButtonClick(CalculatorOperator.Equals);\n this._ok();\n break;\n }\n };\n}\n\ninterface CalculatorKeyPadProps extends CommonProps {\n /** A function to be run when a value is clicked */\n onValueClick: (key: string) => void;\n /** A function to be run when a value is clicked */\n onOperatorClick: (operator: CalculatorOperator) => void;\n}\n\nclass CalculatorKeyPad extends React.PureComponent<CalculatorKeyPadProps> {\n public override render() {\n return (\n <div className={classnames(\"uifw-calculator-button-grid\")}>\n <OperatorButton\n operator={CalculatorOperator.ClearAll}\n onClick={this.props.onOperatorClick}\n >\n AC\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Clear}\n onClick={this.props.onOperatorClick}\n >\n C\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Backspace}\n onClick={this.props.onOperatorClick}\n >\n <div className=\"uifw-calculator-button-svg\">\n <Icon iconSpec={backspaceIcon} />\n </div>\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Divide}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &divide;\n </OperatorButton>\n\n <ValueButton keyChar=\"7\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"8\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"9\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Multiply}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &times;\n </OperatorButton>\n\n <ValueButton keyChar=\"4\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"5\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"6\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Subtract}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &minus;\n </OperatorButton>\n\n <ValueButton keyChar=\"1\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"2\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"3\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Add}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &#43;\n </OperatorButton>\n\n <ValueButton keyChar=\"0\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.NegPos}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &plusmn;\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Decimal}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n .\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Equals}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &#61;\n </OperatorButton>\n <span />\n </div>\n );\n }\n}\n\ninterface ValueButtonProps extends Omit<SquareButtonProps, \"onClick\"> {\n /** Key to display */\n keyChar: string;\n /** A function to be run when the element is clicked */\n onClick: (key: string) => void;\n}\n\nclass ValueButton extends React.PureComponent<ValueButtonProps> {\n private _handleOnClick = (\n _event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n this.props.onClick(this.props.keyChar);\n };\n\n public override render() {\n const { className, keyChar, onClick, ...props } = this.props;\n\n const itemClassNames = classnames(\"uifw-calculator-item\", className);\n\n return (\n <SquareButton\n {...props}\n className={itemClassNames}\n onClick={this._handleOnClick}\n >\n {keyChar}\n </SquareButton>\n );\n }\n}\n\ninterface OperatorButtonProps extends Omit<SquareButtonProps, \"onClick\"> {\n /** Key to display */\n operator: CalculatorOperator;\n /** A function to be run when the element is clicked */\n onClick: (operator: CalculatorOperator) => void;\n}\n\nclass OperatorButton extends React.PureComponent<OperatorButtonProps> {\n private _handleOnClick = (\n _event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n this.props.onClick(this.props.operator);\n };\n\n public override render() {\n const { className, children, operator, onClick, ...props } = this.props;\n\n const itemClassNames = classnames(\"uifw-calculator-item\", className);\n\n return (\n <SquareButton\n {...props}\n className={itemClassNames}\n onClick={this._handleOnClick}\n >\n {children}\n </SquareButton>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"Calculator.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/Calculator.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 AccuDraw\n */\n\nimport \"./Calculator.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { OnCancelFunc, OnNumberCommitFunc } from \"@itwin/appui-abstract\";\nimport type { CommonProps, Omit } from \"@itwin/core-react\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport { Button, Input } from \"@itwin/itwinui-react\";\nimport { CalculatorEngine, CalculatorOperator } from \"./CalculatorEngine\";\nimport type { SquareButtonProps } from \"./SquareButton\";\nimport { SquareButton } from \"./SquareButton\";\nimport { SvgCheckmark, SvgRemove } from \"@itwin/itwinui-icons-react\";\nimport backspaceIcon from \"./backspace.svg\";\n\n// cSpell:ignore plusmn\n\n/** @alpha */\nexport interface CalculatorProps extends CommonProps {\n /** Initial value */\n initialValue?: number;\n /** Icon to display beside the calculated result */\n resultIcon?: React.ReactNode;\n /** A function to be run when the OK button is clicked */\n onOk?: OnNumberCommitFunc;\n /** A function to be run when the Cancel button is clicked */\n onCancel?: OnCancelFunc;\n\n /** @internal Calculator state machine. */\n engine: CalculatorEngine;\n}\n\ninterface CalculatorState {\n displayValue: string;\n}\n\n/** @internal */\nexport type CalculatorPropsProps = Pick<CalculatorProps, \"engine\">;\n\n/** @alpha */\nexport class Calculator extends React.PureComponent<\n CalculatorProps,\n CalculatorState\n> {\n private _mainDiv = React.createRef<HTMLDivElement>();\n private _equalsClicked = false;\n\n /** @internal */\n public static readonly defaultProps: CalculatorPropsProps = {\n engine: new CalculatorEngine(),\n };\n\n constructor(props: CalculatorProps) {\n super(props);\n\n let displayValue = \"0\";\n if (this.props.initialValue)\n displayValue = this.props.engine.processValue(\n this.props.initialValue.toString()\n );\n\n this.state = {\n displayValue,\n };\n }\n\n private _onValueButtonClick = (keyChar: string) => {\n const displayValue = this.props.engine.processValue(keyChar);\n this._mainDivFocus();\n this.setState({ displayValue });\n };\n\n private _onOperatorButtonClick = (operator: CalculatorOperator) => {\n if (operator === CalculatorOperator.Clear && this._equalsClicked)\n operator = CalculatorOperator.ClearAll;\n\n const displayValue = this.props.engine.processOperator(operator);\n this._mainDivFocus();\n this.setState({ displayValue });\n\n if (operator === CalculatorOperator.Equals) this._equalsClicked = true;\n else if (operator === CalculatorOperator.ClearAll)\n this._equalsClicked = false;\n };\n\n private _handleOk = (_event: React.MouseEvent): void => {\n this._ok();\n };\n\n private _ok() {\n // istanbul ignore else\n if (this.props.onOk) {\n this.props.onOk(this.props.engine.result);\n }\n this._clearAll();\n }\n\n private _handleCancel = (_event: React.MouseEvent): void => {\n this._cancel();\n };\n\n private _cancel() {\n // istanbul ignore else\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n this._clearAll();\n }\n\n private _clearAll() {\n this.props.engine.clearAll();\n this._equalsClicked = false;\n }\n\n public override componentDidMount() {\n this._mainDivFocus();\n }\n\n private _mainDivFocus() {\n if (this._mainDiv.current) this._mainDiv.current.focus();\n }\n\n public override render() {\n const { className, resultIcon, onOk, onCancel, initialValue, ...props } =\n this.props;\n\n const classNames = classnames(\"uifw-calculator\", className);\n\n const topSection = resultIcon ? (\n // eslint-disable-next-line deprecation/deprecation\n <IconInput\n containerClassName=\"uifw-calculator-top-input\"\n value={this.state.displayValue}\n readOnly={true}\n icon={resultIcon}\n />\n ) : (\n <Input value={this.state.displayValue} readOnly={true} size=\"small\" />\n );\n\n return (\n // The event handler is only being used to capture bubbled events\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n {...props}\n ref={this._mainDiv}\n tabIndex={-1}\n className={classNames}\n onKeyDown={this._handleKeyDown}\n >\n <div className=\"uifw-calculator-top\">{topSection}</div>\n <CalculatorKeyPad\n onValueClick={this._onValueButtonClick}\n onOperatorClick={this._onOperatorButtonClick}\n />\n <div className=\"uifw-calculator-bottom-buttons\">\n <Button\n className={classnames(\n \"uifw-calculator-large-button\",\n \"uifw-calculator-ok-button\"\n )}\n styleType=\"cta\"\n onClick={this._handleOk}\n >\n <Icon iconSpec={<SvgCheckmark />} />\n </Button>\n <Button\n className={classnames(\n \"uifw-calculator-large-button\",\n \"uifw-calculator-cancel-button\"\n )}\n onClick={this._handleCancel}\n >\n <Icon iconSpec={<SvgRemove />} />\n </Button>\n </div>\n </div>\n );\n }\n\n private _handleKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ): void => {\n switch (event.key) {\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n this._onValueButtonClick(event.key);\n break;\n case \"a\":\n case \"A\":\n this._onOperatorButtonClick(CalculatorOperator.ClearAll);\n break;\n case \"c\":\n case \"C\":\n case Key.Clear.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Clear);\n break;\n case Key.Escape.valueOf():\n this._cancel();\n break;\n case Key.Backspace.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Backspace);\n break;\n case \"/\":\n case Key.Divide.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Divide);\n break;\n case \"*\":\n case Key.Multiply.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Multiply);\n break;\n case \"-\":\n case Key.Subtract.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Subtract);\n break;\n case \"+\":\n case Key.Add.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Add);\n break;\n case \".\":\n case Key.Decimal.valueOf():\n this._onOperatorButtonClick(CalculatorOperator.Decimal);\n break;\n case \"=\":\n this._onOperatorButtonClick(CalculatorOperator.Equals);\n break;\n case Key.Enter.valueOf():\n if (!this._equalsClicked)\n this._onOperatorButtonClick(CalculatorOperator.Equals);\n this._ok();\n break;\n }\n };\n}\n\ninterface CalculatorKeyPadProps extends CommonProps {\n /** A function to be run when a value is clicked */\n onValueClick: (key: string) => void;\n /** A function to be run when a value is clicked */\n onOperatorClick: (operator: CalculatorOperator) => void;\n}\n\nclass CalculatorKeyPad extends React.PureComponent<CalculatorKeyPadProps> {\n public override render() {\n return (\n <div className={classnames(\"uifw-calculator-button-grid\")}>\n <OperatorButton\n operator={CalculatorOperator.ClearAll}\n onClick={this.props.onOperatorClick}\n >\n AC\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Clear}\n onClick={this.props.onOperatorClick}\n >\n C\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Backspace}\n onClick={this.props.onOperatorClick}\n >\n <div className=\"uifw-calculator-button-svg\">\n <Icon iconSpec={backspaceIcon} />\n </div>\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Divide}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &divide;\n </OperatorButton>\n\n <ValueButton keyChar=\"7\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"8\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"9\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Multiply}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &times;\n </OperatorButton>\n\n <ValueButton keyChar=\"4\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"5\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"6\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Subtract}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &minus;\n </OperatorButton>\n\n <ValueButton keyChar=\"1\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"2\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"3\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Add}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &#43;\n </OperatorButton>\n\n <ValueButton keyChar=\"0\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.NegPos}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &plusmn;\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Decimal}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n .\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Equals}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &#61;\n </OperatorButton>\n <span />\n </div>\n );\n }\n}\n\ninterface ValueButtonProps extends Omit<SquareButtonProps, \"onClick\"> {\n /** Key to display */\n keyChar: string;\n /** A function to be run when the element is clicked */\n onClick: (key: string) => void;\n}\n\nclass ValueButton extends React.PureComponent<ValueButtonProps> {\n private _handleOnClick = (\n _event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n this.props.onClick(this.props.keyChar);\n };\n\n public override render() {\n const { className, keyChar, onClick, ...props } = this.props;\n\n const itemClassNames = classnames(\"uifw-calculator-item\", className);\n\n return (\n <SquareButton\n {...props}\n className={itemClassNames}\n onClick={this._handleOnClick}\n >\n {keyChar}\n </SquareButton>\n );\n }\n}\n\ninterface OperatorButtonProps extends Omit<SquareButtonProps, \"onClick\"> {\n /** Key to display */\n operator: CalculatorOperator;\n /** A function to be run when the element is clicked */\n onClick: (operator: CalculatorOperator) => void;\n}\n\nclass OperatorButton extends React.PureComponent<OperatorButtonProps> {\n private _handleOnClick = (\n _event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n this.props.onClick(this.props.operator);\n };\n\n public override render() {\n const { className, children, operator, onClick, ...props } = this.props;\n\n const itemClassNames = classnames(\"uifw-calculator-item\", className);\n\n return (\n <SquareButton\n {...props}\n className={itemClassNames}\n onClick={this._handleOnClick}\n >\n {children}\n </SquareButton>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CalculatorEngine.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/CalculatorEngine.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 AccuDraw\n */\n\n/** @internal */\nexport enum CalculatorOperator {\n None,\n Clear,\n ClearAll,\n Backspace,\n Add,\n Subtract,\n Multiply,\n Divide,\n NegPos,\n Decimal,\n Equals,\n}\n\n/** @internal */\nexport enum CalculatorKeyType {\n None,\n Operator,\n Equals,\n}\n\n/** @internal */\nexport class CalculatorEngine {\n private _displayValue: string = \"0\";\n private _operator?: CalculatorOperator;\n private _previousKeyType: CalculatorKeyType = CalculatorKeyType.None;\n private _firstValue: string = \"\";\n private _modValue: string = \"\";\n\n constructor() {\n this.clearAll();\n }\n\n public clearAll(): void {\n this._displayValue = \"0\";\n this._previousKeyType = CalculatorKeyType.None;\n this._firstValue = \"\";\n this._modValue = \"\";\n this._operator = undefined;\n }\n\n public get result(): number {\n return parseFloat(this._displayValue);\n }\n\n public get displayValue(): string {\n return this._displayValue;\n }\n\n public processValue(value: string): string {\n let resultString: string;\n\n if (\n this._displayValue === \"0\" ||\n this._previousKeyType === CalculatorKeyType.Operator ||\n this._previousKeyType === CalculatorKeyType.Equals\n ) {\n resultString = value;\n } else {\n resultString = this._displayValue + value;\n }\n\n this._displayValue = resultString;\n this._previousKeyType = CalculatorKeyType.None;\n\n return resultString;\n }\n\n public processOperator(operator: CalculatorOperator): string {\n const displayedNum = this._displayValue;\n const resultString = this._createResultString(operator, displayedNum);\n\n this._displayValue = resultString;\n\n this._updateCalculatorState(operator, resultString, displayedNum);\n\n return resultString;\n }\n\n private _createResultString = (\n operator: CalculatorOperator,\n displayedNum: string\n ) => {\n let resultString = displayedNum;\n\n if (this._isMathOperator(operator)) {\n const firstValue = this._firstValue;\n const savedOperator = this._operator;\n\n resultString =\n firstValue &&\n savedOperator &&\n this._previousKeyType !== CalculatorKeyType.Operator &&\n this._previousKeyType !== CalculatorKeyType.Equals\n ? this._calculate(firstValue, savedOperator, displayedNum)\n : displayedNum;\n } else {\n switch (operator) {\n case CalculatorOperator.Clear:\n resultString = \"0\";\n break;\n\n case CalculatorOperator.ClearAll:\n resultString = \"0\";\n break;\n\n case CalculatorOperator.Backspace:\n resultString = resultString.slice(0, -1);\n if (resultString.length === 0) resultString = \"0\";\n break;\n\n case CalculatorOperator.Decimal:\n if (!resultString.includes(\".\")) resultString = `${displayedNum}.`;\n else if (\n this._previousKeyType === CalculatorKeyType.Operator ||\n this._previousKeyType === CalculatorKeyType.Equals\n )\n resultString = \"0.\";\n break;\n\n case CalculatorOperator.NegPos:\n if (displayedNum.length > 0 && displayedNum[0] === \"-\")\n resultString = displayedNum.substring(1);\n else resultString = `-${displayedNum}`;\n break;\n\n case CalculatorOperator.Equals: {\n const firstValue = this._firstValue;\n const savedOperator = this._operator;\n const modValue = this._modValue;\n\n if (firstValue && savedOperator) {\n resultString =\n this._previousKeyType === CalculatorKeyType.Equals\n ? this._calculate(displayedNum, savedOperator, modValue)\n : this._calculate(firstValue, savedOperator, displayedNum);\n } else {\n resultString = displayedNum;\n }\n break;\n }\n }\n }\n\n return resultString;\n };\n\n private _isMathOperator = (operator: CalculatorOperator): boolean => {\n switch (operator) {\n case CalculatorOperator.Add:\n case CalculatorOperator.Subtract:\n case CalculatorOperator.Multiply:\n case CalculatorOperator.Divide:\n return true;\n }\n return false;\n };\n\n private _calculate = (\n n1Str: string,\n operator: CalculatorOperator,\n n2Str: string\n ): string => {\n let result = 0;\n const n1 = parseFloat(n1Str);\n const n2 = parseFloat(n2Str);\n\n switch (operator) {\n case CalculatorOperator.Add:\n result = n1 + n2;\n break;\n case CalculatorOperator.Subtract:\n result = n1 - n2;\n break;\n case CalculatorOperator.Multiply:\n result = n1 * n2;\n break;\n case CalculatorOperator.Divide:\n const displayValue = n2;\n if (displayValue !== 0) result = n1 / displayValue;\n else result = 0;\n break;\n }\n\n return result.toString();\n };\n\n private _updateCalculatorState = (\n operator: CalculatorOperator,\n resultString: string,\n displayedNum: string\n ): void => {\n let keyType = CalculatorKeyType.None;\n\n if (this._isMathOperator(operator)) {\n if (\n this._firstValue &&\n this._operator &&\n this._previousKeyType === CalculatorKeyType.None\n ) {\n this._firstValue = resultString;\n } else {\n this._firstValue = displayedNum;\n }\n\n this._operator = operator;\n keyType = CalculatorKeyType.Operator;\n } else {\n switch (operator) {\n case CalculatorOperator.ClearAll:\n this.clearAll();\n break;\n\n case CalculatorOperator.Equals: {\n let secondValue = displayedNum;\n\n if (this._firstValue) {\n if (this._previousKeyType === CalculatorKeyType.Equals) {\n secondValue = this._modValue;\n }\n }\n\n this._modValue = secondValue;\n\n keyType = CalculatorKeyType.Equals;\n }\n }\n }\n\n this._previousKeyType = keyType;\n };\n}\n"]}
1
+ {"version":3,"file":"CalculatorEngine.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/CalculatorEngine.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 AccuDraw\n */\n\n/** @internal */\nexport enum CalculatorOperator {\n None,\n Clear,\n ClearAll,\n Backspace,\n Add,\n Subtract,\n Multiply,\n Divide,\n NegPos,\n Decimal,\n Equals,\n}\n\n/** @internal */\nexport enum CalculatorKeyType {\n None,\n Operator,\n Equals,\n}\n\n/** @internal */\nexport class CalculatorEngine {\n private _displayValue: string = \"0\";\n private _operator?: CalculatorOperator;\n private _previousKeyType: CalculatorKeyType = CalculatorKeyType.None;\n private _firstValue: string = \"\";\n private _modValue: string = \"\";\n\n constructor() {\n this.clearAll();\n }\n\n public clearAll(): void {\n this._displayValue = \"0\";\n this._previousKeyType = CalculatorKeyType.None;\n this._firstValue = \"\";\n this._modValue = \"\";\n this._operator = undefined;\n }\n\n public get result(): number {\n return parseFloat(this._displayValue);\n }\n\n public get displayValue(): string {\n return this._displayValue;\n }\n\n public processValue(value: string): string {\n let resultString: string;\n\n if (\n this._displayValue === \"0\" ||\n this._previousKeyType === CalculatorKeyType.Operator ||\n this._previousKeyType === CalculatorKeyType.Equals\n ) {\n resultString = value;\n } else {\n resultString = this._displayValue + value;\n }\n\n this._displayValue = resultString;\n this._previousKeyType = CalculatorKeyType.None;\n\n return resultString;\n }\n\n public processOperator(operator: CalculatorOperator): string {\n const displayedNum = this._displayValue;\n const resultString = this._createResultString(operator, displayedNum);\n\n this._displayValue = resultString;\n\n this._updateCalculatorState(operator, resultString, displayedNum);\n\n return resultString;\n }\n\n private _createResultString = (\n operator: CalculatorOperator,\n displayedNum: string\n ) => {\n let resultString = displayedNum;\n\n if (this._isMathOperator(operator)) {\n const firstValue = this._firstValue;\n const savedOperator = this._operator;\n\n resultString =\n firstValue &&\n savedOperator &&\n this._previousKeyType !== CalculatorKeyType.Operator &&\n this._previousKeyType !== CalculatorKeyType.Equals\n ? this._calculate(firstValue, savedOperator, displayedNum)\n : displayedNum;\n } else {\n switch (operator) {\n case CalculatorOperator.Clear:\n resultString = \"0\";\n break;\n\n case CalculatorOperator.ClearAll:\n resultString = \"0\";\n break;\n\n case CalculatorOperator.Backspace:\n resultString = resultString.slice(0, -1);\n if (resultString.length === 0) resultString = \"0\";\n break;\n\n case CalculatorOperator.Decimal:\n if (!resultString.includes(\".\")) resultString = `${displayedNum}.`;\n else if (\n this._previousKeyType === CalculatorKeyType.Operator ||\n this._previousKeyType === CalculatorKeyType.Equals\n )\n resultString = \"0.\";\n break;\n\n case CalculatorOperator.NegPos:\n if (displayedNum.length > 0 && displayedNum[0] === \"-\")\n resultString = displayedNum.substring(1);\n else resultString = `-${displayedNum}`;\n break;\n\n case CalculatorOperator.Equals: {\n const firstValue = this._firstValue;\n const savedOperator = this._operator;\n const modValue = this._modValue;\n\n if (firstValue && savedOperator) {\n resultString =\n this._previousKeyType === CalculatorKeyType.Equals\n ? this._calculate(displayedNum, savedOperator, modValue)\n : this._calculate(firstValue, savedOperator, displayedNum);\n } else {\n resultString = displayedNum;\n }\n break;\n }\n }\n }\n\n return resultString;\n };\n\n private _isMathOperator = (operator: CalculatorOperator): boolean => {\n switch (operator) {\n case CalculatorOperator.Add:\n case CalculatorOperator.Subtract:\n case CalculatorOperator.Multiply:\n case CalculatorOperator.Divide:\n return true;\n }\n return false;\n };\n\n private _calculate = (\n n1Str: string,\n operator: CalculatorOperator,\n n2Str: string\n ): string => {\n let result = 0;\n const n1 = parseFloat(n1Str);\n const n2 = parseFloat(n2Str);\n\n switch (operator) {\n case CalculatorOperator.Add:\n result = n1 + n2;\n break;\n case CalculatorOperator.Subtract:\n result = n1 - n2;\n break;\n case CalculatorOperator.Multiply:\n result = n1 * n2;\n break;\n case CalculatorOperator.Divide:\n const displayValue = n2;\n if (displayValue !== 0) result = n1 / displayValue;\n else result = 0;\n break;\n }\n\n return result.toString();\n };\n\n private _updateCalculatorState = (\n operator: CalculatorOperator,\n resultString: string,\n displayedNum: string\n ): void => {\n let keyType = CalculatorKeyType.None;\n\n if (this._isMathOperator(operator)) {\n if (\n this._firstValue &&\n this._operator &&\n this._previousKeyType === CalculatorKeyType.None\n ) {\n this._firstValue = resultString;\n } else {\n this._firstValue = displayedNum;\n }\n\n this._operator = operator;\n keyType = CalculatorKeyType.Operator;\n } else {\n switch (operator) {\n case CalculatorOperator.ClearAll:\n this.clearAll();\n break;\n\n case CalculatorOperator.Equals: {\n let secondValue = displayedNum;\n\n if (this._firstValue) {\n if (this._previousKeyType === CalculatorKeyType.Equals) {\n secondValue = this._modValue;\n }\n }\n\n this._modValue = secondValue;\n\n keyType = CalculatorKeyType.Equals;\n }\n }\n }\n\n this._previousKeyType = keyType;\n };\n}\n"]}
@@ -82,7 +82,7 @@ export class AccuDrawUiSettingsChangedEvent extends BeUiEvent {
82
82
  * ```
83
83
  * @beta
84
84
  */
85
- class FrameworkAccuDraw extends AccuDraw {
85
+ export class FrameworkAccuDraw extends AccuDraw {
86
86
  /** Determines if notifications should be displayed for AccuDraw changes */
87
87
  static get displayNotifications() {
88
88
  return FrameworkAccuDraw._displayNotifications;
@@ -262,5 +262,4 @@ FrameworkAccuDraw.isPolarModeConditional = new ConditionalBooleanValue(() => IMo
262
262
  FrameworkAccuDraw.isRectangularModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Rectangular, [SyncUiEventId.AccuDrawCompassModeChanged]);
263
263
  /** AccuDraw Grab Input Focus event. */
264
264
  FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent = new AccuDrawUiSettingsChangedEvent(); // eslint-disable-line deprecation/deprecation
265
- export { FrameworkAccuDraw };
266
265
  //# sourceMappingURL=FrameworkAccuDraw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FrameworkAccuDraw.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.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 AccuDraw\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { BeButtonEvent } from \"@itwin/core-frontend\";\nimport {\n AccuDraw,\n CompassMode,\n IModelApp,\n ItemField,\n NotifyMessageDetails,\n OutputMessagePriority,\n QuantityType,\n RotationMode,\n} from \"@itwin/core-frontend\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { UiStateStorage } from \"@itwin/core-react\";\nimport { UiStateStorageStatus } from \"@itwin/core-react\";\nimport type { UserSettingsProvider } from \"../UiFramework\";\nimport { UiFramework } from \"../UiFramework\";\nimport {\n SyncUiEventDispatcher,\n SyncUiEventId,\n} from \"../syncui/SyncUiEventDispatcher\";\nimport type { AccuDrawUiSettings } from \"./AccuDrawUiSettings\";\n\n// cspell:ignore dont\n\nconst compassModeToKeyMap = new Map<CompassMode, string>([\n [CompassMode.Polar, \"polar\"],\n [CompassMode.Rectangular, \"rectangular\"],\n]);\n\nconst rotationModeToKeyMap = new Map<RotationMode, string>([\n [RotationMode.Top, \"top\"],\n [RotationMode.Front, \"front\"],\n [RotationMode.Side, \"side\"],\n [RotationMode.View, \"view\"],\n [RotationMode.ACS, \"ACS\"],\n [RotationMode.Context, \"context\"],\n]);\n\n/** Arguments for [[AccuDrawSetFieldFocusEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldFocusEventArgs {\n field: ItemField;\n}\n\n/** AccuDraw Set Field Focus event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldValueToUiEventArgs {\n field: ItemField;\n value: number;\n formattedValue: string;\n}\n\n/** AccuDraw Set Field Value to Ui event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldValueFromUiEventArgs {\n field: ItemField;\n stringValue: string;\n}\n\n/** AccuDraw Set Field Value from Ui event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldLockEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldLockEventArgs {\n field: ItemField;\n lock: boolean;\n}\n\n/** AccuDraw Set Field Lock event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> {}\n\n/** Arguments for [[AccuDrawSetCompassModeEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetCompassModeEventArgs {\n mode: CompassMode;\n}\n\n/** AccuDraw Set Compass Mode event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> {}\n\n/** AccuDraw Grab Input Focus event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\nexport class AccuDrawGrabInputFocusEvent extends BeUiEvent<{}> {}\n\n/** AccuDraw Ui Settings Changed event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\nexport class AccuDrawUiSettingsChangedEvent extends BeUiEvent<{}> {}\n\n/** Subclass of `AccuDraw` in `@itwin/core-frontend` to be used to initialize `IModelApp`.\n *\n * This implementation will generate the required events for the AppUI provided UI to update correctly.\n *\n * ```ts\n * await IModelApp.startup({\n * accuDraw: new FrameworkAccuDraw()\n * });\n * ```\n * @beta\n */\nexport class FrameworkAccuDraw\n extends AccuDraw\n implements UserSettingsProvider\n{\n private static _displayNotifications = false;\n private static _uiSettings: AccuDrawUiSettings | undefined;\n private static _settingsNamespace = \"AppUiSettings\";\n private static _notificationsKey = \"AccuDrawNotifications\";\n public readonly providerId = \"FrameworkAccuDraw\";\n\n /** AccuDraw Set Field Focus event. */\n public static readonly onAccuDrawSetFieldFocusEvent =\n new AccuDrawSetFieldFocusEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Set Field Value to Ui event. */\n public static readonly onAccuDrawSetFieldValueToUiEvent =\n new AccuDrawSetFieldValueToUiEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Set Field Value from Ui event. */\n public static readonly onAccuDrawSetFieldValueFromUiEvent =\n new AccuDrawSetFieldValueFromUiEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Set Field Lock event. */\n public static readonly onAccuDrawSetFieldLockEvent =\n new AccuDrawSetFieldLockEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Set Mode event. */\n public static readonly onAccuDrawSetCompassModeEvent =\n new AccuDrawSetCompassModeEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawGrabInputFocusEvent =\n new AccuDrawGrabInputFocusEvent(); // eslint-disable-line deprecation/deprecation\n\n /** Determines if AccuDraw.rotationMode === RotationMode.Top */\n public static readonly isTopRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Top,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Front */\n public static readonly isFrontRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Front,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Side */\n public static readonly isSideRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Side,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.View */\n public static readonly isViewRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.View,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.ACS */\n public static readonly isACSRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.ACS,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Context */\n public static readonly isContextRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Context,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Polar */\n public static readonly isPolarModeConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Polar,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */\n public static readonly isRectangularModeConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Rectangular,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawUiSettingsChangedEvent =\n new AccuDrawUiSettingsChangedEvent(); // eslint-disable-line deprecation/deprecation\n\n /** Determines if notifications should be displayed for AccuDraw changes */\n public static get displayNotifications(): boolean {\n return FrameworkAccuDraw._displayNotifications;\n }\n public static set displayNotifications(v: boolean) {\n FrameworkAccuDraw._displayNotifications = v;\n void UiFramework.getUiStateStorage().saveSetting(\n this._settingsNamespace,\n this._notificationsKey,\n v\n );\n }\n\n /* @internal */\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n const result = await storage.getSetting(\n FrameworkAccuDraw._settingsNamespace,\n FrameworkAccuDraw._notificationsKey\n );\n if (result.status === UiStateStorageStatus.Success)\n FrameworkAccuDraw._displayNotifications = result.setting;\n }\n\n /** AccuDraw User Interface settings */\n public static get uiStateStorage(): AccuDrawUiSettings | undefined {\n return FrameworkAccuDraw._uiSettings;\n }\n public static set uiStateStorage(v: AccuDrawUiSettings | undefined) {\n FrameworkAccuDraw._uiSettings = v;\n FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});\n }\n\n constructor() {\n super();\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(\n this.handleSetFieldValueFromUiEvent\n );\n UiFramework.registerUserSettingsProvider(this);\n }\n\n private handleSetFieldValueFromUiEvent = async (\n args: AccuDrawSetFieldValueFromUiEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n return this.processFieldInput(args.field, args.stringValue, false);\n };\n\n /** @internal */\n public override onCompassModeChange(): void {\n FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({\n mode: this.compassMode,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawCompassModeChanged\n );\n\n this.outputCompassModeMessage();\n }\n\n /** @internal */\n public override onRotationModeChange(): void {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawRotationChanged\n );\n\n this.outputRotationMessage();\n }\n\n /** @internal */\n public override onFieldLockChange(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.emit({\n field: index,\n lock: this.getFieldLock(index),\n });\n }\n\n /** @internal */\n public override onFieldValueChange(index: ItemField): void {\n const value = this.getValueByIndex(index);\n const formattedValue = FrameworkAccuDraw.getFieldDisplayValue(index);\n FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent.emit({\n field: index,\n value,\n formattedValue,\n });\n }\n\n private fieldValuesChanged(): void {\n this.onFieldValueChange(ItemField.X_Item);\n this.onFieldValueChange(ItemField.Y_Item);\n this.onFieldValueChange(ItemField.Z_Item);\n this.onFieldValueChange(ItemField.ANGLE_Item);\n this.onFieldValueChange(ItemField.DIST_Item);\n }\n\n /** @internal */\n public override setFocusItem(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.emit({ field: index });\n }\n\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\n * Should also choose active x or y input field in rectangular mode based on cursor position when\n * axis isn't locked to support \"smart lock\".\n * @internal\n */\n public override onMotion(_ev: BeButtonEvent): void {\n if (!this.isEnabled || this.isDeactivated || UiFramework.isContextMenuOpen)\n return;\n\n this.fieldValuesChanged();\n\n if (!this.dontMoveFocus) this.setFocusItem(this.newFocus);\n }\n\n /** Determine if the AccuDraw UI has focus\n * @internal\n */\n public override get hasInputFocus(): boolean {\n let hasFocus = false;\n const el = document.querySelector(\"div.uifw-accudraw-field-container\");\n if (el) hasFocus = el.contains(document.activeElement);\n return hasFocus;\n }\n\n /** Implement this method to set focus to the AccuDraw UI.\n * @internal\n */\n public override grabInputFocus(): void {\n FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.emit({});\n }\n\n /** Gets the display value for an AccuDraw field */\n public static getFieldDisplayValue(index: ItemField): string {\n const value = IModelApp.accuDraw.getValueByIndex(index);\n let formattedValue = value.toString();\n\n const formatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n ItemField.ANGLE_Item === index\n ? QuantityType.Angle\n : QuantityType.Length\n );\n // istanbul ignore else\n if (formatterSpec)\n formattedValue = IModelApp.quantityFormatter.formatQuantity(\n value,\n formatterSpec\n );\n\n return formattedValue;\n }\n\n /** AccuDraw Set Field Value from Ui. */\n public static setFieldValueFromUi(\n field: ItemField,\n stringValue: string\n ): void {\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.emit({\n field,\n stringValue,\n });\n }\n\n private outputInfoMessage(message: string): void {\n // istanbul ignore else\n if (FrameworkAccuDraw.displayNotifications)\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(OutputMessagePriority.Info, message)\n );\n }\n\n private outputCompassModeMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n const modeKey = compassModeToKeyMap.get(this.compassMode) ?? \"polar\";\n const modeString = UiFramework.translate(\n `accuDraw.compassMode.${modeKey}`\n );\n const modeMessage = UiFramework.translate(\"accuDraw.compassModeSet\", {\n modeString,\n });\n this.outputInfoMessage(modeMessage);\n }\n }\n\n private outputRotationMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n const rotationKey = rotationModeToKeyMap.get(this.rotationMode) ?? \"top\";\n const rotationString = UiFramework.translate(\n `accuDraw.rotation.${rotationKey}`\n );\n const rotationMessage = UiFramework.translate(\"accuDraw.rotationSet\", {\n rotationString,\n });\n this.outputInfoMessage(rotationMessage);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"FrameworkAccuDraw.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.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 AccuDraw\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { BeButtonEvent } from \"@itwin/core-frontend\";\nimport {\n AccuDraw,\n CompassMode,\n IModelApp,\n ItemField,\n NotifyMessageDetails,\n OutputMessagePriority,\n QuantityType,\n RotationMode,\n} from \"@itwin/core-frontend\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { UiStateStorage } from \"@itwin/core-react\";\nimport { UiStateStorageStatus } from \"@itwin/core-react\";\nimport type { UserSettingsProvider } from \"../UiFramework\";\nimport { UiFramework } from \"../UiFramework\";\nimport {\n SyncUiEventDispatcher,\n SyncUiEventId,\n} from \"../syncui/SyncUiEventDispatcher\";\nimport type { AccuDrawUiSettings } from \"./AccuDrawUiSettings\";\n\n// cspell:ignore dont\n\nconst compassModeToKeyMap = new Map<CompassMode, string>([\n [CompassMode.Polar, \"polar\"],\n [CompassMode.Rectangular, \"rectangular\"],\n]);\n\nconst rotationModeToKeyMap = new Map<RotationMode, string>([\n [RotationMode.Top, \"top\"],\n [RotationMode.Front, \"front\"],\n [RotationMode.Side, \"side\"],\n [RotationMode.View, \"view\"],\n [RotationMode.ACS, \"ACS\"],\n [RotationMode.Context, \"context\"],\n]);\n\n/** Arguments for [[AccuDrawSetFieldFocusEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldFocusEventArgs {\n field: ItemField;\n}\n\n/** AccuDraw Set Field Focus event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldValueToUiEventArgs {\n field: ItemField;\n value: number;\n formattedValue: string;\n}\n\n/** AccuDraw Set Field Value to Ui event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldValueFromUiEventArgs {\n field: ItemField;\n stringValue: string;\n}\n\n/** AccuDraw Set Field Value from Ui event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldLockEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldLockEventArgs {\n field: ItemField;\n lock: boolean;\n}\n\n/** AccuDraw Set Field Lock event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> {}\n\n/** Arguments for [[AccuDrawSetCompassModeEvent]]\n * @beta\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetCompassModeEventArgs {\n mode: CompassMode;\n}\n\n/** AccuDraw Set Compass Mode event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> {}\n\n/** AccuDraw Grab Input Focus event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\nexport class AccuDrawGrabInputFocusEvent extends BeUiEvent<{}> {}\n\n/** AccuDraw Ui Settings Changed event\n * @beta\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\nexport class AccuDrawUiSettingsChangedEvent extends BeUiEvent<{}> {}\n\n/** Subclass of `AccuDraw` in `@itwin/core-frontend` to be used to initialize `IModelApp`.\n *\n * This implementation will generate the required events for the AppUI provided UI to update correctly.\n *\n * ```ts\n * await IModelApp.startup({\n * accuDraw: new FrameworkAccuDraw()\n * });\n * ```\n * @beta\n */\nexport class FrameworkAccuDraw\n extends AccuDraw\n implements UserSettingsProvider\n{\n private static _displayNotifications = false;\n private static _uiSettings: AccuDrawUiSettings | undefined;\n private static _settingsNamespace = \"AppUiSettings\";\n private static _notificationsKey = \"AccuDrawNotifications\";\n public readonly providerId = \"FrameworkAccuDraw\";\n\n /** AccuDraw Set Field Focus event. */\n public static readonly onAccuDrawSetFieldFocusEvent =\n new AccuDrawSetFieldFocusEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Set Field Value to Ui event. */\n public static readonly onAccuDrawSetFieldValueToUiEvent =\n new AccuDrawSetFieldValueToUiEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Set Field Value from Ui event. */\n public static readonly onAccuDrawSetFieldValueFromUiEvent =\n new AccuDrawSetFieldValueFromUiEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Set Field Lock event. */\n public static readonly onAccuDrawSetFieldLockEvent =\n new AccuDrawSetFieldLockEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Set Mode event. */\n public static readonly onAccuDrawSetCompassModeEvent =\n new AccuDrawSetCompassModeEvent(); // eslint-disable-line deprecation/deprecation\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawGrabInputFocusEvent =\n new AccuDrawGrabInputFocusEvent(); // eslint-disable-line deprecation/deprecation\n\n /** Determines if AccuDraw.rotationMode === RotationMode.Top */\n public static readonly isTopRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Top,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Front */\n public static readonly isFrontRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Front,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Side */\n public static readonly isSideRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Side,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.View */\n public static readonly isViewRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.View,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.ACS */\n public static readonly isACSRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.ACS,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Context */\n public static readonly isContextRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Context,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Polar */\n public static readonly isPolarModeConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Polar,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */\n public static readonly isRectangularModeConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Rectangular,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawUiSettingsChangedEvent =\n new AccuDrawUiSettingsChangedEvent(); // eslint-disable-line deprecation/deprecation\n\n /** Determines if notifications should be displayed for AccuDraw changes */\n public static get displayNotifications(): boolean {\n return FrameworkAccuDraw._displayNotifications;\n }\n public static set displayNotifications(v: boolean) {\n FrameworkAccuDraw._displayNotifications = v;\n void UiFramework.getUiStateStorage().saveSetting(\n this._settingsNamespace,\n this._notificationsKey,\n v\n );\n }\n\n /* @internal */\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n const result = await storage.getSetting(\n FrameworkAccuDraw._settingsNamespace,\n FrameworkAccuDraw._notificationsKey\n );\n if (result.status === UiStateStorageStatus.Success)\n FrameworkAccuDraw._displayNotifications = result.setting;\n }\n\n /** AccuDraw User Interface settings */\n public static get uiStateStorage(): AccuDrawUiSettings | undefined {\n return FrameworkAccuDraw._uiSettings;\n }\n public static set uiStateStorage(v: AccuDrawUiSettings | undefined) {\n FrameworkAccuDraw._uiSettings = v;\n FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});\n }\n\n constructor() {\n super();\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(\n this.handleSetFieldValueFromUiEvent\n );\n UiFramework.registerUserSettingsProvider(this);\n }\n\n private handleSetFieldValueFromUiEvent = async (\n args: AccuDrawSetFieldValueFromUiEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n return this.processFieldInput(args.field, args.stringValue, false);\n };\n\n /** @internal */\n public override onCompassModeChange(): void {\n FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({\n mode: this.compassMode,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawCompassModeChanged\n );\n\n this.outputCompassModeMessage();\n }\n\n /** @internal */\n public override onRotationModeChange(): void {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawRotationChanged\n );\n\n this.outputRotationMessage();\n }\n\n /** @internal */\n public override onFieldLockChange(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.emit({\n field: index,\n lock: this.getFieldLock(index),\n });\n }\n\n /** @internal */\n public override onFieldValueChange(index: ItemField): void {\n const value = this.getValueByIndex(index);\n const formattedValue = FrameworkAccuDraw.getFieldDisplayValue(index);\n FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent.emit({\n field: index,\n value,\n formattedValue,\n });\n }\n\n private fieldValuesChanged(): void {\n this.onFieldValueChange(ItemField.X_Item);\n this.onFieldValueChange(ItemField.Y_Item);\n this.onFieldValueChange(ItemField.Z_Item);\n this.onFieldValueChange(ItemField.ANGLE_Item);\n this.onFieldValueChange(ItemField.DIST_Item);\n }\n\n /** @internal */\n public override setFocusItem(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.emit({ field: index });\n }\n\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\n * Should also choose active x or y input field in rectangular mode based on cursor position when\n * axis isn't locked to support \"smart lock\".\n * @internal\n */\n public override onMotion(_ev: BeButtonEvent): void {\n if (!this.isEnabled || this.isDeactivated || UiFramework.isContextMenuOpen)\n return;\n\n this.fieldValuesChanged();\n\n if (!this.dontMoveFocus) this.setFocusItem(this.newFocus);\n }\n\n /** Determine if the AccuDraw UI has focus\n * @internal\n */\n public override get hasInputFocus(): boolean {\n let hasFocus = false;\n const el = document.querySelector(\"div.uifw-accudraw-field-container\");\n if (el) hasFocus = el.contains(document.activeElement);\n return hasFocus;\n }\n\n /** Implement this method to set focus to the AccuDraw UI.\n * @internal\n */\n public override grabInputFocus(): void {\n FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.emit({});\n }\n\n /** Gets the display value for an AccuDraw field */\n public static getFieldDisplayValue(index: ItemField): string {\n const value = IModelApp.accuDraw.getValueByIndex(index);\n let formattedValue = value.toString();\n\n const formatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n ItemField.ANGLE_Item === index\n ? QuantityType.Angle\n : QuantityType.Length\n );\n // istanbul ignore else\n if (formatterSpec)\n formattedValue = IModelApp.quantityFormatter.formatQuantity(\n value,\n formatterSpec\n );\n\n return formattedValue;\n }\n\n /** AccuDraw Set Field Value from Ui. */\n public static setFieldValueFromUi(\n field: ItemField,\n stringValue: string\n ): void {\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.emit({\n field,\n stringValue,\n });\n }\n\n private outputInfoMessage(message: string): void {\n // istanbul ignore else\n if (FrameworkAccuDraw.displayNotifications)\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(OutputMessagePriority.Info, message)\n );\n }\n\n private outputCompassModeMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n const modeKey = compassModeToKeyMap.get(this.compassMode) ?? \"polar\";\n const modeString = UiFramework.translate(\n `accuDraw.compassMode.${modeKey}`\n );\n const modeMessage = UiFramework.translate(\"accuDraw.compassModeSet\", {\n modeString,\n });\n this.outputInfoMessage(modeMessage);\n }\n }\n\n private outputRotationMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n const rotationKey = rotationModeToKeyMap.get(this.rotationMode) ?? \"top\";\n const rotationString = UiFramework.translate(\n `accuDraw.rotation.${rotationKey}`\n );\n const rotationMessage = UiFramework.translate(\"accuDraw.rotationSet\", {\n rotationString,\n });\n this.outputInfoMessage(rotationMessage);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuButton.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/MenuButton.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 AccuDraw\n */\n\nimport \"./MenuButton.scss\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { SizeProps } from \"@itwin/core-react\";\nimport { ContextMenu, Icon, Size } from \"@itwin/core-react\";\nimport type { SquareButtonProps } from \"./SquareButton\";\nimport { SquareButton } from \"./SquareButton\";\nimport { SvgMore } from \"@itwin/itwinui-icons-react\";\n\n/** @alpha */\nexport interface MenuButtonProps extends SquareButtonProps {\n /** Center point */\n point: XAndY;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n}\n\n/** @internal */\ninterface MenuButtonState {\n expanded: boolean;\n}\n\n/** @alpha */\nexport class MenuButton extends React.PureComponent<\n MenuButtonProps,\n MenuButtonState\n> {\n private _menu: ContextMenu | null = null;\n\n constructor(props: MenuButtonProps) {\n super(props);\n\n this.state = {\n expanded: false,\n };\n }\n\n public override render() {\n const { point, className, style, onSizeKnown, ...buttonProps } = this.props;\n\n const divStyle: React.CSSProperties = {\n top: point.y,\n left: point.x,\n };\n\n return (\n <div\n className=\"uifw-menu-button\"\n style={divStyle}\n ref={(e) => this.setDivRef(e)}\n >\n <SquareButton\n {...buttonProps}\n className={className}\n style={style}\n onClick={this._handleClick}\n >\n <Icon iconSpec={<SvgMore />} />\n </SquareButton>\n <ContextMenu\n ref={(el) => {\n this._menu = el;\n }}\n selectedIndex={0}\n onSelect={this._handleClose}\n onOutsideClick={this._handleClose}\n onEsc={this._handleClose}\n opened={this.state.expanded}\n autoflip={false}\n >\n {this.props.children}\n </ContextMenu>\n </div>\n );\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n // istanbul ignore else\n if (div) {\n const rect = div.getBoundingClientRect();\n const size = new Size(rect.width, rect.height);\n\n // istanbul ignore else\n if (this.props.onSizeKnown) this.props.onSizeKnown(size);\n }\n }\n\n private _open = () => {\n this.setState({ expanded: true }, () => {\n // istanbul ignore else\n if (this._menu) this._menu.focus();\n });\n };\n\n private _handleClick = (event: any) => {\n if (this.state.expanded) {\n event.stopPropagation();\n this.setState({ expanded: false });\n } else {\n this._open();\n }\n };\n\n // istanbul ignore next\n private _handleClose = () => {\n this.setState({ expanded: false });\n };\n}\n"]}
1
+ {"version":3,"file":"MenuButton.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/MenuButton.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 AccuDraw\n */\n\nimport \"./MenuButton.scss\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { SizeProps } from \"@itwin/core-react\";\nimport { ContextMenu, Icon, Size } from \"@itwin/core-react\";\nimport type { SquareButtonProps } from \"./SquareButton\";\nimport { SquareButton } from \"./SquareButton\";\nimport { SvgMore } from \"@itwin/itwinui-icons-react\";\n\n/** @alpha */\nexport interface MenuButtonProps extends SquareButtonProps {\n /** Center point */\n point: XAndY;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n}\n\n/** @internal */\ninterface MenuButtonState {\n expanded: boolean;\n}\n\n/** @alpha */\nexport class MenuButton extends React.PureComponent<\n MenuButtonProps,\n MenuButtonState\n> {\n private _menu: ContextMenu | null = null;\n\n constructor(props: MenuButtonProps) {\n super(props);\n\n this.state = {\n expanded: false,\n };\n }\n\n public override render() {\n const { point, className, style, onSizeKnown, ...buttonProps } = this.props;\n\n const divStyle: React.CSSProperties = {\n top: point.y,\n left: point.x,\n };\n\n return (\n <div\n className=\"uifw-menu-button\"\n style={divStyle}\n ref={(e) => this.setDivRef(e)}\n >\n <SquareButton\n {...buttonProps}\n className={className}\n style={style}\n onClick={this._handleClick}\n >\n <Icon iconSpec={<SvgMore />} />\n </SquareButton>\n <ContextMenu\n ref={(el) => {\n this._menu = el;\n }}\n selectedIndex={0}\n onSelect={this._handleClose}\n onOutsideClick={this._handleClose}\n onEsc={this._handleClose}\n opened={this.state.expanded}\n autoflip={false}\n >\n {this.props.children}\n </ContextMenu>\n </div>\n );\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n // istanbul ignore else\n if (div) {\n const rect = div.getBoundingClientRect();\n const size = new Size(rect.width, rect.height);\n\n // istanbul ignore else\n if (this.props.onSizeKnown) this.props.onSizeKnown(size);\n }\n }\n\n private _open = () => {\n this.setState({ expanded: true }, () => {\n // istanbul ignore else\n if (this._menu) this._menu.focus();\n });\n };\n\n private _handleClick = (event: any) => {\n if (this.state.expanded) {\n event.stopPropagation();\n this.setState({ expanded: false });\n } else {\n this._open();\n }\n };\n\n // istanbul ignore next\n private _handleClose = () => {\n this.setState({ expanded: false });\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BackstageComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/BackstageComposer.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 Backstage\n */\n\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport * as React from \"react\";\nimport { Backstage as NZ_Backstage } from \"../layout/backstage/Backstage\";\nimport { BackstageSeparator } from \"../layout/backstage/Separator\";\nimport { SafeAreaContext } from \"../safearea/SafeAreaContext\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\nimport { BackstageComposerItem } from \"./BackstageComposerItem\";\nimport { isBackstageStageLauncher } from \"./BackstageItem\";\nimport { BackstageItemsManager } from \"./BackstageItemsManager\";\nimport { useBackstageManager, useIsBackstageOpen } from \"./BackstageManager\";\nimport { useDefaultBackstageItems } from \"./useDefaultBackstageItems\";\nimport { useUiItemsProviderBackstageItems } from \"./useUiItemsProviderBackstageItems\";\n\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { UiSyncEventArgs } from \"../syncui/UiSyncEvent\";\nimport type { BackstageItem } from \"./BackstageItem\";\n// cSpell:ignore safearea\n\n/** Private function to set up sync event monitoring of backstage items */\nfunction useBackstageItemSyncEffect(\n itemsManager: BackstageItemsManager,\n syncIdsOfInterest: string[]\n) {\n const isInitialMount = React.useRef(true);\n\n React.useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n // initialize the display state of any items with syncIds/condition defined\n itemsManager.refreshAffectedItems(new Set(syncIdsOfInterest));\n }\n\n return SyncUiEventDispatcher.onSyncUiEvent.addListener(\n (\n args: UiSyncEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n if (0 === syncIdsOfInterest.length) return;\n\n // istanbul ignore else\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n // process each item that has interest\n itemsManager.refreshAffectedItems(args.eventIds);\n }\n }\n );\n }, [itemsManager, itemsManager.items, syncIdsOfInterest]);\n}\n\n/** local function to combine items from Stage and from Extensions */\nfunction combineItems(\n stageItems: ReadonlyArray<BackstageItem>,\n addonItems: ReadonlyArray<BackstageItem>,\n hideSoloStageEntry: boolean\n): ReadonlyArray<BackstageItem> {\n let items: Array<BackstageItem> = [];\n if (stageItems.length) {\n // Walk through each and ensure no duplicate ids are added.\n stageItems.forEach((srcItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n items.push(srcItem);\n }\n });\n }\n if (addonItems.length) {\n // Walk through each and ensure no duplicate ids are added.\n addonItems.forEach((srcItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n items.push(srcItem);\n }\n });\n }\n\n if (hideSoloStageEntry) {\n // per user request don't show stage launcher if only one stage is available\n const numberOfFrontstageItems = items.reduce(\n (accumulator, item) =>\n accumulator + (isBackstageStageLauncher(item) ? 1 : 0),\n 0\n );\n if (1 === numberOfFrontstageItems)\n items = items.filter((item) => !isBackstageStageLauncher(item));\n }\n\n return items;\n}\n\n/** @internal */\nexport type GroupedItems = ReadonlyArray<ReadonlyArray<BackstageItem>>;\n\n/** @internal */\nexport const useGroupedItems = (\n items: ReadonlyArray<BackstageItem>\n): GroupedItems => {\n return React.useMemo(() => {\n const grouped = items.reduce<GroupedItems>((acc, item) => {\n if (ConditionalBooleanValue.getValue(item.isHidden)) return acc;\n const groupIndex = acc.findIndex(\n (group) => group[0].groupPriority === item.groupPriority\n );\n if (groupIndex >= 0)\n return [\n ...acc.slice(0, groupIndex),\n [...acc[groupIndex], item],\n ...acc.slice(groupIndex + 1),\n ];\n return [...acc, [item]];\n }, []);\n const sortedGroups = grouped.reduce<GroupedItems>((acc, group) => {\n const sortedGroup = [...group].sort(\n (a, b) => a.itemPriority - b.itemPriority\n );\n return [...acc, sortedGroup];\n }, []);\n return [...sortedGroups].sort(\n (a, b) => a[0].groupPriority - b[0].groupPriority\n );\n }, [items]);\n};\n\n/** Props of [[BackstageComposer]] component.\n * @public\n */\nexport interface BackstageComposerProps extends CommonProps {\n /** React node for an optional header item */\n readonly header?: React.ReactNode;\n /** Indicates whether to place an overlay over the frontstage when the backstage is displayed */\n readonly showOverlay?: boolean;\n /** List of static backstage items to show. Can be undefined in UiItemsProviders are used to populate backstage. */\n readonly items?: BackstageItem[];\n /** If true and only one stage launcher item is found, do not show entry in backstage */\n readonly hideSoloStageEntry?: boolean;\n}\n\n/** Backstage component composed from [[UiFramework.backstage]] items.\n * @public\n */\nexport function BackstageComposer(props: BackstageComposerProps) {\n const [defaultItemsManager, setDefaultItemsManager] = React.useState(\n new BackstageItemsManager(props.items)\n );\n const initialItems = React.useRef(props.items);\n\n React.useEffect(() => {\n if (initialItems.current !== props.items) {\n initialItems.current = props.items;\n setDefaultItemsManager(new BackstageItemsManager(props.items));\n }\n }, [props.items]);\n\n const manager = useBackstageManager();\n const isOpen = useIsBackstageOpen(manager);\n const safeAreaInsets = React.useContext(SafeAreaContext);\n const handleClose = React.useCallback(() => {\n manager.close();\n }, [manager]);\n\n const defaultItems = useDefaultBackstageItems(defaultItemsManager);\n const syncIdsOfInterest = React.useMemo(\n () => BackstageItemsManager.getSyncIdsOfInterest(defaultItems),\n [defaultItems]\n );\n useBackstageItemSyncEffect(defaultItemsManager, syncIdsOfInterest);\n\n const [addonItemsManager] = React.useState(new BackstageItemsManager());\n const addonItems = useUiItemsProviderBackstageItems(addonItemsManager);\n const addonSyncIdsOfInterest = React.useMemo(\n () => BackstageItemsManager.getSyncIdsOfInterest(addonItems),\n [addonItems]\n );\n useBackstageItemSyncEffect(addonItemsManager, addonSyncIdsOfInterest);\n\n const combinedBackstageItems = React.useMemo(\n () => combineItems(defaultItems, addonItems, !!props.hideSoloStageEntry),\n [defaultItems, addonItems, props.hideSoloStageEntry]\n );\n const groups = useGroupedItems(combinedBackstageItems);\n return (\n <NZ_Backstage\n className={props.className}\n header={props.header}\n isOpen={isOpen}\n onClose={handleClose}\n safeAreaInsets={safeAreaInsets}\n showOverlay={props.showOverlay}\n style={props.style}\n >\n {groups.map((group, groupIndex) =>\n group.map((item, itemIndex) => {\n const composerItem = (\n <BackstageComposerItem item={item} key={item.id} />\n );\n return itemIndex === 0 && groupIndex > 0 ? (\n <React.Fragment key={groupIndex}>\n <BackstageSeparator />\n {composerItem}\n </React.Fragment>\n ) : (\n composerItem\n );\n })\n )}\n </NZ_Backstage>\n );\n}\n"]}
1
+ {"version":3,"file":"BackstageComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/BackstageComposer.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 Backstage\n */\n\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport * as React from \"react\";\nimport { Backstage as NZ_Backstage } from \"../layout/backstage/Backstage\";\nimport { BackstageSeparator } from \"../layout/backstage/Separator\";\nimport { SafeAreaContext } from \"../safearea/SafeAreaContext\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\nimport { BackstageComposerItem } from \"./BackstageComposerItem\";\nimport { isBackstageStageLauncher } from \"./BackstageItem\";\nimport { BackstageItemsManager } from \"./BackstageItemsManager\";\nimport { useBackstageManager, useIsBackstageOpen } from \"./BackstageManager\";\nimport { useDefaultBackstageItems } from \"./useDefaultBackstageItems\";\nimport { useUiItemsProviderBackstageItems } from \"./useUiItemsProviderBackstageItems\";\n\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { UiSyncEventArgs } from \"../syncui/UiSyncEvent\";\nimport type { BackstageItem } from \"./BackstageItem\";\n// cSpell:ignore safearea\n\n/** Private function to set up sync event monitoring of backstage items */\nfunction useBackstageItemSyncEffect(\n itemsManager: BackstageItemsManager,\n syncIdsOfInterest: string[]\n) {\n const isInitialMount = React.useRef(true);\n\n React.useEffect(() => {\n if (isInitialMount.current) {\n isInitialMount.current = false;\n // initialize the display state of any items with syncIds/condition defined\n itemsManager.refreshAffectedItems(new Set(syncIdsOfInterest));\n }\n\n return SyncUiEventDispatcher.onSyncUiEvent.addListener(\n (\n args: UiSyncEventArgs // eslint-disable-line deprecation/deprecation\n ) => {\n if (0 === syncIdsOfInterest.length) return;\n\n // istanbul ignore else\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n // process each item that has interest\n itemsManager.refreshAffectedItems(args.eventIds);\n }\n }\n );\n }, [itemsManager, itemsManager.items, syncIdsOfInterest]);\n}\n\n/** local function to combine items from Stage and from Extensions */\nfunction combineItems(\n stageItems: ReadonlyArray<BackstageItem>,\n addonItems: ReadonlyArray<BackstageItem>,\n hideSoloStageEntry: boolean\n): ReadonlyArray<BackstageItem> {\n let items: Array<BackstageItem> = [];\n if (stageItems.length) {\n // Walk through each and ensure no duplicate ids are added.\n stageItems.forEach((srcItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n items.push(srcItem);\n }\n });\n }\n if (addonItems.length) {\n // Walk through each and ensure no duplicate ids are added.\n addonItems.forEach((srcItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n items.push(srcItem);\n }\n });\n }\n\n if (hideSoloStageEntry) {\n // per user request don't show stage launcher if only one stage is available\n const numberOfFrontstageItems = items.reduce(\n (accumulator, item) =>\n accumulator + (isBackstageStageLauncher(item) ? 1 : 0),\n 0\n );\n if (1 === numberOfFrontstageItems)\n items = items.filter((item) => !isBackstageStageLauncher(item));\n }\n\n return items;\n}\n\n/** @internal */\nexport type GroupedItems = ReadonlyArray<ReadonlyArray<BackstageItem>>;\n\n/** @internal */\nexport const useGroupedItems = (\n items: ReadonlyArray<BackstageItem>\n): GroupedItems => {\n return React.useMemo(() => {\n const grouped = items.reduce<GroupedItems>((acc, item) => {\n if (ConditionalBooleanValue.getValue(item.isHidden)) return acc;\n const groupIndex = acc.findIndex(\n (group) => group[0].groupPriority === item.groupPriority\n );\n if (groupIndex >= 0)\n return [\n ...acc.slice(0, groupIndex),\n [...acc[groupIndex], item],\n ...acc.slice(groupIndex + 1),\n ];\n return [...acc, [item]];\n }, []);\n const sortedGroups = grouped.reduce<GroupedItems>((acc, group) => {\n const sortedGroup = [...group].sort(\n (a, b) => a.itemPriority - b.itemPriority\n );\n return [...acc, sortedGroup];\n }, []);\n return [...sortedGroups].sort(\n (a, b) => a[0].groupPriority - b[0].groupPriority\n );\n }, [items]);\n};\n\n/** Props of [[BackstageComposer]] component.\n * @public\n */\nexport interface BackstageComposerProps extends CommonProps {\n /** React node for an optional header item */\n readonly header?: React.ReactNode;\n /** Indicates whether to place an overlay over the frontstage when the backstage is displayed */\n readonly showOverlay?: boolean;\n /** List of static backstage items to show. Can be undefined in UiItemsProviders are used to populate backstage. */\n readonly items?: BackstageItem[];\n /** If true and only one stage launcher item is found, do not show entry in backstage */\n readonly hideSoloStageEntry?: boolean;\n}\n\n/** Backstage component composed from [[UiFramework.backstage]] items.\n * @public\n */\nexport function BackstageComposer(props: BackstageComposerProps) {\n const [defaultItemsManager, setDefaultItemsManager] = React.useState(\n new BackstageItemsManager(props.items)\n );\n const initialItems = React.useRef(props.items);\n\n React.useEffect(() => {\n if (initialItems.current !== props.items) {\n initialItems.current = props.items;\n setDefaultItemsManager(new BackstageItemsManager(props.items));\n }\n }, [props.items]);\n\n const manager = useBackstageManager();\n const isOpen = useIsBackstageOpen(manager);\n const safeAreaInsets = React.useContext(SafeAreaContext);\n const handleClose = React.useCallback(() => {\n manager.close();\n }, [manager]);\n\n const defaultItems = useDefaultBackstageItems(defaultItemsManager);\n const syncIdsOfInterest = React.useMemo(\n () => BackstageItemsManager.getSyncIdsOfInterest(defaultItems),\n [defaultItems]\n );\n useBackstageItemSyncEffect(defaultItemsManager, syncIdsOfInterest);\n\n const [addonItemsManager] = React.useState(new BackstageItemsManager());\n const addonItems = useUiItemsProviderBackstageItems(addonItemsManager);\n const addonSyncIdsOfInterest = React.useMemo(\n () => BackstageItemsManager.getSyncIdsOfInterest(addonItems),\n [addonItems]\n );\n useBackstageItemSyncEffect(addonItemsManager, addonSyncIdsOfInterest);\n\n const combinedBackstageItems = React.useMemo(\n () => combineItems(defaultItems, addonItems, !!props.hideSoloStageEntry),\n [defaultItems, addonItems, props.hideSoloStageEntry]\n );\n const groups = useGroupedItems(combinedBackstageItems);\n return (\n <NZ_Backstage\n className={props.className}\n header={props.header}\n isOpen={isOpen}\n onClose={handleClose}\n safeAreaInsets={safeAreaInsets}\n showOverlay={props.showOverlay}\n style={props.style}\n >\n {groups.map((group, groupIndex) =>\n group.map((item, itemIndex) => {\n const composerItem = (\n <BackstageComposerItem item={item} key={item.id} />\n );\n return itemIndex === 0 && groupIndex > 0 ? (\n <React.Fragment key={groupIndex}>\n <BackstageSeparator />\n {composerItem}\n </React.Fragment>\n ) : (\n composerItem\n );\n })\n )}\n </NZ_Backstage>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BackstageComposerItem.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/BackstageComposerItem.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 Backstage\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { Badge, Icon } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useActiveFrontstageId } from \"../frontstage/FrontstageDef\";\nimport { BackstageItem as NZ_BackstageItem } from \"../layout/backstage/Item\";\nimport { isProviderItem } from \"../ui-items-provider/isProviderItem\";\nimport type {\n BackstageActionItem,\n BackstageItem,\n BackstageStageLauncher,\n} from \"./BackstageItem\";\nimport { isBackstageStageLauncher } from \"./BackstageItem\";\nimport { useBackstageManager } from \"./BackstageManager\";\n\n/** @internal */\nexport interface BackstageComposerActionItemProps {\n readonly item: BackstageActionItem;\n}\n\n/** @internal */\nexport function BackstageComposerActionItem({\n item,\n}: BackstageComposerActionItemProps) {\n const manager = useBackstageManager();\n const handleClick = React.useCallback(() => {\n manager.close();\n item.execute();\n }, [manager, item]);\n return (\n <NZ_BackstageItem\n itemId={item.id}\n providerId={isProviderItem(item) ? item.providerId : undefined}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={<Icon iconSpec={item.icon} />}\n isActive={ConditionalBooleanValue.getValue(item.isActive)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n onClick={handleClick}\n subtitle={ConditionalStringValue.getValue(item.subtitle)}\n badge={<Badge type={item.badge} />}\n >\n {ConditionalStringValue.getValue(item.label)}\n </NZ_BackstageItem>\n );\n}\n\n/** @internal */\nexport interface BackstageComposerStageLauncherProps {\n readonly item: BackstageStageLauncher;\n}\n\n/** @internal */\nexport function BackstageComposerStageLauncher({\n item,\n}: BackstageComposerStageLauncherProps) {\n const manager = useBackstageManager();\n const handleClick = React.useCallback(() => {\n manager.close();\n if (!UiFramework.frontstages.hasFrontstage(item.stageId))\n return Logger.logError(\n \"BackstageComposerStageLauncher\",\n `Frontstage with id '${item.stageId}' not found`\n );\n void UiFramework.frontstages.setActiveFrontstage(item.stageId);\n }, [manager, item.stageId]);\n const activeFrontstageId = useActiveFrontstageId();\n const isActive = ConditionalBooleanValue.getValue(\n item.isActive ?? item.stageId === activeFrontstageId\n );\n return (\n <NZ_BackstageItem\n itemId={item.id}\n providerId={isProviderItem(item) ? item.providerId : undefined}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={<Icon iconSpec={item.icon} />}\n isActive={isActive}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n onClick={handleClick}\n subtitle={ConditionalStringValue.getValue(item.subtitle)}\n badge={<Badge type={item.badge} />}\n >\n {ConditionalStringValue.getValue(item.label)}\n </NZ_BackstageItem>\n );\n}\n\n/** Props of [[BackstageComposerItem]] component.\n * @internal\n */\nexport interface BackstageComposerItemProps {\n /** Backstage item to render */\n readonly item: BackstageItem;\n}\n\n/** Item of [[BackstageComposer]].\n * @internal\n */\nexport function BackstageComposerItem({ item }: BackstageComposerItemProps) {\n if (isBackstageStageLauncher(item)) {\n return <BackstageComposerStageLauncher item={item} />;\n }\n return <BackstageComposerActionItem item={item} />;\n}\n"]}
1
+ {"version":3,"file":"BackstageComposerItem.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/BackstageComposerItem.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 Backstage\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { Badge, Icon } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useActiveFrontstageId } from \"../frontstage/FrontstageDef\";\nimport { BackstageItem as NZ_BackstageItem } from \"../layout/backstage/Item\";\nimport { isProviderItem } from \"../ui-items-provider/isProviderItem\";\nimport type {\n BackstageActionItem,\n BackstageItem,\n BackstageStageLauncher,\n} from \"./BackstageItem\";\nimport { isBackstageStageLauncher } from \"./BackstageItem\";\nimport { useBackstageManager } from \"./BackstageManager\";\n\n/** @internal */\nexport interface BackstageComposerActionItemProps {\n readonly item: BackstageActionItem;\n}\n\n/** @internal */\nexport function BackstageComposerActionItem({\n item,\n}: BackstageComposerActionItemProps) {\n const manager = useBackstageManager();\n const handleClick = React.useCallback(() => {\n manager.close();\n item.execute();\n }, [manager, item]);\n return (\n <NZ_BackstageItem\n itemId={item.id}\n providerId={isProviderItem(item) ? item.providerId : undefined}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={<Icon iconSpec={item.icon} />}\n isActive={ConditionalBooleanValue.getValue(item.isActive)}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n onClick={handleClick}\n subtitle={ConditionalStringValue.getValue(item.subtitle)}\n badge={<Badge type={item.badge} />}\n >\n {ConditionalStringValue.getValue(item.label)}\n </NZ_BackstageItem>\n );\n}\n\n/** @internal */\nexport interface BackstageComposerStageLauncherProps {\n readonly item: BackstageStageLauncher;\n}\n\n/** @internal */\nexport function BackstageComposerStageLauncher({\n item,\n}: BackstageComposerStageLauncherProps) {\n const manager = useBackstageManager();\n const handleClick = React.useCallback(() => {\n manager.close();\n if (!UiFramework.frontstages.hasFrontstage(item.stageId))\n return Logger.logError(\n \"BackstageComposerStageLauncher\",\n `Frontstage with id '${item.stageId}' not found`\n );\n void UiFramework.frontstages.setActiveFrontstage(item.stageId);\n }, [manager, item.stageId]);\n const activeFrontstageId = useActiveFrontstageId();\n const isActive = ConditionalBooleanValue.getValue(\n item.isActive ?? item.stageId === activeFrontstageId\n );\n return (\n <NZ_BackstageItem\n itemId={item.id}\n providerId={isProviderItem(item) ? item.providerId : undefined}\n itemPriority={item.itemPriority}\n groupPriority={item.groupPriority}\n icon={<Icon iconSpec={item.icon} />}\n isActive={isActive}\n isDisabled={ConditionalBooleanValue.getValue(item.isDisabled)}\n onClick={handleClick}\n subtitle={ConditionalStringValue.getValue(item.subtitle)}\n badge={<Badge type={item.badge} />}\n >\n {ConditionalStringValue.getValue(item.label)}\n </NZ_BackstageItem>\n );\n}\n\n/** Props of [[BackstageComposerItem]] component.\n * @internal\n */\nexport interface BackstageComposerItemProps {\n /** Backstage item to render */\n readonly item: BackstageItem;\n}\n\n/** Item of [[BackstageComposer]].\n * @internal\n */\nexport function BackstageComposerItem({ item }: BackstageComposerItemProps) {\n if (isBackstageStageLauncher(item)) {\n return <BackstageComposerStageLauncher item={item} />;\n }\n return <BackstageComposerActionItem item={item} />;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BackstageItemsManager.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/BackstageItemsManager.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 Backstage\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { BackstageItem } from \"./BackstageItem\";\n\n/** Arguments of [[BackstageItemsManager.onChanged]] event.\n * @internal\n */\nexport interface BackstageItemsChangedArgs {\n readonly items: ReadonlyArray<BackstageItem>;\n}\n\n/**\n * Controls backstage items.\n * @internal\n */\nexport class BackstageItemsManager {\n private _items: ReadonlyArray<BackstageItem> = [];\n\n constructor(items?: ReadonlyArray<BackstageItem>) {\n // istanbul ignore else\n if (items) this.loadItemsInternal(items, true, false);\n }\n\n private loadItemsInternal(\n items: ReadonlyArray<BackstageItem>,\n processConditions: boolean,\n sendItemChanged: boolean\n ) {\n if (processConditions && items) {\n const eventIds = BackstageItemsManager.getSyncIdsOfInterest(items);\n if (0 !== eventIds.length) {\n const { itemsUpdated, updatedItems } =\n this.internalRefreshAffectedItems(items, new Set(eventIds));\n\n // istanbul ignore else\n if (itemsUpdated) items = updatedItems;\n }\n }\n\n this._items = items;\n if (sendItemChanged) this.onItemsChanged.raiseEvent({ items });\n }\n\n /** load items but do not fire onItemsChanged\n * @internal\n */\n public loadItems(items: ReadonlyArray<BackstageItem>) {\n this.loadItemsInternal(items, true, false);\n }\n\n /** Event raised when backstage items are changed.\n * @internal\n */\n public readonly onItemsChanged = new BeEvent<\n (args: BackstageItemsChangedArgs) => void\n >();\n\n public get items(): ReadonlyArray<BackstageItem> {\n return this._items;\n }\n\n public set items(items: ReadonlyArray<BackstageItem>) {\n // istanbul ignore else\n if (items !== this._items) this.loadItemsInternal(items, true, true);\n }\n\n /** @internal */\n public add(itemOrItems: BackstageItem | ReadonlyArray<BackstageItem>) {\n let itemsToAdd;\n if (!Array.isArray(itemOrItems)) itemsToAdd = [itemOrItems];\n else {\n itemsToAdd = itemOrItems.filter(\n (itemToAdd, index) =>\n itemOrItems.findIndex((item) => item.id === itemToAdd.id) === index\n );\n }\n itemsToAdd = itemsToAdd.filter(\n (itemToAdd) =>\n this._items.find((item) => item.id === itemToAdd.id) === undefined\n );\n if (itemsToAdd.length === 0) return;\n const items = [...this._items, ...itemsToAdd];\n this.items = items;\n }\n\n /** @internal */\n public remove(\n itemIdOrItemIds: BackstageItem[\"id\"] | ReadonlyArray<BackstageItem[\"id\"]>\n ) {\n const items = this._items.filter((item) => {\n return Array.isArray(itemIdOrItemIds)\n ? !itemIdOrItemIds.find((itemId) => itemId === item.id)\n : item.id !== itemIdOrItemIds;\n });\n this.items = items;\n }\n\n /** @internal */\n public static getSyncIdsOfInterest(\n items: readonly BackstageItem[]\n ): string[] {\n const eventIds = new Set<string>();\n items.forEach((item) => {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } /* istanbul ignore else */ else if (\n entry instanceof ConditionalStringValue\n ) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n });\n return [...eventIds.values()];\n }\n\n private internalRefreshAffectedItems(\n items: readonly BackstageItem[],\n eventIds: Set<string>\n ): { itemsUpdated: boolean; updatedItems: BackstageItem[] } {\n // istanbul ignore next\n if (0 === eventIds.size) return { itemsUpdated: false, updatedItems: [] };\n\n let updateRequired = false;\n\n const newItems: BackstageItem[] = [];\n for (const item of items) {\n const updatedItem = { ...item };\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (entry instanceof ConditionalBooleanValue) {\n // istanbul ignore else\n if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n updateRequired = true;\n } /* istanbul ignore else */ else if (\n entry instanceof ConditionalStringValue\n ) {\n // istanbul ignore else\n if (ConditionalStringValue.refreshValue(entry, eventIds))\n updateRequired = true;\n }\n }\n\n newItems.push(updatedItem);\n }\n\n return { itemsUpdated: updateRequired, updatedItems: newItems };\n }\n\n public refreshAffectedItems(eventIds: Set<string>) {\n // istanbul ignore next\n if (0 === eventIds.size) return;\n\n const { itemsUpdated, updatedItems } = this.internalRefreshAffectedItems(\n this.items,\n eventIds\n );\n\n // istanbul ignore else\n if (itemsUpdated) this.loadItemsInternal(updatedItems, false, true);\n }\n}\n"]}
1
+ {"version":3,"file":"BackstageItemsManager.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/BackstageItemsManager.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 Backstage\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { BackstageItem } from \"./BackstageItem\";\n\n/** Arguments of [[BackstageItemsManager.onChanged]] event.\n * @internal\n */\nexport interface BackstageItemsChangedArgs {\n readonly items: ReadonlyArray<BackstageItem>;\n}\n\n/**\n * Controls backstage items.\n * @internal\n */\nexport class BackstageItemsManager {\n private _items: ReadonlyArray<BackstageItem> = [];\n\n constructor(items?: ReadonlyArray<BackstageItem>) {\n // istanbul ignore else\n if (items) this.loadItemsInternal(items, true, false);\n }\n\n private loadItemsInternal(\n items: ReadonlyArray<BackstageItem>,\n processConditions: boolean,\n sendItemChanged: boolean\n ) {\n if (processConditions && items) {\n const eventIds = BackstageItemsManager.getSyncIdsOfInterest(items);\n if (0 !== eventIds.length) {\n const { itemsUpdated, updatedItems } =\n this.internalRefreshAffectedItems(items, new Set(eventIds));\n\n // istanbul ignore else\n if (itemsUpdated) items = updatedItems;\n }\n }\n\n this._items = items;\n if (sendItemChanged) this.onItemsChanged.raiseEvent({ items });\n }\n\n /** load items but do not fire onItemsChanged\n * @internal\n */\n public loadItems(items: ReadonlyArray<BackstageItem>) {\n this.loadItemsInternal(items, true, false);\n }\n\n /** Event raised when backstage items are changed.\n * @internal\n */\n public readonly onItemsChanged = new BeEvent<\n (args: BackstageItemsChangedArgs) => void\n >();\n\n public get items(): ReadonlyArray<BackstageItem> {\n return this._items;\n }\n\n public set items(items: ReadonlyArray<BackstageItem>) {\n // istanbul ignore else\n if (items !== this._items) this.loadItemsInternal(items, true, true);\n }\n\n /** @internal */\n public add(itemOrItems: BackstageItem | ReadonlyArray<BackstageItem>) {\n let itemsToAdd;\n if (!Array.isArray(itemOrItems)) itemsToAdd = [itemOrItems];\n else {\n itemsToAdd = itemOrItems.filter(\n (itemToAdd, index) =>\n itemOrItems.findIndex((item) => item.id === itemToAdd.id) === index\n );\n }\n itemsToAdd = itemsToAdd.filter(\n (itemToAdd) =>\n this._items.find((item) => item.id === itemToAdd.id) === undefined\n );\n if (itemsToAdd.length === 0) return;\n const items = [...this._items, ...itemsToAdd];\n this.items = items;\n }\n\n /** @internal */\n public remove(\n itemIdOrItemIds: BackstageItem[\"id\"] | ReadonlyArray<BackstageItem[\"id\"]>\n ) {\n const items = this._items.filter((item) => {\n return Array.isArray(itemIdOrItemIds)\n ? !itemIdOrItemIds.find((itemId) => itemId === item.id)\n : item.id !== itemIdOrItemIds;\n });\n this.items = items;\n }\n\n /** @internal */\n public static getSyncIdsOfInterest(\n items: readonly BackstageItem[]\n ): string[] {\n const eventIds = new Set<string>();\n items.forEach((item) => {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } /* istanbul ignore else */ else if (\n entry instanceof ConditionalStringValue\n ) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n });\n return [...eventIds.values()];\n }\n\n private internalRefreshAffectedItems(\n items: readonly BackstageItem[],\n eventIds: Set<string>\n ): { itemsUpdated: boolean; updatedItems: BackstageItem[] } {\n // istanbul ignore next\n if (0 === eventIds.size) return { itemsUpdated: false, updatedItems: [] };\n\n let updateRequired = false;\n\n const newItems: BackstageItem[] = [];\n for (const item of items) {\n const updatedItem = { ...item };\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (entry instanceof ConditionalBooleanValue) {\n // istanbul ignore else\n if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n updateRequired = true;\n } /* istanbul ignore else */ else if (\n entry instanceof ConditionalStringValue\n ) {\n // istanbul ignore else\n if (ConditionalStringValue.refreshValue(entry, eventIds))\n updateRequired = true;\n }\n }\n\n newItems.push(updatedItem);\n }\n\n return { itemsUpdated: updateRequired, updatedItems: newItems };\n }\n\n public refreshAffectedItems(eventIds: Set<string>) {\n // istanbul ignore next\n if (0 === eventIds.size) return;\n\n const { itemsUpdated, updatedItems } = this.internalRefreshAffectedItems(\n this.items,\n eventIds\n );\n\n // istanbul ignore else\n if (itemsUpdated) this.loadItemsInternal(updatedItems, false, true);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useDefaultBackstageItems.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/useDefaultBackstageItems.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,OAA8B,EACJ,EAAE;IAC5B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,cAAc,CAAC,OAAO;YAAE,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;aACtD;YACH,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACzB;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YACjD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,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 Backstage\n */\n\nimport * as React from \"react\";\nimport type { BackstageItem } from \"./BackstageItem\";\nimport type { BackstageItemsManager } from \"./BackstageItemsManager\";\n\n/** Hook that returns items from [[BackstageItemsManager]].\n * @internal\n */\nexport const useDefaultBackstageItems = (\n manager: BackstageItemsManager\n): readonly BackstageItem[] => {\n const [items, setItems] = React.useState(manager.items);\n const isInitialMount = React.useRef(true);\n React.useEffect(() => {\n if (isInitialMount.current) isInitialMount.current = false;\n else {\n setItems(manager.items);\n }\n }, [manager, manager.items]);\n React.useEffect(() => {\n return manager.onItemsChanged.addListener((args) => {\n setItems(args.items);\n });\n }, [manager]);\n return items;\n};\n"]}
1
+ {"version":3,"file":"useDefaultBackstageItems.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/useDefaultBackstageItems.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,OAA8B,EACJ,EAAE;IAC5B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,cAAc,CAAC,OAAO;YAAE,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;aACtD,CAAC;YACJ,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YACjD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,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 Backstage\n */\n\nimport * as React from \"react\";\nimport type { BackstageItem } from \"./BackstageItem\";\nimport type { BackstageItemsManager } from \"./BackstageItemsManager\";\n\n/** Hook that returns items from [[BackstageItemsManager]].\n * @internal\n */\nexport const useDefaultBackstageItems = (\n manager: BackstageItemsManager\n): readonly BackstageItem[] => {\n const [items, setItems] = React.useState(manager.items);\n const isInitialMount = React.useRef(true);\n React.useEffect(() => {\n if (isInitialMount.current) isInitialMount.current = false;\n else {\n setItems(manager.items);\n }\n }, [manager, manager.items]);\n React.useEffect(() => {\n return manager.onItemsChanged.addListener((args) => {\n setItems(args.items);\n });\n }, [manager]);\n return items;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useUiItemsProviderBackstageItems.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/useUiItemsProviderBackstageItems.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAErF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAGrE;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,OAA8B,EACJ,EAAE;IAC5B,MAAM,iBAAiB,GAAG,4BAA4B,EAAE,CAAC;IACzD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CACtC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,CACxD,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,wHAAwH;IACxH,2DAA2D;IAC3D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,uBAAuB;QACvB,IAAI,YAAY,CAAC,OAAO,KAAK,WAAW,EAAE;YACxC,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC;YACnC,MAAM,cAAc,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAC1D,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAClC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACzB;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACjC,sEAAsE;IACtE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YACjD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,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 StatusBar\n */\n\nimport * as React from \"react\";\nimport { useAvailableUiItemsProviders } from \"../hooks/useAvailableUiItemsProviders\";\nimport type { BackstageItem } from \"./BackstageItem\";\nimport { UiItemsManager } from \"../ui-items-provider/UiItemsManager\";\nimport type { BackstageItemsManager } from \"./BackstageItemsManager\";\n\n/** Hook that returns items from [[BackstageItemsManager]].\n * @public\n */\nexport const useUiItemsProviderBackstageItems = (\n manager: BackstageItemsManager\n): readonly BackstageItem[] => {\n const uiItemProviderIds = useAvailableUiItemsProviders();\n const [items, setItems] = React.useState(\n manager ? manager.items : /* istanbul ignore next */ []\n );\n const providersRef = React.useRef(\"\");\n // gathers items from registered extensions - dependent on when a UiItemsProvider is register or unregistered and if the\n // current stage's composer allows entries from extensions.\n React.useEffect(() => {\n const uiProviders = uiItemProviderIds.join(\"-\");\n // istanbul ignore else\n if (providersRef.current !== uiProviders) {\n providersRef.current = uiProviders;\n const backstageItems = UiItemsManager.getBackstageItems();\n manager.loadItems(backstageItems);\n setItems(manager.items);\n }\n }, [manager, uiItemProviderIds]);\n // handle item changes caused by calls to UiFramework.backstageManager\n React.useEffect(() => {\n return manager.onItemsChanged.addListener((args) => {\n setItems(args.items);\n });\n }, [manager]);\n return items;\n};\n"]}
1
+ {"version":3,"file":"useUiItemsProviderBackstageItems.js","sourceRoot":"","sources":["../../../../src/appui-react/backstage/useUiItemsProviderBackstageItems.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAErF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAGrE;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,OAA8B,EACJ,EAAE;IAC5B,MAAM,iBAAiB,GAAG,4BAA4B,EAAE,CAAC;IACzD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CACtC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,CACxD,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtC,wHAAwH;IACxH,2DAA2D;IAC3D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,uBAAuB;QACvB,IAAI,YAAY,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACzC,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC;YACnC,MAAM,cAAc,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAC;YAC1D,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAClC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACjC,sEAAsE;IACtE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YACjD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC,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 StatusBar\n */\n\nimport * as React from \"react\";\nimport { useAvailableUiItemsProviders } from \"../hooks/useAvailableUiItemsProviders\";\nimport type { BackstageItem } from \"./BackstageItem\";\nimport { UiItemsManager } from \"../ui-items-provider/UiItemsManager\";\nimport type { BackstageItemsManager } from \"./BackstageItemsManager\";\n\n/** Hook that returns items from [[BackstageItemsManager]].\n * @public\n */\nexport const useUiItemsProviderBackstageItems = (\n manager: BackstageItemsManager\n): readonly BackstageItem[] => {\n const uiItemProviderIds = useAvailableUiItemsProviders();\n const [items, setItems] = React.useState(\n manager ? manager.items : /* istanbul ignore next */ []\n );\n const providersRef = React.useRef(\"\");\n // gathers items from registered extensions - dependent on when a UiItemsProvider is register or unregistered and if the\n // current stage's composer allows entries from extensions.\n React.useEffect(() => {\n const uiProviders = uiItemProviderIds.join(\"-\");\n // istanbul ignore else\n if (providersRef.current !== uiProviders) {\n providersRef.current = uiProviders;\n const backstageItems = UiItemsManager.getBackstageItems();\n manager.loadItems(backstageItems);\n setItems(manager.items);\n }\n }, [manager, uiItemProviderIds]);\n // handle item changes caused by calls to UiFramework.backstageManager\n React.useEffect(() => {\n return manager.onItemsChanged.addListener((args) => {\n setItems(args.items);\n });\n }, [manager]);\n return items;\n};\n"]}