@itwin/appui-react 5.18.0 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/lib/appui-react/UiFramework.js +20 -13
  3. package/lib/appui-react/UiFramework.js.map +1 -1
  4. package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  5. package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  6. package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
  7. package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  8. package/lib/appui-react/accudraw/Calculator.js +92 -98
  9. package/lib/appui-react/accudraw/Calculator.js.map +1 -1
  10. package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
  11. package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  12. package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
  13. package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
  14. package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
  15. package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  16. package/lib/appui-react/accudraw/MenuButton.js +20 -20
  17. package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
  18. package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
  19. package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
  20. package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
  21. package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  22. package/lib/appui-react/backstage/BackstageManager.js +1 -3
  23. package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
  24. package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
  25. package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
  26. package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
  27. package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  28. package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
  29. package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
  30. package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  31. package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
  32. package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  33. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
  34. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  35. package/lib/appui-react/configurableui/TimeTracker.js +25 -27
  36. package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
  37. package/lib/appui-react/content/ContentControl.js +2 -1
  38. package/lib/appui-react/content/ContentControl.js.map +1 -1
  39. package/lib/appui-react/content/ContentGroup.js +8 -4
  40. package/lib/appui-react/content/ContentGroup.js.map +1 -1
  41. package/lib/appui-react/content/ContentLayout.js +47 -38
  42. package/lib/appui-react/content/ContentLayout.js.map +1 -1
  43. package/lib/appui-react/content/IModelViewport.js +28 -23
  44. package/lib/appui-react/content/IModelViewport.js.map +1 -1
  45. package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
  46. package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  47. package/lib/appui-react/content/InternalContentViewManager.js +9 -8
  48. package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
  49. package/lib/appui-react/content/StandardContentLayouts.js +141 -141
  50. package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
  51. package/lib/appui-react/content/ViewportContentControl.js +25 -22
  52. package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
  53. package/lib/appui-react/cursor/CursorInformation.js +7 -6
  54. package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
  55. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
  56. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  57. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
  58. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  59. package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
  60. package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
  61. package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
  62. package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  63. package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
  64. package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  65. package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
  66. package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  67. package/lib/appui-react/dialog/ModelessDialog.js +3 -3
  68. package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
  69. package/lib/appui-react/feedback/ElementTooltip.js +3 -1
  70. package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
  71. package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
  72. package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
  73. package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
  74. package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
  75. package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
  76. package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  77. package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
  78. package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  79. package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
  80. package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  81. package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
  82. package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  83. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
  84. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  85. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
  86. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  87. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
  88. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  89. package/lib/appui-react/layout/backstage/Backstage.js +11 -14
  90. package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
  91. package/lib/appui-react/layout/base/DragManager.js +6 -7
  92. package/lib/appui-react/layout/base/DragManager.js.map +1 -1
  93. package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
  94. package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  95. package/lib/appui-react/layout/popup/Tooltip.js +8 -11
  96. package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
  97. package/lib/appui-react/layout/state/NineZoneStateReducer.d.ts.map +1 -1
  98. package/lib/appui-react/layout/state/NineZoneStateReducer.js +8 -4
  99. package/lib/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  100. package/lib/appui-react/layout/widget/Overflow.d.ts.map +1 -1
  101. package/lib/appui-react/layout/widget/Overflow.js +11 -17
  102. package/lib/appui-react/layout/widget/Overflow.js.map +1 -1
  103. package/lib/appui-react/layout/widget/Overflow.scss +3 -48
  104. package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
  105. package/lib/appui-react/layout/widget/Tab.js +7 -5
  106. package/lib/appui-react/layout/widget/Tab.js.map +1 -1
  107. package/lib/appui-react/messages/InputField.js +21 -24
  108. package/lib/appui-react/messages/InputField.js.map +1 -1
  109. package/lib/appui-react/messages/MessageManager.js +39 -38
  110. package/lib/appui-react/messages/MessageManager.js.map +1 -1
  111. package/lib/appui-react/messages/Pointer.js +38 -38
  112. package/lib/appui-react/messages/Pointer.js.map +1 -1
  113. package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
  114. package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
  115. package/lib/appui-react/messages/StatusMessageManager.js +2 -4
  116. package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
  117. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  118. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  119. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  120. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  121. package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
  122. package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  123. package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
  124. package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  125. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
  126. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  127. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
  128. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  129. package/lib/appui-react/pickers/ListPicker.js +28 -28
  130. package/lib/appui-react/pickers/ListPicker.js.map +1 -1
  131. package/lib/appui-react/pickers/ViewSelector.js +87 -86
  132. package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
  133. package/lib/appui-react/popup/CardPopup.js +18 -21
  134. package/lib/appui-react/popup/CardPopup.js.map +1 -1
  135. package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
  136. package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
  137. package/lib/appui-react/popup/InputEditorPopup.js +18 -20
  138. package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
  139. package/lib/appui-react/popup/PopupManager.js +22 -25
  140. package/lib/appui-react/popup/PopupManager.js.map +1 -1
  141. package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
  142. package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  143. package/lib/appui-react/popup/ToolbarPopup.js +18 -21
  144. package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
  145. package/lib/appui-react/redux/ReducerRegistry.js +2 -0
  146. package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
  147. package/lib/appui-react/redux/StateManager.js +4 -1
  148. package/lib/appui-react/redux/StateManager.js.map +1 -1
  149. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
  150. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  151. package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
  152. package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  153. package/lib/appui-react/shared/CommandItemDef.js +3 -3
  154. package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
  155. package/lib/appui-react/shared/CustomItemDef.js +4 -2
  156. package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
  157. package/lib/appui-react/shared/ItemDefBase.js +13 -5
  158. package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
  159. package/lib/appui-react/shared/MenuItem.js +6 -1
  160. package/lib/appui-react/shared/MenuItem.js.map +1 -1
  161. package/lib/appui-react/shared/ToolItemDef.js +1 -1
  162. package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
  163. package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
  164. package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  165. package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
  166. package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  167. package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
  168. package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
  169. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
  170. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  171. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
  172. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  173. package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
  174. package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  175. package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
  176. package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  177. package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
  178. package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  179. package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
  180. package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  181. package/lib/appui-react/toolbar/GroupItem.js +11 -5
  182. package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
  183. package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
  184. package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  185. package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
  186. package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  187. package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
  188. package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  189. package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
  190. package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
  191. package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
  192. package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  193. package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
  194. package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
  195. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
  196. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  197. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
  198. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  199. package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
  200. package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
  201. package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
  202. package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
  203. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
  204. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  205. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
  206. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  207. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
  208. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  209. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
  210. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  211. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
  212. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  213. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
  214. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  215. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
  216. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  217. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
  218. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  219. package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
  220. package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  221. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
  222. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  223. package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
  224. package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  225. package/lib/appui-react/uistate/AppUiSettings.js +41 -33
  226. package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
  227. package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
  228. package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  229. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
  230. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  231. package/lib/appui-react/widgets/WidgetControl.js +2 -0
  232. package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
  233. package/lib/appui-react/widgets/WidgetDef.js +28 -7
  234. package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
  235. package/lib/appui-react/widgets/WidgetHost.js +4 -4
  236. package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
  237. package/lib/appui-react/widgets/WidgetManager.js +5 -7
  238. package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
  239. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  240. package/lib/cjs/appui-react/layout/widget/Overflow.scss +3 -48
  241. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  242. package/lib/esm/appui-react/layout/widget/Overflow.scss +3 -48
  243. package/package.json +10 -11
  244. package/lib/appui-react/layout/widget/Menu.d.ts +0 -16
  245. package/lib/appui-react/layout/widget/Menu.d.ts.map +0 -1
  246. package/lib/appui-react/layout/widget/Menu.js +0 -21
  247. package/lib/appui-react/layout/widget/Menu.js.map +0 -1
  248. package/lib/appui-react/layout/widget/Menu.scss +0 -12
  249. package/lib/cjs/appui-react/layout/widget/Menu.scss +0 -12
  250. package/lib/esm/appui-react/layout/widget/Menu.scss +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"StagePanelDef.js","sourceRoot":"","sources":["../../../src/appui-react/stagepanels/StagePanelDef.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { Draft } from \"immer\";\nimport { produce } from \"immer\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport type { PanelSide } from \"../layout/widget-panels/PanelTypes.js\";\nimport { WidgetDef } from \"../widgets/WidgetDef.js\";\nimport { WidgetHost } from \"../widgets/WidgetHost.js\";\nimport type {\n StagePanelConfig,\n StagePanelSectionConfig,\n StagePanelSizeSpec,\n} from \"./StagePanelConfig.js\";\nimport { StagePanelLocation } from \"./StagePanelLocation.js\";\nimport { StagePanelSection } from \"./StagePanelSection.js\";\nimport { StagePanelState } from \"./StagePanelState.js\";\n\n/** Panel state changed event args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PanelStateChangedEventArgs {\n panelDef: StagePanelDef;\n panelState: StagePanelState;\n}\n\n/** Panel state changed event class.\n * @beta\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PanelStateChangedEvent extends UiEvent<PanelStateChangedEventArgs> {}\n\n/** @internal */\nexport interface PanelSizeChangedEventArgs {\n panelDef: StagePanelDef;\n size: number | undefined;\n}\n\n/** Panel pinned changed event args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PanelPinnedChangedEventArgs {\n panelDef: StagePanelDef;\n pinned: boolean;\n}\n\n/**\n * A StagePanelDef represents each Stage Panel within a Frontstage.\n * @public\n */\nexport class StagePanelDef extends WidgetHost {\n private _initialConfig?: StagePanelConfig;\n private _location: StagePanelLocation = StagePanelLocation.Left;\n private _start = new StagePanelSectionDef();\n private _end = new StagePanelSectionDef();\n\n /** Constructor for PanelDef. */\n constructor() {\n super();\n }\n\n /** @internal */\n public static create(config: StagePanelConfig, location: StagePanelLocation) {\n const def = new StagePanelDef();\n def.initializeFromConfig(config, location);\n return def;\n }\n\n /** @internal */\n public initializeFromConfig(\n config: StagePanelConfig | undefined,\n location: StagePanelLocation\n ) {\n this._location = location;\n this._initialConfig = config;\n this._start.initializeFromConfig(config?.sections?.start);\n this._end.initializeFromConfig(config?.sections?.end);\n }\n\n /** @internal */\n public get initialConfig() {\n return this._initialConfig;\n }\n\n /** Current size of the panel.\n * @deprecated in 4.12.0. Use {@link StagePanelDef.sizeSpec} instead.\n */\n public get size(): number | undefined {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (!state) return this.initialConfig?.size;\n\n const side = toPanelSide(this.location);\n const panel = state.panels[side];\n return panel.size;\n }\n\n public set size(size) {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const side = toPanelSide(this.location);\n frontstageDef.dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size,\n });\n }\n\n /** Current size of the panel */\n public get sizeSpec(): StagePanelSizeSpec | undefined {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return this.initialConfig?.sizeSpec;\n\n const side = toPanelSide(this.location);\n const panel = state.panels[side];\n return panel.size;\n }\n\n public set sizeSpec(size) {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const side = toPanelSide(this.location);\n frontstageDef.dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size,\n });\n }\n\n /** @internal */\n public handleSizeChanged(size: number | undefined) {\n InternalFrontstageManager.onPanelSizeChangedEvent.emit({\n panelDef: this,\n size,\n });\n }\n\n /** Indicates whether the panel is resizable. */\n public get resizable(): boolean {\n return this.defaultResizable;\n }\n\n /** Indicates whether the panel is pinned. */\n public get pinned(): boolean {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return this.defaultPinned;\n\n const side = toPanelSide(this.location);\n const panel = state.panels[side];\n return panel.pinned;\n }\n\n public set pinned(pinned: boolean) {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const side = toPanelSide(this.location);\n frontstageDef.dispatch({\n type: \"PANEL_SET_PINNED\",\n side,\n pinned,\n });\n }\n\n /** @internal */\n public handlePinnedChanged(pinned: boolean) {\n UiFramework.frontstages.onPanelPinnedChangedEvent.emit({\n panelDef: this,\n pinned,\n });\n }\n\n /** Location of panel. */\n public get location(): StagePanelLocation {\n return this._location;\n }\n\n /** Panel state. Defaults to PanelState.Open. */\n public get panelState(): StagePanelState {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return this.defaultState;\n const side = toPanelSide(this.location);\n return getPanelState(state, side);\n }\n\n public set panelState(panelState: StagePanelState) {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const side = toPanelSide(this.location);\n const collapsed = panelState === StagePanelState.Open ? false : true;\n frontstageDef.dispatch({\n type: \"PANEL_SET_COLLAPSED\",\n collapsed,\n side,\n });\n }\n\n /** @internal */\n public handlePanelStateChanged(panelState: StagePanelState) {\n UiFramework.frontstages.onPanelStateChangedEvent.emit({\n panelDef: this,\n panelState,\n });\n }\n\n /** @internal */\n public get defaultState() {\n const defaultState = this._initialConfig?.defaultState;\n return defaultState ?? StagePanelState.Open;\n }\n\n /** @internal */\n public get defaultPinned() {\n return this._initialConfig?.pinned ?? true;\n }\n\n /** @internal */\n public get defaultResizable() {\n return this._initialConfig?.resizable ?? true;\n }\n\n /** Gets the list of Widgets. */\n public override get widgetDefs(): ReadonlyArray<WidgetDef> {\n return [\n ...super.widgetDefs,\n ...this._start.widgetDefs,\n ...this._end.widgetDefs,\n ];\n }\n\n public override updateDynamicWidgetDefs(\n stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n _section: StagePanelSection | undefined,\n allStageWidgetDefs: WidgetDef[]\n ) {\n this._start.updateDynamicWidgetDefs(\n stageId,\n stageUsage,\n location,\n StagePanelSection.Start,\n allStageWidgetDefs\n );\n this._end.updateDynamicWidgetDefs(\n stageId,\n stageUsage,\n location,\n StagePanelSection.End,\n allStageWidgetDefs\n );\n }\n\n /** @internal */\n public getPanelSectionDef(section: StagePanelSection) {\n switch (section) {\n case StagePanelSection.Start: {\n return this._start;\n }\n case StagePanelSection.End: {\n return this._end;\n }\n }\n }\n}\n\n/** @internal */\nexport class StagePanelSectionDef extends WidgetHost {\n /** @internal */\n public initializeFromConfig(config: StagePanelSectionConfig | undefined) {\n config?.forEach((widgetConfig) => {\n const widgetDef = WidgetDef.create(widgetConfig);\n this.addWidgetDef(widgetDef);\n });\n }\n}\n\n/** @internal */\nexport function toPanelSide(location: StagePanelLocation): PanelSide {\n switch (location) {\n case StagePanelLocation.Bottom:\n return \"bottom\";\n case StagePanelLocation.Left:\n return \"left\";\n case StagePanelLocation.Right:\n return \"right\";\n case StagePanelLocation.Top:\n return \"top\";\n }\n}\n\n/** @internal */\nexport const setPanelPinned: (\n nineZone: NineZoneState,\n side: PanelSide,\n pinned: boolean\n) => NineZoneState = produce(\n (nineZone: Draft<NineZoneState>, side: PanelSide, pinned: boolean) => {\n const panel = nineZone.panels[side];\n panel.pinned = pinned;\n }\n);\n\n/** @internal */\nexport function getPanelState(state: NineZoneState, side: PanelSide) {\n const panel = state.panels[side];\n return panel.collapsed ? StagePanelState.Minimized : StagePanelState.Open;\n}\n"]}
