@itwin/appui-react 4.10.0-dev.1 → 4.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js +2 -2
- package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/Calculator.js +9 -9
- package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentGroup.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/ContentGroup.js +2 -2
- package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
- package/lib/cjs/appui-react/content/IModelViewport.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/IModelViewport.js +2 -2
- package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/cjs/appui-react/feedback/ValidationTextbox.js +2 -2
- package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js +1 -1
- package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
- package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
- package/lib/cjs/appui-react/{layout/widget-panels/CenterContent.scss → layers.scss} +6 -2
- package/lib/cjs/appui-react/layout/StandardLayout.d.ts +24 -0
- package/lib/cjs/appui-react/layout/StandardLayout.d.ts.map +1 -0
- package/lib/cjs/appui-react/layout/StandardLayout.js +56 -0
- package/lib/cjs/appui-react/layout/StandardLayout.js.map +1 -0
- package/lib/cjs/appui-react/layout/StandardLayout.scss +94 -0
- package/lib/cjs/appui-react/layout/backstage/Backstage.js +1 -1
- package/lib/cjs/appui-react/layout/backstage/Backstage.js.map +1 -1
- package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js +4 -4
- package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
- package/lib/cjs/appui-react/layout/outline/PanelOutline.scss +1 -10
- package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.js +1 -0
- package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js +5 -0
- package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/ToolSettingsStateHelpers.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/ToolSettingsStateHelpers.js +6 -0
- package/lib/cjs/appui-react/layout/state/internal/ToolSettingsStateHelpers.js.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js +2 -0
- package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
- package/lib/cjs/appui-react/layout/target/PanelTargets.scss +2 -0
- package/lib/cjs/appui-react/layout/tool-settings/Docked.d.ts +12 -6
- package/lib/cjs/appui-react/layout/tool-settings/Docked.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/tool-settings/Docked.js +52 -21
- package/lib/cjs/appui-react/layout/tool-settings/Docked.js.map +1 -1
- package/lib/cjs/appui-react/layout/tool-settings/Docked.scss +15 -23
- package/lib/cjs/appui-react/layout/tool-settings/Handle.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/tool-settings/Handle.js +3 -1
- package/lib/cjs/appui-react/layout/tool-settings/Handle.js.map +1 -1
- package/lib/cjs/appui-react/layout/tool-settings/Handle.scss +6 -12
- package/lib/cjs/appui-react/layout/tool-settings/Overflow.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/tool-settings/Overflow.js +4 -5
- package/lib/cjs/appui-react/layout/tool-settings/Overflow.js.map +1 -1
- package/lib/cjs/appui-react/layout/tool-settings/Overflow.scss +0 -15
- package/lib/cjs/appui-react/layout/tool-settings/Setting.scss +1 -12
- package/lib/cjs/appui-react/layout/widget/Buttons.d.ts +4 -4
- package/lib/cjs/appui-react/layout/widget/Buttons.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/Buttons.js +8 -31
- package/lib/cjs/appui-react/layout/widget/Buttons.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentContainer.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentContainer.js +2 -0
- package/lib/cjs/appui-react/layout/widget/ContentContainer.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentManager.d.ts +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentManager.js +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentManager.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentRenderer.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentRenderer.js +6 -0
- package/lib/cjs/appui-react/layout/widget/ContentRenderer.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/Dock.d.ts +2 -0
- package/lib/cjs/appui-react/layout/widget/Dock.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/Dock.js +10 -1
- package/lib/cjs/appui-react/layout/widget/Dock.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/FloatingWidget.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/FloatingWidget.js +15 -17
- package/lib/cjs/appui-react/layout/widget/FloatingWidget.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/FloatingWidget.scss +92 -105
- package/lib/cjs/appui-react/layout/widget/PinToggle.d.ts +2 -0
- package/lib/cjs/appui-react/layout/widget/PinToggle.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/PinToggle.js +10 -1
- package/lib/cjs/appui-react/layout/widget/PinToggle.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/SendBack.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/SendBack.js +4 -5
- package/lib/cjs/appui-react/layout/widget/SendBack.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/Tab.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/Tab.js +5 -10
- package/lib/cjs/appui-react/layout/widget/Tab.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/TabBar.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/TabBar.js +4 -1
- package/lib/cjs/appui-react/layout/widget/TabBar.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/TabBar.scss +17 -19
- package/lib/cjs/appui-react/layout/widget/usePanelWidgetId.d.ts +8 -0
- package/lib/cjs/appui-react/layout/widget/usePanelWidgetId.d.ts.map +1 -0
- package/lib/cjs/appui-react/layout/widget/usePanelWidgetId.js +39 -0
- package/lib/cjs/appui-react/layout/widget/usePanelWidgetId.js.map +1 -0
- package/lib/cjs/appui-react/layout/widget-panels/Grip.d.ts +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/Grip.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/Grip.js +4 -0
- package/lib/cjs/appui-react/layout/widget-panels/Grip.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/Grip.scss +106 -104
- package/lib/cjs/appui-react/layout/widget-panels/Panel.d.ts +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/Panel.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/Panel.js +10 -16
- package/lib/cjs/appui-react/layout/widget-panels/Panel.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/Panel.scss +175 -243
- package/lib/cjs/appui-react/layout/widget-panels/PanelSections.d.ts +1 -0
- package/lib/cjs/appui-react/layout/widget-panels/PanelSections.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js +35 -31
- package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
- package/lib/{esm/appui-react/layout/widget-panels/Panels.scss → cjs/appui-react/layout/widget-panels/PanelSections.scss} +1 -11
- package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.d.ts +7 -0
- package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.d.ts.map +1 -0
- package/lib/cjs/appui-react/layout/widget-panels/{AppContent.js → usePanelsAutoCollapse.js} +3 -26
- package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -0
- package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.js +0 -1
- package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/cjs/appui-react/messages/getToastCategory.d.ts +1 -1
- package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -1
- package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
- package/lib/cjs/appui-react/popup/CardPopup.js +1 -1
- package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +6 -4
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePopup.js +1 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
- package/lib/cjs/appui-react/popup/ToolSettingsPopup.js +1 -1
- package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
- package/lib/cjs/appui-react/popup/ToolbarPopup.js +1 -1
- package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts +6 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.js +1 -0
- package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -1
- package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizeToggle.d.ts +9 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizeToggle.d.ts.map +1 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizeToggle.js +51 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizeToggle.js.map +1 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizedWidget.d.ts +18 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizedWidget.d.ts.map +1 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizedWidget.js +27 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizedWidget.js.map +1 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.d.ts +50 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.d.ts.map +1 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.js +115 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.js.map +1 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.scss +36 -0
- package/lib/cjs/appui-react/{layout/widget → preview/horizontal-panel-alignment}/PreviewHorizontalPanelAlign.d.ts +4 -6
- package/lib/cjs/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.d.ts.map +1 -0
- package/lib/cjs/appui-react/{layout/widget → preview/horizontal-panel-alignment}/PreviewHorizontalPanelAlign.js +17 -21
- package/lib/cjs/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -0
- package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts +19 -0
- package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts.map +1 -0
- package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js +30 -0
- package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js.map +1 -0
- package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.scss +49 -0
- package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.d.ts +1 -1
- package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.js +1 -1
- package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
- package/lib/cjs/appui-react/preview/widget-action-dropdown/MoreButton.d.ts +3 -2
- package/lib/cjs/appui-react/preview/widget-action-dropdown/MoreButton.d.ts.map +1 -1
- package/lib/cjs/appui-react/preview/widget-action-dropdown/MoreButton.js +5 -5
- package/lib/cjs/appui-react/preview/widget-action-dropdown/MoreButton.js.map +1 -1
- package/lib/cjs/appui-react/redux/SessionState.d.ts +2 -2
- package/lib/cjs/appui-react/redux/SessionState.d.ts.map +1 -1
- package/lib/cjs/appui-react/redux/SessionState.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBarItem.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/ActivityCenter.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/ActivityCenter.js +1 -0
- package/lib/cjs/appui-react/statusfields/ActivityCenter.js.map +1 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js +2 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js +3 -3
- package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.scss +0 -7
- package/lib/cjs/appui-react/utils/matchesWords.js +4 -4
- package/lib/cjs/appui-react/utils/matchesWords.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +13 -16
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.scss +0 -23
- package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +0 -6
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/cjs/appui-react.d.ts +1 -0
- package/lib/cjs/appui-react.d.ts.map +1 -1
- package/lib/cjs/appui-react.js +1 -0
- package/lib/cjs/appui-react.js.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawInputField.js +2 -2
- package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
- package/lib/esm/appui-react/accudraw/Calculator.js +9 -9
- package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
- package/lib/esm/appui-react/content/ContentGroup.d.ts.map +1 -1
- package/lib/esm/appui-react/content/ContentGroup.js +2 -2
- package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
- package/lib/esm/appui-react/content/IModelViewport.d.ts.map +1 -1
- package/lib/esm/appui-react/content/IModelViewport.js +2 -2
- package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/esm/appui-react/feedback/ValidationTextbox.js +2 -2
- package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
- package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js +1 -1
- package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
- package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
- package/lib/esm/appui-react/{layout/widget-panels/CenterContent.scss → layers.scss} +6 -2
- package/lib/esm/appui-react/layout/StandardLayout.d.ts +24 -0
- package/lib/esm/appui-react/layout/StandardLayout.d.ts.map +1 -0
- package/lib/esm/appui-react/layout/StandardLayout.js +52 -0
- package/lib/esm/appui-react/layout/StandardLayout.js.map +1 -0
- package/lib/esm/appui-react/layout/StandardLayout.scss +94 -0
- package/lib/esm/appui-react/layout/backstage/Backstage.js +1 -1
- package/lib/esm/appui-react/layout/backstage/Backstage.js.map +1 -1
- package/lib/esm/appui-react/layout/base/SafeAreaInsets.js +4 -4
- package/lib/esm/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
- package/lib/esm/appui-react/layout/outline/PanelOutline.scss +1 -10
- package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.js +1 -0
- package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js +5 -0
- package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/ToolSettingsStateHelpers.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/ToolSettingsStateHelpers.js +6 -0
- package/lib/esm/appui-react/layout/state/internal/ToolSettingsStateHelpers.js.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js +2 -0
- package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
- package/lib/esm/appui-react/layout/target/PanelTargets.scss +2 -0
- package/lib/esm/appui-react/layout/tool-settings/Docked.d.ts +12 -6
- package/lib/esm/appui-react/layout/tool-settings/Docked.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/tool-settings/Docked.js +53 -22
- package/lib/esm/appui-react/layout/tool-settings/Docked.js.map +1 -1
- package/lib/esm/appui-react/layout/tool-settings/Docked.scss +15 -23
- package/lib/esm/appui-react/layout/tool-settings/Handle.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/tool-settings/Handle.js +3 -1
- package/lib/esm/appui-react/layout/tool-settings/Handle.js.map +1 -1
- package/lib/esm/appui-react/layout/tool-settings/Handle.scss +6 -12
- package/lib/esm/appui-react/layout/tool-settings/Overflow.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/tool-settings/Overflow.js +4 -5
- package/lib/esm/appui-react/layout/tool-settings/Overflow.js.map +1 -1
- package/lib/esm/appui-react/layout/tool-settings/Overflow.scss +0 -15
- package/lib/esm/appui-react/layout/tool-settings/Setting.scss +1 -12
- package/lib/esm/appui-react/layout/widget/Buttons.d.ts +4 -4
- package/lib/esm/appui-react/layout/widget/Buttons.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/Buttons.js +8 -30
- package/lib/esm/appui-react/layout/widget/Buttons.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/ContentContainer.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/ContentContainer.js +2 -0
- package/lib/esm/appui-react/layout/widget/ContentContainer.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/ContentManager.d.ts +1 -1
- package/lib/esm/appui-react/layout/widget/ContentManager.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/ContentManager.js +1 -1
- package/lib/esm/appui-react/layout/widget/ContentManager.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/ContentRenderer.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/ContentRenderer.js +6 -0
- package/lib/esm/appui-react/layout/widget/ContentRenderer.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/Dock.d.ts +2 -0
- package/lib/esm/appui-react/layout/widget/Dock.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/Dock.js +8 -0
- package/lib/esm/appui-react/layout/widget/Dock.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/FloatingWidget.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/FloatingWidget.js +15 -17
- package/lib/esm/appui-react/layout/widget/FloatingWidget.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/FloatingWidget.scss +92 -105
- package/lib/esm/appui-react/layout/widget/PinToggle.d.ts +2 -0
- package/lib/esm/appui-react/layout/widget/PinToggle.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/PinToggle.js +8 -0
- package/lib/esm/appui-react/layout/widget/PinToggle.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/SendBack.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/SendBack.js +4 -5
- package/lib/esm/appui-react/layout/widget/SendBack.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/Tab.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/Tab.js +5 -10
- package/lib/esm/appui-react/layout/widget/Tab.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/TabBar.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/TabBar.js +4 -1
- package/lib/esm/appui-react/layout/widget/TabBar.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/TabBar.scss +17 -19
- package/lib/esm/appui-react/layout/widget/usePanelWidgetId.d.ts +8 -0
- package/lib/esm/appui-react/layout/widget/usePanelWidgetId.d.ts.map +1 -0
- package/lib/esm/appui-react/layout/widget/usePanelWidgetId.js +34 -0
- package/lib/esm/appui-react/layout/widget/usePanelWidgetId.js.map +1 -0
- package/lib/esm/appui-react/layout/widget-panels/Grip.d.ts +1 -1
- package/lib/esm/appui-react/layout/widget-panels/Grip.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget-panels/Grip.js +4 -0
- package/lib/esm/appui-react/layout/widget-panels/Grip.js.map +1 -1
- package/lib/esm/appui-react/layout/widget-panels/Grip.scss +106 -104
- package/lib/esm/appui-react/layout/widget-panels/Panel.d.ts +1 -1
- package/lib/esm/appui-react/layout/widget-panels/Panel.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget-panels/Panel.js +10 -16
- package/lib/esm/appui-react/layout/widget-panels/Panel.js.map +1 -1
- package/lib/esm/appui-react/layout/widget-panels/Panel.scss +175 -243
- package/lib/esm/appui-react/layout/widget-panels/PanelSections.d.ts +1 -0
- package/lib/esm/appui-react/layout/widget-panels/PanelSections.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget-panels/PanelSections.js +34 -30
- package/lib/esm/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
- package/lib/{cjs/appui-react/layout/widget-panels/Panels.scss → esm/appui-react/layout/widget-panels/PanelSections.scss} +1 -11
- package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.d.ts +7 -0
- package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.d.ts.map +1 -0
- package/lib/esm/appui-react/layout/widget-panels/{AppContent.js → usePanelsAutoCollapse.js} +3 -25
- package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -0
- package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.js +0 -1
- package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/esm/appui-react/messages/getToastCategory.d.ts +1 -1
- package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -1
- package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
- package/lib/esm/appui-react/popup/CardPopup.js +1 -1
- package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/esm/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js +6 -4
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/esm/appui-react/popup/KeyinPalettePopup.js +1 -1
- package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
- package/lib/esm/appui-react/popup/ToolSettingsPopup.js +1 -1
- package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
- package/lib/esm/appui-react/popup/ToolbarPopup.js +1 -1
- package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.d.ts +6 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.js +1 -0
- package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -1
- package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizeToggle.d.ts +9 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizeToggle.d.ts.map +1 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizeToggle.js +46 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizeToggle.js.map +1 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizedWidget.d.ts +18 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizedWidget.d.ts.map +1 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizedWidget.js +23 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizedWidget.js.map +1 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.d.ts +50 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.d.ts.map +1 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.js +106 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.js.map +1 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.scss +36 -0
- package/lib/esm/appui-react/{layout/widget → preview/horizontal-panel-alignment}/PreviewHorizontalPanelAlign.d.ts +4 -6
- package/lib/esm/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.d.ts.map +1 -0
- package/lib/esm/appui-react/{layout/widget → preview/horizontal-panel-alignment}/PreviewHorizontalPanelAlign.js +15 -18
- package/lib/esm/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -0
- package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts +19 -0
- package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts.map +1 -0
- package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js +26 -0
- package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js.map +1 -0
- package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.scss +49 -0
- package/lib/esm/appui-react/preview/widget-action-dropdown/Button.d.ts +1 -1
- package/lib/esm/appui-react/preview/widget-action-dropdown/Button.js +1 -1
- package/lib/esm/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
- package/lib/esm/appui-react/preview/widget-action-dropdown/MoreButton.d.ts +3 -2
- package/lib/esm/appui-react/preview/widget-action-dropdown/MoreButton.d.ts.map +1 -1
- package/lib/esm/appui-react/preview/widget-action-dropdown/MoreButton.js +5 -5
- package/lib/esm/appui-react/preview/widget-action-dropdown/MoreButton.js.map +1 -1
- package/lib/esm/appui-react/redux/SessionState.d.ts +2 -2
- package/lib/esm/appui-react/redux/SessionState.d.ts.map +1 -1
- package/lib/esm/appui-react/redux/SessionState.js.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBarComposer.js +1 -1
- package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBarItem.js.map +1 -1
- package/lib/esm/appui-react/statusfields/ActivityCenter.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/ActivityCenter.js +1 -0
- package/lib/esm/appui-react/statusfields/ActivityCenter.js.map +1 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.js +2 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js +3 -3
- package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.scss +0 -7
- package/lib/esm/appui-react/utils/matchesWords.js +4 -4
- package/lib/esm/appui-react/utils/matchesWords.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +15 -18
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.scss +0 -23
- package/lib/esm/appui-react/widget-panels/ToolSettings.scss +0 -6
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react.d.ts +1 -0
- package/lib/esm/appui-react.d.ts.map +1 -1
- package/lib/esm/appui-react.js +1 -0
- package/lib/esm/appui-react.js.map +1 -1
- package/lib/public/locales/en/UiFramework.json +1 -1
- package/package.json +19 -19
- package/lib/cjs/appui-react/layout/widget/PreviewHorizontalPanelAlign.d.ts.map +0 -1
- package/lib/cjs/appui-react/layout/widget/PreviewHorizontalPanelAlign.js.map +0 -1
- package/lib/cjs/appui-react/layout/widget/PreviewMaximizeToggle.d.ts +0 -30
- package/lib/cjs/appui-react/layout/widget/PreviewMaximizeToggle.d.ts.map +0 -1
- package/lib/cjs/appui-react/layout/widget/PreviewMaximizeToggle.js +0 -65
- package/lib/cjs/appui-react/layout/widget/PreviewMaximizeToggle.js.map +0 -1
- package/lib/cjs/appui-react/layout/widget-panels/AppContent.d.ts +0 -11
- package/lib/cjs/appui-react/layout/widget-panels/AppContent.d.ts.map +0 -1
- package/lib/cjs/appui-react/layout/widget-panels/AppContent.js.map +0 -1
- package/lib/cjs/appui-react/layout/widget-panels/CenterContent.d.ts +0 -10
- package/lib/cjs/appui-react/layout/widget-panels/CenterContent.d.ts.map +0 -1
- package/lib/cjs/appui-react/layout/widget-panels/CenterContent.js +0 -23
- package/lib/cjs/appui-react/layout/widget-panels/CenterContent.js.map +0 -1
- package/lib/cjs/appui-react/layout/widget-panels/Content.d.ts +0 -21
- package/lib/cjs/appui-react/layout/widget-panels/Content.d.ts.map +0 -1
- package/lib/cjs/appui-react/layout/widget-panels/Content.js +0 -21
- package/lib/cjs/appui-react/layout/widget-panels/Content.js.map +0 -1
- package/lib/cjs/appui-react/layout/widget-panels/Content.scss +0 -37
- package/lib/cjs/appui-react/layout/widget-panels/Panels.d.ts +0 -24
- package/lib/cjs/appui-react/layout/widget-panels/Panels.d.ts.map +0 -1
- package/lib/cjs/appui-react/layout/widget-panels/Panels.js +0 -48
- package/lib/cjs/appui-react/layout/widget-panels/Panels.js.map +0 -1
- package/lib/esm/appui-react/layout/widget/PreviewHorizontalPanelAlign.d.ts.map +0 -1
- package/lib/esm/appui-react/layout/widget/PreviewHorizontalPanelAlign.js.map +0 -1
- package/lib/esm/appui-react/layout/widget/PreviewMaximizeToggle.d.ts +0 -30
- package/lib/esm/appui-react/layout/widget/PreviewMaximizeToggle.d.ts.map +0 -1
- package/lib/esm/appui-react/layout/widget/PreviewMaximizeToggle.js +0 -58
- package/lib/esm/appui-react/layout/widget/PreviewMaximizeToggle.js.map +0 -1
- package/lib/esm/appui-react/layout/widget-panels/AppContent.d.ts +0 -11
- package/lib/esm/appui-react/layout/widget-panels/AppContent.d.ts.map +0 -1
- package/lib/esm/appui-react/layout/widget-panels/AppContent.js.map +0 -1
- package/lib/esm/appui-react/layout/widget-panels/CenterContent.d.ts +0 -10
- package/lib/esm/appui-react/layout/widget-panels/CenterContent.d.ts.map +0 -1
- package/lib/esm/appui-react/layout/widget-panels/CenterContent.js +0 -19
- package/lib/esm/appui-react/layout/widget-panels/CenterContent.js.map +0 -1
- package/lib/esm/appui-react/layout/widget-panels/Content.d.ts +0 -21
- package/lib/esm/appui-react/layout/widget-panels/Content.d.ts.map +0 -1
- package/lib/esm/appui-react/layout/widget-panels/Content.js +0 -18
- package/lib/esm/appui-react/layout/widget-panels/Content.js.map +0 -1
- package/lib/esm/appui-react/layout/widget-panels/Content.scss +0 -37
- package/lib/esm/appui-react/layout/widget-panels/Panels.d.ts +0 -24
- package/lib/esm/appui-react/layout/widget-panels/Panels.d.ts.map +0 -1
- package/lib/esm/appui-react/layout/widget-panels/Panels.js +0 -44
- package/lib/esm/appui-react/layout/widget-panels/Panels.js.map +0 -1
|
@@ -7,32 +7,27 @@
|
|
|
7
7
|
* @module Widget
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.useHorizontalPanelAlignButton = exports.PreviewHorizontalPanelAlignButton = exports.PreviewHorizontalPanelAlignFeatureProvider = exports.
|
|
10
|
+
exports.useHorizontalPanelAlignButton = exports.PreviewHorizontalPanelAlignButton = exports.PreviewHorizontalPanelAlignFeatureProvider = exports.HorizontalPanelAlignContext = void 0;
|
|
11
11
|
const React = require("react");
|
|
12
12
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
13
13
|
const core_react_1 = require("@itwin/core-react");
|
|
14
14
|
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
15
|
-
const Panel_1 = require("
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
15
|
+
const Panel_1 = require("../../layout/widget-panels/Panel");
|
|
16
|
+
const MoreButton_1 = require("../widget-action-dropdown/MoreButton");
|
|
17
|
+
const Button_1 = require("../../layout/widget/Button");
|
|
18
|
+
const usePanelWidgetId_1 = require("../../layout/widget/usePanelWidgetId");
|
|
19
|
+
const useMaximizedWidget_1 = require("../enable-maximized-widget/useMaximizedWidget");
|
|
19
20
|
/** Default value used when not provided or disabled. */
|
|
20
21
|
const defaultAlignments = {
|
|
21
22
|
top: core_react_1.HorizontalAlignment.Justify,
|
|
22
23
|
bottom: core_react_1.HorizontalAlignment.Justify,
|
|
23
24
|
};
|
|
24
|
-
|
|
25
|
+
/** @internal */
|
|
26
|
+
exports.HorizontalPanelAlignContext = React.createContext({
|
|
25
27
|
enabled: false,
|
|
26
28
|
alignments: defaultAlignments,
|
|
27
29
|
setAlignment: () => { },
|
|
28
30
|
});
|
|
29
|
-
/** Horizontal panel alignment preview feature state.
|
|
30
|
-
* @internal
|
|
31
|
-
*/
|
|
32
|
-
function usePreviewHorizontalPanelAlign() {
|
|
33
|
-
return React.useContext(HorizontalPanelAlignContext);
|
|
34
|
-
}
|
|
35
|
-
exports.usePreviewHorizontalPanelAlign = usePreviewHorizontalPanelAlign;
|
|
36
31
|
/** Preview horizontal panel alignment feature provider.
|
|
37
32
|
* @internal
|
|
38
33
|
*/
|
|
@@ -49,7 +44,7 @@ function PreviewHorizontalPanelAlignFeatureProvider({ enabled, children, }) {
|
|
|
49
44
|
[panel]: alignment,
|
|
50
45
|
}));
|
|
51
46
|
}, []);
|
|
52
|
-
return (React.createElement(HorizontalPanelAlignContext.Provider, { value: {
|
|
47
|
+
return (React.createElement(exports.HorizontalPanelAlignContext.Provider, { value: {
|
|
53
48
|
enabled: !!enabled,
|
|
54
49
|
alignments: enabled ? alignments : defaultAlignments,
|
|
55
50
|
setAlignment,
|
|
@@ -85,7 +80,7 @@ function PreviewHorizontalPanelAlignButton() {
|
|
|
85
80
|
const side = React.useContext(Panel_1.PanelSideContext);
|
|
86
81
|
(0, core_bentley_1.assert)(!!side);
|
|
87
82
|
(0, core_bentley_1.assert)((0, Panel_1.isHorizontalPanelSide)(side));
|
|
88
|
-
const { alignments, setAlignment } =
|
|
83
|
+
const { alignments, setAlignment } = React.useContext(exports.HorizontalPanelAlignContext);
|
|
89
84
|
const title = "Align panel";
|
|
90
85
|
const getMenuItems = (onClose) => [
|
|
91
86
|
core_react_1.HorizontalAlignment.Justify,
|
|
@@ -109,12 +104,13 @@ exports.PreviewHorizontalPanelAlignButton = PreviewHorizontalPanelAlignButton;
|
|
|
109
104
|
/** @internal */
|
|
110
105
|
function useHorizontalPanelAlignButton() {
|
|
111
106
|
const side = React.useContext(Panel_1.PanelSideContext);
|
|
112
|
-
const { enabled } =
|
|
113
|
-
const isMainPanelWidget = (0,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
107
|
+
const { enabled } = React.useContext(exports.HorizontalPanelAlignContext);
|
|
108
|
+
const isMainPanelWidget = !!(0, usePanelWidgetId_1.useMainPanelWidgetId)();
|
|
109
|
+
const isMaximizedWidget = (0, useMaximizedWidget_1.useIsMaximizedWidget)();
|
|
110
|
+
if (!side)
|
|
111
|
+
return false;
|
|
112
|
+
const isHorizontalPanel = (0, Panel_1.isHorizontalPanelSide)(side);
|
|
113
|
+
return (enabled && isHorizontalPanel && isMainPanelWidget && !isMaximizedWidget);
|
|
118
114
|
}
|
|
119
115
|
exports.useHorizontalPanelAlignButton = useHorizontalPanelAlignButton;
|
|
120
116
|
//# sourceMappingURL=PreviewHorizontalPanelAlign.js.map
|
package/lib/cjs/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewHorizontalPanelAlign.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,sDAA6C;AAC7C,kDAAwD;AACxD,wDAA8D;AAC9D,4DAG0C;AAK1C,qEAAmF;AACnF,uDAA0D;AAC1D,2EAA4E;AAC5E,sFAAqF;AAErF,wDAAwD;AACxD,MAAM,iBAAiB,GAAG;IACxB,GAAG,EAAE,gCAAmB,CAAC,OAAO;IAChC,MAAM,EAAE,gCAAmB,CAAC,OAAO;CACpC,CAAC;AAEF,gBAAgB;AACH,QAAA,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAS3D;IACD,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,iBAAiB;IAC7B,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;CACvB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,0CAA0C,CAAC,EACzD,OAAO,EACP,QAAQ,GAIT;IACC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAE/C;QACD,GAAG,EAAE,gCAAmB,CAAC,OAAO;QAChC,MAAM,EAAE,gCAAmB,CAAC,OAAO;KACpC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACpC,CAAC,KAA4B,EAAE,SAA8B,EAAE,EAAE;QAC/D,IAAI,CAAC,KAAK,IAAI,CAAC,IAAA,6BAAqB,EAAC,KAAK,CAAC;YAAE,OAAO;QACpD,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvB,GAAG,IAAI;YACP,CAAC,KAAK,CAAC,EAAE,SAAS;SACnB,CAAC,CAAC,CAAC;IACN,CAAC,EACD,EAAE,CACH,CAAC;IACF,OAAO,CACL,oBAAC,mCAA2B,CAAC,QAAQ,IACnC,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB;YACpD,YAAY;SACb,IAEA,QAAQ,CAC4B,CACxC,CAAC;AACJ,CAAC;AAlCD,gGAkCC;AAED,SAAS,OAAO,CAAC,KAAoC;IACnD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,+CAA+C,GAAG,CACtD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAoC;IACtD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,0DAA0D,GAAG,CACjE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAoC;IACrD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,6DAA6D,GAAG,CACpE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAyB,EAAE,SAA8B;IACxE,MAAM,MAAM,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,IAAI,SAAS,KAAK,gCAAmB,CAAC,OAAO;QAC3C,OAAO,oBAAC,UAAU,IAAC,SAAS,EAAE,YAAY,MAAM,GAAG,GAAI,CAAC;IAC1D,IAAI,SAAS,KAAK,gCAAmB,CAAC,MAAM;QAC1C,OAAO,oBAAC,SAAS,IAAC,SAAS,EAAE,YAAY,MAAM,GAAG,GAAI,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,KAAK,gCAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,OAAO,oBAAC,OAAO,IAAC,SAAS,EAAE,SAAS,MAAM,KAAK,MAAM,GAAG,GAAI,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,gBAAgB;AAChB,SAAgB,iCAAiC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAChD,IAAA,qBAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,IAAA,qBAAM,EAAC,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CACnD,mCAA2B,CAC5B,CAAC;IACF,MAAM,KAAK,GAAG,aAAa,CAAC;IAE5B,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,EAAE,CAC5C;QACE,gCAAmB,CAAC,OAAO;QAC3B,gCAAmB,CAAC,MAAM;QAC1B,gCAAmB,CAAC,IAAI;QACxB,gCAAmB,CAAC,KAAK;KAC1B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,OAAO,CACL,oBAAC,wBAAQ,IACP,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,GAAG,EAAE;gBACZ,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC1B,OAAO,EAAE,EAAE,CAAC;YACd,CAAC,EACD,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1B,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,IAErC,UAAU,CAAC,KAAK,CAAC,CACT,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,wCAA2B,CAAC,CAAC;IACtE,IAAI,eAAe,KAAK,SAAS,EAAE;QACjC,OAAO,CACL,oBAAC,wBAAQ,IACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EACrC,YAAY,EAAE,YAAY,EAAE,IAE3B,KAAK,CACG,CACZ,CAAC;KACH;IACD,OAAO,CACL,oBAAC,4BAAY,IAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;QACrD,oBAAC,qBAAY,IAAC,KAAK,EAAE,KAAK,IACvB,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CACnB,CACF,CAChB,CAAC;AACJ,CAAC;AAhDD,8EAgDC;AAED,gBAAgB;AAChB,SAAgB,6BAA6B;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,mCAA2B,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAA,uCAAoB,GAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,IAAA,yCAAoB,GAAE,CAAC;IAEjD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,iBAAiB,GAAG,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC;IACtD,OAAO,CACL,OAAO,IAAI,iBAAiB,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CACxE,CAAC;AACJ,CAAC;AAXD,sEAWC","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 { assert } from \"@itwin/core-bentley\";\nimport { HorizontalAlignment } from \"@itwin/core-react\";\nimport { DropdownMenu, MenuItem } from \"@itwin/itwinui-react\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../../layout/widget-panels/Panel\";\nimport type {\n HorizontalPanelSide,\n PanelSide,\n} from \"../../layout/widget-panels/PanelTypes\";\nimport { WidgetActionDropdownContext } from \"../widget-action-dropdown/MoreButton\";\nimport { TabBarButton } from \"../../layout/widget/Button\";\nimport { useMainPanelWidgetId } from \"../../layout/widget/usePanelWidgetId\";\nimport { useIsMaximizedWidget } from \"../enable-maximized-widget/useMaximizedWidget\";\n\n/** Default value used when not provided or disabled. */\nconst defaultAlignments = {\n top: HorizontalAlignment.Justify,\n bottom: HorizontalAlignment.Justify,\n};\n\n/** @internal */\nexport const HorizontalPanelAlignContext = React.createContext<{\n enabled: boolean;\n alignments: {\n [side in HorizontalPanelSide]: HorizontalAlignment;\n };\n setAlignment: (\n panel: PanelSide | undefined,\n alignment: HorizontalAlignment\n ) => void;\n}>({\n enabled: false,\n alignments: defaultAlignments,\n setAlignment: () => {},\n});\n\n/** Preview horizontal panel alignment feature provider.\n * @internal\n */\nexport function PreviewHorizontalPanelAlignFeatureProvider({\n enabled,\n children,\n}: {\n enabled?: boolean;\n children?: React.ReactNode;\n}) {\n const [alignments, setAlignments] = React.useState<{\n [x in HorizontalPanelSide]: HorizontalAlignment;\n }>({\n top: HorizontalAlignment.Justify,\n bottom: HorizontalAlignment.Justify,\n });\n const setAlignment = React.useCallback(\n (panel: PanelSide | undefined, alignment: HorizontalAlignment) => {\n if (!panel || !isHorizontalPanelSide(panel)) return;\n setAlignments((prev) => ({\n ...prev,\n [panel]: alignment,\n }));\n },\n []\n );\n return (\n <HorizontalPanelAlignContext.Provider\n value={{\n enabled: !!enabled,\n alignments: enabled ? alignments : defaultAlignments,\n setAlignment,\n }}\n >\n {children}\n </HorizontalPanelAlignContext.Provider>\n );\n}\n\nfunction SvgSide(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm11 7H1V3h10v6Zm4 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\nfunction SvgJustify(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 7H1V3h3v6Zm1 0V3h6v6H5Zm10 0h-3V3h3v6Z\" />\n </svg>\n );\n}\n\nfunction SvgCenter(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 11H1V3h3v10Zm1-4V3h6v6H5Zm10 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\nfunction getIcon(side: HorizontalPanelSide, alignment: HorizontalAlignment) {\n const scaleY = side === \"top\" ? \"-1\" : \"1\";\n if (alignment === HorizontalAlignment.Justify)\n return <SvgJustify transform={`scale(1, ${scaleY})`} />;\n if (alignment === HorizontalAlignment.Center)\n return <SvgCenter transform={`scale(1, ${scaleY})`} />;\n const scaleX = alignment === HorizontalAlignment.Left ? \"1\" : \"-1\";\n return <SvgSide transform={`scale(${scaleX}, ${scaleY})`} />;\n}\n\nfunction capitalize(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/** @internal */\nexport function PreviewHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n assert(isHorizontalPanelSide(side));\n const { alignments, setAlignment } = React.useContext(\n HorizontalPanelAlignContext\n );\n const title = \"Align panel\";\n\n const getMenuItems = (onClose?: () => void) =>\n [\n HorizontalAlignment.Justify,\n HorizontalAlignment.Center,\n HorizontalAlignment.Left,\n HorizontalAlignment.Right,\n ].map((align) => {\n return (\n <MenuItem\n key={align}\n onClick={() => {\n setAlignment(side, align);\n onClose?.();\n }}\n icon={getIcon(side, align)}\n isSelected={alignments[side] === align}\n >\n {capitalize(align)}\n </MenuItem>\n );\n });\n const dropdownContext = React.useContext(WidgetActionDropdownContext);\n if (dropdownContext !== undefined) {\n return (\n <MenuItem\n icon={getIcon(side, alignments[side])}\n subMenuItems={getMenuItems()}\n >\n {title}\n </MenuItem>\n );\n }\n return (\n <DropdownMenu menuItems={(close) => getMenuItems(close)}>\n <TabBarButton title={title}>\n {getIcon(side, alignments[side])}\n </TabBarButton>\n </DropdownMenu>\n );\n}\n\n/** @internal */\nexport function useHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n const { enabled } = React.useContext(HorizontalPanelAlignContext);\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n\n if (!side) return false;\n const isHorizontalPanel = isHorizontalPanelSide(side);\n return (\n enabled && isHorizontalPanel && isMainPanelWidget && !isMaximizedWidget\n );\n}\n"]}
|
package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module WidgetPanels
|
|
3
|
+
*/
|
|
4
|
+
import "./useHorizontalPanelAlignment.scss";
|
|
5
|
+
import type { PanelSide } from "../../layout/widget-panels/PanelTypes";
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare function useHorizontalPanelAlignment(side: PanelSide): {
|
|
8
|
+
attributes: {
|
|
9
|
+
"data-preview-horizontal-panel-align-top": import("@itwin/core-react").HorizontalAlignment;
|
|
10
|
+
"data-preview-horizontal-panel-align-bottom": import("@itwin/core-react").HorizontalAlignment;
|
|
11
|
+
};
|
|
12
|
+
classNames: {
|
|
13
|
+
[x: string]: boolean;
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
16
|
+
attributes?: undefined;
|
|
17
|
+
classNames?: undefined;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=useHorizontalPanelAlignment.d.ts.map
|
package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHorizontalPanelAlignment.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,oCAAoC,CAAC;AAG5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAEvE,gBAAgB;AAChB,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,SAAS;;;;;;;;;;;EAc1D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module WidgetPanels
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.useHorizontalPanelAlignment = void 0;
|
|
11
|
+
require("./useHorizontalPanelAlignment.scss");
|
|
12
|
+
const React = require("react");
|
|
13
|
+
const PreviewHorizontalPanelAlign_1 = require("./PreviewHorizontalPanelAlign");
|
|
14
|
+
/** @internal */
|
|
15
|
+
function useHorizontalPanelAlignment(side) {
|
|
16
|
+
const { enabled, alignments } = React.useContext(PreviewHorizontalPanelAlign_1.HorizontalPanelAlignContext);
|
|
17
|
+
return enabled
|
|
18
|
+
? {
|
|
19
|
+
attributes: {
|
|
20
|
+
"data-preview-horizontal-panel-align-top": alignments.top,
|
|
21
|
+
"data-preview-horizontal-panel-align-bottom": alignments.bottom,
|
|
22
|
+
},
|
|
23
|
+
classNames: {
|
|
24
|
+
[`preview-${side}`]: true,
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
: {};
|
|
28
|
+
}
|
|
29
|
+
exports.useHorizontalPanelAlignment = useHorizontalPanelAlignment;
|
|
30
|
+
//# sourceMappingURL=useHorizontalPanelAlignment.js.map
|
package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHorizontalPanelAlignment.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,8CAA4C;AAC5C,+BAA+B;AAC/B,+EAA4E;AAG5E,gBAAgB;AAChB,SAAgB,2BAA2B,CAAC,IAAe;IACzD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,yDAA2B,CAAC,CAAC;IAE9E,OAAO,OAAO;QACZ,CAAC,CAAC;YACE,UAAU,EAAE;gBACV,yCAAyC,EAAE,UAAU,CAAC,GAAG;gBACzD,4CAA4C,EAAE,UAAU,CAAC,MAAM;aAChE;YACD,UAAU,EAAE;gBACV,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,IAAI;aAC1B;SACF;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAdD,kEAcC","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 \"./useHorizontalPanelAlignment.scss\";\nimport * as React from \"react\";\nimport { HorizontalPanelAlignContext } from \"./PreviewHorizontalPanelAlign\";\nimport type { PanelSide } from \"../../layout/widget-panels/PanelTypes\";\n\n/** @internal */\nexport function useHorizontalPanelAlignment(side: PanelSide) {\n const { enabled, alignments } = React.useContext(HorizontalPanelAlignContext);\n\n return enabled\n ? {\n attributes: {\n \"data-preview-horizontal-panel-align-top\": alignments.top,\n \"data-preview-horizontal-panel-align-bottom\": alignments.bottom,\n },\n classNames: {\n [`preview-${side}`]: true,\n },\n }\n : {};\n}\n"]}
|
package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.scss
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
@layer appui.preview.horizontal-panel-alignment {
|
|
6
|
+
.preview-left {
|
|
7
|
+
&[data-preview-horizontal-panel-align-top="right"],
|
|
8
|
+
&[data-preview-horizontal-panel-align-top="center"] {
|
|
9
|
+
grid-row-start: ts-end;
|
|
10
|
+
}
|
|
11
|
+
&[data-preview-horizontal-panel-align-bottom="right"],
|
|
12
|
+
&[data-preview-horizontal-panel-align-bottom="center"] {
|
|
13
|
+
grid-row-end: bp-end;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.preview-right {
|
|
18
|
+
&[data-preview-horizontal-panel-align-top="left"],
|
|
19
|
+
&[data-preview-horizontal-panel-align-top="center"] {
|
|
20
|
+
grid-row-start: ts-end;
|
|
21
|
+
}
|
|
22
|
+
&[data-preview-horizontal-panel-align-bottom="left"],
|
|
23
|
+
&[data-preview-horizontal-panel-align-bottom="center"] {
|
|
24
|
+
grid-row-end: bp-end;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.preview-top {
|
|
29
|
+
&[data-preview-horizontal-panel-align-top="right"],
|
|
30
|
+
&[data-preview-horizontal-panel-align-top="center"] {
|
|
31
|
+
grid-column-start: lp-end;
|
|
32
|
+
}
|
|
33
|
+
&[data-preview-horizontal-panel-align-top="left"],
|
|
34
|
+
&[data-preview-horizontal-panel-align-top="center"] {
|
|
35
|
+
grid-column-end: rp-start;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.preview-bottom {
|
|
40
|
+
&[data-preview-horizontal-panel-align-bottom="right"],
|
|
41
|
+
&[data-preview-horizontal-panel-align-bottom="center"] {
|
|
42
|
+
grid-column-start: lp-end;
|
|
43
|
+
}
|
|
44
|
+
&[data-preview-horizontal-panel-align-bottom="left"],
|
|
45
|
+
&[data-preview-horizontal-panel-align-bottom="center"] {
|
|
46
|
+
grid-column-end: rp-start;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
/** @packageDocumentation
|
|
7
|
-
* @module
|
|
7
|
+
* @module Widget
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.ActionButton = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/widget-action-dropdown/Button.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,wDAAgD;AAChD,6CAA2D;AAC3D,uDAA0D;AAU1D,gBAAgB;AAChB,SAAgB,YAAY,CAAC,KAAwB;IACnD,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,wCAA2B,CAAC,CAAC;IACtE,IAAI,eAAe,KAAK,SAAS,EAAE;QACjC,OAAO,CACL,oBAAC,wBAAQ,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,KAAM,KAAK,CAAC,SAAS,IACpE,KAAK,CAAC,KAAK,CACH,CACZ,CAAC;KACH;IACD,OAAO,CACL,oBAAC,qBAAY,IACX,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,KAAK,EAAE,KAAK,CAAC,KAAK,KACd,KAAK,CAAC,WAAW,IAEpB,KAAK,CAAC,IAAI,CACE,CAChB,CAAC;AACJ,CAAC;AAlBD,oCAkBC","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
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/widget-action-dropdown/Button.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,wDAAgD;AAChD,6CAA2D;AAC3D,uDAA0D;AAU1D,gBAAgB;AAChB,SAAgB,YAAY,CAAC,KAAwB;IACnD,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,wCAA2B,CAAC,CAAC;IACtE,IAAI,eAAe,KAAK,SAAS,EAAE;QACjC,OAAO,CACL,oBAAC,wBAAQ,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,KAAM,KAAK,CAAC,SAAS,IACpE,KAAK,CAAC,KAAK,CACH,CACZ,CAAC;KACH;IACD,OAAO,CACL,oBAAC,qBAAY,IACX,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,KAAK,EAAE,KAAK,CAAC,KAAK,KACd,KAAK,CAAC,WAAW,IAEpB,KAAK,CAAC,IAAI,CACE,CAChB,CAAC;AACJ,CAAC;AAlBD,oCAkBC","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 { MenuItem } from \"@itwin/itwinui-react\";\nimport { WidgetActionDropdownContext } from \"./MoreButton\";\nimport { TabBarButton } from \"../../layout/widget/Button\";\n\ninterface ActionButtonProps {\n title?: string;\n icon: React.JSX.Element;\n onClick?: () => void;\n menuProps?: React.ComponentProps<typeof MenuItem>;\n buttonProps?: React.ComponentProps<typeof TabBarButton>;\n}\n\n/** @internal */\nexport function ActionButton(props: ActionButtonProps) {\n const dropdownContext = React.useContext(WidgetActionDropdownContext);\n if (dropdownContext !== undefined) {\n return (\n <MenuItem icon={props.icon} onClick={props.onClick} {...props.menuProps}>\n {props.title}\n </MenuItem>\n );\n }\n return (\n <TabBarButton\n onClick={props.onClick}\n title={props.title}\n {...props.buttonProps}\n >\n {props.icon}\n </TabBarButton>\n );\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
|
-
* @module
|
|
2
|
+
* @module Widget
|
|
3
3
|
*/
|
|
4
4
|
import * as React from "react";
|
|
5
|
+
import type { WidgetFeature } from "../../layout/widget/Buttons";
|
|
5
6
|
/** @internal */
|
|
6
7
|
export declare function MoreButton(props: React.PropsWithChildren<{}>): React.JSX.Element;
|
|
7
8
|
/** @internal */
|
|
@@ -9,5 +10,5 @@ export declare const WidgetActionDropdownContext: React.Context<{
|
|
|
9
10
|
onClose: () => void;
|
|
10
11
|
} | undefined>;
|
|
11
12
|
/** @internal */
|
|
12
|
-
export declare function useDropdownFeatures(
|
|
13
|
+
export declare function useDropdownFeatures(features: WidgetFeature[]): readonly [WidgetFeature[], false] | readonly [WidgetFeature[], true];
|
|
13
14
|
//# sourceMappingURL=MoreButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoreButton.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/preview/widget-action-dropdown/MoreButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MoreButton.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/preview/widget-action-dropdown/MoreButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,qBAmB5D;AAED,gBAAgB;AAChB,eAAO,MAAM,2BAA2B;aAGzB,MAAM,IAAI;cAEb,CAAC;AA2Bb,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,wEAS5D"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
/** @packageDocumentation
|
|
7
|
-
* @module
|
|
7
|
+
* @module Widget
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.useDropdownFeatures = exports.WidgetActionDropdownContext = exports.MoreButton = void 0;
|
|
@@ -55,13 +55,13 @@ const order = [
|
|
|
55
55
|
"sendBack",
|
|
56
56
|
];
|
|
57
57
|
/** @internal */
|
|
58
|
-
function useDropdownFeatures(
|
|
58
|
+
function useDropdownFeatures(features) {
|
|
59
59
|
const { widgetActionDropdown } = (0, PreviewFeatures_1.usePreviewFeatures)();
|
|
60
60
|
const threshold = widgetActionDropdown?.threshold ?? Infinity;
|
|
61
|
-
const isDropdown =
|
|
61
|
+
const isDropdown = features.length > threshold;
|
|
62
62
|
if (!isDropdown)
|
|
63
|
-
return [
|
|
64
|
-
const sorted = [...
|
|
63
|
+
return [features, false];
|
|
64
|
+
const sorted = [...features].sort((a, b) => order.indexOf(a) - order.indexOf(b));
|
|
65
65
|
return [sorted, true];
|
|
66
66
|
}
|
|
67
67
|
exports.useDropdownFeatures = useDropdownFeatures;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoreButton.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/widget-action-dropdown/MoreButton.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,sDAA6C;AAC7C,oEAA6D;AAC7D,wDAAoD;AACpD,uDAA0D;AAC1D,wDAAwD;AACxD,+DAA0D;AAC1D,4DAAoE;
|
|
1
|
+
{"version":3,"file":"MoreButton.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/widget-action-dropdown/MoreButton.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,sDAA6C;AAC7C,oEAA6D;AAC7D,wDAAoD;AACpD,uDAA0D;AAC1D,wDAAwD;AACxD,+DAA0D;AAC1D,4DAAoE;AAGpE,gBAAgB;AAChB,SAAgB,UAAU,CAAC,KAAkC;IAC3D,OAAO,CACL,oBAAC,4BAAY,IACX,SAAS,EAAC,YAAY,EACtB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;YACtB,oBAAC,mCAA2B,CAAC,QAAQ,IAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE;gBAC9D,oBAAC,oBAAoB,OAAG;gBACvB,KAAK,CAAC,QAAQ,CACsB;SACxC;QAGD,6BAAK,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;YACrE,oBAAC,qBAAY,IAAC,KAAK,EAAC,cAAc;gBAChC,oBAAC,qCAAe,OAAG,CACN,CACX,CACO,CAChB,CAAC;AACJ,CAAC;AAnBD,gCAmBC;AAED,gBAAgB;AACH,QAAA,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAK5D,SAAS,CAAC,CAAC;AAEb,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,mCAA2B,CAAC,CAAC;IAC9D,IAAA,qBAAM,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAEhD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,CAAC,KAAK,EAAE,EAAE;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;IAC3B,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,KAAK,GAAoB;IAC7B,KAAK;IACL,UAAU;IACV,QAAQ;IACR,iBAAiB;IACjB,MAAM;IACN,UAAU;CACX,CAAC;AAEF,gBAAgB;AAChB,SAAgB,mBAAmB,CAAC,QAAyB;IAC3D,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAA,oCAAkB,GAAE,CAAC;IACtD,MAAM,SAAS,GAAG,oBAAoB,EAAE,SAAS,IAAI,QAAQ,CAAC;IAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;IAC/C,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAU,CAAC;IACnD,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAC9C,CAAC;IACF,OAAO,CAAC,MAAM,EAAE,IAAI,CAAU,CAAC;AACjC,CAAC;AATD,kDASC","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 { assert } from \"@itwin/core-bentley\";\nimport { SvgMoreVertical } from \"@itwin/itwinui-icons-react\";\nimport { DropdownMenu } from \"@itwin/itwinui-react\";\nimport { TabBarButton } from \"../../layout/widget/Button\";\nimport { usePreviewFeatures } from \"../PreviewFeatures\";\nimport { useLayout } from \"../../layout/base/LayoutStore\";\nimport { PanelSideContext } from \"../../layout/widget-panels/Panel\";\nimport type { WidgetFeature } from \"../../layout/widget/Buttons\";\n\n/** @internal */\nexport function MoreButton(props: React.PropsWithChildren<{}>) {\n return (\n <DropdownMenu\n placement=\"bottom-end\"\n menuItems={(onClose) => [\n <WidgetActionDropdownContext.Provider key={0} value={{ onClose }}>\n <CloseOnPanelCollapse />\n {props.children}\n </WidgetActionDropdownContext.Provider>,\n ]}\n >\n {/* TODO: offset is not available for DropdownMenu */}\n <div style={{ height: \"100%\", display: \"flex\", marginInline: \"0.25em\" }}>\n <TabBarButton label=\"More actions\">\n <SvgMoreVertical />\n </TabBarButton>\n </div>\n </DropdownMenu>\n );\n}\n\n/** @internal */\nexport const WidgetActionDropdownContext = React.createContext<\n | undefined\n | {\n onClose: () => void;\n }\n>(undefined);\n\nfunction CloseOnPanelCollapse() {\n const context = React.useContext(WidgetActionDropdownContext);\n assert(!!context);\n const side = React.useContext(PanelSideContext);\n\n const { onClose } = context;\n const collapsed = useLayout((state) => {\n if (!side) return false;\n return state.panels[side].collapsed;\n });\n React.useEffect(() => {\n if (collapsed) onClose();\n }, [collapsed, onClose]);\n return null;\n}\n\nconst order: WidgetFeature[] = [\n \"pin\",\n \"maximize\",\n \"popout\",\n \"horizontalAlign\",\n \"dock\",\n \"sendBack\",\n];\n\n/** @internal */\nexport function useDropdownFeatures(features: WidgetFeature[]) {\n const { widgetActionDropdown } = usePreviewFeatures();\n const threshold = widgetActionDropdown?.threshold ?? Infinity;\n const isDropdown = features.length > threshold;\n if (!isDropdown) return [features, false] as const;\n const sorted = [...features].sort(\n (a, b) => order.indexOf(a) - order.indexOf(b)\n );\n return [sorted, true] as const;\n}\n"]}
|
|
@@ -46,8 +46,8 @@ export interface SessionState {
|
|
|
46
46
|
iModelId: string;
|
|
47
47
|
defaultIModelViewportControlId: string | undefined;
|
|
48
48
|
defaultViewId: string | undefined;
|
|
49
|
-
defaultViewState: any
|
|
50
|
-
iModelConnection: any
|
|
49
|
+
defaultViewState: any;
|
|
50
|
+
iModelConnection: any;
|
|
51
51
|
cursorMenuData: CursorMenuData | undefined;
|
|
52
52
|
}
|
|
53
53
|
/** An interface that allows redux connected object to dispatch changes to the SessionState reducer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionState.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/redux/SessionState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK7D;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,oBAAY,oBAAoB;IAC9B,mBAAmB,wCAAwC;IAC3D,2BAA2B,gDAAgD;IAC3E,iBAAiB,qCAAqC;IACtD,iBAAiB,qCAAqC;IACtD,mBAAmB,uCAAuC;IAC1D,iCAAiC,wCAAwC;IACzE,gBAAgB,oCAAoC;IACpD,mBAAmB,wCAAwC;IAC3D,gBAAgB,oCAAoC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,EAAE,0BAA0B,EAAE,CAAC;IACvD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,gBAAgB,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"SessionState.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/redux/SessionState.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK7D;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,oBAAY,oBAAoB;IAC9B,mBAAmB,wCAAwC;IAC3D,2BAA2B,gDAAgD;IAC3E,iBAAiB,qCAAqC;IACtD,iBAAiB,qCAAqC;IACtD,mBAAmB,uCAAuC;IAC1D,iCAAiC,wCAAwC;IACzE,gBAAgB,oCAAoC;IACpD,mBAAmB,wCAAwC;IAC3D,gBAAgB,oCAAoC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,EAAE,0BAA0B,EAAE,CAAC;IACvD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,gBAAgB,EAAE,GAAG,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC;IACtB,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;CAC5C;AAwBD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,OAAO,mBAAmB,CAAC,iBAAiB,CAAC;IAChE,2BAA2B,EAAE,OAAO,mBAAmB,CAAC,2BAA2B,CAAC;IACpF,iCAAiC,EAAE,OAAO,mBAAmB,CAAC,iCAAiC,CAAC;IAChG,gBAAgB,EAAE,OAAO,mBAAmB,CAAC,gBAAgB,CAAC;IAC9D,mBAAmB,EAAE,OAAO,mBAAmB,CAAC,mBAAmB,CAAC;IACpE,mBAAmB,EAAE,OAAO,mBAAmB,CAAC,mBAAmB,CAAC;IACpE,mBAAmB,EAAE,OAAO,mBAAmB,CAAC,mBAAmB,CAAC;IACpE,iBAAiB,EAAE,OAAO,mBAAmB,CAAC,iBAAiB,CAAC;IAChE,gBAAgB,EAAE,OAAO,mBAAmB,CAAC,gBAAgB,CAAC;CAC/D;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;kCAGjB,MAAM;4DAIU,0BAA0B,EAAE;iEAKI,MAAM;+BAKxC,MAAM;qCAInB,GAAG;uCAEkB,MAAM;4CAIpB,GAAG;8CAIC,MAAM;uCAOZ,cAAc;CAElC,CAAC;AAEF;;;GAGG;AAEH,eAAO,MAAM,8BAA8B;kCA5C5B,MAAM;4DAIU,0BAA0B,EAAE;iEAKI,MAAM;+BAKxC,MAAM;qCAInB,GAAG;uCAEkB,MAAM;4CAIpB,GAAG;8CAIC,MAAM;uCAOZ,cAAc;CASqC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,0BAA6B,EAClC,MAAM,EAAE,wBAAwB,GAC/B,YAAY,CAAC,YAAY,CAAC,CA+C5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionState.js","sourceRoot":"","sources":["../../../../src/appui-react/redux/SessionState.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module State\n */\n\n// The following definitions are causing extract-api issues on linux so for now just using any until we can figure out the issue.\nimport type { XAndY } from \"@itwin/core-geometry\";\n// import { IModelConnection, ViewState } from \"@itwin/core-frontend\";\nimport type { MenuItemProps } from \"../shared/MenuItem\";\nimport type { ActionsUnion, DeepReadonly } from \"./redux-ts\";\nimport { createAction } from \"./redux-ts\";\n\n// cSpell:ignore configurableui snapmode toolprompt sessionstate imodelid viewid viewportid rulesetid\n\n/** PresentationSelectionScope holds the id and the localized label for a selection scope supported for a specific iModel.\n * Added to avoid an api-extract error caused by using SelectionScope.\n * @public\n */\nexport interface PresentationSelectionScope {\n id: string;\n label: string;\n}\n\n/** Definition of data added to Redux store to define cursor menu. If menuItems are empty the menu control is not displayed.\n * To close the menu clear the menuItems or pass in undefined as the CursorData.\n * @public\n */\nexport interface CursorMenuData {\n items: MenuItemProps[];\n position: XAndY;\n childWindowId?: string;\n}\n\n/** Action Ids used by Redux and to send sync UI components. Typically used to refresh visibility or enable state of control.\n * Since these are also used as sync ids they should be in lowercase.\n * @public\n */\nexport enum SessionStateActionId {\n SetNumItemsSelected = \"sessionstate:set-num-items-selected\",\n SetAvailableSelectionScopes = \"sessionstate:set-available-selection-scopes\",\n SetSelectionScope = \"sessionstate:set-selection-scope\",\n SetActiveIModelId = \"sessionstate:set-active-imodelid\",\n SetIModelConnection = \"sessionstate:set-imodel-connection\",\n SetDefaultIModelViewportControlId = \"sessionstate:set-default-viewportid\",\n SetDefaultViewId = \"sessionstate:set-default-viewid\",\n SetDefaultViewState = \"sessionstate:set-default-view-state\",\n UpdateCursorMenu = \"sessionstate:update-cursor-menu\",\n}\n\n/** The portion of state managed by the SessionStateReducer.\n * @public\n */\nexport interface SessionState {\n numItemsSelected: number;\n availableSelectionScopes: PresentationSelectionScope[];\n activeSelectionScope: string;\n iModelId: string;\n defaultIModelViewportControlId: string | undefined;\n defaultViewId: string | undefined;\n defaultViewState: any | undefined;\n iModelConnection: any | undefined;\n cursorMenuData: CursorMenuData | undefined;\n}\n\nconst defaultSelectionScope = {\n id: \"element\",\n label: \"Element\",\n} as PresentationSelectionScope;\n\n/** used on first call of SessionStateReducer */\nconst initialState: SessionState = {\n /** number of selected items in Presentation Selection */\n numItemsSelected: 0,\n /** initialize to only support \"Element\" scope, this will be overwritten when iModelConnection is established */\n availableSelectionScopes: [defaultSelectionScope],\n /** initialize to active selection scope to \"Element\", this will be overwritten when iModelConnection is established */\n activeSelectionScope: defaultSelectionScope.id,\n /** set to iModelId if an iModel is active else it is an empty string, so initialize to empty string */\n iModelId: \"\",\n defaultIModelViewportControlId: undefined,\n defaultViewId: undefined,\n defaultViewState: undefined,\n iModelConnection: undefined,\n cursorMenuData: undefined,\n};\n\n/** An interface that allows redux connected object to dispatch changes to the SessionState reducer.\n * @beta\n */\nexport interface SessionStateActionsProps {\n setActiveIModelId: typeof SessionStateActions.setActiveIModelId;\n setAvailableSelectionScopes: typeof SessionStateActions.setAvailableSelectionScopes;\n setDefaultIModelViewportControlId: typeof SessionStateActions.setDefaultIModelViewportControlId;\n setDefaultViewId: typeof SessionStateActions.setDefaultViewId;\n setDefaultViewState: typeof SessionStateActions.setDefaultViewState;\n setIModelConnection: typeof SessionStateActions.setIModelConnection;\n setNumItemsSelected: typeof SessionStateActions.setNumItemsSelected;\n setSelectionScope: typeof SessionStateActions.setSelectionScope;\n updateCursorMenu: typeof SessionStateActions.updateCursorMenu;\n}\n\n/** An object with a function that creates each SessionStateReducer that can be handled by our reducer.\n * @public\n */\nexport const SessionStateActions = {\n setActiveIModelId:\n // istanbul ignore next\n (iModelId: string) =>\n createAction(SessionStateActionId.SetActiveIModelId, iModelId),\n setAvailableSelectionScopes:\n // istanbul ignore next\n (availableSelectionScopes: PresentationSelectionScope[]) =>\n createAction(\n SessionStateActionId.SetAvailableSelectionScopes,\n availableSelectionScopes\n ),\n setDefaultIModelViewportControlId: (iModelViewportControlId: string) =>\n createAction(\n SessionStateActionId.SetDefaultIModelViewportControlId,\n iModelViewportControlId\n ),\n setDefaultViewId: (viewId: string) =>\n createAction(SessionStateActionId.SetDefaultViewId, viewId),\n setDefaultViewState:\n // istanbul ignore next\n (viewState: any) =>\n createAction(SessionStateActionId.SetDefaultViewState, viewState),\n setNumItemsSelected: (numSelected: number) =>\n createAction(SessionStateActionId.SetNumItemsSelected, numSelected),\n setIModelConnection:\n // istanbul ignore next\n (iModelConnection: any) =>\n createAction(SessionStateActionId.SetIModelConnection, iModelConnection),\n setSelectionScope:\n // istanbul ignore next\n (activeSelectionScope: string) =>\n createAction(\n SessionStateActionId.SetSelectionScope,\n activeSelectionScope\n ),\n updateCursorMenu:\n // istanbul ignore next\n (cursorMenuData: CursorMenuData) =>\n createAction(SessionStateActionId.UpdateCursorMenu, cursorMenuData),\n};\n\n/** Object that contains available actions that modify SessionState. Parent control's props should\n * extend from SessionStateActionsProps before using this in Redux 'connect' function.\n * @beta\n */\n// ...SessionStateActionsProps\nexport const sessionStateMapDispatchToProps = { ...SessionStateActions };\n\n/** Union of SessionState Redux actions\n * @public\n */\nexport type SessionStateActionsUnion = ActionsUnion<typeof SessionStateActions>;\n\n/** Handles actions to update SessionState.\n * @public\n */\nexport function SessionStateReducer(\n state: SessionState = initialState,\n action: SessionStateActionsUnion\n): DeepReadonly<SessionState> {\n switch (action.type) {\n case SessionStateActionId.SetNumItemsSelected: {\n // istanbul ignore else\n if (undefined !== action.payload)\n return { ...state, numItemsSelected: action.payload };\n else return { ...state, numItemsSelected: 0 };\n }\n case SessionStateActionId.SetAvailableSelectionScopes: {\n const payloadArray: PresentationSelectionScope[] = [];\n action.payload.forEach((scope) => payloadArray.push(scope));\n // istanbul ignore else\n if (undefined !== action.payload)\n return { ...state, availableSelectionScopes: payloadArray };\n else\n return { ...state, availableSelectionScopes: [defaultSelectionScope] };\n }\n case SessionStateActionId.SetSelectionScope: {\n // istanbul ignore else\n if (undefined !== action.payload)\n return { ...state, activeSelectionScope: action.payload };\n else return { ...state, activeSelectionScope: defaultSelectionScope.id };\n }\n case SessionStateActionId.SetActiveIModelId: {\n // istanbul ignore else\n if (undefined !== action.payload)\n return { ...state, iModelId: action.payload };\n else return { ...state, iModelId: \"\" };\n }\n case SessionStateActionId.SetDefaultIModelViewportControlId: {\n return { ...state, defaultIModelViewportControlId: action.payload };\n }\n case SessionStateActionId.SetDefaultViewId: {\n return { ...state, defaultViewId: action.payload };\n }\n case SessionStateActionId.SetDefaultViewState: {\n return { ...state, defaultViewState: action.payload };\n }\n case SessionStateActionId.SetIModelConnection: {\n return { ...state, iModelConnection: action.payload };\n }\n case SessionStateActionId.UpdateCursorMenu: {\n return { ...state, cursorMenuData: action.payload };\n }\n }\n\n return state;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SessionState.js","sourceRoot":"","sources":["../../../../src/appui-react/redux/SessionState.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module State\n */\n\n// The following definitions are causing extract-api issues on linux so for now just using any until we can figure out the issue.\nimport type { XAndY } from \"@itwin/core-geometry\";\n// import { IModelConnection, ViewState } from \"@itwin/core-frontend\";\nimport type { MenuItemProps } from \"../shared/MenuItem\";\nimport type { ActionsUnion, DeepReadonly } from \"./redux-ts\";\nimport { createAction } from \"./redux-ts\";\n\n// cSpell:ignore configurableui snapmode toolprompt sessionstate imodelid viewid viewportid rulesetid\n\n/** PresentationSelectionScope holds the id and the localized label for a selection scope supported for a specific iModel.\n * Added to avoid an api-extract error caused by using SelectionScope.\n * @public\n */\nexport interface PresentationSelectionScope {\n id: string;\n label: string;\n}\n\n/** Definition of data added to Redux store to define cursor menu. If menuItems are empty the menu control is not displayed.\n * To close the menu clear the menuItems or pass in undefined as the CursorData.\n * @public\n */\nexport interface CursorMenuData {\n items: MenuItemProps[];\n position: XAndY;\n childWindowId?: string;\n}\n\n/** Action Ids used by Redux and to send sync UI components. Typically used to refresh visibility or enable state of control.\n * Since these are also used as sync ids they should be in lowercase.\n * @public\n */\nexport enum SessionStateActionId {\n SetNumItemsSelected = \"sessionstate:set-num-items-selected\",\n SetAvailableSelectionScopes = \"sessionstate:set-available-selection-scopes\",\n SetSelectionScope = \"sessionstate:set-selection-scope\",\n SetActiveIModelId = \"sessionstate:set-active-imodelid\",\n SetIModelConnection = \"sessionstate:set-imodel-connection\",\n SetDefaultIModelViewportControlId = \"sessionstate:set-default-viewportid\",\n SetDefaultViewId = \"sessionstate:set-default-viewid\",\n SetDefaultViewState = \"sessionstate:set-default-view-state\",\n UpdateCursorMenu = \"sessionstate:update-cursor-menu\",\n}\n\n/** The portion of state managed by the SessionStateReducer.\n * @public\n */\nexport interface SessionState {\n numItemsSelected: number;\n availableSelectionScopes: PresentationSelectionScope[];\n activeSelectionScope: string;\n iModelId: string;\n defaultIModelViewportControlId: string | undefined;\n defaultViewId: string | undefined;\n defaultViewState: any;\n iModelConnection: any;\n cursorMenuData: CursorMenuData | undefined;\n}\n\nconst defaultSelectionScope = {\n id: \"element\",\n label: \"Element\",\n} as PresentationSelectionScope;\n\n/** used on first call of SessionStateReducer */\nconst initialState: SessionState = {\n /** number of selected items in Presentation Selection */\n numItemsSelected: 0,\n /** initialize to only support \"Element\" scope, this will be overwritten when iModelConnection is established */\n availableSelectionScopes: [defaultSelectionScope],\n /** initialize to active selection scope to \"Element\", this will be overwritten when iModelConnection is established */\n activeSelectionScope: defaultSelectionScope.id,\n /** set to iModelId if an iModel is active else it is an empty string, so initialize to empty string */\n iModelId: \"\",\n defaultIModelViewportControlId: undefined,\n defaultViewId: undefined,\n defaultViewState: undefined,\n iModelConnection: undefined,\n cursorMenuData: undefined,\n};\n\n/** An interface that allows redux connected object to dispatch changes to the SessionState reducer.\n * @beta\n */\nexport interface SessionStateActionsProps {\n setActiveIModelId: typeof SessionStateActions.setActiveIModelId;\n setAvailableSelectionScopes: typeof SessionStateActions.setAvailableSelectionScopes;\n setDefaultIModelViewportControlId: typeof SessionStateActions.setDefaultIModelViewportControlId;\n setDefaultViewId: typeof SessionStateActions.setDefaultViewId;\n setDefaultViewState: typeof SessionStateActions.setDefaultViewState;\n setIModelConnection: typeof SessionStateActions.setIModelConnection;\n setNumItemsSelected: typeof SessionStateActions.setNumItemsSelected;\n setSelectionScope: typeof SessionStateActions.setSelectionScope;\n updateCursorMenu: typeof SessionStateActions.updateCursorMenu;\n}\n\n/** An object with a function that creates each SessionStateReducer that can be handled by our reducer.\n * @public\n */\nexport const SessionStateActions = {\n setActiveIModelId:\n // istanbul ignore next\n (iModelId: string) =>\n createAction(SessionStateActionId.SetActiveIModelId, iModelId),\n setAvailableSelectionScopes:\n // istanbul ignore next\n (availableSelectionScopes: PresentationSelectionScope[]) =>\n createAction(\n SessionStateActionId.SetAvailableSelectionScopes,\n availableSelectionScopes\n ),\n setDefaultIModelViewportControlId: (iModelViewportControlId: string) =>\n createAction(\n SessionStateActionId.SetDefaultIModelViewportControlId,\n iModelViewportControlId\n ),\n setDefaultViewId: (viewId: string) =>\n createAction(SessionStateActionId.SetDefaultViewId, viewId),\n setDefaultViewState:\n // istanbul ignore next\n (viewState: any) =>\n createAction(SessionStateActionId.SetDefaultViewState, viewState),\n setNumItemsSelected: (numSelected: number) =>\n createAction(SessionStateActionId.SetNumItemsSelected, numSelected),\n setIModelConnection:\n // istanbul ignore next\n (iModelConnection: any) =>\n createAction(SessionStateActionId.SetIModelConnection, iModelConnection),\n setSelectionScope:\n // istanbul ignore next\n (activeSelectionScope: string) =>\n createAction(\n SessionStateActionId.SetSelectionScope,\n activeSelectionScope\n ),\n updateCursorMenu:\n // istanbul ignore next\n (cursorMenuData: CursorMenuData) =>\n createAction(SessionStateActionId.UpdateCursorMenu, cursorMenuData),\n};\n\n/** Object that contains available actions that modify SessionState. Parent control's props should\n * extend from SessionStateActionsProps before using this in Redux 'connect' function.\n * @beta\n */\n// ...SessionStateActionsProps\nexport const sessionStateMapDispatchToProps = { ...SessionStateActions };\n\n/** Union of SessionState Redux actions\n * @public\n */\nexport type SessionStateActionsUnion = ActionsUnion<typeof SessionStateActions>;\n\n/** Handles actions to update SessionState.\n * @public\n */\nexport function SessionStateReducer(\n state: SessionState = initialState,\n action: SessionStateActionsUnion\n): DeepReadonly<SessionState> {\n switch (action.type) {\n case SessionStateActionId.SetNumItemsSelected: {\n // istanbul ignore else\n if (undefined !== action.payload)\n return { ...state, numItemsSelected: action.payload };\n else return { ...state, numItemsSelected: 0 };\n }\n case SessionStateActionId.SetAvailableSelectionScopes: {\n const payloadArray: PresentationSelectionScope[] = [];\n action.payload.forEach((scope) => payloadArray.push(scope));\n // istanbul ignore else\n if (undefined !== action.payload)\n return { ...state, availableSelectionScopes: payloadArray };\n else\n return { ...state, availableSelectionScopes: [defaultSelectionScope] };\n }\n case SessionStateActionId.SetSelectionScope: {\n // istanbul ignore else\n if (undefined !== action.payload)\n return { ...state, activeSelectionScope: action.payload };\n else return { ...state, activeSelectionScope: defaultSelectionScope.id };\n }\n case SessionStateActionId.SetActiveIModelId: {\n // istanbul ignore else\n if (undefined !== action.payload)\n return { ...state, iModelId: action.payload };\n else return { ...state, iModelId: \"\" };\n }\n case SessionStateActionId.SetDefaultIModelViewportControlId: {\n return { ...state, defaultIModelViewportControlId: action.payload };\n }\n case SessionStateActionId.SetDefaultViewId: {\n return { ...state, defaultViewId: action.payload };\n }\n case SessionStateActionId.SetDefaultViewState: {\n return { ...state, defaultViewState: action.payload };\n }\n case SessionStateActionId.SetIModelConnection: {\n return { ...state, iModelConnection: action.payload };\n }\n case SessionStateActionId.UpdateCursorMenu: {\n return { ...state, cursorMenuData: action.payload };\n }\n }\n\n return state;\n}\n"]}
|
|
@@ -230,7 +230,7 @@ function StatusBarComposer(props) {
|
|
|
230
230
|
}, [handleEntryResize]);
|
|
231
231
|
const getSectionItems = React.useCallback((section) => {
|
|
232
232
|
const sectionItems = statusBarItems
|
|
233
|
-
.filter((item) => item.section === section &&
|
|
233
|
+
.filter((item) => item.section.valueOf() === section.valueOf() &&
|
|
234
234
|
!isItemInOverflow(item.id, overflown) &&
|
|
235
235
|
!appui_abstract_1.ConditionalBooleanValue.getValue(item.isHidden))
|
|
236
236
|
.sort((a, b) => a.itemPriority - b.itemPriority);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBarComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module StatusBar\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { useRefs, useResizeObserver } from \"@itwin/core-react\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { eqlOverflown } from \"../layout/tool-settings/Docked\";\nimport { StatusBarLabelIndicator } from \"../statusbar/LabelIndicator\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\nimport type { UiSyncEventArgs } from \"../syncui/UiSyncEvent\";\nimport { isProviderItem } from \"../ui-items-provider/isProviderItem\";\nimport { StatusBarOverflow } from \"./Overflow\";\nimport { StatusBarOverflowPanel } from \"./OverflowPanel\";\nimport {\n StatusBarCenterSection,\n StatusBarLeftSection,\n StatusBarRightSection,\n StatusBarSpaceBetween,\n} from \"./StatusBar\";\nimport type {\n StatusBarActionItem,\n StatusBarItem,\n StatusBarLabelItem,\n} from \"./StatusBarItem\";\nimport {\n isStatusBarActionItem,\n isStatusBarCustomItem,\n isStatusBarLabelItem,\n StatusBarSection,\n} from \"./StatusBarItem\";\nimport { StatusBarItemsManager } from \"./StatusBarItemsManager\";\nimport { useDefaultStatusBarItems } from \"./useDefaultStatusBarItems\";\nimport { useUiItemsProviderStatusBarItems } from \"./useUiItemsProviderStatusBarItems\";\n\n/** Private function to generate a value that will allow the proper order to be maintained when items are placed in overflow panel */\nfunction getCombinedSectionItemPriority(item: StatusBarItem) {\n let sectionValue = 0;\n if (item.section === StatusBarSection.Center) sectionValue = 100000;\n else if (item.section === StatusBarSection.Context) sectionValue = 200000;\n else if (item.section === StatusBarSection.Right) sectionValue = 300000;\n return sectionValue + item.itemPriority;\n}\n\ninterface DockedStatusBarEntryContextArg {\n readonly isOverflown: boolean;\n readonly onResize: (w: number) => void;\n}\n\nconst DockedStatusBarEntryContext =\n React.createContext<DockedStatusBarEntryContextArg>(null!);\nDockedStatusBarEntryContext.displayName = \"nz:DockedStatusBarEntryContext\";\n\n/** @internal */\nexport function useStatusBarEntry() {\n return React.useContext(DockedStatusBarEntryContext);\n}\n\n/** Properties of [[DockedStatusBarItem]] component.\n * @internal future\n */\nexport interface StatusBarItemProps extends CommonProps {\n /** Tool setting content. */\n children?: React.ReactNode;\n itemPriority?: number;\n providerId?: string;\n section?: string;\n}\n\n/** Used in [[StatusBarComposer]] component to display a statusbar item.\n * @internal future\n */\nexport function DockedStatusBarItem(props: StatusBarItemProps) {\n const { onResize } = useStatusBarEntry();\n const ref = useResizeObserver<HTMLDivElement>(onResize);\n const className = classnames(\n \"uifw-statusbar-item-container\",\n props.className\n );\n return (\n <div\n data-item-id={props.itemId}\n data-item-type=\"status-bar-item\"\n data-item-location={props.section}\n data-item-priority={props.itemPriority}\n data-item-provider-id={props.providerId}\n className={className}\n ref={ref}\n style={props.style}\n >\n {props.children}\n </div>\n );\n}\n\ninterface DockedStatusBarEntryProps {\n children?: React.ReactNode;\n entryKey: string;\n getOnResize: (key: string) => (w: number) => void;\n}\n\n/** Wrapper for status bar entries so their size can be used to determine if the status bar container can display them or if they will need to be placed in an overflow panel. */\nfunction DockedStatusBarEntry({\n children,\n entryKey,\n getOnResize,\n}: DockedStatusBarEntryProps) {\n const onResize = React.useMemo(\n () => getOnResize(entryKey),\n [getOnResize, entryKey]\n );\n const entry = React.useMemo<DockedStatusBarEntryContextArg>(\n () => ({\n isOverflown: false,\n onResize,\n }),\n [onResize]\n );\n return (\n <DockedStatusBarEntryContext.Provider value={entry}>\n {children}\n </DockedStatusBarEntryContext.Provider>\n );\n}\n\n/** Private function to set up sync event monitoring of statusbar items */\nfunction useStatusBarItemSyncEffect(\n itemsManager: StatusBarItemsManager,\n syncIdsOfInterest: string[]\n) {\n React.useEffect(() => {\n const handleSyncUiEvent = (args: UiSyncEventArgs) => {\n if (0 === syncIdsOfInterest.length) return;\n\n // istanbul ignore else\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n // process each item that has interest\n itemsManager.refreshAffectedItems(args.eventIds);\n }\n };\n\n // Note: that items with conditions have condition run when loaded into the items manager\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\n return () => {\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\n };\n }, [itemsManager, itemsManager.items, syncIdsOfInterest]);\n}\n\nfunction StatusBarLabelItemComponent(props: StatusBarLabelItem) {\n const label = ConditionalStringValue.getValue(props.label);\n return <StatusBarLabelIndicator iconSpec={props.icon} label={label} />;\n}\n\nfunction StatusBarActionItemComponent(props: StatusBarActionItem) {\n const title = ConditionalStringValue.getValue(props.tooltip);\n return (\n <StatusBarLabelIndicator\n title={title}\n onClick={props.execute}\n iconSpec={props.icon}\n />\n );\n}\n\n/** local function to combine items from Stage and from Extensions */\nfunction combineItems(\n stageItems: ReadonlyArray<StatusBarItem>,\n addonItems: ReadonlyArray<StatusBarItem>\n) {\n const items: StatusBarItem[] = [];\n if (stageItems.length) {\n // Walk through each and ensure no duplicate ids are added.\n stageItems.forEach((srcItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n items.push(srcItem);\n }\n });\n }\n if (addonItems.length) {\n // Walk through each and ensure no duplicate ids are added.\n addonItems.forEach((srcItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n items.push(srcItem);\n }\n });\n }\n return items;\n}\n\n/** local function to ensure a width value is defined for a status bar entries. */\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\n for (const [, val] of map) {\n // istanbul ignore next\n if (val === undefined) return undefined;\n }\n return map as Map<string, T>;\n}\n\n/** Returns a subset of docked entry keys that exceed given width and should be placed in overflow panel. */\nfunction getItemToPlaceInOverflow(\n width: number,\n docked: ReadonlyArray<readonly [string, number]>,\n overflowWidth: number\n) {\n let settingsWidth = 0;\n\n let i = 0;\n for (; i < docked.length; i++) {\n const w = docked[i][1];\n const newSettingsWidth = settingsWidth + w;\n if (newSettingsWidth > width) {\n settingsWidth += overflowWidth;\n break;\n }\n settingsWidth = newSettingsWidth;\n }\n\n let j = i;\n for (; j > 0; j--) {\n if (settingsWidth <= width) break;\n const w = docked[j][1];\n settingsWidth -= w;\n }\n\n const overflowItems = new Array<string>();\n for (i = j; i < docked.length; i++) {\n overflowItems.push(docked[i][0]);\n }\n return overflowItems;\n}\n\nfunction isItemInOverflow(\n id: string,\n overflowItemIds: ReadonlyArray<string> | undefined\n) {\n if (!overflowItemIds || 0 === overflowItemIds.length) return false;\n return !!overflowItemIds.find((value) => value === id);\n}\n\n/** Properties for the [[StatusBarComposer]] React components\n * @public\n */\nexport interface StatusBarComposerProps extends CommonProps {\n /** Status Bar items */\n items: StatusBarItem[];\n\n /** CSS class name override for the overall Status Bar */\n mainClassName?: string;\n /** CSS class name override for the left section */\n leftClassName?: string;\n /** CSS class name override for the center section */\n centerClassName?: string;\n /** CSS class name override for the right section */\n rightClassName?: string;\n}\n\n/** Component to load components into the [[StatusBar]].\n * @public\n */\nexport function StatusBarComposer(props: StatusBarComposerProps) {\n const {\n className,\n style,\n items,\n mainClassName,\n leftClassName,\n centerClassName,\n rightClassName,\n } = props;\n const [defaultItemsManager, setDefaultItemsManager] = React.useState(\n () => new StatusBarItemsManager(items)\n );\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\n const containerWidth = React.useRef<number | undefined>(undefined);\n\n const isInitialMount = React.useRef(true);\n React.useEffect(() => {\n if (isInitialMount.current) isInitialMount.current = false;\n else {\n setDefaultItemsManager(new StatusBarItemsManager(items));\n }\n }, [items]);\n const defaultItems = useDefaultStatusBarItems(defaultItemsManager);\n const syncIdsOfInterest = React.useMemo(\n () => StatusBarItemsManager.getSyncIdsOfInterest(defaultItems),\n [defaultItems]\n );\n useStatusBarItemSyncEffect(defaultItemsManager, syncIdsOfInterest);\n\n const [addonItemsManager] = React.useState(() => new StatusBarItemsManager());\n const addonItems = useUiItemsProviderStatusBarItems(addonItemsManager);\n const addonSyncIdsOfInterest = React.useMemo(\n () => StatusBarItemsManager.getSyncIdsOfInterest(addonItems),\n [addonItems]\n );\n useStatusBarItemSyncEffect(addonItemsManager, addonSyncIdsOfInterest);\n\n const statusBarItems = React.useMemo(\n () => combineItems(defaultItems, addonItems),\n [defaultItems, addonItems]\n );\n const entryWidths = React.useRef(new Map<string, number | undefined>());\n const overflowWidth = React.useRef<number | undefined>(undefined);\n const [overflown, setOverflown] = React.useState<ReadonlyArray<string>>();\n\n const calculateOverflow = React.useCallback(() => {\n const widths = verifiedMapEntries(entryWidths.current);\n if (\n containerWidth.current === undefined ||\n widths === undefined ||\n overflowWidth.current === undefined\n ) {\n setOverflown(new Array<string>());\n return;\n }\n\n // Calculate overflow.\n const newOverflown = getItemToPlaceInOverflow(\n containerWidth.current,\n [...widths.entries()],\n overflowWidth.current\n );\n if (!eqlOverflown(overflown, newOverflown)) {\n setOverflown(newOverflown);\n // istanbul ignore next\n if (0 === newOverflown.length && isOverflowPanelOpen)\n setIsOverflowPanelOpen(false);\n }\n }, [isOverflowPanelOpen, overflown]);\n\n const handleOverflowResize = React.useCallback(\n (w: number) => {\n const calculate = overflowWidth.current !== w;\n overflowWidth.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleEntryResize = React.useCallback(\n (key: string) => (w: number) => {\n const oldW = entryWidths.current.get(key);\n if (undefined === oldW || Math.abs(oldW - w) > 2) {\n entryWidths.current.set(key, w);\n calculateOverflow();\n }\n },\n [calculateOverflow]\n );\n\n const getSectionName = (section: StatusBarSection) => {\n switch (section) {\n case StatusBarSection.Center:\n case StatusBarSection.Stage:\n return \"status-bar-center\";\n case StatusBarSection.Context:\n return \"status-bar-right-start\";\n case StatusBarSection.Right:\n case StatusBarSection.Selection:\n return \"status-bar-right-end\";\n case StatusBarSection.Left:\n case StatusBarSection.Message:\n return \"status-bar-left\";\n }\n };\n\n /** generate a wrapped status bar entry that will report its size. */\n const getComponent = React.useCallback(\n (\n item: StatusBarItem,\n key: string,\n itemPriority: number,\n section: StatusBarSection\n ): React.ReactNode => {\n const providerId = isProviderItem(item) ? item.providerId : undefined;\n return (\n <DockedStatusBarEntry\n key={key}\n entryKey={key}\n getOnResize={handleEntryResize}\n >\n <DockedStatusBarItem\n key={key}\n itemId={item.id}\n itemPriority={itemPriority}\n providerId={providerId}\n section={getSectionName(section)}\n >\n {isStatusBarCustomItem(item) && item.content}\n {isStatusBarActionItem(item) && (\n <StatusBarActionItemComponent {...item} />\n )}\n {isStatusBarLabelItem(item) && (\n <StatusBarLabelItemComponent {...item} />\n )}\n </DockedStatusBarItem>\n </DockedStatusBarEntry>\n );\n },\n [handleEntryResize]\n );\n\n const getSectionItems = React.useCallback(\n (section: StatusBarSection): React.ReactNode[] => {\n const sectionItems = statusBarItems\n .filter(\n (item) =>\n (item.section as number) === section &&\n !isItemInOverflow(item.id, overflown) &&\n !ConditionalBooleanValue.getValue(item.isHidden)\n )\n .sort((a, b) => a.itemPriority - b.itemPriority);\n\n return sectionItems.map((sectionItem) => (\n <React.Fragment key={sectionItem.id}>\n {getComponent(\n sectionItem,\n sectionItem.id,\n sectionItem.itemPriority,\n sectionItem.section\n )}\n </React.Fragment>\n ));\n },\n [statusBarItems, overflown, getComponent]\n );\n\n const getOverflowItems = React.useCallback((): React.ReactNode[] => {\n const itemsInOverflow = statusBarItems\n .filter(\n (item) =>\n isItemInOverflow(item.id, overflown) &&\n !ConditionalBooleanValue.getValue(item.isHidden)\n )\n .sort(\n (a, b) =>\n getCombinedSectionItemPriority(a) - getCombinedSectionItemPriority(b)\n )\n .reverse();\n\n return itemsInOverflow.map((item) => (\n <React.Fragment key={item.id}>\n {getComponent(item, item.id, item.itemPriority, item.section)}\n </React.Fragment>\n ));\n }, [statusBarItems, overflown, getComponent]);\n\n const handleContainerResize = React.useCallback(\n (w: number) => {\n if (\n undefined === containerWidth.current ||\n Math.abs(containerWidth.current - w) > 2\n ) {\n containerWidth.current = w;\n calculateOverflow();\n }\n },\n [calculateOverflow]\n );\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const targetRef = React.useRef<HTMLDivElement>(null);\n const resizeObserverRef = useResizeObserver(handleContainerResize);\n // allow both the containerRef and the resize observer function that takes a ref to be processed when the ref is set.\n const refs = useRefs(containerRef, resizeObserverRef);\n\n const onOverflowClick = React.useCallback(() => {\n setIsOverflowPanelOpen((prev) => !prev);\n }, []);\n // istanbul ignore next\n const handleOnClose = React.useCallback(() => {\n setIsOverflowPanelOpen(false);\n }, []);\n const leftItems = React.useMemo(\n () => getSectionItems(StatusBarSection.Left),\n [getSectionItems]\n );\n const centerItems = React.useMemo(\n () => getSectionItems(StatusBarSection.Center),\n [getSectionItems]\n );\n const rightItems = React.useMemo(\n () => getSectionItems(StatusBarSection.Right),\n [getSectionItems]\n );\n const contextItems = React.useMemo(\n () => getSectionItems(StatusBarSection.Context),\n [getSectionItems]\n );\n const overflowItems = React.useMemo(\n () => getOverflowItems(),\n [getOverflowItems]\n );\n\n const containerClassName = classnames(\"uifw-statusbar-docked\", className);\n\n return (\n <div\n className={containerClassName}\n ref={refs}\n style={style}\n role=\"presentation\"\n >\n <StatusBarSpaceBetween className={mainClassName}>\n <StatusBarLeftSection className={leftClassName}>\n {leftItems}\n </StatusBarLeftSection>\n <StatusBarCenterSection className={centerClassName}>\n {centerItems}\n {contextItems}\n </StatusBarCenterSection>\n <StatusBarRightSection className={rightClassName}>\n {rightItems}\n {(!overflown || overflown.length > 0) && (\n <>\n <StatusBarOverflow\n onClick={onOverflowClick}\n onResize={handleOverflowResize}\n ref={targetRef}\n />\n {overflowItems.length > 0 &&\n isOverflowPanelOpen &&\n targetRef.current && (\n <StatusBarOverflowPanel\n onClose={handleOnClose}\n open={true}\n target={targetRef.current}\n >\n <div\n className=\"uifw-statusbar-overflow-items-container\"\n data-testid=\"uifw-statusbar-overflow-items-container\"\n >\n {overflowItems.map((overflowEntry) => overflowEntry)}\n </div>\n </StatusBarOverflowPanel>\n )}\n </>\n )}\n </StatusBarRightSection>\n </StatusBarSpaceBetween>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"StatusBarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBarComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module StatusBar\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { useRefs, useResizeObserver } from \"@itwin/core-react\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { eqlOverflown } from \"../layout/tool-settings/Docked\";\nimport { StatusBarLabelIndicator } from \"../statusbar/LabelIndicator\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\nimport type { UiSyncEventArgs } from \"../syncui/UiSyncEvent\";\nimport { isProviderItem } from \"../ui-items-provider/isProviderItem\";\nimport { StatusBarOverflow } from \"./Overflow\";\nimport { StatusBarOverflowPanel } from \"./OverflowPanel\";\nimport {\n StatusBarCenterSection,\n StatusBarLeftSection,\n StatusBarRightSection,\n StatusBarSpaceBetween,\n} from \"./StatusBar\";\nimport type {\n StatusBarActionItem,\n StatusBarItem,\n StatusBarLabelItem,\n} from \"./StatusBarItem\";\nimport {\n isStatusBarActionItem,\n isStatusBarCustomItem,\n isStatusBarLabelItem,\n StatusBarSection,\n} from \"./StatusBarItem\";\nimport { StatusBarItemsManager } from \"./StatusBarItemsManager\";\nimport { useDefaultStatusBarItems } from \"./useDefaultStatusBarItems\";\nimport { useUiItemsProviderStatusBarItems } from \"./useUiItemsProviderStatusBarItems\";\n\n/** Private function to generate a value that will allow the proper order to be maintained when items are placed in overflow panel */\nfunction getCombinedSectionItemPriority(item: StatusBarItem) {\n let sectionValue = 0;\n if (item.section === StatusBarSection.Center) sectionValue = 100000;\n else if (item.section === StatusBarSection.Context) sectionValue = 200000;\n else if (item.section === StatusBarSection.Right) sectionValue = 300000;\n return sectionValue + item.itemPriority;\n}\n\ninterface DockedStatusBarEntryContextArg {\n readonly isOverflown: boolean;\n readonly onResize: (w: number) => void;\n}\n\nconst DockedStatusBarEntryContext =\n React.createContext<DockedStatusBarEntryContextArg>(null!);\nDockedStatusBarEntryContext.displayName = \"nz:DockedStatusBarEntryContext\";\n\n/** @internal */\nexport function useStatusBarEntry() {\n return React.useContext(DockedStatusBarEntryContext);\n}\n\n/** Properties of [[DockedStatusBarItem]] component.\n * @internal future\n */\nexport interface StatusBarItemProps extends CommonProps {\n /** Tool setting content. */\n children?: React.ReactNode;\n itemPriority?: number;\n providerId?: string;\n section?: string;\n}\n\n/** Used in [[StatusBarComposer]] component to display a statusbar item.\n * @internal future\n */\nexport function DockedStatusBarItem(props: StatusBarItemProps) {\n const { onResize } = useStatusBarEntry();\n const ref = useResizeObserver<HTMLDivElement>(onResize);\n const className = classnames(\n \"uifw-statusbar-item-container\",\n props.className\n );\n return (\n <div\n data-item-id={props.itemId}\n data-item-type=\"status-bar-item\"\n data-item-location={props.section}\n data-item-priority={props.itemPriority}\n data-item-provider-id={props.providerId}\n className={className}\n ref={ref}\n style={props.style}\n >\n {props.children}\n </div>\n );\n}\n\ninterface DockedStatusBarEntryProps {\n children?: React.ReactNode;\n entryKey: string;\n getOnResize: (key: string) => (w: number) => void;\n}\n\n/** Wrapper for status bar entries so their size can be used to determine if the status bar container can display them or if they will need to be placed in an overflow panel. */\nfunction DockedStatusBarEntry({\n children,\n entryKey,\n getOnResize,\n}: DockedStatusBarEntryProps) {\n const onResize = React.useMemo(\n () => getOnResize(entryKey),\n [getOnResize, entryKey]\n );\n const entry = React.useMemo<DockedStatusBarEntryContextArg>(\n () => ({\n isOverflown: false,\n onResize,\n }),\n [onResize]\n );\n return (\n <DockedStatusBarEntryContext.Provider value={entry}>\n {children}\n </DockedStatusBarEntryContext.Provider>\n );\n}\n\n/** Private function to set up sync event monitoring of statusbar items */\nfunction useStatusBarItemSyncEffect(\n itemsManager: StatusBarItemsManager,\n syncIdsOfInterest: string[]\n) {\n React.useEffect(() => {\n const handleSyncUiEvent = (args: UiSyncEventArgs) => {\n if (0 === syncIdsOfInterest.length) return;\n\n // istanbul ignore else\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n // process each item that has interest\n itemsManager.refreshAffectedItems(args.eventIds);\n }\n };\n\n // Note: that items with conditions have condition run when loaded into the items manager\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\n return () => {\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\n };\n }, [itemsManager, itemsManager.items, syncIdsOfInterest]);\n}\n\nfunction StatusBarLabelItemComponent(props: StatusBarLabelItem) {\n const label = ConditionalStringValue.getValue(props.label);\n return <StatusBarLabelIndicator iconSpec={props.icon} label={label} />;\n}\n\nfunction StatusBarActionItemComponent(props: StatusBarActionItem) {\n const title = ConditionalStringValue.getValue(props.tooltip);\n return (\n <StatusBarLabelIndicator\n title={title}\n onClick={props.execute}\n iconSpec={props.icon}\n />\n );\n}\n\n/** local function to combine items from Stage and from Extensions */\nfunction combineItems(\n stageItems: ReadonlyArray<StatusBarItem>,\n addonItems: ReadonlyArray<StatusBarItem>\n) {\n const items: StatusBarItem[] = [];\n if (stageItems.length) {\n // Walk through each and ensure no duplicate ids are added.\n stageItems.forEach((srcItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n items.push(srcItem);\n }\n });\n }\n if (addonItems.length) {\n // Walk through each and ensure no duplicate ids are added.\n addonItems.forEach((srcItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n items.push(srcItem);\n }\n });\n }\n return items;\n}\n\n/** local function to ensure a width value is defined for a status bar entries. */\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\n for (const [, val] of map) {\n // istanbul ignore next\n if (val === undefined) return undefined;\n }\n return map as Map<string, T>;\n}\n\n/** Returns a subset of docked entry keys that exceed given width and should be placed in overflow panel. */\nfunction getItemToPlaceInOverflow(\n width: number,\n docked: ReadonlyArray<readonly [string, number]>,\n overflowWidth: number\n) {\n let settingsWidth = 0;\n\n let i = 0;\n for (; i < docked.length; i++) {\n const w = docked[i][1];\n const newSettingsWidth = settingsWidth + w;\n if (newSettingsWidth > width) {\n settingsWidth += overflowWidth;\n break;\n }\n settingsWidth = newSettingsWidth;\n }\n\n let j = i;\n for (; j > 0; j--) {\n if (settingsWidth <= width) break;\n const w = docked[j][1];\n settingsWidth -= w;\n }\n\n const overflowItems = new Array<string>();\n for (i = j; i < docked.length; i++) {\n overflowItems.push(docked[i][0]);\n }\n return overflowItems;\n}\n\nfunction isItemInOverflow(\n id: string,\n overflowItemIds: ReadonlyArray<string> | undefined\n) {\n if (!overflowItemIds || 0 === overflowItemIds.length) return false;\n return !!overflowItemIds.find((value) => value === id);\n}\n\n/** Properties for the [[StatusBarComposer]] React components\n * @public\n */\nexport interface StatusBarComposerProps extends CommonProps {\n /** Status Bar items */\n items: StatusBarItem[];\n\n /** CSS class name override for the overall Status Bar */\n mainClassName?: string;\n /** CSS class name override for the left section */\n leftClassName?: string;\n /** CSS class name override for the center section */\n centerClassName?: string;\n /** CSS class name override for the right section */\n rightClassName?: string;\n}\n\n/** Component to load components into the [[StatusBar]].\n * @public\n */\nexport function StatusBarComposer(props: StatusBarComposerProps) {\n const {\n className,\n style,\n items,\n mainClassName,\n leftClassName,\n centerClassName,\n rightClassName,\n } = props;\n const [defaultItemsManager, setDefaultItemsManager] = React.useState(\n () => new StatusBarItemsManager(items)\n );\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\n const containerWidth = React.useRef<number | undefined>(undefined);\n\n const isInitialMount = React.useRef(true);\n React.useEffect(() => {\n if (isInitialMount.current) isInitialMount.current = false;\n else {\n setDefaultItemsManager(new StatusBarItemsManager(items));\n }\n }, [items]);\n const defaultItems = useDefaultStatusBarItems(defaultItemsManager);\n const syncIdsOfInterest = React.useMemo(\n () => StatusBarItemsManager.getSyncIdsOfInterest(defaultItems),\n [defaultItems]\n );\n useStatusBarItemSyncEffect(defaultItemsManager, syncIdsOfInterest);\n\n const [addonItemsManager] = React.useState(() => new StatusBarItemsManager());\n const addonItems = useUiItemsProviderStatusBarItems(addonItemsManager);\n const addonSyncIdsOfInterest = React.useMemo(\n () => StatusBarItemsManager.getSyncIdsOfInterest(addonItems),\n [addonItems]\n );\n useStatusBarItemSyncEffect(addonItemsManager, addonSyncIdsOfInterest);\n\n const statusBarItems = React.useMemo(\n () => combineItems(defaultItems, addonItems),\n [defaultItems, addonItems]\n );\n const entryWidths = React.useRef(new Map<string, number | undefined>());\n const overflowWidth = React.useRef<number | undefined>(undefined);\n const [overflown, setOverflown] = React.useState<ReadonlyArray<string>>();\n\n const calculateOverflow = React.useCallback(() => {\n const widths = verifiedMapEntries(entryWidths.current);\n if (\n containerWidth.current === undefined ||\n widths === undefined ||\n overflowWidth.current === undefined\n ) {\n setOverflown(new Array<string>());\n return;\n }\n\n // Calculate overflow.\n const newOverflown = getItemToPlaceInOverflow(\n containerWidth.current,\n [...widths.entries()],\n overflowWidth.current\n );\n if (!eqlOverflown(overflown, newOverflown)) {\n setOverflown(newOverflown);\n // istanbul ignore next\n if (0 === newOverflown.length && isOverflowPanelOpen)\n setIsOverflowPanelOpen(false);\n }\n }, [isOverflowPanelOpen, overflown]);\n\n const handleOverflowResize = React.useCallback(\n (w: number) => {\n const calculate = overflowWidth.current !== w;\n overflowWidth.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleEntryResize = React.useCallback(\n (key: string) => (w: number) => {\n const oldW = entryWidths.current.get(key);\n if (undefined === oldW || Math.abs(oldW - w) > 2) {\n entryWidths.current.set(key, w);\n calculateOverflow();\n }\n },\n [calculateOverflow]\n );\n\n const getSectionName = (section: StatusBarSection) => {\n switch (section) {\n case StatusBarSection.Center:\n case StatusBarSection.Stage:\n return \"status-bar-center\";\n case StatusBarSection.Context:\n return \"status-bar-right-start\";\n case StatusBarSection.Right:\n case StatusBarSection.Selection:\n return \"status-bar-right-end\";\n case StatusBarSection.Left:\n case StatusBarSection.Message:\n return \"status-bar-left\";\n }\n };\n\n /** generate a wrapped status bar entry that will report its size. */\n const getComponent = React.useCallback(\n (\n item: StatusBarItem,\n key: string,\n itemPriority: number,\n section: StatusBarSection\n ): React.ReactNode => {\n const providerId = isProviderItem(item) ? item.providerId : undefined;\n return (\n <DockedStatusBarEntry\n key={key}\n entryKey={key}\n getOnResize={handleEntryResize}\n >\n <DockedStatusBarItem\n key={key}\n itemId={item.id}\n itemPriority={itemPriority}\n providerId={providerId}\n section={getSectionName(section)}\n >\n {isStatusBarCustomItem(item) && item.content}\n {isStatusBarActionItem(item) && (\n <StatusBarActionItemComponent {...item} />\n )}\n {isStatusBarLabelItem(item) && (\n <StatusBarLabelItemComponent {...item} />\n )}\n </DockedStatusBarItem>\n </DockedStatusBarEntry>\n );\n },\n [handleEntryResize]\n );\n\n const getSectionItems = React.useCallback(\n (section: StatusBarSection): React.ReactNode[] => {\n const sectionItems = statusBarItems\n .filter(\n (item) =>\n item.section.valueOf() === section.valueOf() &&\n !isItemInOverflow(item.id, overflown) &&\n !ConditionalBooleanValue.getValue(item.isHidden)\n )\n .sort((a, b) => a.itemPriority - b.itemPriority);\n\n return sectionItems.map((sectionItem) => (\n <React.Fragment key={sectionItem.id}>\n {getComponent(\n sectionItem,\n sectionItem.id,\n sectionItem.itemPriority,\n sectionItem.section\n )}\n </React.Fragment>\n ));\n },\n [statusBarItems, overflown, getComponent]\n );\n\n const getOverflowItems = React.useCallback((): React.ReactNode[] => {\n const itemsInOverflow = statusBarItems\n .filter(\n (item) =>\n isItemInOverflow(item.id, overflown) &&\n !ConditionalBooleanValue.getValue(item.isHidden)\n )\n .sort(\n (a, b) =>\n getCombinedSectionItemPriority(a) - getCombinedSectionItemPriority(b)\n )\n .reverse();\n\n return itemsInOverflow.map((item) => (\n <React.Fragment key={item.id}>\n {getComponent(item, item.id, item.itemPriority, item.section)}\n </React.Fragment>\n ));\n }, [statusBarItems, overflown, getComponent]);\n\n const handleContainerResize = React.useCallback(\n (w: number) => {\n if (\n undefined === containerWidth.current ||\n Math.abs(containerWidth.current - w) > 2\n ) {\n containerWidth.current = w;\n calculateOverflow();\n }\n },\n [calculateOverflow]\n );\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const targetRef = React.useRef<HTMLDivElement>(null);\n const resizeObserverRef = useResizeObserver(handleContainerResize);\n // allow both the containerRef and the resize observer function that takes a ref to be processed when the ref is set.\n const refs = useRefs(containerRef, resizeObserverRef);\n\n const onOverflowClick = React.useCallback(() => {\n setIsOverflowPanelOpen((prev) => !prev);\n }, []);\n // istanbul ignore next\n const handleOnClose = React.useCallback(() => {\n setIsOverflowPanelOpen(false);\n }, []);\n const leftItems = React.useMemo(\n () => getSectionItems(StatusBarSection.Left),\n [getSectionItems]\n );\n const centerItems = React.useMemo(\n () => getSectionItems(StatusBarSection.Center),\n [getSectionItems]\n );\n const rightItems = React.useMemo(\n () => getSectionItems(StatusBarSection.Right),\n [getSectionItems]\n );\n const contextItems = React.useMemo(\n () => getSectionItems(StatusBarSection.Context),\n [getSectionItems]\n );\n const overflowItems = React.useMemo(\n () => getOverflowItems(),\n [getOverflowItems]\n );\n\n const containerClassName = classnames(\"uifw-statusbar-docked\", className);\n\n return (\n <div\n className={containerClassName}\n ref={refs}\n style={style}\n role=\"presentation\"\n >\n <StatusBarSpaceBetween className={mainClassName}>\n <StatusBarLeftSection className={leftClassName}>\n {leftItems}\n </StatusBarLeftSection>\n <StatusBarCenterSection className={centerClassName}>\n {centerItems}\n {contextItems}\n </StatusBarCenterSection>\n <StatusBarRightSection className={rightClassName}>\n {rightItems}\n {(!overflown || overflown.length > 0) && (\n <>\n <StatusBarOverflow\n onClick={onOverflowClick}\n onResize={handleOverflowResize}\n ref={targetRef}\n />\n {overflowItems.length > 0 &&\n isOverflowPanelOpen &&\n targetRef.current && (\n <StatusBarOverflowPanel\n onClose={handleOnClose}\n open={true}\n target={targetRef.current}\n >\n <div\n className=\"uifw-statusbar-overflow-items-container\"\n data-testid=\"uifw-statusbar-overflow-items-container\"\n >\n {overflowItems.map((overflowEntry) => overflowEntry)}\n </div>\n </StatusBarOverflowPanel>\n )}\n </>\n )}\n </StatusBarRightSection>\n </StatusBarSpaceBetween>\n </div>\n );\n}\n"]}
|