@itwin/appui-react 4.13.2 → 4.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/lib/cjs/appui-react/UiFramework.js +1 -1
  3. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  4. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  5. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  7. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  8. package/lib/cjs/appui-react/accudraw/AccuDrawWidget.js +1 -1
  9. package/lib/cjs/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  10. package/lib/cjs/appui-react/accudraw/Calculator.js +1 -1
  11. package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
  12. package/lib/cjs/appui-react/accudraw/CalculatorEngine.js +2 -2
  13. package/lib/cjs/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +1 -1
  15. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/MenuButton.js.map +1 -1
  17. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  18. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  19. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js +1 -1
  20. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  21. package/lib/cjs/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  22. package/lib/cjs/appui-react/backstage/useDefaultBackstageItems.js.map +1 -1
  23. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  24. package/lib/cjs/appui-react/childwindow/ChildWindowWidget.js.map +1 -1
  25. package/lib/cjs/appui-react/childwindow/CopyStyles.js.map +1 -1
  26. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  27. package/lib/cjs/appui-react/configurableui/ActivityTracker.js.map +1 -1
  28. package/lib/cjs/appui-react/configurableui/ConfigurableUiControl.js +1 -1
  29. package/lib/cjs/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  30. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  31. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  32. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  33. package/lib/cjs/appui-react/configurableui/state.js +1 -1
  34. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  35. package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
  36. package/lib/cjs/appui-react/content/ContentGroup.js +1 -1
  37. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  38. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  39. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  40. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  41. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  42. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +1 -1
  43. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  44. package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
  45. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  46. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
  47. package/lib/cjs/appui-react/content/ViewStateHelper.js.map +1 -1
  48. package/lib/cjs/appui-react/content/ViewportContentControl.js.map +1 -1
  49. package/lib/cjs/appui-react/content/split-pane/Pane.js.map +1 -1
  50. package/lib/cjs/appui-react/content/split-pane/Resizer.js.map +1 -1
  51. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  52. package/lib/cjs/appui-react/cursor/CursorInformation.js +3 -3
  53. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  54. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  55. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js +2 -2
  56. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  57. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +1 -1
  58. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  59. package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  60. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  61. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +1 -1
  62. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  63. package/lib/cjs/appui-react/dialog/InternalContentDialogManager.js +1 -1
  64. package/lib/cjs/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  65. package/lib/cjs/appui-react/dialog/InternalModalDialogManager.js +1 -1
  66. package/lib/cjs/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  67. package/lib/cjs/appui-react/dialog/InternalModelessDialogManager.js +1 -1
  68. package/lib/cjs/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  69. package/lib/cjs/appui-react/dialog/StandardMessageBox.js.map +1 -1
  70. package/lib/cjs/appui-react/dialog/UiDataProvidedDialog.js.map +1 -1
  71. package/lib/cjs/appui-react/feedback/ElementTooltip.js +1 -1
  72. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  73. package/lib/cjs/appui-react/feedback/ValidationTextbox.js +1 -1
  74. package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
  75. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  76. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +1 -1
  77. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  78. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +1 -1
  79. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  80. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js +1 -1
  81. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  82. package/lib/cjs/appui-react/frontstage/StageUsage.js +1 -1
  83. package/lib/cjs/appui-react/frontstage/StageUsage.js.map +1 -1
  84. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  85. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  86. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  87. package/lib/cjs/appui-react/hooks/useConditionalValue.js.map +1 -1
  88. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  89. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  90. package/lib/cjs/appui-react/hooks/useTranslation.js.map +1 -1
  91. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +1 -1
  92. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  93. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  94. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -1
  95. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  96. package/lib/cjs/appui-react/keyins/Keyins.js +1 -1
  97. package/lib/cjs/appui-react/keyins/Keyins.js.map +1 -1
  98. package/lib/cjs/appui-react/layout/backstage/Backstage.js +1 -1
  99. package/lib/cjs/appui-react/layout/backstage/Backstage.js.map +1 -1
  100. package/lib/cjs/appui-react/layout/base/DragManager.js.map +1 -1
  101. package/lib/cjs/appui-react/layout/base/NineZone.js.map +1 -1
  102. package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js +1 -1
  103. package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  104. package/lib/cjs/appui-react/layout/base/usePointerCaptor.js.map +1 -1
  105. package/lib/cjs/appui-react/layout/footer/Indicator.js +1 -1
  106. package/lib/cjs/appui-react/layout/footer/Indicator.js.map +1 -1
  107. package/lib/cjs/appui-react/layout/outline/PanelOutline.js.map +1 -1
  108. package/lib/cjs/appui-react/layout/popup/Tooltip.js +1 -1
  109. package/lib/cjs/appui-react/layout/popup/Tooltip.js.map +1 -1
  110. package/lib/cjs/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  111. package/lib/cjs/appui-react/layout/state/TabLocation.js.map +1 -1
  112. package/lib/cjs/appui-react/layout/state/WidgetLocation.js.map +1 -1
  113. package/lib/cjs/appui-react/layout/state/internal/NineZoneStateHelpers.js.map +1 -1
  114. package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
  115. package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
  116. package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
  117. package/lib/cjs/appui-react/layout/target/PanelTargets.js.map +1 -1
  118. package/lib/cjs/appui-react/layout/target/SectionTarget.js.map +1 -1
  119. package/lib/cjs/appui-react/layout/target/useAllowedSideTarget.js.map +1 -1
  120. package/lib/cjs/appui-react/layout/target/useAllowedWidgetTarget.js.map +1 -1
  121. package/lib/cjs/appui-react/layout/tool-settings/Docked.js.map +1 -1
  122. package/lib/cjs/appui-react/layout/widget/Buttons.js.map +1 -1
  123. package/lib/cjs/appui-react/layout/widget/ContentManager.js.map +1 -1
  124. package/lib/cjs/appui-react/layout/widget/ContentRenderer.js.map +1 -1
  125. package/lib/cjs/appui-react/layout/widget/FloatingWidget.js.map +1 -1
  126. package/lib/cjs/appui-react/layout/widget/Overflow.js.map +1 -1
  127. package/lib/cjs/appui-react/layout/widget/PanelWidget.js.map +1 -1
  128. package/lib/cjs/appui-react/layout/widget/SendBack.js.map +1 -1
  129. package/lib/cjs/appui-react/layout/widget/Tab.js.map +1 -1
  130. package/lib/cjs/appui-react/layout/widget/TabBar.js.map +1 -1
  131. package/lib/cjs/appui-react/layout/widget/Tabs.js.map +1 -1
  132. package/lib/cjs/appui-react/layout/widget/Widget.js.map +1 -1
  133. package/lib/cjs/appui-react/layout/widget/tools/button/Button.js.map +1 -1
  134. package/lib/cjs/appui-react/layout/widget-panels/Expander.js.map +1 -1
  135. package/lib/cjs/appui-react/layout/widget-panels/Grip.js.map +1 -1
  136. package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
  137. package/lib/cjs/appui-react/layout/widget-panels/useAnimatePanel.js.map +1 -1
  138. package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -1
  139. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  140. package/lib/cjs/appui-react/messages/InputField.js.map +1 -1
  141. package/lib/cjs/appui-react/messages/MessageManager.js +1 -1
  142. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  143. package/lib/cjs/appui-react/messages/MessageRenderer.js.map +1 -1
  144. package/lib/cjs/appui-react/messages/Pointer.js +1 -1
  145. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  146. package/lib/cjs/appui-react/messages/StatusMessageManager.js.map +1 -1
  147. package/lib/cjs/appui-react/messages/getToastCategory.js.map +1 -1
  148. package/lib/cjs/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  149. package/lib/cjs/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  150. package/lib/cjs/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  151. package/lib/cjs/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  152. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js +1 -1
  153. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  154. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +1 -1
  155. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  156. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -1
  157. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  158. package/lib/cjs/appui-react/pickers/ListPicker.js +1 -1
  159. package/lib/cjs/appui-react/pickers/ListPicker.js.map +1 -1
  160. package/lib/cjs/appui-react/pickers/ViewSelector.js +1 -1
  161. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  162. package/lib/cjs/appui-react/popup/CardPopup.js +1 -1
  163. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  164. package/lib/cjs/appui-react/popup/ComponentPopup.js.map +1 -1
  165. package/lib/cjs/appui-react/popup/InputEditorPopup.js.map +1 -1
  166. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  167. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  168. package/lib/cjs/appui-react/popup/PopupManager.js +2 -2
  169. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  170. package/lib/cjs/appui-react/popup/PositionPopup.js.map +1 -1
  171. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  172. package/lib/cjs/appui-react/popup/ToolbarPopup.js +1 -1
  173. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  174. package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -1
  175. package/lib/cjs/appui-react/preview/activate-dropped-tab/activateDroppedTab.js.map +1 -1
  176. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -1
  177. package/lib/cjs/appui-react/preview/new-toolbars/ActionItem.js.map +1 -1
  178. package/lib/cjs/appui-react/preview/new-toolbars/CustomItem.js.map +1 -1
  179. package/lib/cjs/appui-react/preview/new-toolbars/GroupItem.js.map +1 -1
  180. package/lib/cjs/appui-react/preview/new-toolbars/ToolGroup.js.map +1 -1
  181. package/lib/cjs/appui-react/preview/new-toolbars/Toolbar.js.map +1 -1
  182. package/lib/cjs/appui-react/preview/new-toolbars/useOverflow.js.map +1 -1
  183. package/lib/cjs/appui-react/preview/reparent-popout-widgets/usePopoutsStore.js.map +1 -1
  184. package/lib/cjs/appui-react/preview/reparent-popout-widgets/useReparentPopoutWidget.js.map +1 -1
  185. package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
  186. package/lib/cjs/appui-react/redux/ReducerRegistry.js.map +1 -1
  187. package/lib/cjs/appui-react/redux/SessionState.js +2 -2
  188. package/lib/cjs/appui-react/redux/SessionState.js.map +1 -1
  189. package/lib/cjs/appui-react/redux/StateManager.js +1 -1
  190. package/lib/cjs/appui-react/redux/StateManager.js.map +1 -1
  191. package/lib/cjs/appui-react/redux/connectIModel.js +3 -3
  192. package/lib/cjs/appui-react/redux/connectIModel.js.map +1 -1
  193. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js +1 -1
  194. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js.map +1 -1
  195. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +3 -3
  196. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  197. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  198. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  199. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  200. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  201. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js +1 -1
  202. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  203. package/lib/cjs/appui-react/shared/CommandItemDef.js +1 -1
  204. package/lib/cjs/appui-react/shared/CommandItemDef.js.map +1 -1
  205. package/lib/cjs/appui-react/shared/CustomItemDef.js +1 -1
  206. package/lib/cjs/appui-react/shared/CustomItemDef.js.map +1 -1
  207. package/lib/cjs/appui-react/shared/MenuItem.js.map +1 -1
  208. package/lib/cjs/appui-react/shared/SelectionScope.js +1 -1
  209. package/lib/cjs/appui-react/shared/SelectionScope.js.map +1 -1
  210. package/lib/cjs/appui-react/shared/ToolItemDef.js.map +1 -1
  211. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  212. package/lib/cjs/appui-react/stagepanels/StagePanelLocation.js +1 -1
  213. package/lib/cjs/appui-react/stagepanels/StagePanelLocation.js.map +1 -1
  214. package/lib/cjs/appui-react/stagepanels/StagePanelSection.js +1 -1
  215. package/lib/cjs/appui-react/stagepanels/StagePanelSection.js.map +1 -1
  216. package/lib/cjs/appui-react/stagepanels/StagePanelState.js +1 -1
  217. package/lib/cjs/appui-react/stagepanels/StagePanelState.js.map +1 -1
  218. package/lib/cjs/appui-react/statusbar/Field.js +2 -4
  219. package/lib/cjs/appui-react/statusbar/Field.js.map +1 -1
  220. package/lib/cjs/appui-react/statusbar/StatusBar.js +1 -1
  221. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  222. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  223. package/lib/cjs/appui-react/statusbar/StatusBarItem.d.ts +3 -3
  224. package/lib/cjs/appui-react/statusbar/StatusBarItem.d.ts.map +1 -1
  225. package/lib/cjs/appui-react/statusbar/StatusBarItem.js +2 -2
  226. package/lib/cjs/appui-react/statusbar/StatusBarItem.js.map +1 -1
  227. package/lib/cjs/appui-react/statusbar/StatusBarItemUtilities.js +1 -1
  228. package/lib/cjs/appui-react/statusbar/StatusBarItemUtilities.js.map +1 -1
  229. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  230. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js +1 -1
  231. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js.map +1 -1
  232. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  233. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  234. package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
  235. package/lib/cjs/appui-react/statusfields/SelectionCount.js.map +1 -1
  236. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  237. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  238. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  239. package/lib/cjs/appui-react/statusfields/message-center/MessageCenterField.js.map +1 -1
  240. package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  241. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  242. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  243. package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  244. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
  245. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  246. package/lib/cjs/appui-react/theme/ThemeManager.js +1 -1
  247. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  248. package/lib/cjs/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  249. package/lib/cjs/appui-react/timeline/ScheduleAnimationProvider.js +1 -1
  250. package/lib/cjs/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  251. package/lib/cjs/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  252. package/lib/cjs/appui-react/toolbar/GroupItem.js +1 -1
  253. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  254. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  255. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  256. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  257. package/lib/cjs/appui-react/toolbar/ToolbarItem.js +2 -2
  258. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  259. package/lib/cjs/appui-react/toolbar/ToolbarItemUtilities.js +1 -1
  260. package/lib/cjs/appui-react/toolbar/ToolbarItemUtilities.js.map +1 -1
  261. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  262. package/lib/cjs/appui-react/toolbar/toUIAToolbarItem.js.map +1 -1
  263. package/lib/cjs/appui-react/toolbar/useActiveStageProvidedToolbarItems.js.map +1 -1
  264. package/lib/cjs/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +1 -1
  265. package/lib/cjs/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  266. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  267. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  268. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js +1 -1
  269. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  270. package/lib/cjs/appui-react/tools/OpenSettingsTool.js +1 -1
  271. package/lib/cjs/appui-react/tools/OpenSettingsTool.js.map +1 -1
  272. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js +2 -2
  273. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  274. package/lib/cjs/appui-react/tools/ToolSettingsTools.js +2 -2
  275. package/lib/cjs/appui-react/tools/ToolSettingsTools.js.map +1 -1
  276. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  277. package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js +1 -1
  278. package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  279. package/lib/cjs/appui-react/toolsettings/ToolInformation.js.map +1 -1
  280. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  281. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  282. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  283. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  284. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  285. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +1 -1
  286. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  287. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  288. package/lib/cjs/appui-react/uistate/AppUiSettings.js +1 -1
  289. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  290. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +2 -2
  291. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  292. package/lib/cjs/appui-react/utils/PropsHelper.js.map +1 -1
  293. package/lib/cjs/appui-react/utils/ToolbarButtonHelper.js.map +1 -1
  294. package/lib/cjs/appui-react/utils/matchesWords.js.map +1 -1
  295. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  296. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  297. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
  298. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  299. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  300. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  301. package/lib/cjs/appui-react/widgets/StableWidgetDef.js.map +1 -1
  302. package/lib/cjs/appui-react/widgets/StatusBarWidgetComposerControl.js +1 -1
  303. package/lib/cjs/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  304. package/lib/cjs/appui-react/widgets/WidgetDef.js +2 -2
  305. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  306. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  307. package/lib/cjs/appui-react/widgets/WidgetManager.js.map +1 -1
  308. package/lib/cjs/appui-react/widgets/WidgetState.js +1 -1
  309. package/lib/cjs/appui-react/widgets/WidgetState.js.map +1 -1
  310. package/lib/cjs/appui-react/widgets/useWidget.js.map +1 -1
  311. package/lib/esm/appui-react/UiFramework.js +1 -2
  312. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  313. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  314. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  315. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js +1 -2
  316. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  317. package/lib/esm/appui-react/accudraw/AccuDrawWidget.js +1 -2
  318. package/lib/esm/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  319. package/lib/esm/appui-react/accudraw/Calculator.js +1 -2
  320. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  321. package/lib/esm/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  322. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +1 -2
  323. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  324. package/lib/esm/appui-react/accudraw/MenuButton.js.map +1 -1
  325. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  326. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  327. package/lib/esm/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  328. package/lib/esm/appui-react/backstage/useDefaultBackstageItems.js.map +1 -1
  329. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  330. package/lib/esm/appui-react/childwindow/ChildWindowWidget.js.map +1 -1
  331. package/lib/esm/appui-react/childwindow/CopyStyles.js.map +1 -1
  332. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  333. package/lib/esm/appui-react/configurableui/ActivityTracker.js.map +1 -1
  334. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -2
  335. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  336. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  337. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  338. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  339. package/lib/esm/appui-react/content/ContentGroup.js +1 -2
  340. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  341. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  342. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  343. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  344. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  345. package/lib/esm/appui-react/content/InternalContentLayoutManager.js +1 -2
  346. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  347. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -2
  348. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  349. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
  350. package/lib/esm/appui-react/content/ViewStateHelper.js.map +1 -1
  351. package/lib/esm/appui-react/content/ViewportContentControl.js.map +1 -1
  352. package/lib/esm/appui-react/content/split-pane/Pane.js.map +1 -1
  353. package/lib/esm/appui-react/content/split-pane/Resizer.js.map +1 -1
  354. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  355. package/lib/esm/appui-react/cursor/CursorInformation.js +1 -2
  356. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  357. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  358. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js +1 -2
  359. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  360. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +1 -2
  361. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  362. package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  363. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  364. package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -2
  365. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  366. package/lib/esm/appui-react/dialog/InternalContentDialogManager.js +1 -2
  367. package/lib/esm/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  368. package/lib/esm/appui-react/dialog/InternalModalDialogManager.js +1 -2
  369. package/lib/esm/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  370. package/lib/esm/appui-react/dialog/InternalModelessDialogManager.js +1 -2
  371. package/lib/esm/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  372. package/lib/esm/appui-react/dialog/StandardMessageBox.js.map +1 -1
  373. package/lib/esm/appui-react/dialog/UiDataProvidedDialog.js.map +1 -1
  374. package/lib/esm/appui-react/feedback/ElementTooltip.js +1 -2
  375. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  376. package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
  377. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  378. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +1 -2
  379. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  380. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +1 -2
  381. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  382. package/lib/esm/appui-react/frontstage/NestedFrontstage.js +1 -2
  383. package/lib/esm/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  384. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  385. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  386. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  387. package/lib/esm/appui-react/hooks/useConditionalValue.js.map +1 -1
  388. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  389. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  390. package/lib/esm/appui-react/hooks/useTranslation.js.map +1 -1
  391. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +1 -2
  392. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  393. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  394. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -2
  395. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  396. package/lib/esm/appui-react/keyins/Keyins.js.map +1 -1
  397. package/lib/esm/appui-react/layout/backstage/Backstage.js +1 -2
  398. package/lib/esm/appui-react/layout/backstage/Backstage.js.map +1 -1
  399. package/lib/esm/appui-react/layout/base/DragManager.js.map +1 -1
  400. package/lib/esm/appui-react/layout/base/NineZone.js.map +1 -1
  401. package/lib/esm/appui-react/layout/base/SafeAreaInsets.js +1 -2
  402. package/lib/esm/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  403. package/lib/esm/appui-react/layout/base/usePointerCaptor.js.map +1 -1
  404. package/lib/esm/appui-react/layout/footer/Indicator.js +1 -1
  405. package/lib/esm/appui-react/layout/footer/Indicator.js.map +1 -1
  406. package/lib/esm/appui-react/layout/outline/PanelOutline.js.map +1 -1
  407. package/lib/esm/appui-react/layout/popup/Tooltip.js +1 -2
  408. package/lib/esm/appui-react/layout/popup/Tooltip.js.map +1 -1
  409. package/lib/esm/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  410. package/lib/esm/appui-react/layout/state/TabLocation.js.map +1 -1
  411. package/lib/esm/appui-react/layout/state/WidgetLocation.js.map +1 -1
  412. package/lib/esm/appui-react/layout/state/internal/NineZoneStateHelpers.js.map +1 -1
  413. package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
  414. package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
  415. package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
  416. package/lib/esm/appui-react/layout/target/PanelTargets.js.map +1 -1
  417. package/lib/esm/appui-react/layout/target/SectionTarget.js.map +1 -1
  418. package/lib/esm/appui-react/layout/target/useAllowedSideTarget.js.map +1 -1
  419. package/lib/esm/appui-react/layout/target/useAllowedWidgetTarget.js.map +1 -1
  420. package/lib/esm/appui-react/layout/tool-settings/Docked.js.map +1 -1
  421. package/lib/esm/appui-react/layout/widget/Buttons.js.map +1 -1
  422. package/lib/esm/appui-react/layout/widget/ContentManager.js.map +1 -1
  423. package/lib/esm/appui-react/layout/widget/ContentRenderer.js.map +1 -1
  424. package/lib/esm/appui-react/layout/widget/FloatingWidget.js.map +1 -1
  425. package/lib/esm/appui-react/layout/widget/Overflow.js.map +1 -1
  426. package/lib/esm/appui-react/layout/widget/PanelWidget.js.map +1 -1
  427. package/lib/esm/appui-react/layout/widget/SendBack.js.map +1 -1
  428. package/lib/esm/appui-react/layout/widget/Tab.js.map +1 -1
  429. package/lib/esm/appui-react/layout/widget/TabBar.js.map +1 -1
  430. package/lib/esm/appui-react/layout/widget/Tabs.js.map +1 -1
  431. package/lib/esm/appui-react/layout/widget/Widget.js.map +1 -1
  432. package/lib/esm/appui-react/layout/widget/tools/button/Button.js.map +1 -1
  433. package/lib/esm/appui-react/layout/widget-panels/Expander.js.map +1 -1
  434. package/lib/esm/appui-react/layout/widget-panels/Grip.js.map +1 -1
  435. package/lib/esm/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
  436. package/lib/esm/appui-react/layout/widget-panels/useAnimatePanel.js.map +1 -1
  437. package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -1
  438. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  439. package/lib/esm/appui-react/messages/InputField.js.map +1 -1
  440. package/lib/esm/appui-react/messages/MessageManager.js +1 -2
  441. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  442. package/lib/esm/appui-react/messages/MessageRenderer.js.map +1 -1
  443. package/lib/esm/appui-react/messages/Pointer.js +1 -2
  444. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  445. package/lib/esm/appui-react/messages/StatusMessageManager.js.map +1 -1
  446. package/lib/esm/appui-react/messages/getToastCategory.js.map +1 -1
  447. package/lib/esm/appui-react/navigationaids/CubeNavigationAidControl.js +1 -2
  448. package/lib/esm/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  449. package/lib/esm/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -2
  450. package/lib/esm/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  451. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js +1 -2
  452. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  453. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +1 -2
  454. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  455. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -2
  456. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  457. package/lib/esm/appui-react/pickers/ListPicker.js.map +1 -1
  458. package/lib/esm/appui-react/pickers/ViewSelector.js +1 -2
  459. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  460. package/lib/esm/appui-react/popup/CardPopup.js +1 -2
  461. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  462. package/lib/esm/appui-react/popup/ComponentPopup.js.map +1 -1
  463. package/lib/esm/appui-react/popup/InputEditorPopup.js.map +1 -1
  464. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  465. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  466. package/lib/esm/appui-react/popup/PopupManager.js +2 -4
  467. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  468. package/lib/esm/appui-react/popup/PositionPopup.js.map +1 -1
  469. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  470. package/lib/esm/appui-react/popup/ToolbarPopup.js +1 -2
  471. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  472. package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -1
  473. package/lib/esm/appui-react/preview/activate-dropped-tab/activateDroppedTab.js.map +1 -1
  474. package/lib/esm/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -1
  475. package/lib/esm/appui-react/preview/new-toolbars/ActionItem.js.map +1 -1
  476. package/lib/esm/appui-react/preview/new-toolbars/CustomItem.js.map +1 -1
  477. package/lib/esm/appui-react/preview/new-toolbars/GroupItem.js.map +1 -1
  478. package/lib/esm/appui-react/preview/new-toolbars/ToolGroup.js.map +1 -1
  479. package/lib/esm/appui-react/preview/new-toolbars/Toolbar.js.map +1 -1
  480. package/lib/esm/appui-react/preview/new-toolbars/useOverflow.js.map +1 -1
  481. package/lib/esm/appui-react/preview/reparent-popout-widgets/usePopoutsStore.js.map +1 -1
  482. package/lib/esm/appui-react/preview/reparent-popout-widgets/useReparentPopoutWidget.js.map +1 -1
  483. package/lib/esm/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
  484. package/lib/esm/appui-react/redux/ReducerRegistry.js.map +1 -1
  485. package/lib/esm/appui-react/redux/SessionState.js +1 -1
  486. package/lib/esm/appui-react/redux/SessionState.js.map +1 -1
  487. package/lib/esm/appui-react/redux/StateManager.js +1 -2
  488. package/lib/esm/appui-react/redux/StateManager.js.map +1 -1
  489. package/lib/esm/appui-react/redux/connectIModel.js +3 -3
  490. package/lib/esm/appui-react/redux/connectIModel.js.map +1 -1
  491. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +2 -4
  492. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  493. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  494. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  495. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  496. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  497. package/lib/esm/appui-react/shared/ActionButtonItemDef.js +1 -2
  498. package/lib/esm/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  499. package/lib/esm/appui-react/shared/CommandItemDef.js +1 -2
  500. package/lib/esm/appui-react/shared/CommandItemDef.js.map +1 -1
  501. package/lib/esm/appui-react/shared/CustomItemDef.js +1 -2
  502. package/lib/esm/appui-react/shared/CustomItemDef.js.map +1 -1
  503. package/lib/esm/appui-react/shared/MenuItem.js.map +1 -1
  504. package/lib/esm/appui-react/shared/ToolItemDef.js.map +1 -1
  505. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  506. package/lib/esm/appui-react/statusbar/Field.js +2 -4
  507. package/lib/esm/appui-react/statusbar/Field.js.map +1 -1
  508. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  509. package/lib/esm/appui-react/statusbar/StatusBarItem.d.ts +3 -3
  510. package/lib/esm/appui-react/statusbar/StatusBarItem.d.ts.map +1 -1
  511. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  512. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  513. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  514. package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
  515. package/lib/esm/appui-react/statusfields/SelectionCount.js.map +1 -1
  516. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  517. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  518. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  519. package/lib/esm/appui-react/statusfields/message-center/MessageCenterField.js.map +1 -1
  520. package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  521. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -2
  522. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  523. package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  524. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +1 -2
  525. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  526. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  527. package/lib/esm/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  528. package/lib/esm/appui-react/timeline/ScheduleAnimationProvider.js +1 -1
  529. package/lib/esm/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  530. package/lib/esm/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  531. package/lib/esm/appui-react/toolbar/GroupItem.js +1 -2
  532. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  533. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  534. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  535. package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  536. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  537. package/lib/esm/appui-react/toolbar/toUIAToolbarItem.js.map +1 -1
  538. package/lib/esm/appui-react/toolbar/useActiveStageProvidedToolbarItems.js.map +1 -1
  539. package/lib/esm/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +1 -1
  540. package/lib/esm/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  541. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  542. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  543. package/lib/esm/appui-react/tools/KeyinPaletteTools.js +1 -2
  544. package/lib/esm/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  545. package/lib/esm/appui-react/tools/OpenSettingsTool.js +1 -2
  546. package/lib/esm/appui-react/tools/OpenSettingsTool.js.map +1 -1
  547. package/lib/esm/appui-react/tools/RestoreLayoutTool.js +2 -4
  548. package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  549. package/lib/esm/appui-react/tools/ToolSettingsTools.js +2 -4
  550. package/lib/esm/appui-react/tools/ToolSettingsTools.js.map +1 -1
  551. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  552. package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js +1 -2
  553. package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  554. package/lib/esm/appui-react/toolsettings/ToolInformation.js.map +1 -1
  555. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  556. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  557. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  558. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  559. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  560. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +1 -2
  561. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  562. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  563. package/lib/esm/appui-react/uistate/AppUiSettings.js +1 -2
  564. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  565. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +2 -4
  566. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  567. package/lib/esm/appui-react/utils/PropsHelper.js.map +1 -1
  568. package/lib/esm/appui-react/utils/ToolbarButtonHelper.js.map +1 -1
  569. package/lib/esm/appui-react/utils/matchesWords.js.map +1 -1
  570. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  571. package/lib/esm/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  572. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
  573. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  574. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  575. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  576. package/lib/esm/appui-react/widgets/StableWidgetDef.js.map +1 -1
  577. package/lib/esm/appui-react/widgets/StatusBarWidgetComposerControl.js +1 -2
  578. package/lib/esm/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  579. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -2
  580. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  581. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  582. package/lib/esm/appui-react/widgets/WidgetManager.js.map +1 -1
  583. package/lib/esm/appui-react/widgets/useWidget.js.map +1 -1
  584. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"PanelWidget.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/PanelWidget.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 Widget\n */\n\nimport \"./PanelWidget.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../widget-panels/Panel\";\nimport { WidgetContentContainer } from \"./ContentContainer\";\nimport { WidgetTabBar } from \"./TabBar\";\nimport { Widget, WidgetProvider } from \"./Widget\";\nimport { WidgetOutline } from \"../outline/WidgetOutline\";\nimport { WidgetTarget } from \"../target/WidgetTarget\";\nimport { isHorizontalPanelState } from \"../state/PanelState\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport type { NineZoneState } from \"../state/NineZoneState\";\n\n/** @internal */\nexport interface PanelWidgetProps {\n widgetId: WidgetState[\"id\"];\n}\n\n/** @internal */\nexport const PanelWidget = React.forwardRef<HTMLDivElement, PanelWidgetProps>(\n function PanelWidget({ widgetId }, ref) {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const widgetsLength = useLayout((state) => {\n const panel = state.panels[side];\n return panel.widgets.length;\n });\n const minimized = useLayout((state) => {\n const widget = getWidgetState(state, widgetId);\n return widget.minimized;\n });\n const horizontal = isHorizontalPanelSide(side);\n const mode = useMode(widgetId);\n const borders = useBorders(widgetId);\n const showTarget = widgetsLength !== 1;\n const className = classnames(\n \"nz-widget-panelWidget\",\n horizontal && \"nz-horizontal\",\n `nz-${mode}`,\n borders\n );\n const content = React.useMemo(\n () => (\n <WidgetContentContainer>\n {showTarget && <WidgetTarget />}\n <WidgetOutline />\n </WidgetContentContainer>\n ),\n [showTarget]\n );\n return (\n <WidgetProvider id={widgetId}>\n <Widget className={className} ref={ref}>\n <WidgetTabBar\n separator={isHorizontalPanelSide(side) ? true : !minimized}\n />\n {content}\n </Widget>\n </WidgetProvider>\n );\n }\n);\n\nfunction findFillWidget(state: NineZoneState, side: PanelSide) {\n const panelWidgets = state.panels[side].widgets;\n return panelWidgets.find((widgetId) => {\n const widget = getWidgetState(state, widgetId);\n if (widget.minimized) return false;\n const tabId = widget.activeTabId;\n const tab = state.tabs[tabId];\n if (!tab.preferredPanelWidgetSize) return true;\n return false;\n });\n}\n\n/** @internal */\nexport function useMode(widgetId: string): \"fit\" | \"fill\" | \"minimized\" {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n return useLayout((state) => {\n const fillWidget = findFillWidget(state, side);\n\n // Force `fill` for last panel widget that is not minimized.\n if (!fillWidget) {\n const panel = state.panels[side];\n for (let i = panel.widgets.length - 1; i >= 0; i--) {\n const wId = panel.widgets[i];\n const w = getWidgetState(state, wId);\n if (w.minimized) continue;\n if (wId === widgetId) return \"fill\";\n break;\n }\n }\n\n const widget = getWidgetState(state, widgetId);\n if (widget.minimized) return \"minimized\";\n const tabId = widget.activeTabId;\n const tab = state.tabs[tabId];\n return tab.preferredPanelWidgetSize ? \"fit\" : \"fill\";\n });\n}\n\n/** @internal */\nexport function useBorders(widgetId: WidgetState[\"id\"]) {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n return useLayout((state) => {\n const panels = state.panels;\n const panel = panels[side];\n const toolSettings = state.toolSettings;\n const isHorizontal = isHorizontalPanelSide(panel.side);\n const isVertical = !isHorizontal;\n const isFirst = panel.widgets[0] === widgetId;\n const isLast = panel.widgets[panel.widgets.length - 1] === widgetId;\n const isTopMostPanelBorder =\n panel.side === \"top\" ||\n (isVertical && !panels.top.span) ||\n (isVertical && panels.top.span && panels.top.collapsed) ||\n (isVertical && panels.top.widgets.length === 0);\n\n let top = true;\n let bottom = true;\n let left = true;\n let right = true;\n if (panel.side === \"bottom\") {\n bottom = false;\n }\n if (isVertical && isLast) {\n bottom = false;\n }\n if (isTopMostPanelBorder && toolSettings?.type === \"docked\") {\n top = false;\n }\n if (isVertical && !isFirst) {\n top = false;\n }\n if (\n isVertical &&\n panels.top.span &&\n !panels.top.collapsed &&\n panels.top.widgets.length > 0\n ) {\n top = false;\n }\n if (isHorizontal && !isFirst) {\n left = false;\n }\n if (\n isHorizontalPanelState(panel) &&\n !panel.span &&\n isFirst &&\n !panels.left.collapsed &&\n panels.left.widgets.length > 0\n ) {\n left = false;\n }\n if (\n isHorizontalPanelState(panel) &&\n !panel.span &&\n isLast &&\n !panels.right.collapsed &&\n panels.right.widgets.length > 0\n ) {\n right = false;\n }\n return {\n \"nz-border-top\": top,\n \"nz-border-bottom\": bottom,\n \"nz-border-left\": left,\n \"nz-border-right\": right,\n };\n }, true);\n}\n"]}