1
+ {"version":3,"file":"StagePanelDef.js","sourceRoot":"","sources":["../../../src/appui-react/stagepanels/StagePanelDef.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { Draft } from \"immer\";\nimport { produce } from \"immer\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport type { PanelSide } from \"../layout/widget-panels/PanelTypes.js\";\nimport { WidgetDef } from \"../widgets/WidgetDef.js\";\nimport { WidgetHost } from \"../widgets/WidgetHost.js\";\nimport type {\n StagePanelConfig,\n StagePanelSectionConfig,\n StagePanelSizeSpec,\n} from \"./StagePanelConfig.js\";\nimport { StagePanelLocation } from \"./StagePanelLocation.js\";\nimport { StagePanelSection } from \"./StagePanelSection.js\";\nimport { StagePanelState } from \"./StagePanelState.js\";\n\n/** Panel state changed event args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PanelStateChangedEventArgs {\n panelDef: StagePanelDef;\n panelState: StagePanelState;\n}\n\n/** Panel state changed event class.\n * @beta\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PanelStateChangedEvent extends UiEvent<PanelStateChangedEventArgs> {}\n\n/** @internal */\nexport interface PanelSizeChangedEventArgs {\n panelDef: StagePanelDef;\n size: number | undefined;\n}\n\n/** Panel pinned changed event args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PanelPinnedChangedEventArgs {\n panelDef: StagePanelDef;\n pinned: boolean;\n}\n\n/**\n * A StagePanelDef represents each Stage Panel within a Frontstage.\n * @public\n */\nexport class StagePanelDef extends WidgetHost {\n private _initialConfig?: StagePanelConfig;\n private _location: StagePanelLocation = StagePanelLocation.Left;\n private _start = new StagePanelSectionDef();\n private _end = new StagePanelSectionDef();\n\n /** Constructor for PanelDef. */\n constructor() {\n super();\n }\n\n /** @internal */\n public static create(config: StagePanelConfig, location: StagePanelLocation) {\n const def = new StagePanelDef();\n def.initializeFromConfig(config, location);\n return def;\n }\n\n /** @internal */\n public initializeFromConfig(\n config: StagePanelConfig | undefined,\n location: StagePanelLocation\n ) {\n this._location = location;\n this._initialConfig = config;\n this._start.initializeFromConfig(config?.sections?.start);\n this._end.initializeFromConfig(config?.sections?.end);\n }\n\n /** @internal */\n public get initialConfig() {\n return this._initialConfig;\n }\n\n /** Current size of the panel.\n * @deprecated in 4.12.0. Use {@link StagePanelDef.sizeSpec} instead.\n */\n public get size(): number | undefined {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (!state) return this.initialConfig?.size;\n\n const side = toPanelSide(this.location);\n const panel = state.panels[side];\n return panel.size;\n }\n\n public set size(size) {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const side = toPanelSide(this.location);\n frontstageDef.dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size,\n });\n }\n\n /** Current size of the panel */\n public get sizeSpec(): StagePanelSizeSpec | undefined {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return this.initialConfig?.sizeSpec;\n\n const side = toPanelSide(this.location);\n const panel = state.panels[side];\n return panel.size;\n }\n\n public set sizeSpec(size) {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const side = toPanelSide(this.location);\n frontstageDef.dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size,\n });\n }\n\n /** @internal */\n public handleSizeChanged(size: number | undefined) {\n InternalFrontstageManager.onPanelSizeChangedEvent.emit({\n panelDef: this,\n size,\n });\n }\n\n /** Indicates whether the panel is resizable. */\n public get resizable(): boolean {\n return this.defaultResizable;\n }\n\n /** Indicates whether the panel is pinned. */\n public get pinned(): boolean {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return this.defaultPinned;\n\n const side = toPanelSide(this.location);\n const panel = state.panels[side];\n return panel.pinned;\n }\n\n public set pinned(pinned: boolean) {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const side = toPanelSide(this.location);\n frontstageDef.dispatch({\n type: \"PANEL_SET_PINNED\",\n side,\n pinned,\n });\n }\n\n /** @internal */\n public handlePinnedChanged(pinned: boolean) {\n UiFramework.frontstages.onPanelPinnedChangedEvent.emit({\n panelDef: this,\n pinned,\n });\n }\n\n /** Location of panel. */\n public get location(): StagePanelLocation {\n return this._location;\n }\n\n /** Panel state. Defaults to PanelState.Open. */\n public get panelState(): StagePanelState {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return this.defaultState;\n const side = toPanelSide(this.location);\n return getPanelState(state, side);\n }\n\n public set panelState(panelState: StagePanelState) {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const side = toPanelSide(this.location);\n const collapsed = panelState === StagePanelState.Open ? false : true;\n frontstageDef.dispatch({\n type: \"PANEL_SET_COLLAPSED\",\n collapsed,\n side,\n });\n }\n\n /** @internal */\n public handlePanelStateChanged(panelState: StagePanelState) {\n UiFramework.frontstages.onPanelStateChangedEvent.emit({\n panelDef: this,\n panelState,\n });\n }\n\n /** @internal */\n public get defaultState() {\n const defaultState = this._initialConfig?.defaultState;\n return defaultState ?? StagePanelState.Open;\n }\n\n /** @internal */\n public get defaultPinned() {\n return this._initialConfig?.pinned ?? true;\n }\n\n /** @internal */\n public get defaultResizable() {\n return this._initialConfig?.resizable ?? true;\n }\n\n /** Gets the list of Widgets. */\n public override get widgetDefs(): ReadonlyArray<WidgetDef> {\n return [\n ...super.widgetDefs,\n ...this._start.widgetDefs,\n ...this._end.widgetDefs,\n ];\n }\n\n public override updateDynamicWidgetDefs(\n stageId: string,\n stageUsage: string,\n location: StagePanelLocation,\n _section: StagePanelSection | undefined,\n allStageWidgetDefs: WidgetDef[]\n ) {\n this._start.updateDynamicWidgetDefs(\n stageId,\n stageUsage,\n location,\n StagePanelSection.Start,\n allStageWidgetDefs\n );\n this._end.updateDynamicWidgetDefs(\n stageId,\n stageUsage,\n location,\n StagePanelSection.End,\n allStageWidgetDefs\n );\n }\n\n /** @internal */\n public getPanelSectionDef(section: StagePanelSection) {\n switch (section) {\n case StagePanelSection.Start: {\n return this._start;\n }\n case StagePanelSection.End: {\n return this._end;\n }\n }\n }\n}\n\n/** @internal */\nexport class StagePanelSectionDef extends WidgetHost {\n /** @internal */\n public initializeFromConfig(config: StagePanelSectionConfig | undefined) {\n config?.forEach((widgetConfig) => {\n const widgetDef = WidgetDef.create(widgetConfig);\n this.addWidgetDef(widgetDef);\n });\n }\n}\n\n/** @internal */\nexport function toPanelSide(location: StagePanelLocation): PanelSide {\n switch (location) {\n case StagePanelLocation.Bottom:\n return \"bottom\";\n case StagePanelLocation.Left:\n return \"left\";\n case StagePanelLocation.Right:\n return \"right\";\n case StagePanelLocation.Top:\n return \"top\";\n }\n}\n\n/** @internal */\nexport const setPanelPinned: (\n nineZone: NineZoneState,\n side: PanelSide,\n pinned: boolean\n) => NineZoneState = produce(\n (nineZone: Draft<NineZoneState>, side: PanelSide, pinned: boolean) => {\n const panel = nineZone.panels[side];\n panel.pinned = pinned;\n }\n);\n\n/** @internal */\nexport function getPanelState(state: NineZoneState, side: PanelSide) {\n const panel = state.panels[side];\n return panel.collapsed ? StagePanelState.Minimized : StagePanelState.Open;\n}\n"]}
@@ -15,15 +15,15 @@ const isInstance = (args) => {
15
15
  * @internal
16
16
  */
17
17
  export class StatusBarItemsManager {
18
+ _items = [];
18
19
  constructor(items) {
19
- this._items = [];
20
- /** Event raised when StatusBar items are changed.
21
- * @internal
22
- */
23
- this.onItemsChanged = new BeEvent();
24
20
  if (items)
25
21
  this.loadItemsInternal(items, true, false);
26
22
  }
23
+ /** Event raised when StatusBar items are changed.
24
+ * @internal
25
+ */
26
+ onItemsChanged = new BeEvent();
27
27
  loadItemsInternal(items, processConditions, sendItemChanged) {
28
28
  if (processConditions && items) {
29
29
  const eventIds = StatusBarItemsManager.getSyncIdsOfInterest(items);
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBarItemsManager.js","sourceRoot":"","sources":["../../../src/appui-react/statusbar/StatusBarItemsManager.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 StatusBar\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { StatusBarItem } from \"./StatusBarItem.js\";\n\ntype InstanceOrArray<T> = T | ReadonlyArray<T>;\n\nconst isInstance = <T>(args: InstanceOrArray<T>): args is T => {\n return !Array.isArray(args);\n};\n\n/** Arguments of [[StatusBarItemsManager.onChanged]] event.\n * @internal\n */\nexport interface StatusBarItemsChangedArgs {\n readonly items: ReadonlyArray<StatusBarItem>;\n}\n\n/**\n * Controls status bar items.\n * @internal\n */\nexport class StatusBarItemsManager {\n private _items: ReadonlyArray<StatusBarItem> = [];\n\n constructor(items?: ReadonlyArray<StatusBarItem>) {\n if (items) this.loadItemsInternal(items, true, false);\n }\n\n /** Event raised when StatusBar items are changed.\n * @internal\n */\n public readonly onItemsChanged = new BeEvent<\n (args: StatusBarItemsChangedArgs) => void\n >();\n\n private loadItemsInternal(\n items: ReadonlyArray<StatusBarItem>,\n processConditions: boolean,\n sendItemChanged: boolean\n ) {\n if (processConditions && items) {\n const eventIds = StatusBarItemsManager.getSyncIdsOfInterest(items);\n if (0 !== eventIds.length) {\n const { itemsUpdated, updatedItems } =\n this.internalRefreshAffectedItems(items, new Set(eventIds));\n\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<StatusBarItem>) {\n this.loadItemsInternal(items, true, false);\n }\n\n /** Get an array of the StatusBar items */\n public get items(): ReadonlyArray<StatusBarItem> {\n return this._items;\n }\n\n public set items(items: ReadonlyArray<StatusBarItem>) {\n if (items !== this._items) this.loadItemsInternal(items, true, true);\n }\n\n public add(itemOrItems: StatusBarItem | ReadonlyArray<StatusBarItem>) {\n let itemsToAdd;\n if (isInstance(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 /** Remove StatusBar items based on id */\n public remove(\n itemIdOrItemIds: StatusBarItem[\"id\"] | ReadonlyArray<StatusBarItem[\"id\"]>\n ) {\n const items = this._items.filter((item) => {\n return isInstance(itemIdOrItemIds)\n ? item.id !== itemIdOrItemIds\n : !itemIdOrItemIds.find((itemId) => itemId === item.id);\n });\n this.items = items;\n }\n\n /** @internal */\n public removeAll() {\n this._items = [];\n }\n\n public static getSyncIdsOfInterest(\n items: readonly StatusBarItem[]\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 } else if (entry instanceof ConditionalStringValue) {\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 StatusBarItem[],\n eventIds: Set<string>\n ): { itemsUpdated: boolean; updatedItems: StatusBarItem[] } {\n if (0 === eventIds.size) return { itemsUpdated: false, updatedItems: [] };\n\n let updateRequired = false;\n\n const newItems: StatusBarItem[] = [];\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 if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n updateRequired = true;\n } else if (entry instanceof ConditionalStringValue) {\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 if (0 === eventIds.size) return;\n\n const { itemsUpdated, updatedItems } = this.internalRefreshAffectedItems(\n this.items,\n eventIds\n );\n\n if (itemsUpdated) this.loadItemsInternal(updatedItems, false, true);\n }\n}\n"]}
1
+ {"version":3,"file":"StatusBarItemsManager.js","sourceRoot":"","sources":["../../../src/appui-react/statusbar/StatusBarItemsManager.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 StatusBar\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { StatusBarItem } from \"./StatusBarItem.js\";\n\ntype InstanceOrArray<T> = T | ReadonlyArray<T>;\n\nconst isInstance = <T>(args: InstanceOrArray<T>): args is T => {\n return !Array.isArray(args);\n};\n\n/** Arguments of [[StatusBarItemsManager.onChanged]] event.\n * @internal\n */\nexport interface StatusBarItemsChangedArgs {\n readonly items: ReadonlyArray<StatusBarItem>;\n}\n\n/**\n * Controls status bar items.\n * @internal\n */\nexport class StatusBarItemsManager {\n private _items: ReadonlyArray<StatusBarItem> = [];\n\n constructor(items?: ReadonlyArray<StatusBarItem>) {\n if (items) this.loadItemsInternal(items, true, false);\n }\n\n /** Event raised when StatusBar items are changed.\n * @internal\n */\n public readonly onItemsChanged = new BeEvent<\n (args: StatusBarItemsChangedArgs) => void\n >();\n\n private loadItemsInternal(\n items: ReadonlyArray<StatusBarItem>,\n processConditions: boolean,\n sendItemChanged: boolean\n ) {\n if (processConditions && items) {\n const eventIds = StatusBarItemsManager.getSyncIdsOfInterest(items);\n if (0 !== eventIds.length) {\n const { itemsUpdated, updatedItems } =\n this.internalRefreshAffectedItems(items, new Set(eventIds));\n\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<StatusBarItem>) {\n this.loadItemsInternal(items, true, false);\n }\n\n /** Get an array of the StatusBar items */\n public get items(): ReadonlyArray<StatusBarItem> {\n return this._items;\n }\n\n public set items(items: ReadonlyArray<StatusBarItem>) {\n if (items !== this._items) this.loadItemsInternal(items, true, true);\n }\n\n public add(itemOrItems: StatusBarItem | ReadonlyArray<StatusBarItem>) {\n let itemsToAdd;\n if (isInstance(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 /** Remove StatusBar items based on id */\n public remove(\n itemIdOrItemIds: StatusBarItem[\"id\"] | ReadonlyArray<StatusBarItem[\"id\"]>\n ) {\n const items = this._items.filter((item) => {\n return isInstance(itemIdOrItemIds)\n ? item.id !== itemIdOrItemIds\n : !itemIdOrItemIds.find((itemId) => itemId === item.id);\n });\n this.items = items;\n }\n\n /** @internal */\n public removeAll() {\n this._items = [];\n }\n\n public static getSyncIdsOfInterest(\n items: readonly StatusBarItem[]\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 } else if (entry instanceof ConditionalStringValue) {\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 StatusBarItem[],\n eventIds: Set<string>\n ): { itemsUpdated: boolean; updatedItems: StatusBarItem[] } {\n if (0 === eventIds.size) return { itemsUpdated: false, updatedItems: [] };\n\n let updateRequired = false;\n\n const newItems: StatusBarItem[] = [];\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 if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n updateRequired = true;\n } else if (entry instanceof ConditionalStringValue) {\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 if (0 === eventIds.size) return;\n\n const { itemsUpdated, updatedItems } = this.internalRefreshAffectedItems(\n this.items,\n eventIds\n );\n\n if (itemsUpdated) this.loadItemsInternal(updatedItems, false, true);\n }\n}\n"]}
@@ -21,22 +21,6 @@ export class ViewAttributesStatusField extends React.Component {
21
21
  // eslint-disable-next-line @typescript-eslint/no-deprecated
22
22
  constructor(props) {
23
23
  super(props);
24
- this._handleViewFlagClick = (flagName) => {
25
- if (IModelApp.viewManager.selectedView) {
26
- const props = IModelApp.viewManager.selectedView.viewFlags.toJSON();
27
- props[flagName] =
28
- props[flagName] === undefined
29
- ? true
30
- : !props[flagName];
31
- const viewFlags = ViewFlags.fromJSON(props);
32
- IModelApp.viewManager.selectedView.viewFlags = viewFlags;
33
- this.updateState();
34
- }
35
- };
36
- this._handleToggleCamera = async () => {
37
- await IModelApp.tools.run("View.ToggleCamera", IModelApp.viewManager.selectedView);
38
- this.updateState();
39
- };
40
24
  this.state = {
41
25
  cameraOn: false,
42
26
  viewFlags: {},
@@ -58,6 +42,22 @@ export class ViewAttributesStatusField extends React.Component {
58
42
  });
59
43
  }
60
44
  }
45
+ _handleViewFlagClick = (flagName) => {
46
+ if (IModelApp.viewManager.selectedView) {
47
+ const props = IModelApp.viewManager.selectedView.viewFlags.toJSON();
48
+ props[flagName] =
49
+ props[flagName] === undefined
50
+ ? true
51
+ : !props[flagName];
52
+ const viewFlags = ViewFlags.fromJSON(props);
53
+ IModelApp.viewManager.selectedView.viewFlags = viewFlags;
54
+ this.updateState();
55
+ }
56
+ };
57
+ _handleToggleCamera = async () => {
58
+ await IModelApp.tools.run("View.ToggleCamera", IModelApp.viewManager.selectedView);
59
+ this.updateState();
60
+ };
61
61
  getViewFlagItem(flagName, value, labelKey) {
62
62
  return (React.createElement(Checkbox, { key: flagName, label: UiFramework.translate(labelKey), onClick: () => this._handleViewFlagClick(flagName), defaultChecked: value }));
63
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ViewAttributes.js","sourceRoot":"","sources":["../../../src/appui-react/statusfields/ViewAttributes.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 StatusBar\n */\n\nimport \"./ViewAttributes.scss\";\nimport * as React from \"react\";\nimport type { ViewFlagProps } from \"@itwin/core-common\";\nimport { ViewFlags } from \"@itwin/core-common\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { Checkbox, IconButton } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { StatusBarDialog } from \"../statusbar/dialog/Dialog.js\";\nimport { SvgWindowSettings } from \"@itwin/itwinui-icons-react\";\nimport { StatusBarPopover } from \"../statusbar/popup/StatusBarPopover.js\";\n\ninterface ViewAttributesStatusFieldState {\n viewFlags: ViewFlagProps;\n cameraOn: boolean;\n target: HTMLElement | null;\n}\n\n/** Widget for showing Checkboxes for View Attributes\n * @beta\n */\nexport class ViewAttributesStatusField extends React.Component<\n CommonProps, // eslint-disable-line @typescript-eslint/no-deprecated\n ViewAttributesStatusFieldState\n> {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(props: CommonProps) {\n super(props);\n\n this.state = {\n cameraOn: false,\n viewFlags: {},\n target: null,\n };\n }\n\n public override componentDidMount() {\n this.updateState();\n }\n\n private updateState() {\n if (IModelApp.viewManager.selectedView) {\n const viewFlags: ViewFlagProps = {\n ...IModelApp.viewManager.selectedView.view.viewFlags.toJSON(),\n };\n const cameraOn = IModelApp.viewManager.selectedView.isCameraOn;\n\n this.setState({\n viewFlags,\n cameraOn,\n });\n }\n }\n\n private _handleViewFlagClick = (flagName: string) => {\n if (IModelApp.viewManager.selectedView) {\n const props: ViewFlagProps =\n IModelApp.viewManager.selectedView.viewFlags.toJSON();\n (props as any)[flagName] =\n (props as any)[flagName] === undefined\n ? true\n : !(props as any)[flagName];\n const viewFlags = ViewFlags.fromJSON(props);\n IModelApp.viewManager.selectedView.viewFlags = viewFlags;\n this.updateState();\n }\n };\n\n private _handleToggleCamera = async () => {\n await IModelApp.tools.run(\n \"View.ToggleCamera\",\n IModelApp.viewManager.selectedView\n );\n this.updateState();\n };\n\n private getViewFlagItem(flagName: string, value: boolean, labelKey: string) {\n return (\n <Checkbox\n key={flagName}\n label={UiFramework.translate(labelKey)}\n onClick={() => this._handleViewFlagClick(flagName)}\n defaultChecked={value}\n />\n );\n }\n\n private getFlagState(flagName: string) {\n return this.state.viewFlags.hasOwnProperty(flagName)\n ? (this.state.viewFlags as any)[flagName]\n : false;\n }\n\n private getToggleCameraItem() {\n return (\n <Checkbox\n key={\"toggleCamera\"}\n label={UiFramework.translate(\"listTools.camera\")}\n onClick={this._handleToggleCamera}\n defaultChecked={this.state.cameraOn}\n />\n );\n }\n\n private getViewFlags() {\n const items: React.ReactElement[] = [];\n items.push(\n this.getViewFlagItem(\"acs\", this.getFlagState(\"acs\"), \"listTools.acs\")\n );\n items.push(this.getToggleCameraItem());\n items.push(\n this.getViewFlagItem(\n \"noConstruct\",\n !this.getFlagState(\"noConstruct\"),\n \"listTools.constructions\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"hidEdges\",\n this.getFlagState(\"hidEdges\"),\n \"listTools.hidEdges\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"monochrome\",\n this.getFlagState(\"monochrome\"),\n \"listTools.monochrome\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"visEdges\",\n this.getFlagState(\"visEdges\"),\n \"listTools.visEdges\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"ambientOcclusion\",\n this.getFlagState(\"ambientOcclusion\"),\n \"listTools.ambientOcclusion\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"shadows\",\n this.getFlagState(\"shadows\"),\n \"listTools.shadows\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"backgroundMap\",\n this.getFlagState(\"backgroundMap\"),\n \"listTools.backgroundMap\"\n )\n );\n return <div className=\"uifw-view-attributes-contents\">{items}</div>;\n }\n\n public override render() {\n const title = UiFramework.translate(\"listTools.viewAttributes\");\n\n return (\n <StatusBarPopover\n content={\n <StatusBarDialog\n titleBar={<StatusBarDialog.TitleBar title={title} />}\n >\n {this.getViewFlags()}\n </StatusBarDialog>\n }\n >\n <IconButton styleType=\"borderless\" label={title}>\n <SvgWindowSettings />\n <StatusBarPopover.ExpandIndicator />\n </IconButton>\n </StatusBarPopover>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ViewAttributes.js","sourceRoot":"","sources":["../../../src/appui-react/statusfields/ViewAttributes.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 StatusBar\n */\n\nimport \"./ViewAttributes.scss\";\nimport * as React from \"react\";\nimport type { ViewFlagProps } from \"@itwin/core-common\";\nimport { ViewFlags } from \"@itwin/core-common\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { Checkbox, IconButton } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { StatusBarDialog } from \"../statusbar/dialog/Dialog.js\";\nimport { SvgWindowSettings } from \"@itwin/itwinui-icons-react\";\nimport { StatusBarPopover } from \"../statusbar/popup/StatusBarPopover.js\";\n\ninterface ViewAttributesStatusFieldState {\n viewFlags: ViewFlagProps;\n cameraOn: boolean;\n target: HTMLElement | null;\n}\n\n/** Widget for showing Checkboxes for View Attributes\n * @beta\n */\nexport class ViewAttributesStatusField extends React.Component<\n CommonProps, // eslint-disable-line @typescript-eslint/no-deprecated\n ViewAttributesStatusFieldState\n> {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(props: CommonProps) {\n super(props);\n\n this.state = {\n cameraOn: false,\n viewFlags: {},\n target: null,\n };\n }\n\n public override componentDidMount() {\n this.updateState();\n }\n\n private updateState() {\n if (IModelApp.viewManager.selectedView) {\n const viewFlags: ViewFlagProps = {\n ...IModelApp.viewManager.selectedView.view.viewFlags.toJSON(),\n };\n const cameraOn = IModelApp.viewManager.selectedView.isCameraOn;\n\n this.setState({\n viewFlags,\n cameraOn,\n });\n }\n }\n\n private _handleViewFlagClick = (flagName: string) => {\n if (IModelApp.viewManager.selectedView) {\n const props: ViewFlagProps =\n IModelApp.viewManager.selectedView.viewFlags.toJSON();\n (props as any)[flagName] =\n (props as any)[flagName] === undefined\n ? true\n : !(props as any)[flagName];\n const viewFlags = ViewFlags.fromJSON(props);\n IModelApp.viewManager.selectedView.viewFlags = viewFlags;\n this.updateState();\n }\n };\n\n private _handleToggleCamera = async () => {\n await IModelApp.tools.run(\n \"View.ToggleCamera\",\n IModelApp.viewManager.selectedView\n );\n this.updateState();\n };\n\n private getViewFlagItem(flagName: string, value: boolean, labelKey: string) {\n return (\n <Checkbox\n key={flagName}\n label={UiFramework.translate(labelKey)}\n onClick={() => this._handleViewFlagClick(flagName)}\n defaultChecked={value}\n />\n );\n }\n\n private getFlagState(flagName: string) {\n return this.state.viewFlags.hasOwnProperty(flagName)\n ? (this.state.viewFlags as any)[flagName]\n : false;\n }\n\n private getToggleCameraItem() {\n return (\n <Checkbox\n key={\"toggleCamera\"}\n label={UiFramework.translate(\"listTools.camera\")}\n onClick={this._handleToggleCamera}\n defaultChecked={this.state.cameraOn}\n />\n );\n }\n\n private getViewFlags() {\n const items: React.ReactElement[] = [];\n items.push(\n this.getViewFlagItem(\"acs\", this.getFlagState(\"acs\"), \"listTools.acs\")\n );\n items.push(this.getToggleCameraItem());\n items.push(\n this.getViewFlagItem(\n \"noConstruct\",\n !this.getFlagState(\"noConstruct\"),\n \"listTools.constructions\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"hidEdges\",\n this.getFlagState(\"hidEdges\"),\n \"listTools.hidEdges\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"monochrome\",\n this.getFlagState(\"monochrome\"),\n \"listTools.monochrome\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"visEdges\",\n this.getFlagState(\"visEdges\"),\n \"listTools.visEdges\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"ambientOcclusion\",\n this.getFlagState(\"ambientOcclusion\"),\n \"listTools.ambientOcclusion\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"shadows\",\n this.getFlagState(\"shadows\"),\n \"listTools.shadows\"\n )\n );\n items.push(\n this.getViewFlagItem(\n \"backgroundMap\",\n this.getFlagState(\"backgroundMap\"),\n \"listTools.backgroundMap\"\n )\n );\n return <div className=\"uifw-view-attributes-contents\">{items}</div>;\n }\n\n public override render() {\n const title = UiFramework.translate(\"listTools.viewAttributes\");\n\n return (\n <StatusBarPopover\n content={\n <StatusBarDialog\n titleBar={<StatusBarDialog.TitleBar title={title} />}\n >\n {this.getViewFlags()}\n </StatusBarDialog>\n }\n >\n <IconButton styleType=\"borderless\" label={title}>\n <SvgWindowSettings />\n <StatusBarPopover.ExpandIndicator />\n </IconButton>\n </StatusBarPopover>\n );\n }\n}\n"]}
@@ -16,44 +16,46 @@ import { UiFramework } from "../../UiFramework.js";
16
16
  * @public
17
17
  */
18
18
  export class TileLoadingIndicator extends React.PureComponent {
19
+ _removeViewOpenListener;
20
+ _removeOnRenderListener;
19
21
  // eslint-disable-next-line @typescript-eslint/no-deprecated
20
22
  constructor(props) {
21
23
  super(props);
22
- this._refreshState = (vp) => {
23
- const requested = vp.numRequestedTiles;
24
- const ready = vp.numReadyTiles;
25
- const total = ready + requested;
26
- const pctComplete = total > 0 ? (ready / total) * 100 : 100;
27
- let enabled = this.state.enabled;
28
- let finished = this.state.finished;
29
- if (!enabled && total !== 0 && pctComplete !== 100)
30
- enabled = true;
31
- if (enabled && (total === 0 || pctComplete === 100))
32
- enabled = false;
33
- if (pctComplete === 100 && !finished) {
34
- finished = true;
35
- Logger.logTrace(UiFramework.loggerCategory("TileLoadingIndicator"), `Tiles Finished Loading`);
36
- Logger.logTrace(UiFramework.loggerCategory("TileLoadingIndicator"), `Tiles Load Report (tiles finished / tiles requested): ${ready} / ${total}`);
37
- }
38
- if (pctComplete !== 100 && finished)
39
- finished = false;
40
- this.setState({
41
- label: `${ready} / ${total}`,
42
- progress: pctComplete,
43
- enabled,
44
- finished,
45
- });
46
- };
47
- this._handleRender = (vp) => {
48
- // set progress animation before the next repaint.
49
- setTimeout(() => this._refreshState(vp));
50
- };
51
- this._onViewOpen = (vp) => {
52
- this._removeOnRenderListener && this._removeOnRenderListener();
53
- this._removeOnRenderListener = vp.onRender.addListener(this._handleRender);
54
- };
55
24
  this.state = { label: "", progress: 0, enabled: false, finished: true };
56
25
  }
26
+ _refreshState = (vp) => {
27
+ const requested = vp.numRequestedTiles;
28
+ const ready = vp.numReadyTiles;
29
+ const total = ready + requested;
30
+ const pctComplete = total > 0 ? (ready / total) * 100 : 100;
31
+ let enabled = this.state.enabled;
32
+ let finished = this.state.finished;
33
+ if (!enabled && total !== 0 && pctComplete !== 100)
34
+ enabled = true;
35
+ if (enabled && (total === 0 || pctComplete === 100))
36
+ enabled = false;
37
+ if (pctComplete === 100 && !finished) {
38
+ finished = true;
39
+ Logger.logTrace(UiFramework.loggerCategory("TileLoadingIndicator"), `Tiles Finished Loading`);
40
+ Logger.logTrace(UiFramework.loggerCategory("TileLoadingIndicator"), `Tiles Load Report (tiles finished / tiles requested): ${ready} / ${total}`);
41
+ }
42
+ if (pctComplete !== 100 && finished)
43
+ finished = false;
44
+ this.setState({
45
+ label: `${ready} / ${total}`,
46
+ progress: pctComplete,
47
+ enabled,
48
+ finished,
49
+ });
50
+ };
51
+ _handleRender = (vp) => {
52
+ // set progress animation before the next repaint.
53
+ setTimeout(() => this._refreshState(vp));
54
+ };
55
+ _onViewOpen = (vp) => {
56
+ this._removeOnRenderListener && this._removeOnRenderListener();
57
+ this._removeOnRenderListener = vp.onRender.addListener(this._handleRender);
58
+ };
57
59
  componentDidMount() {
58
60
  if (!IModelApp.viewManager)
59
61
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"TileLoadingIndicator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/tileloading/TileLoadingIndicator.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 StatusBar\n */\n\nimport \"./TileLoadingIndicator.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { ScreenViewport, Viewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { ProgressLinear } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../../UiFramework.js\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\n\n/** State for the [[TileLoadingIndicator]] component\n * @internal\n */\ninterface TileLoadingIndicatorState {\n label: string;\n progress: number;\n enabled: boolean;\n finished: boolean;\n}\n\n/** TileLoadingIndicator React component\n * @public\n */\nexport class TileLoadingIndicator extends React.PureComponent<\n CommonProps, // eslint-disable-line @typescript-eslint/no-deprecated\n TileLoadingIndicatorState\n> {\n private _removeViewOpenListener?: () => void;\n private _removeOnRenderListener?: () => void;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(props: CommonProps) {\n super(props);\n this.state = { label: \"\", progress: 0, enabled: false, finished: true };\n }\n\n private _refreshState = (vp: Viewport) => {\n const requested = vp.numRequestedTiles;\n const ready = vp.numReadyTiles;\n const total = ready + requested;\n const pctComplete = total > 0 ? (ready / total) * 100 : 100;\n let enabled = this.state.enabled;\n let finished = this.state.finished;\n\n if (!enabled && total !== 0 && pctComplete !== 100) enabled = true;\n\n if (enabled && (total === 0 || pctComplete === 100)) enabled = false;\n\n if (pctComplete === 100 && !finished) {\n finished = true;\n Logger.logTrace(\n UiFramework.loggerCategory(\"TileLoadingIndicator\"),\n `Tiles Finished Loading`\n );\n Logger.logTrace(\n UiFramework.loggerCategory(\"TileLoadingIndicator\"),\n `Tiles Load Report (tiles finished / tiles requested): ${ready} / ${total}`\n );\n }\n\n if (pctComplete !== 100 && finished) finished = false;\n\n this.setState({\n label: `${ready} / ${total}`,\n progress: pctComplete,\n enabled,\n finished,\n });\n };\n\n private _handleRender: ListenerType<ScreenViewport[\"onRender\"]> = (vp) => {\n // set progress animation before the next repaint.\n setTimeout(() => this._refreshState(vp));\n };\n\n private _onViewOpen: ListenerType<typeof IModelApp.viewManager.onViewOpen> = (\n vp\n ) => {\n this._removeOnRenderListener && this._removeOnRenderListener();\n this._removeOnRenderListener = vp.onRender.addListener(this._handleRender);\n };\n\n public override componentDidMount() {\n if (!IModelApp.viewManager) return;\n\n // get selected viewport\n const vp = IModelApp.viewManager.selectedView;\n\n // if view exists bind update routine to onRender loop, otherwise do so once the onViewOpen event runs\n if (vp) {\n this._onViewOpen(vp);\n } else {\n this._removeViewOpenListener =\n IModelApp.viewManager.onViewOpen.addListener(this._onViewOpen);\n }\n }\n\n public override componentWillUnmount() {\n if (!IModelApp.viewManager) return;\n\n if (this._removeViewOpenListener) this._removeViewOpenListener();\n\n if (this._removeOnRenderListener) this._removeOnRenderListener();\n }\n\n /** Renders TileLoadingIndicator */\n public override render() {\n const classes = classnames(\n \"uifw-tile-loading-bar\",\n this.state.enabled && \"uifw-tile-loading-bar-visible\",\n this.props.className\n );\n return (\n <div className={classes} style={this.props.style}>\n <span>{this.state.label}</span>\n <ProgressLinear\n className=\"uifw-progress-indicator\"\n value={this.state.progress}\n />\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"TileLoadingIndicator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/tileloading/TileLoadingIndicator.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 StatusBar\n */\n\nimport \"./TileLoadingIndicator.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { ScreenViewport, Viewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { ProgressLinear } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../../UiFramework.js\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\n\n/** State for the [[TileLoadingIndicator]] component\n * @internal\n */\ninterface TileLoadingIndicatorState {\n label: string;\n progress: number;\n enabled: boolean;\n finished: boolean;\n}\n\n/** TileLoadingIndicator React component\n * @public\n */\nexport class TileLoadingIndicator extends React.PureComponent<\n CommonProps, // eslint-disable-line @typescript-eslint/no-deprecated\n TileLoadingIndicatorState\n> {\n private _removeViewOpenListener?: () => void;\n private _removeOnRenderListener?: () => void;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(props: CommonProps) {\n super(props);\n this.state = { label: \"\", progress: 0, enabled: false, finished: true };\n }\n\n private _refreshState = (vp: Viewport) => {\n const requested = vp.numRequestedTiles;\n const ready = vp.numReadyTiles;\n const total = ready + requested;\n const pctComplete = total > 0 ? (ready / total) * 100 : 100;\n let enabled = this.state.enabled;\n let finished = this.state.finished;\n\n if (!enabled && total !== 0 && pctComplete !== 100) enabled = true;\n\n if (enabled && (total === 0 || pctComplete === 100)) enabled = false;\n\n if (pctComplete === 100 && !finished) {\n finished = true;\n Logger.logTrace(\n UiFramework.loggerCategory(\"TileLoadingIndicator\"),\n `Tiles Finished Loading`\n );\n Logger.logTrace(\n UiFramework.loggerCategory(\"TileLoadingIndicator\"),\n `Tiles Load Report (tiles finished / tiles requested): ${ready} / ${total}`\n );\n }\n\n if (pctComplete !== 100 && finished) finished = false;\n\n this.setState({\n label: `${ready} / ${total}`,\n progress: pctComplete,\n enabled,\n finished,\n });\n };\n\n private _handleRender: ListenerType<ScreenViewport[\"onRender\"]> = (vp) => {\n // set progress animation before the next repaint.\n setTimeout(() => this._refreshState(vp));\n };\n\n private _onViewOpen: ListenerType<typeof IModelApp.viewManager.onViewOpen> = (\n vp\n ) => {\n this._removeOnRenderListener && this._removeOnRenderListener();\n this._removeOnRenderListener = vp.onRender.addListener(this._handleRender);\n };\n\n public override componentDidMount() {\n if (!IModelApp.viewManager) return;\n\n // get selected viewport\n const vp = IModelApp.viewManager.selectedView;\n\n // if view exists bind update routine to onRender loop, otherwise do so once the onViewOpen event runs\n if (vp) {\n this._onViewOpen(vp);\n } else {\n this._removeViewOpenListener =\n IModelApp.viewManager.onViewOpen.addListener(this._onViewOpen);\n }\n }\n\n public override componentWillUnmount() {\n if (!IModelApp.viewManager) return;\n\n if (this._removeViewOpenListener) this._removeViewOpenListener();\n\n if (this._removeOnRenderListener) this._removeOnRenderListener();\n }\n\n /** Renders TileLoadingIndicator */\n public override render() {\n const classes = classnames(\n \"uifw-tile-loading-bar\",\n this.state.enabled && \"uifw-tile-loading-bar-visible\",\n this.props.className\n );\n return (\n <div className={classes} style={this.props.style}>\n <span>{this.state.label}</span>\n <ProgressLinear\n className=\"uifw-progress-indicator\"\n value={this.state.progress}\n />\n </div>\n );\n }\n}\n"]}
@@ -11,6 +11,13 @@ import { BeUiEvent } from "@itwin/core-bentley";
11
11
  * @internal
12
12
  */
13
13
  export class InternalSyncUiEventDispatcher {
14
+ _syncEventTimerId;
15
+ _eventIds;
16
+ _eventIdAdded;
17
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
18
+ _uiSyncEvent;
19
+ _timeoutPeriod;
20
+ _secondaryTimeoutPeriod;
14
21
  constructor() {
15
22
  this._eventIds = new Set();
16
23
  this._eventIdAdded = false;
@@ -1 +1 @@
1
- {"version":3,"file":"InternalSyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../src/appui-react/syncui/InternalSyncUiEventDispatcher.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 SyncUi\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { UiSyncEventArgs } from \"./UiSyncEvent.js\";\n\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\n * to refresh its display by calling setState on itself.\n * @internal\n */\nexport class InternalSyncUiEventDispatcher {\n private _syncEventTimerId: number | undefined;\n private _eventIds: Set<string>;\n private _eventIdAdded;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _uiSyncEvent: BeUiEvent<UiSyncEventArgs>;\n private _timeoutPeriod;\n private _secondaryTimeoutPeriod;\n\n constructor() {\n this._eventIds = new Set<string>();\n this._eventIdAdded = false;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._uiSyncEvent = new BeUiEvent<UiSyncEventArgs>();\n this._timeoutPeriod = 100;\n this._secondaryTimeoutPeriod = this._timeoutPeriod / 2;\n }\n\n /** @internal - used for testing only */\n\n public setTimeoutPeriod(period: number): void {\n this._timeoutPeriod = period;\n this._secondaryTimeoutPeriod = Math.floor(this._timeoutPeriod / 2);\n if (this._secondaryTimeoutPeriod < 1) this._secondaryTimeoutPeriod = 1;\n if (this._syncEventTimerId) {\n window.clearTimeout(this._syncEventTimerId);\n this._syncEventTimerId = undefined;\n }\n if (this._eventIds) this._eventIds.clear();\n\n this._eventIdAdded = false;\n }\n\n /** The current timeout period */\n public get timeoutPeriod(): number {\n return this._timeoutPeriod;\n }\n /** Return set of event ids that will be sent to listeners/. */\n public get syncEventIds(): Set<string> {\n return this._eventIds;\n }\n\n /** Return UiSyncEvent so callers can register an event callback. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public get onSyncUiEvent(): BeUiEvent<UiSyncEventArgs> {\n return this._uiSyncEvent;\n }\n\n /** Immediately trigger sync event processing. */\n public dispatchImmediateSyncUiEvent(eventId: string): void {\n const eventIds = new Set<string>();\n eventIds.add(eventId.toLowerCase());\n this.onSyncUiEvent.emit({ eventIds });\n }\n\n /** Save eventId in Set for processing. */\n public dispatchSyncUiEvent(eventId: string): void {\n if (0 === this._timeoutPeriod) {\n return;\n }\n\n this.syncEventIds.add(eventId.toLowerCase());\n if (!this._syncEventTimerId) {\n // if there is not a timer active, create one\n this._syncEventTimerId = window.setTimeout(() => {\n this.checkForAdditionalIds();\n }, this._timeoutPeriod);\n } else {\n this._eventIdAdded = true;\n }\n }\n\n /** Save multiple eventIds in Set for processing. */\n public dispatchSyncUiEvents(eventIds: string[]): void {\n if (0 === this._timeoutPeriod) {\n return;\n }\n\n eventIds.forEach((id) => this.syncEventIds.add(id.toLowerCase()));\n if (!this._syncEventTimerId) {\n // if there is not a timer active, create one\n this._syncEventTimerId = window.setTimeout(() => {\n this.checkForAdditionalIds();\n }, this._timeoutPeriod);\n } else {\n this._eventIdAdded = true;\n }\n }\n\n /** Trigger registered event processing when timer has expired and no addition eventId are added. */\n public checkForAdditionalIds() {\n if (!this._eventIdAdded) {\n if (this._syncEventTimerId) {\n window.clearTimeout(this._syncEventTimerId);\n this._syncEventTimerId = undefined;\n }\n this._eventIdAdded = false;\n if (this.syncEventIds.size > 0) {\n const eventIds = new Set<string>();\n this.syncEventIds.forEach((value) => eventIds.add(value));\n this._eventIds.clear();\n this.onSyncUiEvent.emit({ eventIds });\n }\n return;\n }\n\n if (this._syncEventTimerId) {\n window.clearTimeout(this._syncEventTimerId);\n this._syncEventTimerId = undefined;\n }\n this._eventIdAdded = false;\n // if events have been added before the initial timer expired wait half that time to see if events are still being added.\n this._syncEventTimerId = window.setTimeout(() => {\n this.checkForAdditionalIds();\n }, this._secondaryTimeoutPeriod);\n }\n\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\n public hasEventOfInterest(eventIds: Set<string>, idsOfInterest: string[]) {\n if (\n idsOfInterest.length > 0 &&\n idsOfInterest.some((value: string): boolean =>\n eventIds.has(value.toLowerCase())\n )\n )\n return true;\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalSyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../src/appui-react/syncui/InternalSyncUiEventDispatcher.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD;;;GAGG;AACH,MAAM,OAAO,6BAA6B;IAChC,iBAAiB,CAAqB;IACtC,SAAS,CAAc;IACvB,aAAa,CAAC;IACtB,4DAA4D;IACpD,YAAY,CAA6B;IACzC,cAAc,CAAC;IACf,uBAAuB,CAAC;IAEhC;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,4DAA4D;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,EAAmB,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC1B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,wCAAwC;IAEjC,gBAAgB,CAAC,MAAc;QACpC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC;YAAE,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAE3C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,iCAAiC;IACjC,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,+DAA+D;IAC/D,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,oEAAoE;IACpE,4DAA4D;IAC5D,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,iDAAiD;IAC1C,4BAA4B,CAAC,OAAe;QACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,0CAA0C;IACnC,mBAAmB,CAAC,OAAe;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,6CAA6C;YAC7C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,oDAAoD;IAC7C,oBAAoB,CAAC,QAAkB;QAC5C,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,6CAA6C;YAC7C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,oGAAoG;IAC7F,qBAAqB;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;gBACnC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC5C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,yHAAyH;QACzH,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnC,CAAC;IAED,kFAAkF;IAC3E,kBAAkB,CAAC,QAAqB,EAAE,aAAuB;QACtE,IACE,aAAa,CAAC,MAAM,GAAG,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAC5C,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAClC;YAED,OAAO,IAAI,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module SyncUi\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { UiSyncEventArgs } from \"./UiSyncEvent.js\";\n\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\n * to refresh its display by calling setState on itself.\n * @internal\n */\nexport class InternalSyncUiEventDispatcher {\n private _syncEventTimerId: number | undefined;\n private _eventIds: Set<string>;\n private _eventIdAdded;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _uiSyncEvent: BeUiEvent<UiSyncEventArgs>;\n private _timeoutPeriod;\n private _secondaryTimeoutPeriod;\n\n constructor() {\n this._eventIds = new Set<string>();\n this._eventIdAdded = false;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._uiSyncEvent = new BeUiEvent<UiSyncEventArgs>();\n this._timeoutPeriod = 100;\n this._secondaryTimeoutPeriod = this._timeoutPeriod / 2;\n }\n\n /** @internal - used for testing only */\n\n public setTimeoutPeriod(period: number): void {\n this._timeoutPeriod = period;\n this._secondaryTimeoutPeriod = Math.floor(this._timeoutPeriod / 2);\n if (this._secondaryTimeoutPeriod < 1) this._secondaryTimeoutPeriod = 1;\n if (this._syncEventTimerId) {\n window.clearTimeout(this._syncEventTimerId);\n this._syncEventTimerId = undefined;\n }\n if (this._eventIds) this._eventIds.clear();\n\n this._eventIdAdded = false;\n }\n\n /** The current timeout period */\n public get timeoutPeriod(): number {\n return this._timeoutPeriod;\n }\n /** Return set of event ids that will be sent to listeners/. */\n public get syncEventIds(): Set<string> {\n return this._eventIds;\n }\n\n /** Return UiSyncEvent so callers can register an event callback. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public get onSyncUiEvent(): BeUiEvent<UiSyncEventArgs> {\n return this._uiSyncEvent;\n }\n\n /** Immediately trigger sync event processing. */\n public dispatchImmediateSyncUiEvent(eventId: string): void {\n const eventIds = new Set<string>();\n eventIds.add(eventId.toLowerCase());\n this.onSyncUiEvent.emit({ eventIds });\n }\n\n /** Save eventId in Set for processing. */\n public dispatchSyncUiEvent(eventId: string): void {\n if (0 === this._timeoutPeriod) {\n return;\n }\n\n this.syncEventIds.add(eventId.toLowerCase());\n if (!this._syncEventTimerId) {\n // if there is not a timer active, create one\n this._syncEventTimerId = window.setTimeout(() => {\n this.checkForAdditionalIds();\n }, this._timeoutPeriod);\n } else {\n this._eventIdAdded = true;\n }\n }\n\n /** Save multiple eventIds in Set for processing. */\n public dispatchSyncUiEvents(eventIds: string[]): void {\n if (0 === this._timeoutPeriod) {\n return;\n }\n\n eventIds.forEach((id) => this.syncEventIds.add(id.toLowerCase()));\n if (!this._syncEventTimerId) {\n // if there is not a timer active, create one\n this._syncEventTimerId = window.setTimeout(() => {\n this.checkForAdditionalIds();\n }, this._timeoutPeriod);\n } else {\n this._eventIdAdded = true;\n }\n }\n\n /** Trigger registered event processing when timer has expired and no addition eventId are added. */\n public checkForAdditionalIds() {\n if (!this._eventIdAdded) {\n if (this._syncEventTimerId) {\n window.clearTimeout(this._syncEventTimerId);\n this._syncEventTimerId = undefined;\n }\n this._eventIdAdded = false;\n if (this.syncEventIds.size > 0) {\n const eventIds = new Set<string>();\n this.syncEventIds.forEach((value) => eventIds.add(value));\n this._eventIds.clear();\n this.onSyncUiEvent.emit({ eventIds });\n }\n return;\n }\n\n if (this._syncEventTimerId) {\n window.clearTimeout(this._syncEventTimerId);\n this._syncEventTimerId = undefined;\n }\n this._eventIdAdded = false;\n // if events have been added before the initial timer expired wait half that time to see if events are still being added.\n this._syncEventTimerId = window.setTimeout(() => {\n this.checkForAdditionalIds();\n }, this._secondaryTimeoutPeriod);\n }\n\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\n public hasEventOfInterest(eventIds: Set<string>, idsOfInterest: string[]) {\n if (\n idsOfInterest.length > 0 &&\n idsOfInterest.some((value: string): boolean =>\n eventIds.has(value.toLowerCase())\n )\n )\n return true;\n return false;\n }\n}\n"]}
@@ -16,6 +16,10 @@ import { useAccuDrawStore } from "../accudraw/AccuDrawStore.js";
16
16
  * @public
17
17
  */
18
18
  export class SyncUiEventDispatcher {
19
+ static _uiEventDispatcher = new InternalSyncUiEventDispatcher();
20
+ static _unregisterFuncs = new Array();
21
+ static _connectionUnregisterFuncs = new Array();
22
+ static _iModelConnection;
19
23
  static setTimeoutPeriod(period) {
20
24
  SyncUiEventDispatcher._uiEventDispatcher.setTimeoutPeriod(period);
21
25
  }
@@ -131,7 +135,4 @@ export class SyncUiEventDispatcher {
131
135
  }));
132
136
  }
133
137
  }
134
- SyncUiEventDispatcher._uiEventDispatcher = new InternalSyncUiEventDispatcher();
135
- SyncUiEventDispatcher._unregisterFuncs = new Array();
136
- SyncUiEventDispatcher._connectionUnregisterFuncs = new Array();
137
138
  //# sourceMappingURL=SyncUiEventDispatcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\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 SyncUi\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport {\n SyncUiEventId,\n SyncUiInternalEventId,\n type UiSyncEvent,\n} from \"./UiSyncEvent.js\";\nimport { InternalSyncUiEventDispatcher } from \"./InternalSyncUiEventDispatcher.js\";\nimport { useAccuDrawStore } from \"../accudraw/AccuDrawStore.js\";\n\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\n * to refresh its display by calling setState on itself.\n * @public\n */\nexport class SyncUiEventDispatcher {\n private static _uiEventDispatcher = new InternalSyncUiEventDispatcher();\n private static _unregisterFuncs = new Array<() => void>();\n private static _connectionUnregisterFuncs = new Array<() => void>();\n private static _iModelConnection?: IModelConnection;\n\n public static setTimeoutPeriod(period: number): void {\n SyncUiEventDispatcher._uiEventDispatcher.setTimeoutPeriod(period);\n }\n\n /** Return set of event ids that will be sent to listeners/. */\n public static get syncEventIds(): Set<string> {\n return SyncUiEventDispatcher._uiEventDispatcher.syncEventIds;\n }\n\n /** Return SyncUiEvent so callers can register an event callback. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static get onSyncUiEvent(): UiSyncEvent {\n return SyncUiEventDispatcher._uiEventDispatcher.onSyncUiEvent;\n }\n\n /** Immediately trigger sync event processing. */\n public static dispatchImmediateSyncUiEvent(eventId: string): void {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchImmediateSyncUiEvent(\n eventId\n );\n }\n\n /** Save eventId in Set for processing. */\n public static dispatchSyncUiEvent(eventId: string): void {\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\n Logger.logInfo(\n UiFramework.loggerCategory(\"SyncUiEventDispatcher\"),\n `[dispatchSyncUiEvent] not processed because timeoutPeriod=0`\n );\n return;\n }\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(eventId);\n }\n\n /** Save multiple eventIds in Set for processing. */\n public static dispatchSyncUiEvents(eventIds: string[]): void {\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\n Logger.logInfo(\n UiFramework.loggerCategory(\"SyncUiEventDispatcher\"),\n `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`\n );\n }\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvents(eventIds);\n }\n\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\n public static hasEventOfInterest(\n eventIds: Set<string>,\n idsOfInterest: string[]\n ) {\n return SyncUiEventDispatcher._uiEventDispatcher.hasEventOfInterest(\n eventIds,\n idsOfInterest\n );\n }\n\n private static _dispatchViewChange() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ViewStateChanged\n );\n }\n\n private static _dispatchFeatureOverridesChange() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FeatureOverridesChanged\n );\n }\n\n private static _dispatchViewedModelsChanged() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ViewedModelsChanged\n );\n }\n\n /** Initializes the Monitoring of Events that trigger dispatching sync events */\n public static initialize() {\n // clear any registered listeners - this should only be encountered in unit test scenarios\n this._unregisterFuncs.forEach((unregister) => unregister());\n this._unregisterFuncs = [];\n\n this._unregisterFuncs.push(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.frontstages.onContentControlActivatedEvent.addListener(() => {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n SyncUiEventId.ContentControlActivated\n );\n }),\n UiFramework.frontstages.onContentLayoutActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ContentLayoutActivated\n );\n }),\n UiFramework.frontstages.onFrontstageActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FrontstageActivating\n );\n }),\n UiFramework.frontstages.onFrontstageReadyEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FrontstageReady\n );\n }),\n UiFramework.frontstages.onModalFrontstageChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ModalFrontstageChanged\n );\n }),\n UiFramework.frontstages.onNavigationAidActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.NavigationAidActivated\n );\n }),\n UiFramework.frontstages.onToolActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ToolActivated\n );\n }),\n UiFramework.frontstages.onWidgetStateChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.WidgetStateChanged\n );\n }),\n UiFramework.backstage.onToggled.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.BackstageEvent\n );\n }),\n UiFramework.content.onActiveContentChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ActiveContentChanged\n );\n }),\n IModelApp.viewManager.onSelectedViewportChanged.addListener((args) => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ActiveViewportChanged\n );\n\n // if this is the first view being opened up start the default tool so tool admin is happy.\n if (undefined === args.previous) {\n void IModelApp.toolAdmin.startDefaultTool();\n } else {\n args.previous.onViewChanged.removeListener(\n SyncUiEventDispatcher._dispatchViewChange\n );\n args.previous.onFeatureOverridesChanged.removeListener(\n SyncUiEventDispatcher._dispatchFeatureOverridesChange\n );\n args.previous.onViewedModelsChanged.removeListener(\n SyncUiEventDispatcher._dispatchViewedModelsChanged\n );\n }\n if (args.current) {\n args.current.onViewChanged.addListener(\n SyncUiEventDispatcher._dispatchViewChange\n );\n args.current.onFeatureOverridesChanged.addListener(\n SyncUiEventDispatcher._dispatchFeatureOverridesChange\n );\n args.current.onViewedModelsChanged.addListener(\n SyncUiEventDispatcher._dispatchViewedModelsChanged\n );\n }\n }),\n useAccuDrawStore.subscribe((state, prev) => {\n if (state.is3d === prev.is3d) return;\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiInternalEventId.AccuDrawViewIs3dChanged\n );\n })\n );\n }\n\n /** This should be called by IModelApp when the active IModelConnection is closed. */\n public static clearConnectionEvents(iModelConnection: IModelConnection) {\n if (this._iModelConnection !== iModelConnection) return;\n this._connectionUnregisterFuncs.forEach((unregister) => unregister());\n this._connectionUnregisterFuncs = [];\n }\n\n /** This should be called by IModelApp when the active IModelConnection is established. */\n public static initializeConnectionEvents(iModelConnection: IModelConnection) {\n this._iModelConnection &&\n this.clearConnectionEvents(this._iModelConnection);\n this._iModelConnection = iModelConnection;\n\n this._connectionUnregisterFuncs.push(\n iModelConnection.selectionSet.onChanged.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.SelectionSetChanged\n );\n }),\n iModelConnection.selectionSet.onChanged.addListener((ev) => {\n const numSelected = ev.set.elements.size;\n UiFramework.setNumItemsSelected(numSelected);\n })\n );\n }\n}\n"]}