1
+ {"version":3,"file":"PanelWidget.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/PanelWidget.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 Widget\n */\n\nimport \"./PanelWidget.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../widget-panels/Panel\";\nimport { WidgetContentContainer } from \"./ContentContainer\";\nimport { WidgetTabBar } from \"./TabBar\";\nimport { Widget, WidgetProvider } from \"./Widget\";\nimport { WidgetOutline } from \"../outline/WidgetOutline\";\nimport { WidgetTarget } from \"../target/WidgetTarget\";\nimport { isHorizontalPanelState } from \"../state/PanelState\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport type { NineZoneState } from \"../state/NineZoneState\";\n\n/** @internal */\nexport interface PanelWidgetProps {\n widgetId: WidgetState[\"id\"];\n}\n\n/** @internal */\nexport const PanelWidget = React.forwardRef<HTMLDivElement, PanelWidgetProps>(\n function PanelWidget({ widgetId }, ref) {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const widgetsLength = useLayout((state) => {\n const panel = state.panels[side];\n return panel.widgets.length;\n });\n const minimized = useLayout((state) => {\n const widget = getWidgetState(state, widgetId);\n return widget.minimized;\n });\n const horizontal = isHorizontalPanelSide(side);\n const mode = useMode(widgetId);\n const borders = useBorders(widgetId);\n const showTarget = widgetsLength !== 1;\n const className = classnames(\n \"nz-widget-panelWidget\",\n horizontal && \"nz-horizontal\",\n `nz-${mode}`,\n borders\n );\n const content = React.useMemo(\n () => (\n <WidgetContentContainer>\n {showTarget && <WidgetTarget />}\n <WidgetOutline />\n </WidgetContentContainer>\n ),\n [showTarget]\n );\n return (\n <WidgetProvider id={widgetId}>\n <Widget className={className} ref={ref}>\n <WidgetTabBar\n separator={isHorizontalPanelSide(side) ? true : !minimized}\n />\n {content}\n </Widget>\n </WidgetProvider>\n );\n }\n);\n\nfunction findFillWidget(state: NineZoneState, side: PanelSide) {\n const panelWidgets = state.panels[side].widgets;\n return panelWidgets.find((widgetId) => {\n const widget = getWidgetState(state, widgetId);\n if (widget.minimized) return false;\n const tabId = widget.activeTabId;\n const tab = state.tabs[tabId];\n if (!tab.preferredPanelWidgetSize) return true;\n return false;\n });\n}\n\n/** @internal */\nexport function useMode(widgetId: string): \"fit\" | \"fill\" | \"minimized\" {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n return useLayout((state) => {\n const fillWidget = findFillWidget(state, side);\n\n // Force `fill` for last panel widget that is not minimized.\n if (!fillWidget) {\n const panel = state.panels[side];\n for (let i = panel.widgets.length - 1; i >= 0; i--) {\n const wId = panel.widgets[i];\n const w = getWidgetState(state, wId);\n if (w.minimized) continue;\n if (wId === widgetId) return \"fill\";\n break;\n }\n }\n\n const widget = getWidgetState(state, widgetId);\n if (widget.minimized) return \"minimized\";\n const tabId = widget.activeTabId;\n const tab = state.tabs[tabId];\n return tab.preferredPanelWidgetSize ? \"fit\" : \"fill\";\n });\n}\n\n/** @internal */\nexport function useBorders(widgetId: WidgetState[\"id\"]) {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n return useLayout((state) => {\n const panels = state.panels;\n const panel = panels[side];\n const toolSettings = state.toolSettings;\n const isHorizontal = isHorizontalPanelSide(panel.side);\n const isVertical = !isHorizontal;\n const isFirst = panel.widgets[0] === widgetId;\n const isLast = panel.widgets[panel.widgets.length - 1] === widgetId;\n const isTopMostPanelBorder =\n panel.side === \"top\" ||\n (isVertical && !panels.top.span) ||\n (isVertical && panels.top.span && panels.top.collapsed) ||\n (isVertical && panels.top.widgets.length === 0);\n\n let top = true;\n let bottom = true;\n let left = true;\n let right = true;\n if (panel.side === \"bottom\") {\n bottom = false;\n }\n if (isVertical && isLast) {\n bottom = false;\n }\n if (isTopMostPanelBorder && toolSettings?.type === \"docked\") {\n top = false;\n }\n if (isVertical && !isFirst) {\n top = false;\n }\n if (\n isVertical &&\n panels.top.span &&\n !panels.top.collapsed &&\n panels.top.widgets.length > 0\n ) {\n top = false;\n }\n if (isHorizontal && !isFirst) {\n left = false;\n }\n if (\n isHorizontalPanelState(panel) &&\n !panel.span &&\n isFirst &&\n !panels.left.collapsed &&\n panels.left.widgets.length > 0\n ) {\n left = false;\n }\n if (\n isHorizontalPanelState(panel) &&\n !panel.span &&\n isLast &&\n !panels.right.collapsed &&\n panels.right.widgets.length > 0\n ) {\n right = false;\n }\n return {\n \"nz-border-top\": top,\n \"nz-border-bottom\": bottom,\n \"nz-border-left\": left,\n \"nz-border-right\": right,\n };\n }, true);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SendBack.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/SendBack.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,qCAAiC;AACjC,sDAA6C;AAC7C,oEAKoC;AACpC,+CAAqE;AACrE,qDAAgD;AAChD,qDAA+E;AAE/E,oDAA8D;AAE9D,iEAA8D;AAC9D,wEAA2E;AAC3E,iGAAgG;AAEhG,gBAAgB;AACH,QAAA,8BAA8B,GAAG,IAAA,gBAAM,EAElD,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAEnB,gBAAgB;AAChB,SAAgB,oBAAoB,CAClC,KAAoB,EACpB,QAA2B;IAE3B,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ;QACvC,CAAC,CAAC,IAAI,CAAC,QAAQ;QACf,CAAC,CAAC,IAAA,oCAAuB,EAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAE1D,IAAI,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE3D,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,cAAc,EAAE;QACvE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KACvC;IAED,qDAAqD;IACrD,IAAI,iBAAiB,EAAE;QACrB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,iBAAiB,CAAC,EAAE;SAC/B,CAAC;KACH;IAED,+DAA+D;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;KACH;IAED,6FAA6F;IAC7F,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1D,CAAC;AACJ,CAAC;AAtCD,oDAsCC;AAED,gBAAgB;AAChB,SAAgB,oBAAoB;IAClC,MAAM,QAAQ,GAAG,IAAA,sCAA8B,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO,IAAA,uBAAS,EAAC,CAAC,KAAK,EAAE,EAAE,CACzB,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;AACJ,CAAC;AALD,oDAKC;AAED,SAAS,IAAI;IACX,MAAM,EAAE,GAAG,IAAA,oCAAmB,GAAE,CAAC;IACjC,IAAA,qBAAM,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACb,MAAM,IAAI,GAAG,IAAA,uBAAS,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAC5B,oBAAC,iCAAW,OAAG,CAChB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC1B,oBAAC,kCAAY,OAAG,CACjB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CACxB,oBAAC,gCAAU,OAAG,CACf,CAAC,CAAC,CAAC,CACF,oBAAC,mCAAa,OAAG,CAClB,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,QAAQ;IACtB,MAAM,EAAE,GAAG,IAAA,oCAAmB,GAAE,CAAC;IACjC,IAAA,qBAAM,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACb,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,kCAAuB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,qBAAqB,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,CAAC,KAAoC,EAAE,EAAE,CACjE,sCAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7B,QAAQ,CAAC;YACP,IAAI,EAAE,2BAA2B;YACjC,EAAE;SACH,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IACnE,OAAO,CACL,oBAAC,qBAAY,IACX,IAAI,EAAE,oBAAC,IAAI,OAAG,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,aAAa;QAC1B,qEAAqE;QACrE,SAAS,EAAE,aAAoB,GAC/B,CACH,CAAC;AACJ,CAAC;AAtCD,4BAsCC;AAED,gBAAgB;AAChB,SAAgB,WAAW;IACzB,MAAM,eAAe,GAAG,IAAA,yCAAoB,GAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAA,2CAAoB,GAAE,CAAC;IAC9C,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAA,oCAAmB,GAAE,CAAC;IACjD,MAAM,WAAW,GAAG,IAAA,uCAAsB,GAAE,CAAC;IAE7C,OAAO,CAAC,eAAe,IAAI,gBAAgB,IAAI,CAAC,cAAc,IAAI,WAAW,CAAC;AAChF,CAAC;AAPD,kCAOC","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 Widget\n */\n\nimport * as React from \"react\";\nimport { create } from \"zustand\";\nimport { assert } from \"@itwin/core-bentley\";\nimport {\n SvgDockBottom,\n SvgDockLeft,\n SvgDockRight,\n SvgDockTop,\n} from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { useFloatingWidgetId, useWidgetAllowedToDock } from \"./FloatingWidget\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport { getWidgetPanelSectionId } from \"../state/PanelState\";\nimport type { NineZoneState } from \"../state/NineZoneState\";\nimport { useIsToolSettingsTab } from \"./useIsToolSettingsTab\";\nimport { ActionButton } from \"../../preview/widget-action-dropdown/Button\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n/** @internal */\nexport const useActiveSendBackWidgetIdStore = create<\n WidgetState[\"id\"] | undefined\n>(() => undefined);\n\n/** @internal */\nexport function getSendBackHomeState(\n state: NineZoneState,\n widgetId: WidgetState[\"id\"]\n) {\n const floatingWidget = state.floatingWidgets.byId[widgetId];\n const home = floatingWidget.home;\n const panel = state.panels[home.side];\n const destinationWidgetId = home.widgetId\n ? home.widgetId\n : getWidgetPanelSectionId(panel.side, home.widgetIndex);\n\n let destinationWidget = state.widgets[destinationWidgetId];\n\n if (!destinationWidget && panel.widgets.length === panel.maxWidgetCount) {\n const id = panel.widgets[home.widgetIndex];\n destinationWidget = state.widgets[id];\n }\n\n // Widget would be added to an existing panel widget.\n if (destinationWidget) {\n return {\n side: home.side,\n widgetId: destinationWidget.id,\n };\n }\n\n // Widget would be added to a panel as it's first panel widget.\n if (panel.widgets.length === 0) {\n return {\n side: home.side,\n };\n }\n\n // Widget would be added to a panel with an existing panel widget as a separate panel widget.\n return {\n side: home.side,\n sectionIndex: destinationWidgetId.endsWith(\"End\") ? 1 : 0,\n };\n}\n\n/** @internal */\nexport function useSendBackHomeState() {\n const widgetId = useActiveSendBackWidgetIdStore((state) => state);\n return useLayout((state) =>\n widgetId ? getSendBackHomeState(state, widgetId) : undefined\n );\n}\n\nfunction Icon() {\n const id = useFloatingWidgetId();\n assert(!!id);\n const home = useLayout((state) => state.floatingWidgets.byId[id].home);\n return home.side === \"left\" ? (\n <SvgDockLeft />\n ) : home.side === \"right\" ? (\n <SvgDockRight />\n ) : home.side === \"top\" ? (\n <SvgDockTop />\n ) : (\n <SvgDockBottom />\n );\n}\n\n/** @internal */\nexport function SendBack() {\n const id = useFloatingWidgetId();\n assert(!!id);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const title = useLabel(\"sendWidgetHomeTitle\");\n const setActiveWidgetId = (newId: WidgetState[\"id\"] | undefined) =>\n useActiveSendBackWidgetIdStore.setState(newId);\n\n const onClick = () => {\n setActiveWidgetId(undefined);\n dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id,\n });\n };\n const onMouseOver = () => {\n setActiveWidgetId(id);\n };\n const onFocus = () => {\n setActiveWidgetId(id);\n };\n const onMouseOut = () => {\n setActiveWidgetId(undefined);\n };\n const onBlur = () => {\n setActiveWidgetId(undefined);\n };\n const eventHandlers = { onMouseOver, onFocus, onMouseOut, onBlur };\n return (\n <ActionButton\n icon={<Icon />}\n title={title}\n onClick={onClick}\n buttonProps={eventHandlers}\n // TODO: can not pass down event handlers due to iTwinUI type issues.\n menuProps={eventHandlers as any}\n />\n );\n}\n\n/** @internal */\nexport function useSendBack() {\n const maximizedWidget = useIsMaximizedWidget();\n const isToolSettings = useIsToolSettingsTab();\n const isFloatingWidget = !!useFloatingWidgetId();\n const canBeDocked = useWidgetAllowedToDock();\n\n return !maximizedWidget && isFloatingWidget && !isToolSettings && canBeDocked;\n}\n"]}
1
+ {"version":3,"file":"SendBack.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/SendBack.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 Widget\n */\n\nimport * as React from \"react\";\nimport { create } from \"zustand\";\nimport { assert } from \"@itwin/core-bentley\";\nimport {\n SvgDockBottom,\n SvgDockLeft,\n SvgDockRight,\n SvgDockTop,\n} from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { useFloatingWidgetId, useWidgetAllowedToDock } from \"./FloatingWidget\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport { getWidgetPanelSectionId } from \"../state/PanelState\";\nimport type { NineZoneState } from \"../state/NineZoneState\";\nimport { useIsToolSettingsTab } from \"./useIsToolSettingsTab\";\nimport { ActionButton } from \"../../preview/widget-action-dropdown/Button\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n/** @internal */\nexport const useActiveSendBackWidgetIdStore = create<\n WidgetState[\"id\"] | undefined\n>(() => undefined);\n\n/** @internal */\nexport function getSendBackHomeState(\n state: NineZoneState,\n widgetId: WidgetState[\"id\"]\n) {\n const floatingWidget = state.floatingWidgets.byId[widgetId];\n const home = floatingWidget.home;\n const panel = state.panels[home.side];\n const destinationWidgetId = home.widgetId\n ? home.widgetId\n : getWidgetPanelSectionId(panel.side, home.widgetIndex);\n\n let destinationWidget = state.widgets[destinationWidgetId];\n\n if (!destinationWidget && panel.widgets.length === panel.maxWidgetCount) {\n const id = panel.widgets[home.widgetIndex];\n destinationWidget = state.widgets[id];\n }\n\n // Widget would be added to an existing panel widget.\n if (destinationWidget) {\n return {\n side: home.side,\n widgetId: destinationWidget.id,\n };\n }\n\n // Widget would be added to a panel as it's first panel widget.\n if (panel.widgets.length === 0) {\n return {\n side: home.side,\n };\n }\n\n // Widget would be added to a panel with an existing panel widget as a separate panel widget.\n return {\n side: home.side,\n sectionIndex: destinationWidgetId.endsWith(\"End\") ? 1 : 0,\n };\n}\n\n/** @internal */\nexport function useSendBackHomeState() {\n const widgetId = useActiveSendBackWidgetIdStore((state) => state);\n return useLayout((state) =>\n widgetId ? getSendBackHomeState(state, widgetId) : undefined\n );\n}\n\nfunction Icon() {\n const id = useFloatingWidgetId();\n assert(!!id);\n const home = useLayout((state) => state.floatingWidgets.byId[id].home);\n return home.side === \"left\" ? (\n <SvgDockLeft />\n ) : home.side === \"right\" ? (\n <SvgDockRight />\n ) : home.side === \"top\" ? (\n <SvgDockTop />\n ) : (\n <SvgDockBottom />\n );\n}\n\n/** @internal */\nexport function SendBack() {\n const id = useFloatingWidgetId();\n assert(!!id);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const title = useLabel(\"sendWidgetHomeTitle\");\n const setActiveWidgetId = (newId: WidgetState[\"id\"] | undefined) =>\n useActiveSendBackWidgetIdStore.setState(newId);\n\n const onClick = () => {\n setActiveWidgetId(undefined);\n dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id,\n });\n };\n const onMouseOver = () => {\n setActiveWidgetId(id);\n };\n const onFocus = () => {\n setActiveWidgetId(id);\n };\n const onMouseOut = () => {\n setActiveWidgetId(undefined);\n };\n const onBlur = () => {\n setActiveWidgetId(undefined);\n };\n const eventHandlers = { onMouseOver, onFocus, onMouseOut, onBlur };\n return (\n <ActionButton\n icon={<Icon />}\n title={title}\n onClick={onClick}\n buttonProps={eventHandlers}\n // TODO: can not pass down event handlers due to iTwinUI type issues.\n menuProps={eventHandlers as any}\n />\n );\n}\n\n/** @internal */\nexport function useSendBack() {\n const maximizedWidget = useIsMaximizedWidget();\n const isToolSettings = useIsToolSettingsTab();\n const isFloatingWidget = !!useFloatingWidgetId();\n const canBeDocked = useWidgetAllowedToDock();\n\n return !maximizedWidget && isFloatingWidget && !isToolSettings && canBeDocked;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Tab.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 Widget\n */\n\nimport \"./Tab.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n Icon,\n Point,\n Rectangle,\n Timer,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react\";\nimport { useDragTab } from \"../base/DragManager\";\nimport {\n MeasureContext,\n NineZoneDispatchContext,\n ShowWidgetIconContext,\n TabNodeContext,\n} from \"../base/NineZone\";\nimport type { TabState } from \"../state/TabState\";\nimport type {\n PointerCaptorArgs,\n PointerCaptorEvent,\n} from \"../base/usePointerCaptor\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor\";\nimport { PanelSideContext } from \"../widget-panels/Panel\";\nimport { WidgetTabsEntryContext } from \"./Tabs\";\nimport {\n restrainInitialWidgetSize,\n WidgetContext,\n WidgetIdContext,\n} from \"./Widget\";\nimport { TabIdContext } from \"./ContentRenderer\";\nimport { TabTarget } from \"../target/TabTarget\";\nimport { WidgetMenuTab } from \"./MenuTab\";\nimport { WidgetOverflowContext } from \"./Overflow\";\nimport { useLayout, useLayoutStore } from \"../base/LayoutStore\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n/** @internal */\nexport interface WidgetTabProviderProps extends TabPositionContextArgs {\n id: TabState[\"id\"];\n showOnlyTabIcon?: boolean;\n}\n\n/** @internal */\nexport function WidgetTabProvider({\n id,\n first,\n firstInactive,\n last,\n showOnlyTabIcon,\n}: WidgetTabProviderProps) {\n const tabNode = React.useContext(TabNodeContext);\n const position = React.useMemo<TabPositionContextArgs>(\n () => ({\n first,\n firstInactive,\n last,\n }),\n [first, firstInactive, last]\n );\n return (\n <TabIdContext.Provider value={id}>\n <TabPositionContext.Provider value={position}>\n <IconOnlyOnWidgetTabContext.Provider value={!!showOnlyTabIcon}>\n {tabNode}\n </IconOnlyOnWidgetTabContext.Provider>\n </TabPositionContext.Provider>\n </TabIdContext.Provider>\n );\n}\n\n/** Properties of [[WidgetTab]] component.\n * @internal\n */\nexport interface WidgetTabProps extends CommonProps {\n badge?: React.ReactNode;\n}\n\n/** Component that displays a tab in a side panel widget.\n * @internal\n */\nexport function WidgetTab(props: WidgetTabProps) {\n const widgetOverflow = React.useContext(WidgetOverflowContext);\n const overflown = !!widgetOverflow;\n if (overflown) return <WidgetMenuTab {...props} />;\n return <WidgetTabComponent {...props} />;\n}\n\nfunction WidgetTabComponent(props: WidgetTabProps) {\n const id = React.useContext(TabIdContext);\n const { first, firstInactive, last } = React.useContext(TabPositionContext);\n const widgetTabsEntryContext = React.useContext(WidgetTabsEntryContext);\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const showIconOnly = React.useContext(IconOnlyOnWidgetTabContext);\n const showWidgetIcon = React.useContext(ShowWidgetIconContext);\n assert(!!id);\n assert(!!widgetId);\n\n const iconSpec = useLayout((state) => state.tabs[id].iconSpec);\n const label = useLayout((state) => state.tabs[id].label);\n const activeTabId = useLayout(\n (state) => getWidgetState(state, widgetId).activeTabId\n );\n const minimized = useLayout(\n (state) => getWidgetState(state, widgetId).minimized\n );\n\n const maximizedWidget = useIsMaximizedWidget();\n\n const resizeObserverRef = useResizeObserver<HTMLDivElement>(\n widgetTabsEntryContext?.onResize\n );\n const pointerCaptorRef = useTabInteractions({ clickOnly: maximizedWidget });\n const refs = useRefs<HTMLDivElement>(resizeObserverRef, pointerCaptorRef);\n\n const active = activeTabId === id;\n const className = classnames(\n \"nz-widget-tab\",\n active && \"nz-active\",\n undefined === side && minimized && \"nz-minimized\",\n first && \"nz-first\",\n last && \"nz-last\",\n firstInactive && \"nz-first-inactive\",\n props.className\n );\n\n const showLabel =\n (showIconOnly && !iconSpec) ||\n (showWidgetIcon && !showIconOnly) ||\n !showWidgetIcon;\n return (\n <div\n data-item-id={id}\n data-item-type=\"widget-tab\"\n className={className}\n ref={refs}\n role=\"tab\"\n style={props.style}\n title={label}\n tabIndex={0}\n >\n {(showWidgetIcon || showIconOnly) && iconSpec && (\n <Icon iconSpec={iconSpec} />\n )}\n {showLabel && <span>{label}</span>}\n {props.badge && <div className=\"nz-badge\">{props.badge}</div>}\n <TabTarget />\n </div>\n );\n}\n\n/** @internal */\nexport interface UseTabInteractionsArgs {\n onClick?: () => void;\n onDoubleClick?: () => void;\n onDragStart?: () => void;\n clickOnly?: boolean;\n}\n\n/** @internal */\nexport function useTabInteractions<T extends HTMLElement>({\n onClick,\n onDoubleClick,\n onDragStart,\n clickOnly,\n}: UseTabInteractionsArgs) {\n const id = React.useContext(TabIdContext);\n const widgetContext = React.useContext(WidgetContext);\n const measure = React.useContext(MeasureContext);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const widgetTabsEntryContext = React.useContext(WidgetTabsEntryContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n assert(!!widgetId);\n\n const layoutStore = useLayoutStore();\n const tabRef = React.useRef(layoutStore.getState().tabs[id]);\n const clickCount = React.useRef(0);\n const doubleClickTimer = React.useRef(new Timer(300));\n const initialPointerPosition = React.useRef<Point>();\n\n const overflown = !widgetTabsEntryContext;\n\n React.useEffect(\n () =>\n layoutStore.subscribe((state) => {\n tabRef.current = state.tabs[id];\n }),\n [layoutStore, id]\n );\n\n const handleClick = React.useCallback(() => {\n dispatch({\n type: \"WIDGET_TAB_CLICK\",\n side,\n widgetId,\n id,\n });\n onClick?.();\n }, [dispatch, widgetId, id, side, onClick]);\n const handleDoubleClick = React.useCallback(() => {\n // istanbul ignore next (preview)\n if (clickOnly) return;\n dispatch({\n type: \"WIDGET_TAB_DOUBLE_CLICK\",\n side,\n widgetId,\n floatingWidgetId,\n id,\n });\n onDoubleClick?.();\n }, [\n clickOnly,\n dispatch,\n floatingWidgetId,\n widgetId,\n id,\n side,\n onDoubleClick,\n ]);\n\n const handleDragTabStart = useDragTab({\n tabId: id,\n });\n const handleDragStart = React.useCallback(\n (pointerPosition: Point) => {\n // istanbul ignore next (preview)\n if (clickOnly) return;\n assert(!!ref.current);\n assert(!!initialPointerPosition.current);\n const nzBounds = measure();\n const nzOffset = new Point(-nzBounds.left, -nzBounds.top);\n let bounds = Rectangle.create(ref.current.getBoundingClientRect());\n bounds = bounds.offset(nzOffset);\n\n const tab = tabRef.current;\n const userSized =\n tab.userSized ||\n (tab.isFloatingWidgetResizable &&\n /* istanbul ignore next */ !!tab.preferredFloatingWidgetSize);\n let position = bounds.topLeft();\n const widgetBounds = widgetContext.measure();\n const widgetSize = restrainInitialWidgetSize(\n widgetBounds.getSize(),\n nzBounds.getSize()\n );\n if (overflown) {\n position = initialPointerPosition.current.offset(nzOffset);\n position = position.offset({ x: -7, y: -7 });\n }\n\n const dragOffset =\n initialPointerPosition.current.getOffsetTo(pointerPosition);\n position = position.offset(dragOffset);\n\n handleDragTabStart({\n initialPointerPosition: Point.create(initialPointerPosition.current),\n pointerPosition,\n widgetSize,\n });\n dispatch({\n type: \"WIDGET_TAB_DRAG_START\",\n floatingWidgetId,\n side,\n widgetId,\n id,\n position,\n userSized,\n });\n onDragStart?.();\n\n initialPointerPosition.current = undefined;\n },\n [\n clickOnly,\n measure,\n widgetContext,\n handleDragTabStart,\n dispatch,\n floatingWidgetId,\n side,\n widgetId,\n id,\n onDragStart,\n overflown,\n ]\n );\n const handlePointerDown = React.useCallback(\n (args: PointerCaptorArgs, e: PointerCaptorEvent) => {\n e.type === \"touchstart\" &&\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n },\n [dispatch, floatingWidgetId]\n );\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n // istanbul ignore next\n if (!initialPointerPosition.current) return;\n\n const pointerPosition = new Point(args.clientX, args.clientY);\n const distance =\n initialPointerPosition.current.getDistanceTo(pointerPosition);\n if (distance < 10) return;\n handleDragStart(pointerPosition);\n },\n [handleDragStart]\n );\n const handlePointerUp = React.useCallback(() => {\n clickCount.current++;\n initialPointerPosition.current = undefined;\n doubleClickTimer.current.start();\n }, []);\n\n const pointerCaptorRef = usePointerCaptor<T>(\n handlePointerDown,\n handlePointerMove,\n handlePointerUp\n );\n const ref = React.useRef<T>();\n const refs = useRefs(pointerCaptorRef, ref);\n\n React.useEffect(() => {\n const timer = doubleClickTimer.current;\n timer.setOnExecute(() => {\n if (clickCount.current === 1) handleClick();\n else handleDoubleClick();\n clickCount.current = 0;\n });\n const keydown = (e: KeyboardEvent) => {\n if (e.key === \" \" || e.key === Key.Enter.valueOf()) {\n handleClick();\n }\n };\n const instance = ref.current;\n instance && instance.addEventListener(\"keydown\", keydown);\n return () => {\n timer.setOnExecute(undefined);\n instance && instance.removeEventListener(\"keydown\", keydown);\n };\n }, [handleClick, handleDoubleClick]);\n return refs;\n}\n\n/** @internal */\nexport interface TabPositionContextArgs {\n first?: boolean;\n last?: boolean;\n firstInactive?: boolean;\n}\n\n/** @internal */\nexport const TabPositionContext = React.createContext<TabPositionContextArgs>(\n undefined!\n);\nTabPositionContext.displayName = \"nz:TabPositionContext\";\n\n/** @internal */\nexport const IconOnlyOnWidgetTabContext = React.createContext<boolean>(false);\nIconOnlyOnWidgetTabContext.displayName = \"nz:IconOnlyOnWidgetTabContext\";\n"]}
1
+ {"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Tab.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 Widget\n */\n\nimport \"./Tab.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n Icon,\n Point,\n Rectangle,\n Timer,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react\";\nimport { useDragTab } from \"../base/DragManager\";\nimport {\n MeasureContext,\n NineZoneDispatchContext,\n ShowWidgetIconContext,\n TabNodeContext,\n} from \"../base/NineZone\";\nimport type { TabState } from \"../state/TabState\";\nimport type {\n PointerCaptorArgs,\n PointerCaptorEvent,\n} from \"../base/usePointerCaptor\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor\";\nimport { PanelSideContext } from \"../widget-panels/Panel\";\nimport { WidgetTabsEntryContext } from \"./Tabs\";\nimport {\n restrainInitialWidgetSize,\n WidgetContext,\n WidgetIdContext,\n} from \"./Widget\";\nimport { TabIdContext } from \"./ContentRenderer\";\nimport { TabTarget } from \"../target/TabTarget\";\nimport { WidgetMenuTab } from \"./MenuTab\";\nimport { WidgetOverflowContext } from \"./Overflow\";\nimport { useLayout, useLayoutStore } from \"../base/LayoutStore\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n/** @internal */\nexport interface WidgetTabProviderProps extends TabPositionContextArgs {\n id: TabState[\"id\"];\n showOnlyTabIcon?: boolean;\n}\n\n/** @internal */\nexport function WidgetTabProvider({\n id,\n first,\n firstInactive,\n last,\n showOnlyTabIcon,\n}: WidgetTabProviderProps) {\n const tabNode = React.useContext(TabNodeContext);\n const position = React.useMemo<TabPositionContextArgs>(\n () => ({\n first,\n firstInactive,\n last,\n }),\n [first, firstInactive, last]\n );\n return (\n <TabIdContext.Provider value={id}>\n <TabPositionContext.Provider value={position}>\n <IconOnlyOnWidgetTabContext.Provider value={!!showOnlyTabIcon}>\n {tabNode}\n </IconOnlyOnWidgetTabContext.Provider>\n </TabPositionContext.Provider>\n </TabIdContext.Provider>\n );\n}\n\n/** Properties of [[WidgetTab]] component.\n * @internal\n */\nexport interface WidgetTabProps extends CommonProps {\n badge?: React.ReactNode;\n}\n\n/** Component that displays a tab in a side panel widget.\n * @internal\n */\nexport function WidgetTab(props: WidgetTabProps) {\n const widgetOverflow = React.useContext(WidgetOverflowContext);\n const overflown = !!widgetOverflow;\n if (overflown) return <WidgetMenuTab {...props} />;\n return <WidgetTabComponent {...props} />;\n}\n\nfunction WidgetTabComponent(props: WidgetTabProps) {\n const id = React.useContext(TabIdContext);\n const { first, firstInactive, last } = React.useContext(TabPositionContext);\n const widgetTabsEntryContext = React.useContext(WidgetTabsEntryContext);\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const showIconOnly = React.useContext(IconOnlyOnWidgetTabContext);\n const showWidgetIcon = React.useContext(ShowWidgetIconContext);\n assert(!!id);\n assert(!!widgetId);\n\n const iconSpec = useLayout((state) => state.tabs[id].iconSpec);\n const label = useLayout((state) => state.tabs[id].label);\n const activeTabId = useLayout(\n (state) => getWidgetState(state, widgetId).activeTabId\n );\n const minimized = useLayout(\n (state) => getWidgetState(state, widgetId).minimized\n );\n\n const maximizedWidget = useIsMaximizedWidget();\n\n const resizeObserverRef = useResizeObserver<HTMLDivElement>(\n widgetTabsEntryContext?.onResize\n );\n const pointerCaptorRef = useTabInteractions({ clickOnly: maximizedWidget });\n const refs = useRefs<HTMLDivElement>(resizeObserverRef, pointerCaptorRef);\n\n const active = activeTabId === id;\n const className = classnames(\n \"nz-widget-tab\",\n active && \"nz-active\",\n undefined === side && minimized && \"nz-minimized\",\n first && \"nz-first\",\n last && \"nz-last\",\n firstInactive && \"nz-first-inactive\",\n props.className\n );\n\n const showLabel =\n (showIconOnly && !iconSpec) ||\n (showWidgetIcon && !showIconOnly) ||\n !showWidgetIcon;\n return (\n <div\n data-item-id={id}\n data-item-type=\"widget-tab\"\n className={className}\n ref={refs}\n role=\"tab\"\n style={props.style}\n title={label}\n tabIndex={0}\n >\n {(showWidgetIcon || showIconOnly) && iconSpec && (\n <Icon iconSpec={iconSpec} />\n )}\n {showLabel && <span>{label}</span>}\n {props.badge && <div className=\"nz-badge\">{props.badge}</div>}\n <TabTarget />\n </div>\n );\n}\n\n/** @internal */\nexport interface UseTabInteractionsArgs {\n onClick?: () => void;\n onDoubleClick?: () => void;\n onDragStart?: () => void;\n clickOnly?: boolean;\n}\n\n/** @internal */\nexport function useTabInteractions<T extends HTMLElement>({\n onClick,\n onDoubleClick,\n onDragStart,\n clickOnly,\n}: UseTabInteractionsArgs) {\n const id = React.useContext(TabIdContext);\n const widgetContext = React.useContext(WidgetContext);\n const measure = React.useContext(MeasureContext);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const widgetTabsEntryContext = React.useContext(WidgetTabsEntryContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n assert(!!widgetId);\n\n const layoutStore = useLayoutStore();\n const tabRef = React.useRef(layoutStore.getState().tabs[id]);\n const clickCount = React.useRef(0);\n const doubleClickTimer = React.useRef(new Timer(300));\n const initialPointerPosition = React.useRef<Point>();\n\n const overflown = !widgetTabsEntryContext;\n\n React.useEffect(\n () =>\n layoutStore.subscribe((state) => {\n tabRef.current = state.tabs[id];\n }),\n [layoutStore, id]\n );\n\n const handleClick = React.useCallback(() => {\n dispatch({\n type: \"WIDGET_TAB_CLICK\",\n side,\n widgetId,\n id,\n });\n onClick?.();\n }, [dispatch, widgetId, id, side, onClick]);\n const handleDoubleClick = React.useCallback(() => {\n // istanbul ignore next (preview)\n if (clickOnly) return;\n dispatch({\n type: \"WIDGET_TAB_DOUBLE_CLICK\",\n side,\n widgetId,\n floatingWidgetId,\n id,\n });\n onDoubleClick?.();\n }, [\n clickOnly,\n dispatch,\n floatingWidgetId,\n widgetId,\n id,\n side,\n onDoubleClick,\n ]);\n\n const handleDragTabStart = useDragTab({\n tabId: id,\n });\n const handleDragStart = React.useCallback(\n (pointerPosition: Point) => {\n // istanbul ignore next (preview)\n if (clickOnly) return;\n assert(!!ref.current);\n assert(!!initialPointerPosition.current);\n const nzBounds = measure();\n const nzOffset = new Point(-nzBounds.left, -nzBounds.top);\n let bounds = Rectangle.create(ref.current.getBoundingClientRect());\n bounds = bounds.offset(nzOffset);\n\n const tab = tabRef.current;\n const userSized =\n tab.userSized ||\n (tab.isFloatingWidgetResizable &&\n /* istanbul ignore next */ !!tab.preferredFloatingWidgetSize);\n let position = bounds.topLeft();\n const widgetBounds = widgetContext.measure();\n const widgetSize = restrainInitialWidgetSize(\n widgetBounds.getSize(),\n nzBounds.getSize()\n );\n if (overflown) {\n position = initialPointerPosition.current.offset(nzOffset);\n position = position.offset({ x: -7, y: -7 });\n }\n\n const dragOffset =\n initialPointerPosition.current.getOffsetTo(pointerPosition);\n position = position.offset(dragOffset);\n\n handleDragTabStart({\n initialPointerPosition: Point.create(initialPointerPosition.current),\n pointerPosition,\n widgetSize,\n });\n dispatch({\n type: \"WIDGET_TAB_DRAG_START\",\n floatingWidgetId,\n side,\n widgetId,\n id,\n position,\n userSized,\n });\n onDragStart?.();\n\n initialPointerPosition.current = undefined;\n },\n [\n clickOnly,\n measure,\n widgetContext,\n handleDragTabStart,\n dispatch,\n floatingWidgetId,\n side,\n widgetId,\n id,\n onDragStart,\n overflown,\n ]\n );\n const handlePointerDown = React.useCallback(\n (args: PointerCaptorArgs, e: PointerCaptorEvent) => {\n e.type === \"touchstart\" &&\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n },\n [dispatch, floatingWidgetId]\n );\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n // istanbul ignore next\n if (!initialPointerPosition.current) return;\n\n const pointerPosition = new Point(args.clientX, args.clientY);\n const distance =\n initialPointerPosition.current.getDistanceTo(pointerPosition);\n if (distance < 10) return;\n handleDragStart(pointerPosition);\n },\n [handleDragStart]\n );\n const handlePointerUp = React.useCallback(() => {\n clickCount.current++;\n initialPointerPosition.current = undefined;\n doubleClickTimer.current.start();\n }, []);\n\n const pointerCaptorRef = usePointerCaptor<T>(\n handlePointerDown,\n handlePointerMove,\n handlePointerUp\n );\n const ref = React.useRef<T>();\n const refs = useRefs(pointerCaptorRef, ref);\n\n React.useEffect(() => {\n const timer = doubleClickTimer.current;\n timer.setOnExecute(() => {\n if (clickCount.current === 1) handleClick();\n else handleDoubleClick();\n clickCount.current = 0;\n });\n const keydown = (e: KeyboardEvent) => {\n if (e.key === \" \" || e.key === Key.Enter.valueOf()) {\n handleClick();\n }\n };\n const instance = ref.current;\n instance && instance.addEventListener(\"keydown\", keydown);\n return () => {\n timer.setOnExecute(undefined);\n instance && instance.removeEventListener(\"keydown\", keydown);\n };\n }, [handleClick, handleDoubleClick]);\n return refs;\n}\n\n/** @internal */\nexport interface TabPositionContextArgs {\n first?: boolean;\n last?: boolean;\n firstInactive?: boolean;\n}\n\n/** @internal */\nexport const TabPositionContext = React.createContext<TabPositionContextArgs>(\n undefined!\n);\nTabPositionContext.displayName = \"nz:TabPositionContext\";\n\n/** @internal */\nexport const IconOnlyOnWidgetTabContext = React.createContext<boolean>(false);\nIconOnlyOnWidgetTabContext.displayName = \"nz:IconOnlyOnWidgetTabContext\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/TabBar.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 Widget\n */\n\nimport \"./TabBar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { Point, Timer } from \"@itwin/core-react\";\nimport type { UseDragWidgetArgs } from \"../base/DragManager\";\nimport { useDragWidget } from \"../base/DragManager\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport type {\n PointerCaptorArgs,\n PointerCaptorEvent,\n} from \"../base/usePointerCaptor\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor\";\nimport { TabBarButtons } from \"./Buttons\";\nimport { WidgetTabs } from \"./Tabs\";\nimport { WidgetIdContext } from \"./Widget\";\nimport { useDoubleClick } from \"../widget-panels/Grip\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\nimport { useMaximizedWidgetTabBarHandle } from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n/** @internal */\nexport interface WidgetTabBarProps {\n separator?: boolean;\n}\n\n/** @internal */\nexport function WidgetTabBar(props: WidgetTabBarProps) {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const id = React.useContext(WidgetIdContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;\n const handleDoubleClick = React.useCallback(() => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_CLEAR_USER_SIZED\",\n id: floatingWidgetId,\n });\n }, [dispatch, floatingWidgetId]);\n const handleActionAreaClick = useDoubleClick(handleDoubleClick);\n\n const onDrag = React.useCallback<NonNullable<UseDragWidgetArgs[\"onDrag\"]>>(\n (dragBy) => {\n floatingWidgetId !== undefined &&\n dispatch({\n type: \"WIDGET_DRAG\",\n dragBy,\n floatingWidgetId,\n });\n },\n [dispatch, floatingWidgetId]\n );\n const onDragEnd = React.useCallback<\n NonNullable<UseDragWidgetArgs[\"onDragEnd\"]>\n >(\n (target) => {\n floatingWidgetId !== undefined && handleActionAreaClick();\n floatingWidgetId !== undefined &&\n dispatch({\n type: \"WIDGET_DRAG_END\",\n floatingWidgetId,\n target,\n });\n },\n [dispatch, floatingWidgetId, handleActionAreaClick]\n );\n const handleWidgetDragStart = useDragWidget({\n widgetId,\n onDrag,\n onDragEnd,\n });\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const handleDragStart = React.useCallback(\n (initialPointerPosition: Point, pointerPosition: Point) => {\n handleWidgetDragStart({\n initialPointerPosition,\n pointerPosition,\n });\n },\n [handleWidgetDragStart]\n );\n const handleTouchStart = React.useCallback(() => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n }, [dispatch, floatingWidgetId]);\n const ref = useDrag(\n handleDragStart,\n undefined,\n undefined,\n handleTouchStart,\n handleDoubleClick\n );\n const maximizedWidgetHandle = useMaximizedWidgetTabBarHandle();\n const className = classnames(\n \"nz-widget-tabBar\",\n props.separator && \"nz-separator\"\n );\n const handleClassName = classnames(\"nz-handle\", maximizedWidgetHandle);\n return (\n <div ref={containerRef} className={className}>\n <div className={handleClassName} ref={ref} />\n <WidgetTabs />\n <TabBarButtons />\n </div>\n );\n}\n\n/** Hook to control drag interactions.\n * Starts drag interaction after pointer moves or after timeout.\n * @internal\n */\nexport function useDrag<T extends HTMLElement>(\n onDragStart?: (initialPointerPosition: Point, pointerPosition: Point) => void,\n onDrag?: (position: Point) => void,\n onDragEnd?: () => void,\n onTouchStart?: () => void,\n onDoubleClick?: () => void\n) {\n const doubleClickTimer = React.useRef(new Timer(300));\n const clickCount = React.useRef(0);\n const initialPointerPosition = React.useRef<Point>();\n\n React.useEffect(() => {\n const handleExecute = () => {\n // istanbul ignore else\n if (clickCount.current === 2) onDoubleClick && onDoubleClick();\n clickCount.current = 0;\n };\n const timer = doubleClickTimer.current;\n timer.setOnExecute(handleExecute);\n return () => {\n timer.setOnExecute(undefined);\n };\n }, [onDoubleClick]);\n\n const handlePointerDown = React.useCallback(\n (args: PointerCaptorArgs, e: PointerCaptorEvent) => {\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n e.type === \"touchstart\" && onTouchStart && onTouchStart();\n },\n [onTouchStart]\n );\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n if (initialPointerPosition.current) {\n onDragStart &&\n onDragStart(\n initialPointerPosition.current,\n new Point(args.clientX, args.clientY)\n );\n initialPointerPosition.current = undefined;\n return;\n }\n onDrag && onDrag(new Point(args.clientX, args.clientY));\n },\n [onDragStart, onDrag]\n );\n const handlePointerUp = React.useCallback(() => {\n clickCount.current++;\n doubleClickTimer.current.start();\n initialPointerPosition.current = undefined;\n onDragEnd && onDragEnd();\n }, [onDragEnd]);\n const ref = usePointerCaptor<T>(\n handlePointerDown,\n handlePointerMove,\n handlePointerUp\n );\n return ref;\n}\n"]}
1
+ {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/TabBar.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 Widget\n */\n\nimport \"./TabBar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { Point, Timer } from \"@itwin/core-react\";\nimport type { UseDragWidgetArgs } from \"../base/DragManager\";\nimport { useDragWidget } from \"../base/DragManager\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport type {\n PointerCaptorArgs,\n PointerCaptorEvent,\n} from \"../base/usePointerCaptor\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor\";\nimport { TabBarButtons } from \"./Buttons\";\nimport { WidgetTabs } from \"./Tabs\";\nimport { WidgetIdContext } from \"./Widget\";\nimport { useDoubleClick } from \"../widget-panels/Grip\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\nimport { useMaximizedWidgetTabBarHandle } from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n/** @internal */\nexport interface WidgetTabBarProps {\n separator?: boolean;\n}\n\n/** @internal */\nexport function WidgetTabBar(props: WidgetTabBarProps) {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const id = React.useContext(WidgetIdContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;\n const handleDoubleClick = React.useCallback(() => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_CLEAR_USER_SIZED\",\n id: floatingWidgetId,\n });\n }, [dispatch, floatingWidgetId]);\n const handleActionAreaClick = useDoubleClick(handleDoubleClick);\n\n const onDrag = React.useCallback<NonNullable<UseDragWidgetArgs[\"onDrag\"]>>(\n (dragBy) => {\n floatingWidgetId !== undefined &&\n dispatch({\n type: \"WIDGET_DRAG\",\n dragBy,\n floatingWidgetId,\n });\n },\n [dispatch, floatingWidgetId]\n );\n const onDragEnd = React.useCallback<\n NonNullable<UseDragWidgetArgs[\"onDragEnd\"]>\n >(\n (target) => {\n floatingWidgetId !== undefined && handleActionAreaClick();\n floatingWidgetId !== undefined &&\n dispatch({\n type: \"WIDGET_DRAG_END\",\n floatingWidgetId,\n target,\n });\n },\n [dispatch, floatingWidgetId, handleActionAreaClick]\n );\n const handleWidgetDragStart = useDragWidget({\n widgetId,\n onDrag,\n onDragEnd,\n });\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const handleDragStart = React.useCallback(\n (initialPointerPosition: Point, pointerPosition: Point) => {\n handleWidgetDragStart({\n initialPointerPosition,\n pointerPosition,\n });\n },\n [handleWidgetDragStart]\n );\n const handleTouchStart = React.useCallback(() => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n }, [dispatch, floatingWidgetId]);\n const ref = useDrag(\n handleDragStart,\n undefined,\n undefined,\n handleTouchStart,\n handleDoubleClick\n );\n const maximizedWidgetHandle = useMaximizedWidgetTabBarHandle();\n const className = classnames(\n \"nz-widget-tabBar\",\n props.separator && \"nz-separator\"\n );\n const handleClassName = classnames(\"nz-handle\", maximizedWidgetHandle);\n return (\n <div ref={containerRef} className={className}>\n <div className={handleClassName} ref={ref} />\n <WidgetTabs />\n <TabBarButtons />\n </div>\n );\n}\n\n/** Hook to control drag interactions.\n * Starts drag interaction after pointer moves or after timeout.\n * @internal\n */\nexport function useDrag<T extends HTMLElement>(\n onDragStart?: (initialPointerPosition: Point, pointerPosition: Point) => void,\n onDrag?: (position: Point) => void,\n onDragEnd?: () => void,\n onTouchStart?: () => void,\n onDoubleClick?: () => void\n) {\n const doubleClickTimer = React.useRef(new Timer(300));\n const clickCount = React.useRef(0);\n const initialPointerPosition = React.useRef<Point>();\n\n React.useEffect(() => {\n const handleExecute = () => {\n // istanbul ignore else\n if (clickCount.current === 2) onDoubleClick && onDoubleClick();\n clickCount.current = 0;\n };\n const timer = doubleClickTimer.current;\n timer.setOnExecute(handleExecute);\n return () => {\n timer.setOnExecute(undefined);\n };\n }, [onDoubleClick]);\n\n const handlePointerDown = React.useCallback(\n (args: PointerCaptorArgs, e: PointerCaptorEvent) => {\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n e.type === \"touchstart\" && onTouchStart && onTouchStart();\n },\n [onTouchStart]\n );\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n if (initialPointerPosition.current) {\n onDragStart &&\n onDragStart(\n initialPointerPosition.current,\n new Point(args.clientX, args.clientY)\n );\n initialPointerPosition.current = undefined;\n return;\n }\n onDrag && onDrag(new Point(args.clientX, args.clientY));\n },\n [onDragStart, onDrag]\n );\n const handlePointerUp = React.useCallback(() => {\n clickCount.current++;\n doubleClickTimer.current.start();\n initialPointerPosition.current = undefined;\n onDragEnd && onDragEnd();\n }, [onDragEnd]);\n const ref = usePointerCaptor<T>(\n handlePointerDown,\n handlePointerMove,\n handlePointerUp\n );\n return ref;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Tabs.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 Widget\n */\n\nimport \"./Tabs.scss\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { useResizeObserver } from \"@itwin/core-react\";\nimport { ShowWidgetIconContext } from \"../base/NineZone\";\nimport { getChildKey, useOverflow } from \"../tool-settings/Docked\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../widget-panels/Panel\";\nimport { WidgetOverflow } from \"./Overflow\";\nimport { WidgetTabProvider } from \"./Tab\";\nimport { TitleBarTarget } from \"../target/TitleBarTarget\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { WidgetIdContext } from \"./Widget\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\n\n/** @internal */\nexport function WidgetTabs() {\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const showWidgetIcon = React.useContext(ShowWidgetIconContext);\n assert(!!widgetId);\n const tabIds = useLayout((state) => getWidgetState(state, widgetId).tabs);\n const activeTabId = useLayout(\n (state) => getWidgetState(state, widgetId).activeTabId\n );\n const minimized = useLayout(\n (state) => getWidgetState(state, widgetId).minimized\n );\n const [showOnlyTabIcon, setShowOnlyTabIcon] = React.useState(false);\n\n const activeTabIndex = tabIds.findIndex((id) => id === activeTabId);\n const children = React.useMemo<React.ReactNode>(() => {\n return tabIds.map((id, index, array) => {\n const firstInactive = activeTabIndex + 1 === index;\n return (\n <WidgetTabProvider\n key={id}\n id={id}\n first={index === 0}\n firstInactive={firstInactive}\n last={index === array.length - 1}\n showOnlyTabIcon={showOnlyTabIcon && showWidgetIcon}\n />\n );\n });\n }, [tabIds, activeTabIndex, showOnlyTabIcon, showWidgetIcon]);\n const [overflown, handleResize, handleOverflowResize, handleEntryResize] =\n useOverflow(children, activeTabIndex);\n const horizontal = side && isHorizontalPanelSide(side);\n const handleContainerResize = React.useCallback(\n (w: number) => {\n if (showWidgetIcon) setShowOnlyTabIcon(tabIds.length * 158 > w); // 158px per text tab\n handleResize && handleResize(w);\n },\n [handleResize, showWidgetIcon, tabIds]\n );\n\n const ref = useResizeObserver(handleContainerResize);\n const childrenArray = React.useMemo(\n () => React.Children.toArray(children),\n [children]\n );\n const tabChildren = childrenArray.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflown) {\n acc.push([key, child]);\n return acc;\n }\n if (horizontal && minimized) return acc;\n overflown.indexOf(key) < 0 && acc.push([key, child]);\n return acc;\n },\n []\n );\n const panelChildren =\n tabChildren.length !== childrenArray.length\n ? childrenArray.map<[string, React.ReactNode]>((child, index) => {\n const key = getChildKey(child, index);\n return [key, child];\n })\n : [];\n return (\n <div className=\"nz-widget-tabs\" ref={ref} role=\"tablist\">\n {tabChildren.map(([key, child], index, array) => {\n return (\n <WidgetTabsEntryProvider\n children={child} // eslint-disable-line react/no-children-prop\n key={key}\n id={key}\n lastNotOverflown={\n index === array.length - 1 && panelChildren.length > 0\n }\n getOnResize={handleEntryResize}\n />\n );\n })}\n <TitleBarTarget />\n <WidgetOverflow\n hidden={overflown && panelChildren.length === 0}\n onResize={handleOverflowResize}\n >\n {panelChildren.map(([key, child]) => {\n return <React.Fragment key={key}>{child}</React.Fragment>;\n })}\n </WidgetOverflow>\n </div>\n );\n}\n\ninterface WidgetTabsEntryContextArgs {\n readonly lastNotOverflown: boolean;\n readonly onResize?: (w: number) => void;\n}\n\n/** @internal */\nexport const WidgetTabsEntryContext = React.createContext<\n WidgetTabsEntryContextArgs | undefined\n>(undefined);\nWidgetTabsEntryContext.displayName = \"nz:WidgetTabsEntryContext\";\n\n/** @internal */\nexport interface WidgetTabsEntryContextProviderProps {\n children?: React.ReactNode;\n id: string;\n getOnResize: (id: string) => (w: number) => void;\n lastNotOverflown: boolean;\n}\n\n/** @internal */\nexport function WidgetTabsEntryProvider(\n props: WidgetTabsEntryContextProviderProps\n) {\n return (\n <WidgetTabsEntryContext.Provider\n value={{\n lastNotOverflown: props.lastNotOverflown,\n onResize: props.getOnResize(props.id),\n }}\n >\n {props.children}\n </WidgetTabsEntryContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Tabs.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 Widget\n */\n\nimport \"./Tabs.scss\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { useResizeObserver } from \"@itwin/core-react\";\nimport { ShowWidgetIconContext } from \"../base/NineZone\";\nimport { getChildKey, useOverflow } from \"../tool-settings/Docked\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../widget-panels/Panel\";\nimport { WidgetOverflow } from \"./Overflow\";\nimport { WidgetTabProvider } from \"./Tab\";\nimport { TitleBarTarget } from \"../target/TitleBarTarget\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { WidgetIdContext } from \"./Widget\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\n\n/** @internal */\nexport function WidgetTabs() {\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const showWidgetIcon = React.useContext(ShowWidgetIconContext);\n assert(!!widgetId);\n const tabIds = useLayout((state) => getWidgetState(state, widgetId).tabs);\n const activeTabId = useLayout(\n (state) => getWidgetState(state, widgetId).activeTabId\n );\n const minimized = useLayout(\n (state) => getWidgetState(state, widgetId).minimized\n );\n const [showOnlyTabIcon, setShowOnlyTabIcon] = React.useState(false);\n\n const activeTabIndex = tabIds.findIndex((id) => id === activeTabId);\n const children = React.useMemo<React.ReactNode>(() => {\n return tabIds.map((id, index, array) => {\n const firstInactive = activeTabIndex + 1 === index;\n return (\n <WidgetTabProvider\n key={id}\n id={id}\n first={index === 0}\n firstInactive={firstInactive}\n last={index === array.length - 1}\n showOnlyTabIcon={showOnlyTabIcon && showWidgetIcon}\n />\n );\n });\n }, [tabIds, activeTabIndex, showOnlyTabIcon, showWidgetIcon]);\n const [overflown, handleResize, handleOverflowResize, handleEntryResize] =\n useOverflow(children, activeTabIndex);\n const horizontal = side && isHorizontalPanelSide(side);\n const handleContainerResize = React.useCallback(\n (w: number) => {\n if (showWidgetIcon) setShowOnlyTabIcon(tabIds.length * 158 > w); // 158px per text tab\n handleResize && handleResize(w);\n },\n [handleResize, showWidgetIcon, tabIds]\n );\n\n const ref = useResizeObserver(handleContainerResize);\n const childrenArray = React.useMemo(\n () => React.Children.toArray(children),\n [children]\n );\n const tabChildren = childrenArray.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflown) {\n acc.push([key, child]);\n return acc;\n }\n if (horizontal && minimized) return acc;\n overflown.indexOf(key) < 0 && acc.push([key, child]);\n return acc;\n },\n []\n );\n const panelChildren =\n tabChildren.length !== childrenArray.length\n ? childrenArray.map<[string, React.ReactNode]>((child, index) => {\n const key = getChildKey(child, index);\n return [key, child];\n })\n : [];\n return (\n <div className=\"nz-widget-tabs\" ref={ref} role=\"tablist\">\n {tabChildren.map(([key, child], index, array) => {\n return (\n <WidgetTabsEntryProvider\n children={child} // eslint-disable-line react/no-children-prop\n key={key}\n id={key}\n lastNotOverflown={\n index === array.length - 1 && panelChildren.length > 0\n }\n getOnResize={handleEntryResize}\n />\n );\n })}\n <TitleBarTarget />\n <WidgetOverflow\n hidden={overflown && panelChildren.length === 0}\n onResize={handleOverflowResize}\n >\n {panelChildren.map(([key, child]) => {\n return <React.Fragment key={key}>{child}</React.Fragment>;\n })}\n </WidgetOverflow>\n </div>\n );\n}\n\ninterface WidgetTabsEntryContextArgs {\n readonly lastNotOverflown: boolean;\n readonly onResize?: (w: number) => void;\n}\n\n/** @internal */\nexport const WidgetTabsEntryContext = React.createContext<\n WidgetTabsEntryContextArgs | undefined\n>(undefined);\nWidgetTabsEntryContext.displayName = \"nz:WidgetTabsEntryContext\";\n\n/** @internal */\nexport interface WidgetTabsEntryContextProviderProps {\n children?: React.ReactNode;\n id: string;\n getOnResize: (id: string) => (w: number) => void;\n lastNotOverflown: boolean;\n}\n\n/** @internal */\nexport function WidgetTabsEntryProvider(\n props: WidgetTabsEntryContextProviderProps\n) {\n return (\n <WidgetTabsEntryContext.Provider\n value={{\n lastNotOverflown: props.lastNotOverflown,\n onResize: props.getOnResize(props.id),\n }}\n >\n {props.children}\n </WidgetTabsEntryContext.Provider>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Widget.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Widget.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 Widget\n */\n\nimport \"./Widget.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle, useRefs } from \"@itwin/core-react\";\nimport type { UseDragWidgetArgs } from \"../base/DragManager\";\nimport { useDragWidget } from \"../base/DragManager\";\nimport {\n getUniqueId,\n MeasureContext,\n NineZoneDispatchContext,\n} from \"../base/NineZone\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport { PanelSideContext } from \"../widget-panels/Panel\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\n\n/** @internal */\nexport interface WidgetProviderProps {\n id: WidgetState[\"id\"];\n children?: React.ReactNode;\n}\n\n/** @internal */\nexport function WidgetProvider(props: WidgetProviderProps) {\n return (\n <WidgetIdContext.Provider value={props.id}>\n {props.children}\n </WidgetIdContext.Provider>\n );\n}\n\n/** @internal */\nexport interface WidgetProps extends CommonProps {\n children?: React.ReactNode;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onTransitionEnd?(): void;\n widgetId?: string;\n}\n\n/** @internal */\nexport const Widget = React.forwardRef<HTMLDivElement, WidgetProps>(\n function Widget(props, forwardedRef) {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n const id = React.useContext(WidgetIdContext);\n const measureNz = React.useContext(MeasureContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n const { preferredFloatingWidgetSize, userSized } = useLayout((state) => {\n const widget = getWidgetState(state, id);\n const tab = state.tabs[widget.activeTabId];\n // istanbul ignore next\n return {\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n userSized:\n tab.userSized ||\n (tab.isFloatingWidgetResizable && !!tab.preferredFloatingWidgetSize),\n };\n }, true);\n const elementRef = React.useRef<HTMLDivElement>(null);\n const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;\n const onDragStart = React.useCallback<\n NonNullable<UseDragWidgetArgs[\"onDragStart\"]>\n >(\n (updateId, initialPointerPosition, pointerPosition) => {\n assert(!!elementRef.current);\n if (floatingWidgetId !== undefined) return;\n const nzBounds = measureNz();\n let bounds = Rectangle.create(\n elementRef.current.getBoundingClientRect()\n );\n\n const size = restrainInitialWidgetSize(\n bounds.getSize(),\n nzBounds.getSize()\n );\n bounds = bounds.setSize(size);\n\n if (preferredFloatingWidgetSize) {\n bounds = bounds.setSize(preferredFloatingWidgetSize);\n }\n\n // Pointer is outside of tab area. Need to re-adjust widget bounds so that tab is behind pointer\n if (initialPointerPosition.x > bounds.right) {\n const offset = initialPointerPosition.x - bounds.right + 20;\n bounds = bounds.offsetX(offset);\n }\n\n const dragOffset = initialPointerPosition.getOffsetTo(pointerPosition);\n bounds = bounds.offset(dragOffset);\n\n // Adjust bounds to be relative to 9z origin\n bounds = bounds.offset({ x: -nzBounds.left, y: -nzBounds.top });\n\n const newFloatingWidgetId = getUniqueId();\n updateId(newFloatingWidgetId);\n\n assert(!!side);\n dispatch({\n type: \"PANEL_WIDGET_DRAG_START\",\n newFloatingWidgetId,\n id,\n bounds,\n side,\n userSized,\n });\n },\n [\n dispatch,\n floatingWidgetId,\n id,\n side,\n measureNz,\n preferredFloatingWidgetSize,\n userSized,\n ]\n );\n useDragWidget({\n widgetId,\n onDragStart,\n });\n React.useEffect(() => {\n const listener = () => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n };\n const element = elementRef.current;\n // istanbul ignore next\n element?.addEventListener(\"click\", listener);\n return () => {\n // istanbul ignore next\n element?.removeEventListener(\"click\", listener);\n };\n }, [dispatch, floatingWidgetId]);\n const measure = React.useCallback<WidgetContextArgs[\"measure\"]>(() => {\n // istanbul ignore next\n if (!elementRef.current) return new Rectangle();\n const bounds = elementRef.current.getBoundingClientRect();\n return Rectangle.create(bounds);\n }, []);\n const widgetContextValue = React.useMemo<WidgetContextArgs>(\n () => ({\n measure,\n }),\n [measure]\n );\n\n const ref = useRefs(forwardedRef, elementRef);\n const className = classnames(\"nz-widget-widget\", props.className);\n return (\n <WidgetContext.Provider value={widgetContextValue}>\n <div\n className={className}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n onTransitionEnd={props.onTransitionEnd}\n ref={ref}\n style={props.style}\n data-widget-id={props.widgetId}\n >\n {props.children}\n </div>\n </WidgetContext.Provider>\n );\n }\n);\n\n/** @internal */\nexport const WidgetIdContext = React.createContext<\n WidgetState[\"id\"] | undefined\n>(undefined);\nWidgetIdContext.displayName = \"nz:WidgetIdContext\";\n\n/** @internal */\nexport interface WidgetContextArgs {\n measure: () => Rectangle;\n}\n\n/** @internal */\nexport const WidgetContext = React.createContext<WidgetContextArgs>(null!);\nWidgetContext.displayName = \"nz:WidgetContext\";\n\nconst minWidth = 200;\nconst minHeight = 200;\n\n/** @internal */\nexport function restrainInitialWidgetSize(\n size: SizeProps,\n nzSize: SizeProps\n): SizeProps {\n const width = Math.max(Math.min(nzSize.width / 3, size.width), minWidth);\n const height = Math.max(Math.min(nzSize.height / 3, size.height), minHeight);\n return {\n width,\n height,\n };\n}\n\n/** @internal */\nexport function useActiveTabId() {\n const id = React.useContext(WidgetIdContext);\n assert(!!id);\n return useLayout((state) => {\n const widget = getWidgetState(state, id);\n return widget.activeTabId;\n });\n}\n"]}
1
+ {"version":3,"file":"Widget.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Widget.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 Widget\n */\n\nimport \"./Widget.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle, useRefs } from \"@itwin/core-react\";\nimport type { UseDragWidgetArgs } from \"../base/DragManager\";\nimport { useDragWidget } from \"../base/DragManager\";\nimport {\n getUniqueId,\n MeasureContext,\n NineZoneDispatchContext,\n} from \"../base/NineZone\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport { PanelSideContext } from \"../widget-panels/Panel\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\n\n/** @internal */\nexport interface WidgetProviderProps {\n id: WidgetState[\"id\"];\n children?: React.ReactNode;\n}\n\n/** @internal */\nexport function WidgetProvider(props: WidgetProviderProps) {\n return (\n <WidgetIdContext.Provider value={props.id}>\n {props.children}\n </WidgetIdContext.Provider>\n );\n}\n\n/** @internal */\nexport interface WidgetProps extends CommonProps {\n children?: React.ReactNode;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onTransitionEnd?(): void;\n widgetId?: string;\n}\n\n/** @internal */\nexport const Widget = React.forwardRef<HTMLDivElement, WidgetProps>(\n function Widget(props, forwardedRef) {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n const id = React.useContext(WidgetIdContext);\n const measureNz = React.useContext(MeasureContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n const { preferredFloatingWidgetSize, userSized } = useLayout((state) => {\n const widget = getWidgetState(state, id);\n const tab = state.tabs[widget.activeTabId];\n // istanbul ignore next\n return {\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n userSized:\n tab.userSized ||\n (tab.isFloatingWidgetResizable && !!tab.preferredFloatingWidgetSize),\n };\n }, true);\n const elementRef = React.useRef<HTMLDivElement>(null);\n const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;\n const onDragStart = React.useCallback<\n NonNullable<UseDragWidgetArgs[\"onDragStart\"]>\n >(\n (updateId, initialPointerPosition, pointerPosition) => {\n assert(!!elementRef.current);\n if (floatingWidgetId !== undefined) return;\n const nzBounds = measureNz();\n let bounds = Rectangle.create(\n elementRef.current.getBoundingClientRect()\n );\n\n const size = restrainInitialWidgetSize(\n bounds.getSize(),\n nzBounds.getSize()\n );\n bounds = bounds.setSize(size);\n\n if (preferredFloatingWidgetSize) {\n bounds = bounds.setSize(preferredFloatingWidgetSize);\n }\n\n // Pointer is outside of tab area. Need to re-adjust widget bounds so that tab is behind pointer\n if (initialPointerPosition.x > bounds.right) {\n const offset = initialPointerPosition.x - bounds.right + 20;\n bounds = bounds.offsetX(offset);\n }\n\n const dragOffset = initialPointerPosition.getOffsetTo(pointerPosition);\n bounds = bounds.offset(dragOffset);\n\n // Adjust bounds to be relative to 9z origin\n bounds = bounds.offset({ x: -nzBounds.left, y: -nzBounds.top });\n\n const newFloatingWidgetId = getUniqueId();\n updateId(newFloatingWidgetId);\n\n assert(!!side);\n dispatch({\n type: \"PANEL_WIDGET_DRAG_START\",\n newFloatingWidgetId,\n id,\n bounds,\n side,\n userSized,\n });\n },\n [\n dispatch,\n floatingWidgetId,\n id,\n side,\n measureNz,\n preferredFloatingWidgetSize,\n userSized,\n ]\n );\n useDragWidget({\n widgetId,\n onDragStart,\n });\n React.useEffect(() => {\n const listener = () => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n };\n const element = elementRef.current;\n // istanbul ignore next\n element?.addEventListener(\"click\", listener);\n return () => {\n // istanbul ignore next\n element?.removeEventListener(\"click\", listener);\n };\n }, [dispatch, floatingWidgetId]);\n const measure = React.useCallback<WidgetContextArgs[\"measure\"]>(() => {\n // istanbul ignore next\n if (!elementRef.current) return new Rectangle();\n const bounds = elementRef.current.getBoundingClientRect();\n return Rectangle.create(bounds);\n }, []);\n const widgetContextValue = React.useMemo<WidgetContextArgs>(\n () => ({\n measure,\n }),\n [measure]\n );\n\n const ref = useRefs(forwardedRef, elementRef);\n const className = classnames(\"nz-widget-widget\", props.className);\n return (\n <WidgetContext.Provider value={widgetContextValue}>\n <div\n className={className}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n onTransitionEnd={props.onTransitionEnd}\n ref={ref}\n style={props.style}\n data-widget-id={props.widgetId}\n >\n {props.children}\n </div>\n </WidgetContext.Provider>\n );\n }\n);\n\n/** @internal */\nexport const WidgetIdContext = React.createContext<\n WidgetState[\"id\"] | undefined\n>(undefined);\nWidgetIdContext.displayName = \"nz:WidgetIdContext\";\n\n/** @internal */\nexport interface WidgetContextArgs {\n measure: () => Rectangle;\n}\n\n/** @internal */\nexport const WidgetContext = React.createContext<WidgetContextArgs>(null!);\nWidgetContext.displayName = \"nz:WidgetContext\";\n\nconst minWidth = 200;\nconst minHeight = 200;\n\n/** @internal */\nexport function restrainInitialWidgetSize(\n size: SizeProps,\n nzSize: SizeProps\n): SizeProps {\n const width = Math.max(Math.min(nzSize.width / 3, size.width), minWidth);\n const height = Math.max(Math.min(nzSize.height / 3, size.height), minHeight);\n return {\n width,\n height,\n };\n}\n\n/** @internal */\nexport function useActiveTabId() {\n const id = React.useContext(WidgetIdContext);\n assert(!!id);\n return useLayout((state) => {\n const widget = getWidgetState(state, id);\n return widget.activeTabId;\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../../../../src/appui-react/layout/widget/tools/button/Button.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,yBAAuB;AACvB,2CAAoC;AACpC,+BAA+B;AAE/B,kDAS2B;AAkB3B;;GAEG;AACH,MAAa,aAAc,SAAQ,KAAK,CAAC,aAAiC;IACxD,MAAM;QACpB,MAAM,SAAS,GAAG,IAAA,oBAAU,EAC1B,0BAA0B,EAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,CAAC;QACF,MAAM,WAAW,GAAwB;YACvC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;SACpB,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,IAAI,iBAAiB,GAAG,MAAM,CAC5B,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAC7C,wBAAwB,CACzB,CACF,CAAC;YACF,IAAI,gBAAgB,GAAG,+CAAkC,CAAC;YAC1D,IAAI,UAAU,GAAG,iDAAoC,CAAC;YAEtD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE;gBAC3C,iBAAiB,GAAG,IAAA,oCAAuB,EAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACvE,gBAAgB,GAAG,IAAA,sCAAyB,EAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACxE,UAAU,GAAG,IAAA,wCAA2B,EAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;aACrE;YAED,WAAW,CAAC,eAAe;gBACzB,IAAA,sCAAyB,EAAC,iBAAiB,CAAC,CAAC;YAC/C,WAAW,CAAC,SAAS,GAAG,IAAA,gCAAmB,EAAC,gBAAgB,CAAC,CAAC;YAC9D,WAAW,CAAC,cAAc,GAAG,IAAA,qCAAwB,EAAC,UAAU,CAAC,CAAC;SACnE;QAED,OAAO,CACL,gCACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YAEtB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,6BAAK,SAAS,EAAC,aAAa,GAAG;YACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACb,CACV,CAAC;IACJ,CAAC;CACF;AA3CD,sCA2CC","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 Toolbar\n */\n\nimport \"./Button.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n calculateBackdropFilterBlur,\n calculateBoxShadowOpacity,\n calculateToolbarOpacity,\n getToolbarBackdropFilter,\n getToolbarBackgroundColor,\n getToolbarBoxShadow,\n TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT,\n TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT,\n} from \"@itwin/core-react\";\n\n/** Properties of [[ToolbarButton]] component.\n * @internal\n */\nexport interface ToolbarButtonProps extends CommonProps {\n /** Button content. */\n children?: React.ReactNode;\n /** Function called when the button is clicked. */\n onClick?: () => void;\n /** Indicates whether to use a small App button */\n small?: boolean;\n /** Mouse proximity to button */\n mouseProximity?: number;\n /** Tooltip for button */\n title?: string;\n}\n\n/** Basic toolbar button. Used in [[Toolbar]] component.\n * @internal\n */\nexport class ToolbarButton extends React.PureComponent<ToolbarButtonProps> {\n public override render() {\n const className = classnames(\n \"nz-toolbar-button-button\",\n this.props.className\n );\n const buttonStyle: React.CSSProperties = {\n ...this.props.style,\n };\n\n if (this.props.small) {\n let backgroundOpacity = Number(\n document.documentElement.style.getPropertyValue(\n \"--buic-toolbar-opacity\"\n )\n );\n let boxShadowOpacity = TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT;\n let filterBlur = TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT;\n\n if (this.props.mouseProximity !== undefined) {\n backgroundOpacity = calculateToolbarOpacity(this.props.mouseProximity);\n boxShadowOpacity = calculateBoxShadowOpacity(this.props.mouseProximity);\n filterBlur = calculateBackdropFilterBlur(this.props.mouseProximity);\n }\n\n buttonStyle.backgroundColor =\n getToolbarBackgroundColor(backgroundOpacity);\n buttonStyle.boxShadow = getToolbarBoxShadow(boxShadowOpacity);\n buttonStyle.backdropFilter = getToolbarBackdropFilter(filterBlur);\n }\n\n return (\n <button\n className={className}\n style={buttonStyle}\n onClick={this.props.onClick}\n title={this.props.title}\n >\n {!this.props.small && <div className=\"nz-gradient\" />}\n {this.props.children}\n </button>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../../../../src/appui-react/layout/widget/tools/button/Button.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,yBAAuB;AACvB,2CAAoC;AACpC,+BAA+B;AAE/B,kDAS2B;AAkB3B;;GAEG;AACH,MAAa,aAAc,SAAQ,KAAK,CAAC,aAAiC;IACxD,MAAM;QACpB,MAAM,SAAS,GAAG,IAAA,oBAAU,EAC1B,0BAA0B,EAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,CAAC;QACF,MAAM,WAAW,GAAwB;YACvC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;SACpB,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,iBAAiB,GAAG,MAAM,CAC5B,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAC7C,wBAAwB,CACzB,CACF,CAAC;YACF,IAAI,gBAAgB,GAAG,+CAAkC,CAAC;YAC1D,IAAI,UAAU,GAAG,iDAAoC,CAAC;YAEtD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;gBAC5C,iBAAiB,GAAG,IAAA,oCAAuB,EAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACvE,gBAAgB,GAAG,IAAA,sCAAyB,EAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBACxE,UAAU,GAAG,IAAA,wCAA2B,EAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACtE,CAAC;YAED,WAAW,CAAC,eAAe;gBACzB,IAAA,sCAAyB,EAAC,iBAAiB,CAAC,CAAC;YAC/C,WAAW,CAAC,SAAS,GAAG,IAAA,gCAAmB,EAAC,gBAAgB,CAAC,CAAC;YAC9D,WAAW,CAAC,cAAc,GAAG,IAAA,qCAAwB,EAAC,UAAU,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,CACL,gCACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YAEtB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,6BAAK,SAAS,EAAC,aAAa,GAAG;YACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACb,CACV,CAAC;IACJ,CAAC;CACF;AA3CD,sCA2CC","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 Toolbar\n */\n\nimport \"./Button.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n calculateBackdropFilterBlur,\n calculateBoxShadowOpacity,\n calculateToolbarOpacity,\n getToolbarBackdropFilter,\n getToolbarBackgroundColor,\n getToolbarBoxShadow,\n TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT,\n TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT,\n} from \"@itwin/core-react\";\n\n/** Properties of [[ToolbarButton]] component.\n * @internal\n */\nexport interface ToolbarButtonProps extends CommonProps {\n /** Button content. */\n children?: React.ReactNode;\n /** Function called when the button is clicked. */\n onClick?: () => void;\n /** Indicates whether to use a small App button */\n small?: boolean;\n /** Mouse proximity to button */\n mouseProximity?: number;\n /** Tooltip for button */\n title?: string;\n}\n\n/** Basic toolbar button. Used in [[Toolbar]] component.\n * @internal\n */\nexport class ToolbarButton extends React.PureComponent<ToolbarButtonProps> {\n public override render() {\n const className = classnames(\n \"nz-toolbar-button-button\",\n this.props.className\n );\n const buttonStyle: React.CSSProperties = {\n ...this.props.style,\n };\n\n if (this.props.small) {\n let backgroundOpacity = Number(\n document.documentElement.style.getPropertyValue(\n \"--buic-toolbar-opacity\"\n )\n );\n let boxShadowOpacity = TOOLBAR_BOX_SHADOW_OPACITY_DEFAULT;\n let filterBlur = TOOLBAR_BACKDROP_FILTER_BLUR_DEFAULT;\n\n if (this.props.mouseProximity !== undefined) {\n backgroundOpacity = calculateToolbarOpacity(this.props.mouseProximity);\n boxShadowOpacity = calculateBoxShadowOpacity(this.props.mouseProximity);\n filterBlur = calculateBackdropFilterBlur(this.props.mouseProximity);\n }\n\n buttonStyle.backgroundColor =\n getToolbarBackgroundColor(backgroundOpacity);\n buttonStyle.boxShadow = getToolbarBoxShadow(boxShadowOpacity);\n buttonStyle.backdropFilter = getToolbarBackdropFilter(filterBlur);\n }\n\n return (\n <button\n className={className}\n style={buttonStyle}\n onClick={this.props.onClick}\n title={this.props.title}\n >\n {!this.props.small && <div className=\"nz-gradient\" />}\n {this.props.children}\n </button>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Expander.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/Expander.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,2BAAyB;AACzB,2CAAoC;AACpC,+BAA+B;AAE/B,mCAAqC;AACrC,+CAA2D;AAC3D,kDAAiD;AACjD,qDAAgD;AAOhD;;GAEG;AACH,SAAgB,mBAAmB,CAAC,EAAE,IAAI,EAA4B;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,kCAAuB,CAAC,CAAC;IAC3D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE;YAC9B,QAAQ,CAAC;gBACP,IAAI;gBACJ,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrB,MAAM,SAAS,GAAG,IAAA,oBAAU,EAAC,0BAA0B,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IACvE,OAAO,CACL,6BACE,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE;YACxB,YAAY,CAAC,OAAO,GAAG,IAAI,kBAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACvD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,EACD,iBAAiB,EAAE,GAAG,EAAE;YACtB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,EACD,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,IAAI,kBAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;gBACvD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACtB,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC;aACpC;QACH,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAjCD,kDAiCC;AAED,gBAAgB;AAChB,SAAgB,oBAAoB;IAClC,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,CAAC,KAAK,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,OAAO,kBAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,OAAO,CACL,0CACG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,OAAO,oBAAC,mBAAmB,IAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;IACxD,CAAC,CAAC,CACD,CACJ,CAAC;AACJ,CAAC;AAhBD,oDAgBC","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 WidgetPanels\n */\n\nimport \"./Expander.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { PanelSide } from \"./PanelTypes\";\nimport { panelSides } from \"./Panel\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport { Point, Timer } from \"@itwin/core-react\";\nimport { useLayout } from \"../base/LayoutStore\";\n\n/** @internal */\nexport interface WidgetPanelExpanderProps {\n side: PanelSide;\n}\n\n/** Component that is used to auto-expand unpinned widget panel.\n * @internal\n */\nexport function WidgetPanelExpander({ side }: WidgetPanelExpanderProps) {\n const timer = React.useRef(new Timer(200));\n const lastPosition = React.useRef(new Point());\n const dispatch = React.useContext(NineZoneDispatchContext);\n React.useEffect(() => {\n timer.current.setOnExecute(() => {\n dispatch({\n side,\n collapsed: false,\n type: \"PANEL_SET_COLLAPSED\",\n });\n });\n }, [side, dispatch]);\n const className = classnames(\"nz-widgetPanels-expander\", `nz-${side}`);\n return (\n <div\n className={className}\n onMouseOverCapture={(e) => {\n lastPosition.current = new Point(e.clientX, e.clientY);\n timer.current.start();\n }}\n onMouseOutCapture={() => {\n timer.current.stop();\n }}\n onMouseMoveCapture={(e) => {\n const newPosition = new Point(e.clientX, e.clientY);\n if (lastPosition.current.getDistanceTo(newPosition) > 5) {\n timer.current.start();\n lastPosition.current = newPosition;\n }\n }}\n />\n );\n}\n\n/** @internal */\nexport function WidgetPanelExpanders() {\n const expanders = useLayout((state) => {\n const panels = state.panels;\n return panelSides.filter((side) => {\n const panel = panels[side];\n return !panel.pinned && panel.collapsed;\n });\n }, true);\n\n return (\n <>\n {expanders.map((side) => {\n return <WidgetPanelExpander key={side} side={side} />;\n })}\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"Expander.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/Expander.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,2BAAyB;AACzB,2CAAoC;AACpC,+BAA+B;AAE/B,mCAAqC;AACrC,+CAA2D;AAC3D,kDAAiD;AACjD,qDAAgD;AAOhD;;GAEG;AACH,SAAgB,mBAAmB,CAAC,EAAE,IAAI,EAA4B;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,kCAAuB,CAAC,CAAC;IAC3D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE;YAC9B,QAAQ,CAAC;gBACP,IAAI;gBACJ,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrB,MAAM,SAAS,GAAG,IAAA,oBAAU,EAAC,0BAA0B,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IACvE,OAAO,CACL,6BACE,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE;YACxB,YAAY,CAAC,OAAO,GAAG,IAAI,kBAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACvD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC,EACD,iBAAiB,EAAE,GAAG,EAAE;YACtB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC,EACD,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,IAAI,kBAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACtB,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC;YACrC,CAAC;QACH,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAjCD,kDAiCC;AAED,gBAAgB;AAChB,SAAgB,oBAAoB;IAClC,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,CAAC,KAAK,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,OAAO,kBAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,OAAO,CACL,0CACG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,OAAO,oBAAC,mBAAmB,IAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;IACxD,CAAC,CAAC,CACD,CACJ,CAAC;AACJ,CAAC;AAhBD,oDAgBC","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 WidgetPanels\n */\n\nimport \"./Expander.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { PanelSide } from \"./PanelTypes\";\nimport { panelSides } from \"./Panel\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport { Point, Timer } from \"@itwin/core-react\";\nimport { useLayout } from \"../base/LayoutStore\";\n\n/** @internal */\nexport interface WidgetPanelExpanderProps {\n side: PanelSide;\n}\n\n/** Component that is used to auto-expand unpinned widget panel.\n * @internal\n */\nexport function WidgetPanelExpander({ side }: WidgetPanelExpanderProps) {\n const timer = React.useRef(new Timer(200));\n const lastPosition = React.useRef(new Point());\n const dispatch = React.useContext(NineZoneDispatchContext);\n React.useEffect(() => {\n timer.current.setOnExecute(() => {\n dispatch({\n side,\n collapsed: false,\n type: \"PANEL_SET_COLLAPSED\",\n });\n });\n }, [side, dispatch]);\n const className = classnames(\"nz-widgetPanels-expander\", `nz-${side}`);\n return (\n <div\n className={className}\n onMouseOverCapture={(e) => {\n lastPosition.current = new Point(e.clientX, e.clientY);\n timer.current.start();\n }}\n onMouseOutCapture={() => {\n timer.current.stop();\n }}\n onMouseMoveCapture={(e) => {\n const newPosition = new Point(e.clientX, e.clientY);\n if (lastPosition.current.getDistanceTo(newPosition) > 5) {\n timer.current.start();\n lastPosition.current = newPosition;\n }\n }}\n />\n );\n}\n\n/** @internal */\nexport function WidgetPanelExpanders() {\n const expanders = useLayout((state) => {\n const panels = state.panels;\n return panelSides.filter((side) => {\n const panel = panels[side];\n return !panel.pinned && panel.collapsed;\n });\n }, true);\n\n return (\n <>\n {expanders.map((side) => {\n return <WidgetPanelExpander key={side} side={side} />;\n })}\n </>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Grip.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/Grip.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,uBAAqB;AACrB,2CAAoC;AACpC,+BAA+B;AAC/B,sDAA6C;AAE7C,kDAA4D;AAE5D,qDAAuD;AACvD,+CAAqE;AACrE,mCAIiB;AAEjB,+DAA4D;AAC5D,qDAAgE;AAChE,iGAA6F;AAE7F;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAkB;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAChD,IAAA,qBAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAA,uBAAS,EAAC,CAAC,KAAK,EAAE,EAAE;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,kCAAuB,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAA,qBAAa,GAAkB,CAAC;IAChE,MAAM,SAAS,GAAG,IAAA,oBAAU,EAC1B,sBAAsB,EACtB,MAAM,IAAI,EAAE,EACZ,MAAM,IAAI,WAAW,EACrB,QAAQ,IAAI,aAAa,EACzB,KAAK,CAAC,SAAS,CAChB,CAAC;IACF,MAAM,eAAe,GAAG,IAAA,mBAAQ,EAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAA,sCAAiB,EAAC,IAAI,CAAC,CAAC;IACnD,IAAI,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QACnE,6BAAK,SAAS,EAAC,cAAc;YAC3B,6BAAK,SAAS,EAAC,qBAAqB,GAAG,CACnC;QACN,6BACE,SAAS,EAAC,WAAW,EACrB,GAAG,EAAE,GAAG,EACR,kBAAkB,EAAE,GAAG,EAAE;gBACvB,SAAS;oBACP,CAAC,MAAM;oBACP,CAAC,QAAQ;oBACT,QAAQ,CAAC;wBACP,IAAI;wBACJ,SAAS,EAAE,KAAK;wBAChB,IAAI,EAAE,qBAAqB;qBAC5B,CAAC,CAAC;YACP,CAAC,GACD,CACE,CACP,CAAC;AACJ,CAAC;AA3CD,0CA2CC;AAED,gBAAgB;AACT,MAAM,aAAa,GAAG,GAI3B,EAAE;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,0BAAkB,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,kCAAuB,CAAC,CAAC;IAC3D,IAAA,qBAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,IAAA,qBAAM,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACtB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,sBAAsB,GAAG,KAAK,CAAC,MAAM,EAAS,CAAC;IACrD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAW,IAAI,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,EAAE,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAA,4BAAc,GAAE,CAAC;IACrC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,KAAK,CAAC,eAAe,CACnB,GAAG,EAAE,CACH,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,EACJ,CAAC,WAAW,EAAE,IAAI,CAAC,CACpB,CAAC;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC/C,QAAQ,CAAC;YACP,IAAI,EAAE,wBAAwB;YAC9B,IAAI;SACL,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACrB,MAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAC9B,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE;QACvC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;QAEpC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAA,6BAAqB,EAAC,IAAI,CAAC;YAC3C,CAAC,CAAC,eAAe,CAAC,CAAC;YACnB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;QAEjD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;QACpC,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO;QAC3B,IAAI,KAAK,CAAC,SAAS,EAAE;YACnB,IAAI,IAAI,IAAI,KAAK,CAAC,cAAc,EAAE;gBAChC,QAAQ,CAAC;oBACP,IAAI,EAAE,qBAAqB;oBAC3B,IAAI;oBACJ,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;gBACH,OAAO;aACR;YACD,OAAO;SACR;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO;QAErC,0HAA0H;QAC1H,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACnC,IAAI,QAAQ,GAAG,QAAQ,GAAG,CAAC;YAAE,OAAO;QACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,EACpC,CAAC,CACF,CAAC;QACF,IAAI,IAAI,IAAI,iBAAiB,EAAE;YAC7B,QAAQ,CAAC;gBACP,IAAI,EAAE,qBAAqB;gBAC3B,IAAI;gBACJ,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,QAAQ,CAAC;gBACP,IAAI,EAAE,gBAAgB;gBACtB,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,OAAO;aACpB,CAAC,CAAC;YACH,OAAO;SACR;QAED,QAAQ,CAAC;YACP,IAAI,EAAE,gBAAgB;YACtB,IAAI;YACJ,IAAI;SACL,CAAC,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAC9B,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACvC,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,wBAAwB,GAAG,IAAA,8BAAgB,EAAC;QAChD,IAAI;QACJ,MAAM;QACN,SAAS;KACV,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC;QACrC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;YACtB,IAAI,sBAAsB,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;gBACjD,gBAAgB,CAAC,OAAO,GAAG,sBAAS,CAAC,MAAM,CACzC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CACpC;qBACE,OAAO,EAAE;qBACT,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBAC/C,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClB,wBAAwB,CAAC;oBACvB,sBAAsB,EAAE,sBAAsB,CAAC,OAAO;oBACtD,eAAe,EAAE,sBAAsB,CAAC,OAAO;iBAChD,CAAC,CAAC;aACJ;YACD,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC3C,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,WAAW,EAAE,CAAC;QACd,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAClB,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAuB,EAAE,EAAE;QACtE,sBAAsB,CAAC,OAAO,GAAG,IAAI,kBAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,CAAC,IAAuB,EAAE,EAAE;QAC1B,IAAI,CAAC,sBAAsB,CAAC,OAAO;YAAE,OAAO;QAC5C,MAAM,QAAQ,GAAG,IAAI,kBAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,wBAAwB,CAAC;YACvB,sBAAsB,EAAE,QAAQ;YAChC,eAAe,EAAE,QAAQ;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACjD,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC,EACD,CAAC,wBAAwB,EAAE,MAAM,CAAC,CACnC,CAAC;IACF,MAAM,sBAAsB,GAAG,IAAA,mCAAgB,EAC7C,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,CACd,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,QAAkB,EAAE,EAAE;QACrB,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;QACvB,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,EACD,CAAC,sBAAsB,CAAC,CACzB,CAAC;IACF,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAhKW,QAAA,aAAa,iBAgKxB;AAEF,gBAAgB;AAChB,SAAgB,cAAc,CAAC,aAA0B;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE;QAC9B,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,UAAU,CAAC,OAAO,KAAK,CAAC,EAAE;YAC5B,aAAa,IAAI,aAAa,EAAE,CAAC;YACjC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACtB;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,OAAO,WAAW,CAAC;AACrB,CAAC;AAhBD,wCAgBC","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 WidgetPanels\n */\n\nimport \"./Grip.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Point, Rectangle, Timer } from \"@itwin/core-react\";\nimport type { UseDragPanelGripArgs } from \"../base/DragManager\";\nimport { useDragPanelGrip } from \"../base/DragManager\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n WidgetPanelContext,\n} from \"./Panel\";\nimport type { PointerCaptorArgs } from \"../base/usePointerCaptor\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor\";\nimport { useLayout, useLayoutStore } from \"../base/LayoutStore\";\nimport { useMaximizedPanel } from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n/** Resize grip of [[WidgetPanel]] component.\n * @internal\n */\nexport function WidgetPanelGrip(props: CommonProps) {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const { collapsed, pinned } = useLayout((state) => {\n const panel = state.panels[side];\n return {\n collapsed: panel.collapsed,\n pinned: panel.pinned,\n };\n }, true);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const [ref, resizing, active] = useResizeGrip<HTMLDivElement>();\n const className = classnames(\n \"nz-widgetPanels-grip\",\n `nz-${side}`,\n active && \"nz-active\",\n resizing && \"nz-resizing\",\n props.className\n );\n const resizeGripTitle = useLabel(\"resizeGripTitle\");\n const isMaximizedPanel = !!useMaximizedPanel(side);\n if (isMaximizedPanel) return null;\n return (\n <div className={className} title={resizeGripTitle} style={props.style}>\n <div className=\"nz-line-grip\">\n <div className=\"nz-line-grip-detail\" />\n </div>\n <div\n className=\"nz-handle\"\n ref={ref}\n onMouseOverCapture={() => {\n collapsed &&\n !pinned &&\n !resizing &&\n dispatch({\n side,\n collapsed: false,\n type: \"PANEL_SET_COLLAPSED\",\n });\n }}\n />\n </div>\n );\n}\n\n/** @internal */\nexport const useResizeGrip = <T extends HTMLElement>(): [\n (instance: T | null) => void,\n boolean,\n boolean\n] => {\n const widgetPanel = React.useContext(WidgetPanelContext);\n const side = React.useContext(PanelSideContext);\n const dispatch = React.useContext(NineZoneDispatchContext);\n assert(!!side);\n assert(!!widgetPanel);\n const [resizing, setResizing] = React.useState(false);\n const [active, setActive] = React.useState(false);\n const initialPointerPosition = React.useRef<Point>();\n const dragStartTimer = React.useRef(new Timer(300));\n const ref = React.useRef<T | null>(null);\n const relativePosition = React.useRef(new Point());\n const layoutStore = useLayoutStore();\n const panelStateRef = React.useRef(layoutStore.getState().panels[side]);\n React.useLayoutEffect(\n () =>\n layoutStore.subscribe((state) => {\n panelStateRef.current = state.panels[side];\n }),\n [layoutStore, side]\n );\n const handleDoubleClick = React.useCallback(() => {\n dispatch({\n type: \"PANEL_TOGGLE_COLLAPSED\",\n side,\n });\n }, [dispatch, side]);\n const handleClick = useDoubleClick(handleDoubleClick);\n const onDrag = React.useCallback<NonNullable<UseDragPanelGripArgs[\"onDrag\"]>>(\n (pointerPosition, lastPointerPosition) => {\n if (!ref.current) return;\n const direction = side === \"left\" || side === \"top\" ? 1 : -1;\n const dragOffset = lastPointerPosition.getOffsetTo(pointerPosition);\n const dragBy = isHorizontalPanelSide(side) ? dragOffset.y : dragOffset.x;\n const resizeBy = direction * dragBy;\n\n const bounds = widgetPanel.getBounds();\n const outerEdge = bounds[side];\n const innerEdge = isHorizontalPanelSide(side)\n ? pointerPosition.y\n : pointerPosition.x;\n const size = (innerEdge - outerEdge) * direction;\n\n const panel = panelStateRef.current;\n if (resizeBy === 0) return;\n if (panel.collapsed) {\n if (size >= panel.collapseOffset) {\n dispatch({\n type: \"PANEL_SET_COLLAPSED\",\n side,\n collapsed: false,\n });\n return;\n }\n return;\n }\n\n if (panel.size === undefined) return;\n\n // New size should match drag direction (i.e. dragging `left` panel grip to the left should not increase left panel size).\n const sizeDiff = size - panel.size;\n if (sizeDiff * resizeBy < 0) return;\n const collapseThreshold = Math.max(\n panel.minSize - panel.collapseOffset,\n 0\n );\n if (size <= collapseThreshold) {\n dispatch({\n type: \"PANEL_SET_COLLAPSED\",\n side,\n collapsed: true,\n });\n dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size: panel.minSize,\n });\n return;\n }\n\n dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size,\n });\n },\n [dispatch, side, widgetPanel]\n );\n const onDragEnd = React.useCallback(() => {\n setResizing(false);\n }, []);\n const handlePanelGripDragStart = useDragPanelGrip({\n side,\n onDrag,\n onDragEnd,\n });\n React.useEffect(() => {\n const timer = dragStartTimer.current;\n timer.setOnExecute(() => {\n if (initialPointerPosition.current && ref.current) {\n relativePosition.current = Rectangle.create(\n ref.current.getBoundingClientRect()\n )\n .topLeft()\n .getOffsetTo(initialPointerPosition.current);\n setResizing(true);\n handlePanelGripDragStart({\n initialPointerPosition: initialPointerPosition.current,\n pointerPosition: initialPointerPosition.current,\n });\n }\n initialPointerPosition.current = undefined;\n });\n return () => {\n timer.setOnExecute(undefined);\n };\n }, [handlePanelGripDragStart]);\n const handleDragEnd = React.useCallback(() => {\n initialPointerPosition.current = undefined;\n dragStartTimer.current.stop();\n handleClick();\n setActive(false);\n }, [handleClick]);\n const handlePointerDown = React.useCallback((args: PointerCaptorArgs) => {\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n dragStartTimer.current.start();\n setActive(true);\n }, []);\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n if (!initialPointerPosition.current) return;\n const position = new Point(args.clientX, args.clientY);\n setResizing(true);\n handlePanelGripDragStart({\n initialPointerPosition: position,\n pointerPosition: position,\n });\n onDrag(position, initialPointerPosition.current);\n initialPointerPosition.current = undefined;\n dragStartTimer.current.stop();\n },\n [handlePanelGripDragStart, onDrag]\n );\n const handlePointerCaptorRef = usePointerCaptor(\n handlePointerDown,\n handlePointerMove,\n handleDragEnd\n );\n const handleRef = React.useCallback(\n (instance: T | null) => {\n ref.current = instance;\n handlePointerCaptorRef(instance);\n },\n [handlePointerCaptorRef]\n );\n return [handleRef, resizing, active];\n};\n\n/** @internal */\nexport function useDoubleClick(onDoubleClick?: () => void): () => void {\n const timer = React.useRef(new Timer(300));\n const clickCount = React.useRef(0);\n timer.current.setOnExecute(() => {\n clickCount.current = 0;\n });\n const handleClick = React.useCallback(() => {\n timer.current.start();\n clickCount.current++;\n if (clickCount.current === 2) {\n onDoubleClick && onDoubleClick();\n clickCount.current = 0;\n timer.current.stop();\n }\n }, [onDoubleClick]);\n return handleClick;\n}\n"]}
1
+ {"version":3,"file":"Grip.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/Grip.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,uBAAqB;AACrB,2CAAoC;AACpC,+BAA+B;AAC/B,sDAA6C;AAE7C,kDAA4D;AAE5D,qDAAuD;AACvD,+CAAqE;AACrE,mCAIiB;AAEjB,+DAA4D;AAC5D,qDAAgE;AAChE,iGAA6F;AAE7F;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAkB;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAChD,IAAA,qBAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAA,uBAAS,EAAC,CAAC,KAAK,EAAE,EAAE;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,kCAAuB,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAA,qBAAa,GAAkB,CAAC;IAChE,MAAM,SAAS,GAAG,IAAA,oBAAU,EAC1B,sBAAsB,EACtB,MAAM,IAAI,EAAE,EACZ,MAAM,IAAI,WAAW,EACrB,QAAQ,IAAI,aAAa,EACzB,KAAK,CAAC,SAAS,CAChB,CAAC;IACF,MAAM,eAAe,GAAG,IAAA,mBAAQ,EAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAA,sCAAiB,EAAC,IAAI,CAAC,CAAC;IACnD,IAAI,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QACnE,6BAAK,SAAS,EAAC,cAAc;YAC3B,6BAAK,SAAS,EAAC,qBAAqB,GAAG,CACnC;QACN,6BACE,SAAS,EAAC,WAAW,EACrB,GAAG,EAAE,GAAG,EACR,kBAAkB,EAAE,GAAG,EAAE;gBACvB,SAAS;oBACP,CAAC,MAAM;oBACP,CAAC,QAAQ;oBACT,QAAQ,CAAC;wBACP,IAAI;wBACJ,SAAS,EAAE,KAAK;wBAChB,IAAI,EAAE,qBAAqB;qBAC5B,CAAC,CAAC;YACP,CAAC,GACD,CACE,CACP,CAAC;AACJ,CAAC;AA3CD,0CA2CC;AAED,gBAAgB;AACT,MAAM,aAAa,GAAG,GAI3B,EAAE;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,0BAAkB,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,kCAAuB,CAAC,CAAC;IAC3D,IAAA,qBAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,IAAA,qBAAM,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACtB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,sBAAsB,GAAG,KAAK,CAAC,MAAM,EAAS,CAAC;IACrD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAW,IAAI,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,EAAE,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAA,4BAAc,GAAE,CAAC;IACrC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,KAAK,CAAC,eAAe,CACnB,GAAG,EAAE,CACH,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,EACJ,CAAC,WAAW,EAAE,IAAI,CAAC,CACpB,CAAC;IACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC/C,QAAQ,CAAC;YACP,IAAI,EAAE,wBAAwB;YAC9B,IAAI;SACL,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IACrB,MAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAC9B,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE;QACvC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,SAAS,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;QAEpC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAA,6BAAqB,EAAC,IAAI,CAAC;YAC3C,CAAC,CAAC,eAAe,CAAC,CAAC;YACnB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;QAEjD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC;QACpC,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO;QAC3B,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,IAAI,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBACjC,QAAQ,CAAC;oBACP,IAAI,EAAE,qBAAqB;oBAC3B,IAAI;oBACJ,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO;QAErC,0HAA0H;QAC1H,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACnC,IAAI,QAAQ,GAAG,QAAQ,GAAG,CAAC;YAAE,OAAO;QACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,EACpC,CAAC,CACF,CAAC;QACF,IAAI,IAAI,IAAI,iBAAiB,EAAE,CAAC;YAC9B,QAAQ,CAAC;gBACP,IAAI,EAAE,qBAAqB;gBAC3B,IAAI;gBACJ,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,QAAQ,CAAC;gBACP,IAAI,EAAE,gBAAgB;gBACtB,IAAI;gBACJ,IAAI,EAAE,KAAK,CAAC,OAAO;aACpB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,QAAQ,CAAC;YACP,IAAI,EAAE,gBAAgB;YACtB,IAAI;YACJ,IAAI;SACL,CAAC,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAC9B,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACvC,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,wBAAwB,GAAG,IAAA,8BAAgB,EAAC;QAChD,IAAI;QACJ,MAAM;QACN,SAAS;KACV,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC;QACrC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;YACtB,IAAI,sBAAsB,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClD,gBAAgB,CAAC,OAAO,GAAG,sBAAS,CAAC,MAAM,CACzC,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CACpC;qBACE,OAAO,EAAE;qBACT,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBAC/C,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClB,wBAAwB,CAAC;oBACvB,sBAAsB,EAAE,sBAAsB,CAAC,OAAO;oBACtD,eAAe,EAAE,sBAAsB,CAAC,OAAO;iBAChD,CAAC,CAAC;YACL,CAAC;YACD,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC3C,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9B,WAAW,EAAE,CAAC;QACd,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAClB,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAuB,EAAE,EAAE;QACtE,sBAAsB,CAAC,OAAO,GAAG,IAAI,kBAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,CAAC,IAAuB,EAAE,EAAE;QAC1B,IAAI,CAAC,sBAAsB,CAAC,OAAO;YAAE,OAAO;QAC5C,MAAM,QAAQ,GAAG,IAAI,kBAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,wBAAwB,CAAC;YACvB,sBAAsB,EAAE,QAAQ;YAChC,eAAe,EAAE,QAAQ;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACjD,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC,EACD,CAAC,wBAAwB,EAAE,MAAM,CAAC,CACnC,CAAC;IACF,MAAM,sBAAsB,GAAG,IAAA,mCAAgB,EAC7C,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,CACd,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,QAAkB,EAAE,EAAE;QACrB,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;QACvB,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,EACD,CAAC,sBAAsB,CAAC,CACzB,CAAC;IACF,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAhKW,QAAA,aAAa,iBAgKxB;AAEF,gBAAgB;AAChB,SAAgB,cAAc,CAAC,aAA0B;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,kBAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE;QAC9B,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,UAAU,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAC7B,aAAa,IAAI,aAAa,EAAE,CAAC;YACjC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,OAAO,WAAW,CAAC;AACrB,CAAC;AAhBD,wCAgBC","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 WidgetPanels\n */\n\nimport \"./Grip.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Point, Rectangle, Timer } from \"@itwin/core-react\";\nimport type { UseDragPanelGripArgs } from \"../base/DragManager\";\nimport { useDragPanelGrip } from \"../base/DragManager\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n WidgetPanelContext,\n} from \"./Panel\";\nimport type { PointerCaptorArgs } from \"../base/usePointerCaptor\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor\";\nimport { useLayout, useLayoutStore } from \"../base/LayoutStore\";\nimport { useMaximizedPanel } from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n/** Resize grip of [[WidgetPanel]] component.\n * @internal\n */\nexport function WidgetPanelGrip(props: CommonProps) {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const { collapsed, pinned } = useLayout((state) => {\n const panel = state.panels[side];\n return {\n collapsed: panel.collapsed,\n pinned: panel.pinned,\n };\n }, true);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const [ref, resizing, active] = useResizeGrip<HTMLDivElement>();\n const className = classnames(\n \"nz-widgetPanels-grip\",\n `nz-${side}`,\n active && \"nz-active\",\n resizing && \"nz-resizing\",\n props.className\n );\n const resizeGripTitle = useLabel(\"resizeGripTitle\");\n const isMaximizedPanel = !!useMaximizedPanel(side);\n if (isMaximizedPanel) return null;\n return (\n <div className={className} title={resizeGripTitle} style={props.style}>\n <div className=\"nz-line-grip\">\n <div className=\"nz-line-grip-detail\" />\n </div>\n <div\n className=\"nz-handle\"\n ref={ref}\n onMouseOverCapture={() => {\n collapsed &&\n !pinned &&\n !resizing &&\n dispatch({\n side,\n collapsed: false,\n type: \"PANEL_SET_COLLAPSED\",\n });\n }}\n />\n </div>\n );\n}\n\n/** @internal */\nexport const useResizeGrip = <T extends HTMLElement>(): [\n (instance: T | null) => void,\n boolean,\n boolean\n] => {\n const widgetPanel = React.useContext(WidgetPanelContext);\n const side = React.useContext(PanelSideContext);\n const dispatch = React.useContext(NineZoneDispatchContext);\n assert(!!side);\n assert(!!widgetPanel);\n const [resizing, setResizing] = React.useState(false);\n const [active, setActive] = React.useState(false);\n const initialPointerPosition = React.useRef<Point>();\n const dragStartTimer = React.useRef(new Timer(300));\n const ref = React.useRef<T | null>(null);\n const relativePosition = React.useRef(new Point());\n const layoutStore = useLayoutStore();\n const panelStateRef = React.useRef(layoutStore.getState().panels[side]);\n React.useLayoutEffect(\n () =>\n layoutStore.subscribe((state) => {\n panelStateRef.current = state.panels[side];\n }),\n [layoutStore, side]\n );\n const handleDoubleClick = React.useCallback(() => {\n dispatch({\n type: \"PANEL_TOGGLE_COLLAPSED\",\n side,\n });\n }, [dispatch, side]);\n const handleClick = useDoubleClick(handleDoubleClick);\n const onDrag = React.useCallback<NonNullable<UseDragPanelGripArgs[\"onDrag\"]>>(\n (pointerPosition, lastPointerPosition) => {\n if (!ref.current) return;\n const direction = side === \"left\" || side === \"top\" ? 1 : -1;\n const dragOffset = lastPointerPosition.getOffsetTo(pointerPosition);\n const dragBy = isHorizontalPanelSide(side) ? dragOffset.y : dragOffset.x;\n const resizeBy = direction * dragBy;\n\n const bounds = widgetPanel.getBounds();\n const outerEdge = bounds[side];\n const innerEdge = isHorizontalPanelSide(side)\n ? pointerPosition.y\n : pointerPosition.x;\n const size = (innerEdge - outerEdge) * direction;\n\n const panel = panelStateRef.current;\n if (resizeBy === 0) return;\n if (panel.collapsed) {\n if (size >= panel.collapseOffset) {\n dispatch({\n type: \"PANEL_SET_COLLAPSED\",\n side,\n collapsed: false,\n });\n return;\n }\n return;\n }\n\n if (panel.size === undefined) return;\n\n // New size should match drag direction (i.e. dragging `left` panel grip to the left should not increase left panel size).\n const sizeDiff = size - panel.size;\n if (sizeDiff * resizeBy < 0) return;\n const collapseThreshold = Math.max(\n panel.minSize - panel.collapseOffset,\n 0\n );\n if (size <= collapseThreshold) {\n dispatch({\n type: \"PANEL_SET_COLLAPSED\",\n side,\n collapsed: true,\n });\n dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size: panel.minSize,\n });\n return;\n }\n\n dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size,\n });\n },\n [dispatch, side, widgetPanel]\n );\n const onDragEnd = React.useCallback(() => {\n setResizing(false);\n }, []);\n const handlePanelGripDragStart = useDragPanelGrip({\n side,\n onDrag,\n onDragEnd,\n });\n React.useEffect(() => {\n const timer = dragStartTimer.current;\n timer.setOnExecute(() => {\n if (initialPointerPosition.current && ref.current) {\n relativePosition.current = Rectangle.create(\n ref.current.getBoundingClientRect()\n )\n .topLeft()\n .getOffsetTo(initialPointerPosition.current);\n setResizing(true);\n handlePanelGripDragStart({\n initialPointerPosition: initialPointerPosition.current,\n pointerPosition: initialPointerPosition.current,\n });\n }\n initialPointerPosition.current = undefined;\n });\n return () => {\n timer.setOnExecute(undefined);\n };\n }, [handlePanelGripDragStart]);\n const handleDragEnd = React.useCallback(() => {\n initialPointerPosition.current = undefined;\n dragStartTimer.current.stop();\n handleClick();\n setActive(false);\n }, [handleClick]);\n const handlePointerDown = React.useCallback((args: PointerCaptorArgs) => {\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n dragStartTimer.current.start();\n setActive(true);\n }, []);\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n if (!initialPointerPosition.current) return;\n const position = new Point(args.clientX, args.clientY);\n setResizing(true);\n handlePanelGripDragStart({\n initialPointerPosition: position,\n pointerPosition: position,\n });\n onDrag(position, initialPointerPosition.current);\n initialPointerPosition.current = undefined;\n dragStartTimer.current.stop();\n },\n [handlePanelGripDragStart, onDrag]\n );\n const handlePointerCaptorRef = usePointerCaptor(\n handlePointerDown,\n handlePointerMove,\n handleDragEnd\n );\n const handleRef = React.useCallback(\n (instance: T | null) => {\n ref.current = instance;\n handlePointerCaptorRef(instance);\n },\n [handlePointerCaptorRef]\n );\n return [handleRef, resizing, active];\n};\n\n/** @internal */\nexport function useDoubleClick(onDoubleClick?: () => void): () => void {\n const timer = React.useRef(new Timer(300));\n const clickCount = React.useRef(0);\n timer.current.setOnExecute(() => {\n clickCount.current = 0;\n });\n const handleClick = React.useCallback(() => {\n timer.current.start();\n clickCount.current++;\n if (clickCount.current === 2) {\n onDoubleClick && onDoubleClick();\n clickCount.current = 0;\n timer.current.stop();\n }\n }, [onDoubleClick]);\n return handleClick;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PanelSections.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/PanelSections.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 WidgetPanels\n */\n\nimport \"./PanelSections.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport { PanelWidget } from \"../widget/PanelWidget\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { isHorizontalPanelSide, PanelSideContext } from \"./Panel\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport {\n useMaximizedPanel,\n useMaximizedSection,\n} from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n// istanbul ignore next\nfunction PanelSplitter() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const splitterProcessingActiveRef = React.useRef<boolean>(false);\n\n const isHorizontal = isHorizontalPanelSide(side);\n\n const getPercentage = React.useCallback(\n (min: number, max: number, current: number) => {\n const range = max - min;\n const adjusted = Math.max(min, Math.min(max, current));\n if (adjusted === min) return 0;\n if (adjusted === max) return 100;\n const percent = ((adjusted - min) * 100) / range;\n return percent;\n },\n []\n );\n\n const updatePanelSize = React.useCallback(\n (event: PointerEvent) => {\n if (!containerRef.current) return;\n\n const parentPanel = containerRef.current.closest(\n \".nz-widgetPanels-panel\"\n );\n const sectionToResize = containerRef.current.parentElement as HTMLElement;\n if (parentPanel && sectionToResize) {\n const rect = parentPanel.getBoundingClientRect();\n const percent = getPercentage(\n isHorizontal ? rect.left : rect.top,\n isHorizontal ? rect.right : rect.bottom,\n isHorizontal ? event.clientX : event.clientY\n );\n\n dispatch({\n type: \"PANEL_SET_SPLITTER_VALUE\",\n side,\n percent,\n });\n }\n },\n [getPercentage, isHorizontal, side, dispatch]\n );\n\n const handlePointerMove = React.useCallback(\n (event: Event): void => {\n if (splitterProcessingActiveRef.current) {\n event.preventDefault();\n event.stopPropagation();\n updatePanelSize(event as PointerEvent);\n }\n },\n [updatePanelSize]\n );\n\n const handlePointerUp = React.useCallback(\n (event: Event) => {\n updatePanelSize(event as PointerEvent);\n event.preventDefault();\n event.stopPropagation();\n containerRef.current?.ownerDocument.removeEventListener(\n \"pointermove\",\n handlePointerMove\n );\n containerRef.current?.ownerDocument.removeEventListener(\n \"pointerup\",\n handlePointerUp\n );\n },\n [handlePointerMove, updatePanelSize]\n );\n\n const handlePointerDownOnSplitter = React.useCallback(\n (event: React.PointerEvent) => {\n if (containerRef.current) {\n containerRef.current?.ownerDocument.addEventListener(\n \"pointermove\",\n handlePointerMove\n );\n containerRef.current?.ownerDocument.addEventListener(\n \"pointerup\",\n handlePointerUp\n );\n splitterProcessingActiveRef.current = true;\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [handlePointerMove, handlePointerUp]\n );\n\n const className = isHorizontal\n ? \"nz-horizontal-panel-splitter\"\n : \"nz-vertical-panel-splitter\";\n return (\n <div\n ref={containerRef}\n className={className}\n onPointerDown={handlePointerDownOnSplitter}\n />\n );\n}\n\n/** @internal */\nexport function PanelSections() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n\n const widgets = useLayout((state) => {\n return state.panels[side].widgets;\n });\n\n return (\n <>\n {widgets.map((widgetId, index, array) => {\n return (\n <PanelSection\n key={widgetId}\n widgetId={widgetId}\n index={index}\n sectionLength={array.length}\n />\n );\n })}\n </>\n );\n}\n\ninterface PanelSectionProps {\n widgetId: WidgetState[\"id\"];\n index: number;\n sectionLength: number;\n}\n\nfunction PanelSection({ widgetId, index, sectionLength }: PanelSectionProps) {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n\n const splitterPercent = useLayout((state) => {\n return state.panels[side].splitterPercent ?? 50;\n });\n\n const maximizedSection = useMaximizedSection(widgetId);\n const isMaximizedPanel = !!useMaximizedPanel(side);\n\n const isHorizontal = isHorizontalPanelSide(side);\n\n const last = index === sectionLength - 1;\n const className = classnames(\n \"nz-widgetPanels-panelSections_section\",\n `nz-panel-section-${index}`,\n isHorizontal ? \"nz-widgetPanels-horizontal\" : \"nz-widgetPanels-vertical\",\n last && 0 === index && \"nz-panel-section-full-size\",\n maximizedSection\n );\n\n const hasSplitter = !last && 0 === index && !isMaximizedPanel;\n const panelStyle = hasSplitter\n ? getSplitterStyle(isHorizontal, splitterPercent)\n : undefined;\n return (\n <div className={className} style={panelStyle}>\n <PanelWidget widgetId={widgetId} />\n {hasSplitter && <PanelSplitter />}\n </div>\n );\n}\n\nfunction getSplitterStyle(isHorizontal: boolean, splitterPercent: number) {\n if (isHorizontal) {\n return {\n width: `${splitterPercent}%`,\n } as const;\n }\n return {\n height: `${splitterPercent}%`,\n } as const;\n}\n"]}
1
+ {"version":3,"file":"PanelSections.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/PanelSections.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 WidgetPanels\n */\n\nimport \"./PanelSections.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport { PanelWidget } from \"../widget/PanelWidget\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { isHorizontalPanelSide, PanelSideContext } from \"./Panel\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport {\n useMaximizedPanel,\n useMaximizedSection,\n} from \"../../preview/enable-maximized-widget/useMaximizedWidget\";\n\n// istanbul ignore next\nfunction PanelSplitter() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const splitterProcessingActiveRef = React.useRef<boolean>(false);\n\n const isHorizontal = isHorizontalPanelSide(side);\n\n const getPercentage = React.useCallback(\n (min: number, max: number, current: number) => {\n const range = max - min;\n const adjusted = Math.max(min, Math.min(max, current));\n if (adjusted === min) return 0;\n if (adjusted === max) return 100;\n const percent = ((adjusted - min) * 100) / range;\n return percent;\n },\n []\n );\n\n const updatePanelSize = React.useCallback(\n (event: PointerEvent) => {\n if (!containerRef.current) return;\n\n const parentPanel = containerRef.current.closest(\n \".nz-widgetPanels-panel\"\n );\n const sectionToResize = containerRef.current.parentElement as HTMLElement;\n if (parentPanel && sectionToResize) {\n const rect = parentPanel.getBoundingClientRect();\n const percent = getPercentage(\n isHorizontal ? rect.left : rect.top,\n isHorizontal ? rect.right : rect.bottom,\n isHorizontal ? event.clientX : event.clientY\n );\n\n dispatch({\n type: \"PANEL_SET_SPLITTER_VALUE\",\n side,\n percent,\n });\n }\n },\n [getPercentage, isHorizontal, side, dispatch]\n );\n\n const handlePointerMove = React.useCallback(\n (event: Event): void => {\n if (splitterProcessingActiveRef.current) {\n event.preventDefault();\n event.stopPropagation();\n updatePanelSize(event as PointerEvent);\n }\n },\n [updatePanelSize]\n );\n\n const handlePointerUp = React.useCallback(\n (event: Event) => {\n updatePanelSize(event as PointerEvent);\n event.preventDefault();\n event.stopPropagation();\n containerRef.current?.ownerDocument.removeEventListener(\n \"pointermove\",\n handlePointerMove\n );\n containerRef.current?.ownerDocument.removeEventListener(\n \"pointerup\",\n handlePointerUp\n );\n },\n [handlePointerMove, updatePanelSize]\n );\n\n const handlePointerDownOnSplitter = React.useCallback(\n (event: React.PointerEvent) => {\n if (containerRef.current) {\n containerRef.current?.ownerDocument.addEventListener(\n \"pointermove\",\n handlePointerMove\n );\n containerRef.current?.ownerDocument.addEventListener(\n \"pointerup\",\n handlePointerUp\n );\n splitterProcessingActiveRef.current = true;\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [handlePointerMove, handlePointerUp]\n );\n\n const className = isHorizontal\n ? \"nz-horizontal-panel-splitter\"\n : \"nz-vertical-panel-splitter\";\n return (\n <div\n ref={containerRef}\n className={className}\n onPointerDown={handlePointerDownOnSplitter}\n />\n );\n}\n\n/** @internal */\nexport function PanelSections() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n\n const widgets = useLayout((state) => {\n return state.panels[side].widgets;\n });\n\n return (\n <>\n {widgets.map((widgetId, index, array) => {\n return (\n <PanelSection\n key={widgetId}\n widgetId={widgetId}\n index={index}\n sectionLength={array.length}\n />\n );\n })}\n </>\n );\n}\n\ninterface PanelSectionProps {\n widgetId: WidgetState[\"id\"];\n index: number;\n sectionLength: number;\n}\n\nfunction PanelSection({ widgetId, index, sectionLength }: PanelSectionProps) {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n\n const splitterPercent = useLayout((state) => {\n return state.panels[side].splitterPercent ?? 50;\n });\n\n const maximizedSection = useMaximizedSection(widgetId);\n const isMaximizedPanel = !!useMaximizedPanel(side);\n\n const isHorizontal = isHorizontalPanelSide(side);\n\n const last = index === sectionLength - 1;\n const className = classnames(\n \"nz-widgetPanels-panelSections_section\",\n `nz-panel-section-${index}`,\n isHorizontal ? \"nz-widgetPanels-horizontal\" : \"nz-widgetPanels-vertical\",\n last && 0 === index && \"nz-panel-section-full-size\",\n maximizedSection\n );\n\n const hasSplitter = !last && 0 === index && !isMaximizedPanel;\n const panelStyle = hasSplitter\n ? getSplitterStyle(isHorizontal, splitterPercent)\n : undefined;\n return (\n <div className={className} style={panelStyle}>\n <PanelWidget widgetId={widgetId} />\n {hasSplitter && <PanelSplitter />}\n </div>\n );\n}\n\nfunction getSplitterStyle(isHorizontal: boolean, splitterPercent: number) {\n if (isHorizontal) {\n return {\n width: `${splitterPercent}%`,\n } as const;\n }\n return {\n height: `${splitterPercent}%`,\n } as const;\n}\n"]}