1
+ {"version":3,"file":"SyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../src/appui-react/syncui/SyncUiEventDispatcher.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 SyncUi\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport {\n SyncUiEventId,\n SyncUiInternalEventId,\n type UiSyncEvent,\n} from \"./UiSyncEvent.js\";\nimport { InternalSyncUiEventDispatcher } from \"./InternalSyncUiEventDispatcher.js\";\nimport { useAccuDrawStore } from \"../accudraw/AccuDrawStore.js\";\n\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\n * to refresh its display by calling setState on itself.\n * @public\n */\nexport class SyncUiEventDispatcher {\n private static _uiEventDispatcher = new InternalSyncUiEventDispatcher();\n private static _unregisterFuncs = new Array<() => void>();\n private static _connectionUnregisterFuncs = new Array<() => void>();\n private static _iModelConnection?: IModelConnection;\n\n public static setTimeoutPeriod(period: number): void {\n SyncUiEventDispatcher._uiEventDispatcher.setTimeoutPeriod(period);\n }\n\n /** Return set of event ids that will be sent to listeners/. */\n public static get syncEventIds(): Set<string> {\n return SyncUiEventDispatcher._uiEventDispatcher.syncEventIds;\n }\n\n /** Return SyncUiEvent so callers can register an event callback. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static get onSyncUiEvent(): UiSyncEvent {\n return SyncUiEventDispatcher._uiEventDispatcher.onSyncUiEvent;\n }\n\n /** Immediately trigger sync event processing. */\n public static dispatchImmediateSyncUiEvent(eventId: string): void {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchImmediateSyncUiEvent(\n eventId\n );\n }\n\n /** Save eventId in Set for processing. */\n public static dispatchSyncUiEvent(eventId: string): void {\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\n Logger.logInfo(\n UiFramework.loggerCategory(\"SyncUiEventDispatcher\"),\n `[dispatchSyncUiEvent] not processed because timeoutPeriod=0`\n );\n return;\n }\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(eventId);\n }\n\n /** Save multiple eventIds in Set for processing. */\n public static dispatchSyncUiEvents(eventIds: string[]): void {\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\n Logger.logInfo(\n UiFramework.loggerCategory(\"SyncUiEventDispatcher\"),\n `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`\n );\n }\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvents(eventIds);\n }\n\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\n public static hasEventOfInterest(\n eventIds: Set<string>,\n idsOfInterest: string[]\n ) {\n return SyncUiEventDispatcher._uiEventDispatcher.hasEventOfInterest(\n eventIds,\n idsOfInterest\n );\n }\n\n private static _dispatchViewChange() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ViewStateChanged\n );\n }\n\n private static _dispatchFeatureOverridesChange() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FeatureOverridesChanged\n );\n }\n\n private static _dispatchViewedModelsChanged() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ViewedModelsChanged\n );\n }\n\n /** Initializes the Monitoring of Events that trigger dispatching sync events */\n public static initialize() {\n // clear any registered listeners - this should only be encountered in unit test scenarios\n this._unregisterFuncs.forEach((unregister) => unregister());\n this._unregisterFuncs = [];\n\n this._unregisterFuncs.push(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.frontstages.onContentControlActivatedEvent.addListener(() => {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n SyncUiEventId.ContentControlActivated\n );\n }),\n UiFramework.frontstages.onContentLayoutActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ContentLayoutActivated\n );\n }),\n UiFramework.frontstages.onFrontstageActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FrontstageActivating\n );\n }),\n UiFramework.frontstages.onFrontstageReadyEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FrontstageReady\n );\n }),\n UiFramework.frontstages.onModalFrontstageChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ModalFrontstageChanged\n );\n }),\n UiFramework.frontstages.onNavigationAidActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.NavigationAidActivated\n );\n }),\n UiFramework.frontstages.onToolActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ToolActivated\n );\n }),\n UiFramework.frontstages.onWidgetStateChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.WidgetStateChanged\n );\n }),\n UiFramework.backstage.onToggled.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.BackstageEvent\n );\n }),\n UiFramework.content.onActiveContentChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ActiveContentChanged\n );\n }),\n IModelApp.viewManager.onSelectedViewportChanged.addListener((args) => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ActiveViewportChanged\n );\n\n // if this is the first view being opened up start the default tool so tool admin is happy.\n if (undefined === args.previous) {\n void IModelApp.toolAdmin.startDefaultTool();\n } else {\n args.previous.onViewChanged.removeListener(\n SyncUiEventDispatcher._dispatchViewChange\n );\n args.previous.onFeatureOverridesChanged.removeListener(\n SyncUiEventDispatcher._dispatchFeatureOverridesChange\n );\n args.previous.onViewedModelsChanged.removeListener(\n SyncUiEventDispatcher._dispatchViewedModelsChanged\n );\n }\n if (args.current) {\n args.current.onViewChanged.addListener(\n SyncUiEventDispatcher._dispatchViewChange\n );\n args.current.onFeatureOverridesChanged.addListener(\n SyncUiEventDispatcher._dispatchFeatureOverridesChange\n );\n args.current.onViewedModelsChanged.addListener(\n SyncUiEventDispatcher._dispatchViewedModelsChanged\n );\n }\n }),\n useAccuDrawStore.subscribe((state, prev) => {\n if (state.is3d === prev.is3d) return;\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiInternalEventId.AccuDrawViewIs3dChanged\n );\n })\n );\n }\n\n /** This should be called by IModelApp when the active IModelConnection is closed. */\n public static clearConnectionEvents(iModelConnection: IModelConnection) {\n if (this._iModelConnection !== iModelConnection) return;\n this._connectionUnregisterFuncs.forEach((unregister) => unregister());\n this._connectionUnregisterFuncs = [];\n }\n\n /** This should be called by IModelApp when the active IModelConnection is established. */\n public static initializeConnectionEvents(iModelConnection: IModelConnection) {\n this._iModelConnection &&\n this.clearConnectionEvents(this._iModelConnection);\n this._iModelConnection = iModelConnection;\n\n this._connectionUnregisterFuncs.push(\n iModelConnection.selectionSet.onChanged.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.SelectionSetChanged\n );\n }),\n iModelConnection.selectionSet.onChanged.addListener((ev) => {\n const numSelected = ev.set.elements.size;\n UiFramework.setNumItemsSelected(numSelected);\n })\n );\n }\n}\n"]}
@@ -10,16 +10,9 @@ import { BaseTimelineDataProvider } from "@itwin/imodel-components-react";
10
10
  * @public
11
11
  */
12
12
  export class AnalysisAnimationTimelineDataProvider extends BaseTimelineDataProvider {
13
+ _viewState;
13
14
  constructor(viewState, viewport) {
14
15
  super(viewport);
15
- this.onAnimationFractionChanged = (animationFraction) => {
16
- this.animationFraction = animationFraction;
17
- if (this._viewport)
18
- this._viewport.analysisFraction = animationFraction;
19
- };
20
- this.onPlaybackSettingChanged = (settings) => {
21
- this.updateSettings(settings);
22
- };
23
16
  this._viewState = viewState;
24
17
  if (viewState && viewState.analysisStyle) {
25
18
  this.supportsTimelineAnimation = true;
@@ -39,5 +32,13 @@ export class AnalysisAnimationTimelineDataProvider extends BaseTimelineDataProvi
39
32
  }
40
33
  return false;
41
34
  }
35
+ onAnimationFractionChanged = (animationFraction) => {
36
+ this.animationFraction = animationFraction;
37
+ if (this._viewport)
38
+ this._viewport.analysisFraction = animationFraction;
39
+ };
40
+ onPlaybackSettingChanged = (settings) => {
41
+ this.updateSettings(settings);
42
+ };
42
43
  }
43
44
  //# sourceMappingURL=AnalysisAnimationProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnalysisAnimationProvider.js","sourceRoot":"","sources":["../../../src/appui-react/timeline/AnalysisAnimationProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;GAEG;AACH,MAAM,OAAO,qCAAsC,SAAQ,wBAAwB;IAGjF,YAAY,SAAoB,EAAE,QAAyB;QACzD,KAAK,CAAC,QAAQ,CAAC,CAAC;QA0BF,+BAA0B,GAAG,CAAC,iBAAyB,EAAE,EAAE;YACzE,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAC3C,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,iBAAiB,CAAC;QAC1E,CAAC,CAAC;QAEc,6BAAwB,GAAG,CAAC,QAA0B,EAAE,EAAE;YACxE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC;QAhCA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,SAAS,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,CAAC;IACH,CAAC;IAEe,KAAK,CAAC,gBAAgB;QACpC,mDAAmD;QACnD,IAAI,IAAI,CAAC,SAAS;YAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAE3D,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YACpE,gCAAgC;YAChC,IAAI,CAAC,cAAc,CAAC;gBAClB,QAAQ,EAAE,EAAE,GAAG,IAAI;gBACnB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CAUF","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 Timeline\n */\n\nimport type { ScreenViewport, ViewState } from \"@itwin/core-frontend\";\nimport type { PlaybackSettings } from \"@itwin/imodel-components-react\";\nimport { BaseTimelineDataProvider } from \"@itwin/imodel-components-react\";\n\n/** Analysis Timeline Data Provider - Allows a TimelineComponent to animate the AnalysisStyle information stored in a ViewState.\n * @public\n */\nexport class AnalysisAnimationTimelineDataProvider extends BaseTimelineDataProvider {\n private _viewState: ViewState;\n\n constructor(viewState: ViewState, viewport?: ScreenViewport) {\n super(viewport);\n this._viewState = viewState;\n\n if (viewState && viewState.analysisStyle) {\n this.supportsTimelineAnimation = true;\n }\n }\n\n public override async loadTimelineData(): Promise<boolean> {\n // if animationFraction is set pointer should match\n if (this._viewport)\n this.animationFraction = this._viewport.analysisFraction;\n\n if (this.supportsTimelineAnimation && this._viewState.analysisStyle) {\n // for now just initial settings\n this.updateSettings({\n duration: 10 * 1000,\n loop: true,\n });\n\n return true;\n }\n\n return false;\n }\n\n public override onAnimationFractionChanged = (animationFraction: number) => {\n this.animationFraction = animationFraction;\n if (this._viewport) this._viewport.analysisFraction = animationFraction;\n };\n\n public override onPlaybackSettingChanged = (settings: PlaybackSettings) => {\n this.updateSettings(settings);\n };\n}\n"]}
1
+ {"version":3,"file":"AnalysisAnimationProvider.js","sourceRoot":"","sources":["../../../src/appui-react/timeline/AnalysisAnimationProvider.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;GAEG;AACH,MAAM,OAAO,qCAAsC,SAAQ,wBAAwB;IACzE,UAAU,CAAY;IAE9B,YAAY,SAAoB,EAAE,QAAyB;QACzD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,SAAS,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,CAAC;IACH,CAAC;IAEe,KAAK,CAAC,gBAAgB;QACpC,mDAAmD;QACnD,IAAI,IAAI,CAAC,SAAS;YAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAE3D,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YACpE,gCAAgC;YAChC,IAAI,CAAC,cAAc,CAAC;gBAClB,QAAQ,EAAE,EAAE,GAAG,IAAI;gBACnB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,0BAA0B,GAAG,CAAC,iBAAyB,EAAE,EAAE;QACzE,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,iBAAiB,CAAC;IAC1E,CAAC,CAAC;IAEc,wBAAwB,GAAG,CAAC,QAA0B,EAAE,EAAE;QACxE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC;CACH","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Timeline\n */\n\nimport type { ScreenViewport, ViewState } from \"@itwin/core-frontend\";\nimport type { PlaybackSettings } from \"@itwin/imodel-components-react\";\nimport { BaseTimelineDataProvider } from \"@itwin/imodel-components-react\";\n\n/** Analysis Timeline Data Provider - Allows a TimelineComponent to animate the AnalysisStyle information stored in a ViewState.\n * @public\n */\nexport class AnalysisAnimationTimelineDataProvider extends BaseTimelineDataProvider {\n private _viewState: ViewState;\n\n constructor(viewState: ViewState, viewport?: ScreenViewport) {\n super(viewport);\n this._viewState = viewState;\n\n if (viewState && viewState.analysisStyle) {\n this.supportsTimelineAnimation = true;\n }\n }\n\n public override async loadTimelineData(): Promise<boolean> {\n // if animationFraction is set pointer should match\n if (this._viewport)\n this.animationFraction = this._viewport.analysisFraction;\n\n if (this.supportsTimelineAnimation && this._viewState.analysisStyle) {\n // for now just initial settings\n this.updateSettings({\n duration: 10 * 1000,\n loop: true,\n });\n\n return true;\n }\n\n return false;\n }\n\n public override onAnimationFractionChanged = (animationFraction: number) => {\n this.animationFraction = animationFraction;\n if (this._viewport) this._viewport.analysisFraction = animationFraction;\n };\n\n public override onPlaybackSettingChanged = (settings: PlaybackSettings) => {\n this.updateSettings(settings);\n };\n}\n"]}
@@ -11,20 +11,9 @@ import { BaseTimelineDataProvider } from "@itwin/imodel-components-react";
11
11
  */
12
12
  // No access to scheduleScript to even mock in test
13
13
  export class ScheduleAnimationTimelineDataProvider extends BaseTimelineDataProvider {
14
+ _viewState;
14
15
  constructor(viewState, viewport) {
15
16
  super(viewport);
16
- this.onAnimationFractionChanged = (animationFraction) => {
17
- this.animationFraction = animationFraction;
18
- if (this._viewport) {
19
- const script = this._viewport.displayStyle.scheduleScript;
20
- if (script)
21
- this._viewport.timePoint =
22
- script.duration.fractionToPoint(animationFraction);
23
- }
24
- };
25
- this.onPlaybackSettingChanged = (settings) => {
26
- this.updateSettings(settings);
27
- };
28
17
  this._viewState = viewState;
29
18
  if (viewState && viewState.scheduleScript) {
30
19
  this.supportsTimelineAnimation = true;
@@ -52,5 +41,17 @@ export class ScheduleAnimationTimelineDataProvider extends BaseTimelineDataProvi
52
41
  }
53
42
  return false;
54
43
  }
44
+ onAnimationFractionChanged = (animationFraction) => {
45
+ this.animationFraction = animationFraction;
46
+ if (this._viewport) {
47
+ const script = this._viewport.displayStyle.scheduleScript;
48
+ if (script)
49
+ this._viewport.timePoint =
50
+ script.duration.fractionToPoint(animationFraction);
51
+ }
52
+ };
53
+ onPlaybackSettingChanged = (settings) => {
54
+ this.updateSettings(settings);
55
+ };
55
56
  }
56
57
  //# sourceMappingURL=ScheduleAnimationProvider.js.map