@itwin/appui-react 4.9.0 → 4.10.0-dev.1
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/lib/cjs/appui-react/UiFramework.js +4 -7
- package/lib/cjs/appui-react/UiFramework.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts +4 -2
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +17 -29
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.scss +10 -17
- package/lib/cjs/appui-react/accudraw/AccuDrawInputField.scss +2 -0
- package/lib/cjs/appui-react/accudraw/SquareButton.d.ts +3 -1
- package/lib/cjs/appui-react/accudraw/SquareButton.d.ts.map +1 -1
- package/lib/cjs/appui-react/accudraw/SquareButton.js +1 -4
- package/lib/cjs/appui-react/accudraw/SquareButton.js.map +1 -1
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +1 -2
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +2 -2
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +19 -15
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/{configurableui.scss → ConfigurableUiContent.scss} +14 -0
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/TimeTracker.js +1 -2
- package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.js +9 -12
- package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/content/DefaultViewOverlay.js +3 -4
- package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -2
- package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/cjs/appui-react/content/IModelViewport.js +4 -7
- package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +1 -2
- package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentViewManager.js +2 -2
- package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js +10 -12
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +2 -3
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/cjs/appui-react/dialog/ContentDialog.js +3 -6
- package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -3
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
- package/lib/cjs/appui-react/feedback/ElementTooltip.js +2 -3
- package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +10 -14
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.d.ts +2 -4
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.js +2 -3
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.scss +1 -1
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +2 -3
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
- package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
- package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +8 -13
- package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/layout/base/DragManager.js +1 -2
- package/lib/cjs/appui-react/layout/base/DragManager.js.map +1 -1
- package/lib/cjs/appui-react/layout/base/NineZone.js +1 -1
- package/lib/cjs/appui-react/layout/base/NineZone.js.map +1 -1
- package/lib/cjs/appui-react/layout/outline/TabOutline.js +1 -1
- package/lib/cjs/appui-react/layout/outline/TabOutline.js.map +1 -1
- package/lib/cjs/appui-react/layout/outline/WidgetOutline.js +1 -1
- package/lib/cjs/appui-react/layout/outline/WidgetOutline.js.map +1 -1
- package/lib/cjs/appui-react/layout/state/NineZoneStateReducer.js +12 -14
- package/lib/cjs/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/NineZoneStateHelpers.js +1 -2
- package/lib/cjs/appui-react/layout/state/internal/NineZoneStateHelpers.js.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js +2 -3
- package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
- package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js +4 -4
- package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
- package/lib/cjs/appui-react/layout/target/TitleBarTarget.js +1 -1
- package/lib/cjs/appui-react/layout/target/TitleBarTarget.js.map +1 -1
- package/lib/cjs/appui-react/layout/tool-settings/Docked.scss +1 -1
- package/lib/cjs/appui-react/layout/widget/Button.d.ts +2 -9
- package/lib/cjs/appui-react/layout/widget/Button.d.ts.map +1 -1
- package/lib/cjs/appui-react/layout/widget/Button.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/ContentRenderer.js +2 -2
- package/lib/cjs/appui-react/layout/widget/ContentRenderer.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/FloatingTab.js +5 -6
- package/lib/cjs/appui-react/layout/widget/FloatingTab.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/FloatingWidget.js +2 -4
- package/lib/cjs/appui-react/layout/widget/FloatingWidget.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/PanelWidget.js +1 -1
- package/lib/cjs/appui-react/layout/widget/PanelWidget.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/PreviewHorizontalPanelAlign.js +1 -1
- package/lib/cjs/appui-react/layout/widget/PreviewHorizontalPanelAlign.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/Tab.js +4 -4
- package/lib/cjs/appui-react/layout/widget/Tab.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/Widget.js +2 -2
- package/lib/cjs/appui-react/layout/widget/Widget.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget/useIsToolSettingsTab.js +1 -1
- package/lib/cjs/appui-react/layout/widget/useIsToolSettingsTab.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js +5 -8
- package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
- package/lib/cjs/appui-react/layout/widget-panels/useAnimatePanel.js +1 -2
- package/lib/cjs/appui-react/layout/widget-panels/useAnimatePanel.js.map +1 -1
- package/lib/cjs/appui-react/messages/InputField.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/InputField.js +2 -3
- package/lib/cjs/appui-react/messages/InputField.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageLabel.js +2 -2
- package/lib/cjs/appui-react/messages/MessageLabel.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.d.ts +15 -5
- package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.js +23 -41
- package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageRenderer.d.ts +8 -0
- package/lib/cjs/appui-react/messages/MessageRenderer.d.ts.map +1 -0
- package/lib/cjs/appui-react/messages/MessageRenderer.js +136 -0
- package/lib/cjs/appui-react/messages/MessageRenderer.js.map +1 -0
- package/lib/cjs/appui-react/messages/Pointer.d.ts +2 -2
- package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/Pointer.js +5 -6
- package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
- package/lib/cjs/appui-react/messages/getToastCategory.d.ts +1 -1
- package/lib/cjs/appui-react/pickers/ViewSelector.js +5 -6
- package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/cjs/appui-react/popup/CardPopup.d.ts.map +1 -1
- package/lib/cjs/appui-react/popup/CardPopup.js +1 -2
- package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/cjs/appui-react/popup/HTMLElementPopup.d.ts.map +1 -1
- package/lib/cjs/appui-react/popup/HTMLElementPopup.js +1 -2
- package/lib/cjs/appui-react/popup/HTMLElementPopup.js.map +1 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +1 -2
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/cjs/appui-react/popup/PopupManager.js +1 -2
- package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.js +1 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -1
- 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/selection/SelectionContextItemDef.js +2 -2
- package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.scss +1 -4
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +11 -16
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/Indicator.js +1 -2
- package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBar.js +3 -5
- package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.js +5 -4
- package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/SelectionScope.scss +1 -3
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +3 -2
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +3 -12
- package/lib/cjs/appui-react/theme/ThemeManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js +3 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.js +6 -4
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js +3 -4
- package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +18 -25
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
- package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +20 -22
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +8 -14
- package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
- package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +1 -1
- package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.d.ts +1 -0
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +19 -16
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Content.js +8 -9
- package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +10 -14
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
- package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
- package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js +15 -23
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +1 -1
- package/lib/cjs/appui-react/widget-panels/Toolbars.js +2 -3
- package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
- package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -2
- package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +4 -5
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetHost.js +2 -3
- package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/cjs/appui-react/widgets/useWidget.js +1 -1
- package/lib/cjs/appui-react/widgets/useWidget.js.map +1 -1
- package/lib/esm/appui-react/UiFramework.js +4 -7
- package/lib/esm/appui-react/UiFramework.js.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +4 -2
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +17 -29
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.scss +10 -17
- package/lib/esm/appui-react/accudraw/AccuDrawInputField.scss +2 -0
- package/lib/esm/appui-react/accudraw/SquareButton.d.ts +3 -1
- package/lib/esm/appui-react/accudraw/SquareButton.d.ts.map +1 -1
- package/lib/esm/appui-react/accudraw/SquareButton.js +1 -4
- package/lib/esm/appui-react/accudraw/SquareButton.js.map +1 -1
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js +1 -2
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +2 -2
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -1
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +19 -15
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
- package/lib/esm/appui-react/configurableui/{configurableui.scss → ConfigurableUiContent.scss} +14 -0
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/TimeTracker.js +1 -2
- package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.js +9 -12
- package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/esm/appui-react/content/DefaultViewOverlay.js +3 -4
- package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -2
- package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/esm/appui-react/content/IModelViewport.js +4 -7
- package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentLayoutManager.js +1 -2
- package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentViewManager.js +2 -2
- package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/esm/appui-react/content/split-pane/SplitPane.js +10 -12
- package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +2 -3
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/esm/appui-react/dialog/ContentDialog.js +3 -6
- package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/esm/appui-react/dialog/DialogManagerBase.js +2 -3
- package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
- package/lib/esm/appui-react/feedback/ElementTooltip.js +3 -4
- package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +10 -14
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalFrontstage.d.ts +2 -4
- package/lib/esm/appui-react/frontstage/ModalFrontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalFrontstage.js +2 -3
- package/lib/esm/appui-react/frontstage/ModalFrontstage.js.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalFrontstage.scss +1 -1
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -3
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
- package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
- package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useSolarDataProvider.js +8 -13
- package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
- package/lib/esm/appui-react/layout/base/DragManager.js +1 -2
- package/lib/esm/appui-react/layout/base/DragManager.js.map +1 -1
- package/lib/esm/appui-react/layout/base/NineZone.js +1 -1
- package/lib/esm/appui-react/layout/base/NineZone.js.map +1 -1
- package/lib/esm/appui-react/layout/outline/TabOutline.js +1 -1
- package/lib/esm/appui-react/layout/outline/TabOutline.js.map +1 -1
- package/lib/esm/appui-react/layout/outline/WidgetOutline.js +1 -1
- package/lib/esm/appui-react/layout/outline/WidgetOutline.js.map +1 -1
- package/lib/esm/appui-react/layout/state/NineZoneStateReducer.js +12 -14
- package/lib/esm/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/NineZoneStateHelpers.js +1 -2
- package/lib/esm/appui-react/layout/state/internal/NineZoneStateHelpers.js.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js +2 -3
- package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
- package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js +4 -4
- package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
- package/lib/esm/appui-react/layout/target/TitleBarTarget.js +1 -1
- package/lib/esm/appui-react/layout/target/TitleBarTarget.js.map +1 -1
- package/lib/esm/appui-react/layout/tool-settings/Docked.scss +1 -1
- package/lib/esm/appui-react/layout/widget/Button.d.ts +2 -9
- package/lib/esm/appui-react/layout/widget/Button.d.ts.map +1 -1
- package/lib/esm/appui-react/layout/widget/Button.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/ContentRenderer.js +2 -2
- package/lib/esm/appui-react/layout/widget/ContentRenderer.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/FloatingTab.js +5 -6
- package/lib/esm/appui-react/layout/widget/FloatingTab.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/FloatingWidget.js +2 -4
- package/lib/esm/appui-react/layout/widget/FloatingWidget.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/PanelWidget.js +1 -1
- package/lib/esm/appui-react/layout/widget/PanelWidget.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/PreviewHorizontalPanelAlign.js +1 -1
- package/lib/esm/appui-react/layout/widget/PreviewHorizontalPanelAlign.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/Tab.js +4 -4
- package/lib/esm/appui-react/layout/widget/Tab.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/Widget.js +2 -2
- package/lib/esm/appui-react/layout/widget/Widget.js.map +1 -1
- package/lib/esm/appui-react/layout/widget/useIsToolSettingsTab.js +1 -1
- package/lib/esm/appui-react/layout/widget/useIsToolSettingsTab.js.map +1 -1
- package/lib/esm/appui-react/layout/widget-panels/PanelSections.js +5 -8
- package/lib/esm/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
- package/lib/esm/appui-react/layout/widget-panels/useAnimatePanel.js +1 -2
- package/lib/esm/appui-react/layout/widget-panels/useAnimatePanel.js.map +1 -1
- package/lib/esm/appui-react/messages/InputField.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/InputField.js +3 -4
- package/lib/esm/appui-react/messages/InputField.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageLabel.js +2 -2
- package/lib/esm/appui-react/messages/MessageLabel.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.d.ts +15 -5
- package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.js +23 -41
- package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageRenderer.d.ts +8 -0
- package/lib/esm/appui-react/messages/MessageRenderer.d.ts.map +1 -0
- package/lib/esm/appui-react/messages/MessageRenderer.js +132 -0
- package/lib/esm/appui-react/messages/MessageRenderer.js.map +1 -0
- package/lib/esm/appui-react/messages/Pointer.d.ts +2 -2
- package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/Pointer.js +6 -7
- package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
- package/lib/esm/appui-react/messages/getToastCategory.d.ts +1 -1
- package/lib/esm/appui-react/pickers/ViewSelector.js +5 -6
- package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/esm/appui-react/popup/CardPopup.d.ts.map +1 -1
- package/lib/esm/appui-react/popup/CardPopup.js +2 -3
- package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/esm/appui-react/popup/HTMLElementPopup.d.ts.map +1 -1
- package/lib/esm/appui-react/popup/HTMLElementPopup.js +2 -3
- package/lib/esm/appui-react/popup/HTMLElementPopup.js.map +1 -1
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js +1 -2
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/esm/appui-react/popup/PopupManager.js +1 -2
- package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.js +1 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -1
- 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/selection/SelectionContextItemDef.js +2 -2
- package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.scss +1 -4
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js +11 -16
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/esm/appui-react/statusbar/Indicator.js +1 -2
- package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBar.js +3 -5
- package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.d.ts +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.js +6 -5
- package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/esm/appui-react/statusfields/SelectionScope.scss +1 -3
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +3 -2
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +3 -12
- package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
- package/lib/esm/appui-react/theme/ThemeManager.js +3 -1
- package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/esm/appui-react/toolbar/ToolbarHelper.js +6 -4
- package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
- package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js +3 -4
- package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
- package/lib/esm/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js +15 -22
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
- package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +20 -22
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +8 -14
- package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
- package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +1 -1
- package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.d.ts +1 -0
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.d.ts.map +1 -1
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +19 -16
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Content.js +8 -9
- package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +10 -14
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
- package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
- package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.js +15 -23
- package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.scss +1 -1
- package/lib/esm/appui-react/widget-panels/Toolbars.js +2 -3
- package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
- package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -2
- package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +4 -5
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetHost.js +2 -3
- package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/esm/appui-react/widgets/useWidget.js +1 -1
- package/lib/esm/appui-react/widgets/useWidget.js.map +1 -1
- package/package.json +12 -14
- package/lib/cjs/appui-react/messages/ActivityMessage.d.ts +0 -10
- package/lib/cjs/appui-react/messages/ActivityMessage.d.ts.map +0 -1
- package/lib/cjs/appui-react/messages/ActivityMessage.js +0 -92
- package/lib/cjs/appui-react/messages/ActivityMessage.js.map +0 -1
- package/lib/cjs/appui-react/messages/MessageSpan.d.ts +0 -15
- package/lib/cjs/appui-react/messages/MessageSpan.d.ts.map +0 -1
- package/lib/cjs/appui-react/messages/MessageSpan.js +0 -23
- package/lib/cjs/appui-react/messages/MessageSpan.js.map +0 -1
- package/lib/esm/appui-react/messages/ActivityMessage.d.ts +0 -10
- package/lib/esm/appui-react/messages/ActivityMessage.d.ts.map +0 -1
- package/lib/esm/appui-react/messages/ActivityMessage.js +0 -88
- package/lib/esm/appui-react/messages/ActivityMessage.js.map +0 -1
- package/lib/esm/appui-react/messages/MessageSpan.d.ts +0 -15
- package/lib/esm/appui-react/messages/MessageSpan.d.ts.map +0 -1
- package/lib/esm/appui-react/messages/MessageSpan.js +0 -18
- package/lib/esm/appui-react/messages/MessageSpan.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviewHorizontalPanelAlign.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/PreviewHorizontalPanelAlign.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { 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 \"../widget-panels/Panel\";\nimport type {\n HorizontalPanelSide,\n PanelSide,\n} from \"../widget-panels/PanelTypes\";\nimport { useIsMainPanelWidget } from \"./Buttons\";\nimport { WidgetActionDropdownContext } from \"../../preview/widget-action-dropdown/MoreButton\";\nimport { TabBarButton } from \"./Button\";\n\n/** Default value used when not provided or disabled. */\nconst defaultAlignments = {\n top: HorizontalAlignment.Justify,\n bottom: HorizontalAlignment.Justify,\n};\n\nconst 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/** Horizontal panel alignment preview feature state.\n * @internal\n */\nexport function usePreviewHorizontalPanelAlign() {\n return React.useContext(HorizontalPanelAlignContext);\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 } = usePreviewHorizontalPanelAlign();\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 } = usePreviewHorizontalPanelAlign();\n const isMainPanelWidget = useIsMainPanelWidget();\n\n return !!(\n enabled &&\n side &&\n isHorizontalPanelSide(side) &&\n isMainPanelWidget\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PreviewHorizontalPanelAlign.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/PreviewHorizontalPanelAlign.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { 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 \"../widget-panels/Panel\";\nimport type {\n HorizontalPanelSide,\n PanelSide,\n} from \"../widget-panels/PanelTypes\";\nimport { useIsMainPanelWidget } from \"./Buttons\";\nimport { WidgetActionDropdownContext } from \"../../preview/widget-action-dropdown/MoreButton\";\nimport { TabBarButton } from \"./Button\";\n\n/** Default value used when not provided or disabled. */\nconst defaultAlignments = {\n top: HorizontalAlignment.Justify,\n bottom: HorizontalAlignment.Justify,\n};\n\nconst 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/** Horizontal panel alignment preview feature state.\n * @internal\n */\nexport function usePreviewHorizontalPanelAlign() {\n return React.useContext(HorizontalPanelAlignContext);\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 } = usePreviewHorizontalPanelAlign();\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 } = usePreviewHorizontalPanelAlign();\n const isMainPanelWidget = useIsMainPanelWidget();\n\n return !!(\n enabled &&\n side &&\n isHorizontalPanelSide(side) &&\n isMainPanelWidget\n );\n}\n"]}
|
|
@@ -67,7 +67,7 @@ function WidgetTabComponent(props) {
|
|
|
67
67
|
const maximized = !!floatingWidgetId &&
|
|
68
68
|
maximizedWidget === floatingWidgetId &&
|
|
69
69
|
enableMaximizedFloatingWidget;
|
|
70
|
-
const resizeObserverRef = useResizeObserver(widgetTabsEntryContext
|
|
70
|
+
const resizeObserverRef = useResizeObserver(widgetTabsEntryContext?.onResize);
|
|
71
71
|
const pointerCaptorRef = useTabInteractions({ clickOnly: maximized });
|
|
72
72
|
const refs = useRefs(resizeObserverRef, pointerCaptorRef);
|
|
73
73
|
const active = activeTabId === id;
|
|
@@ -109,7 +109,7 @@ export function useTabInteractions({ onClick, onDoubleClick, onDragStart, clickO
|
|
|
109
109
|
widgetId,
|
|
110
110
|
id,
|
|
111
111
|
});
|
|
112
|
-
onClick
|
|
112
|
+
onClick?.();
|
|
113
113
|
}, [dispatch, widgetId, id, side, onClick]);
|
|
114
114
|
const handleDoubleClick = React.useCallback(() => {
|
|
115
115
|
// istanbul ignore next (preview)
|
|
@@ -122,7 +122,7 @@ export function useTabInteractions({ onClick, onDoubleClick, onDragStart, clickO
|
|
|
122
122
|
floatingWidgetId,
|
|
123
123
|
id,
|
|
124
124
|
});
|
|
125
|
-
onDoubleClick
|
|
125
|
+
onDoubleClick?.();
|
|
126
126
|
}, [
|
|
127
127
|
clickOnly,
|
|
128
128
|
dispatch,
|
|
@@ -172,7 +172,7 @@ export function useTabInteractions({ onClick, onDoubleClick, onDragStart, clickO
|
|
|
172
172
|
position,
|
|
173
173
|
userSized,
|
|
174
174
|
});
|
|
175
|
-
onDragStart
|
|
175
|
+
onDragStart?.();
|
|
176
176
|
initialPointerPosition.current = undefined;
|
|
177
177
|
}, [
|
|
178
178
|
clickOnly,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Tab.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport \"./Tab.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n Icon,\n Point,\n Rectangle,\n Timer,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react\";\nimport { useDragTab } from \"../base/DragManager\";\nimport {\n MeasureContext,\n NineZoneDispatchContext,\n ShowWidgetIconContext,\n TabNodeContext,\n} from \"../base/NineZone\";\nimport type { TabState } from \"../state/TabState\";\nimport type {\n PointerCaptorArgs,\n PointerCaptorEvent,\n} from \"../base/usePointerCaptor\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor\";\nimport { PanelSideContext } from \"../widget-panels/Panel\";\nimport { WidgetTabsEntryContext } from \"./Tabs\";\nimport {\n restrainInitialWidgetSize,\n WidgetContext,\n WidgetIdContext,\n} from \"./Widget\";\nimport { TabIdContext } from \"./ContentRenderer\";\nimport { TabTarget } from \"../target/TabTarget\";\nimport { WidgetMenuTab } from \"./MenuTab\";\nimport { WidgetOverflowContext } from \"./Overflow\";\nimport { useLayout, useLayoutStore } from \"../base/LayoutStore\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport { Key } from \"ts-key-enum\";\nimport { usePreviewMaximizedWidget } from \"./PreviewMaximizeToggle\";\n\n/** @internal */\nexport interface WidgetTabProviderProps extends TabPositionContextArgs {\n id: TabState[\"id\"];\n showOnlyTabIcon?: boolean;\n}\n\n/** @internal */\nexport function WidgetTabProvider({\n id,\n first,\n firstInactive,\n last,\n showOnlyTabIcon,\n}: WidgetTabProviderProps) {\n const tabNode = React.useContext(TabNodeContext);\n const position = React.useMemo<TabPositionContextArgs>(\n () => ({\n first,\n firstInactive,\n last,\n }),\n [first, firstInactive, last]\n );\n return (\n <TabIdContext.Provider value={id}>\n <TabPositionContext.Provider value={position}>\n <IconOnlyOnWidgetTabContext.Provider value={!!showOnlyTabIcon}>\n {tabNode}\n </IconOnlyOnWidgetTabContext.Provider>\n </TabPositionContext.Provider>\n </TabIdContext.Provider>\n );\n}\n\n/** Properties of [[WidgetTab]] component.\n * @internal\n */\nexport interface WidgetTabProps extends CommonProps {\n badge?: React.ReactNode;\n}\n\n/** Component that displays a tab in a side panel widget.\n * @internal\n */\nexport function WidgetTab(props: WidgetTabProps) {\n const widgetOverflow = React.useContext(WidgetOverflowContext);\n const overflown = !!widgetOverflow;\n if (overflown) return <WidgetMenuTab {...props} />;\n return <WidgetTabComponent {...props} />;\n}\n\nfunction WidgetTabComponent(props: WidgetTabProps) {\n const id = React.useContext(TabIdContext);\n const { first, firstInactive, last } = React.useContext(TabPositionContext);\n const widgetTabsEntryContext = React.useContext(WidgetTabsEntryContext);\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const showIconOnly = React.useContext(IconOnlyOnWidgetTabContext);\n const showWidgetIcon = React.useContext(ShowWidgetIconContext);\n assert(!!id);\n assert(!!widgetId);\n\n const iconSpec = useLayout((state) => state.tabs[id].iconSpec);\n const label = useLayout((state) => state.tabs[id].label);\n const activeTabId = useLayout(\n (state) => getWidgetState(state, widgetId).activeTabId\n );\n const minimized = useLayout(\n (state) => getWidgetState(state, widgetId).minimized\n );\n\n const { enabled: enableMaximizedFloatingWidget, maximizedWidget } =\n usePreviewMaximizedWidget();\n const floatingWidgetId = useFloatingWidgetId();\n // istanbul ignore next (preview)\n const maximized =\n !!floatingWidgetId &&\n maximizedWidget === floatingWidgetId &&\n enableMaximizedFloatingWidget;\n\n const resizeObserverRef = useResizeObserver<HTMLDivElement>(\n widgetTabsEntryContext?.onResize\n );\n const pointerCaptorRef = useTabInteractions({ clickOnly: maximized });\n const refs = useRefs<HTMLDivElement>(resizeObserverRef, pointerCaptorRef);\n\n const active = activeTabId === id;\n const className = classnames(\n \"nz-widget-tab\",\n active && \"nz-active\",\n undefined === side && minimized && \"nz-minimized\",\n first && \"nz-first\",\n last && \"nz-last\",\n firstInactive && \"nz-first-inactive\",\n props.className\n );\n\n const showLabel =\n (showIconOnly && !iconSpec) ||\n (showWidgetIcon && !showIconOnly) ||\n !showWidgetIcon;\n return (\n <div\n data-item-id={id}\n data-item-type=\"widget-tab\"\n className={className}\n ref={refs}\n role=\"tab\"\n style={props.style}\n title={label}\n tabIndex={0}\n >\n {(showWidgetIcon || showIconOnly) && iconSpec && (\n <Icon iconSpec={iconSpec} />\n )}\n {showLabel && <span>{label}</span>}\n {props.badge && <div className=\"nz-badge\">{props.badge}</div>}\n <TabTarget />\n </div>\n );\n}\n\n/** @internal */\nexport interface UseTabInteractionsArgs {\n onClick?: () => void;\n onDoubleClick?: () => void;\n onDragStart?: () => void;\n clickOnly?: boolean;\n}\n\n/** @internal */\nexport function useTabInteractions<T extends HTMLElement>({\n onClick,\n onDoubleClick,\n onDragStart,\n clickOnly,\n}: UseTabInteractionsArgs) {\n const id = React.useContext(TabIdContext);\n const widgetContext = React.useContext(WidgetContext);\n const measure = React.useContext(MeasureContext);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const widgetTabsEntryContext = React.useContext(WidgetTabsEntryContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n assert(!!widgetId);\n\n const layoutStore = useLayoutStore();\n const tabRef = React.useRef(layoutStore.getState().tabs[id]);\n const clickCount = React.useRef(0);\n const doubleClickTimer = React.useRef(new Timer(300));\n const initialPointerPosition = React.useRef<Point>();\n\n const overflown = !widgetTabsEntryContext;\n\n React.useEffect(\n () =>\n layoutStore.subscribe((state) => {\n tabRef.current = state.tabs[id];\n }),\n [layoutStore, id]\n );\n\n const handleClick = React.useCallback(() => {\n dispatch({\n type: \"WIDGET_TAB_CLICK\",\n side,\n widgetId,\n id,\n });\n onClick?.();\n }, [dispatch, widgetId, id, side, onClick]);\n const handleDoubleClick = React.useCallback(() => {\n // istanbul ignore next (preview)\n if (clickOnly) return;\n dispatch({\n type: \"WIDGET_TAB_DOUBLE_CLICK\",\n side,\n widgetId,\n floatingWidgetId,\n id,\n });\n onDoubleClick?.();\n }, [\n clickOnly,\n dispatch,\n floatingWidgetId,\n widgetId,\n id,\n side,\n onDoubleClick,\n ]);\n\n const handleDragTabStart = useDragTab({\n tabId: id,\n });\n const handleDragStart = React.useCallback(\n (pointerPosition: Point) => {\n // istanbul ignore next (preview)\n if (clickOnly) return;\n assert(!!ref.current);\n assert(!!initialPointerPosition.current);\n const nzBounds = measure();\n const nzOffset = new Point(-nzBounds.left, -nzBounds.top);\n let bounds = Rectangle.create(ref.current.getBoundingClientRect());\n bounds = bounds.offset(nzOffset);\n\n const tab = tabRef.current;\n const userSized =\n tab.userSized ||\n (tab.isFloatingWidgetResizable &&\n /* istanbul ignore next */ !!tab.preferredFloatingWidgetSize);\n let position = bounds.topLeft();\n const widgetBounds = widgetContext.measure();\n const widgetSize = restrainInitialWidgetSize(\n widgetBounds.getSize(),\n nzBounds.getSize()\n );\n if (overflown) {\n position = initialPointerPosition.current.offset(nzOffset);\n position = position.offset({ x: -7, y: -7 });\n }\n\n const dragOffset =\n initialPointerPosition.current.getOffsetTo(pointerPosition);\n position = position.offset(dragOffset);\n\n handleDragTabStart({\n initialPointerPosition: Point.create(initialPointerPosition.current),\n pointerPosition,\n widgetSize,\n });\n dispatch({\n type: \"WIDGET_TAB_DRAG_START\",\n floatingWidgetId,\n side,\n widgetId,\n id,\n position,\n userSized,\n });\n onDragStart?.();\n\n initialPointerPosition.current = undefined;\n },\n [\n clickOnly,\n measure,\n widgetContext,\n handleDragTabStart,\n dispatch,\n floatingWidgetId,\n side,\n widgetId,\n id,\n onDragStart,\n overflown,\n ]\n );\n const handlePointerDown = React.useCallback(\n (args: PointerCaptorArgs, e: PointerCaptorEvent) => {\n e.type === \"touchstart\" &&\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n },\n [dispatch, floatingWidgetId]\n );\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n // istanbul ignore next\n if (!initialPointerPosition.current) return;\n\n const pointerPosition = new Point(args.clientX, args.clientY);\n const distance =\n initialPointerPosition.current.getDistanceTo(pointerPosition);\n if (distance < 10) return;\n handleDragStart(pointerPosition);\n },\n [handleDragStart]\n );\n const handlePointerUp = React.useCallback(() => {\n clickCount.current++;\n initialPointerPosition.current = undefined;\n doubleClickTimer.current.start();\n }, []);\n\n const pointerCaptorRef = usePointerCaptor<T>(\n handlePointerDown,\n handlePointerMove,\n handlePointerUp\n );\n const ref = React.useRef<T>();\n const refs = useRefs(pointerCaptorRef, ref);\n\n React.useEffect(() => {\n const timer = doubleClickTimer.current;\n timer.setOnExecute(() => {\n if (clickCount.current === 1) handleClick();\n else handleDoubleClick();\n clickCount.current = 0;\n });\n const keydown = (e: KeyboardEvent) => {\n if (e.key === \" \" || e.key === Key.Enter) {\n handleClick();\n }\n };\n const instance = ref.current;\n instance && instance.addEventListener(\"keydown\", keydown);\n return () => {\n timer.setOnExecute(undefined);\n instance && instance.removeEventListener(\"keydown\", keydown);\n };\n }, [handleClick, handleDoubleClick]);\n return refs;\n}\n\n/** @internal */\nexport interface TabPositionContextArgs {\n first?: boolean;\n last?: boolean;\n firstInactive?: boolean;\n}\n\n/** @internal */\nexport const TabPositionContext = React.createContext<TabPositionContextArgs>(\n undefined!\n);\nTabPositionContext.displayName = \"nz:TabPositionContext\";\n\n/** @internal */\nexport const IconOnlyOnWidgetTabContext = React.createContext<boolean>(false);\nIconOnlyOnWidgetTabContext.displayName = \"nz:IconOnlyOnWidgetTabContext\";\n"]}
|
|
1
|
+
{"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Tab.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport \"./Tab.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n Icon,\n Point,\n Rectangle,\n Timer,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react\";\nimport { useDragTab } from \"../base/DragManager\";\nimport {\n MeasureContext,\n NineZoneDispatchContext,\n ShowWidgetIconContext,\n TabNodeContext,\n} from \"../base/NineZone\";\nimport type { TabState } from \"../state/TabState\";\nimport type {\n PointerCaptorArgs,\n PointerCaptorEvent,\n} from \"../base/usePointerCaptor\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor\";\nimport { PanelSideContext } from \"../widget-panels/Panel\";\nimport { WidgetTabsEntryContext } from \"./Tabs\";\nimport {\n restrainInitialWidgetSize,\n WidgetContext,\n WidgetIdContext,\n} from \"./Widget\";\nimport { TabIdContext } from \"./ContentRenderer\";\nimport { TabTarget } from \"../target/TabTarget\";\nimport { WidgetMenuTab } from \"./MenuTab\";\nimport { WidgetOverflowContext } from \"./Overflow\";\nimport { useLayout, useLayoutStore } from \"../base/LayoutStore\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport { Key } from \"ts-key-enum\";\nimport { usePreviewMaximizedWidget } from \"./PreviewMaximizeToggle\";\n\n/** @internal */\nexport interface WidgetTabProviderProps extends TabPositionContextArgs {\n id: TabState[\"id\"];\n showOnlyTabIcon?: boolean;\n}\n\n/** @internal */\nexport function WidgetTabProvider({\n id,\n first,\n firstInactive,\n last,\n showOnlyTabIcon,\n}: WidgetTabProviderProps) {\n const tabNode = React.useContext(TabNodeContext);\n const position = React.useMemo<TabPositionContextArgs>(\n () => ({\n first,\n firstInactive,\n last,\n }),\n [first, firstInactive, last]\n );\n return (\n <TabIdContext.Provider value={id}>\n <TabPositionContext.Provider value={position}>\n <IconOnlyOnWidgetTabContext.Provider value={!!showOnlyTabIcon}>\n {tabNode}\n </IconOnlyOnWidgetTabContext.Provider>\n </TabPositionContext.Provider>\n </TabIdContext.Provider>\n );\n}\n\n/** Properties of [[WidgetTab]] component.\n * @internal\n */\nexport interface WidgetTabProps extends CommonProps {\n badge?: React.ReactNode;\n}\n\n/** Component that displays a tab in a side panel widget.\n * @internal\n */\nexport function WidgetTab(props: WidgetTabProps) {\n const widgetOverflow = React.useContext(WidgetOverflowContext);\n const overflown = !!widgetOverflow;\n if (overflown) return <WidgetMenuTab {...props} />;\n return <WidgetTabComponent {...props} />;\n}\n\nfunction WidgetTabComponent(props: WidgetTabProps) {\n const id = React.useContext(TabIdContext);\n const { first, firstInactive, last } = React.useContext(TabPositionContext);\n const widgetTabsEntryContext = React.useContext(WidgetTabsEntryContext);\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const showIconOnly = React.useContext(IconOnlyOnWidgetTabContext);\n const showWidgetIcon = React.useContext(ShowWidgetIconContext);\n assert(!!id);\n assert(!!widgetId);\n\n const iconSpec = useLayout((state) => state.tabs[id].iconSpec);\n const label = useLayout((state) => state.tabs[id].label);\n const activeTabId = useLayout(\n (state) => getWidgetState(state, widgetId).activeTabId\n );\n const minimized = useLayout(\n (state) => getWidgetState(state, widgetId).minimized\n );\n\n const { enabled: enableMaximizedFloatingWidget, maximizedWidget } =\n usePreviewMaximizedWidget();\n const floatingWidgetId = useFloatingWidgetId();\n // istanbul ignore next (preview)\n const maximized =\n !!floatingWidgetId &&\n maximizedWidget === floatingWidgetId &&\n enableMaximizedFloatingWidget;\n\n const resizeObserverRef = useResizeObserver<HTMLDivElement>(\n widgetTabsEntryContext?.onResize\n );\n const pointerCaptorRef = useTabInteractions({ clickOnly: maximized });\n const refs = useRefs<HTMLDivElement>(resizeObserverRef, pointerCaptorRef);\n\n const active = activeTabId === id;\n const className = classnames(\n \"nz-widget-tab\",\n active && \"nz-active\",\n undefined === side && minimized && \"nz-minimized\",\n first && \"nz-first\",\n last && \"nz-last\",\n firstInactive && \"nz-first-inactive\",\n props.className\n );\n\n const showLabel =\n (showIconOnly && !iconSpec) ||\n (showWidgetIcon && !showIconOnly) ||\n !showWidgetIcon;\n return (\n <div\n data-item-id={id}\n data-item-type=\"widget-tab\"\n className={className}\n ref={refs}\n role=\"tab\"\n style={props.style}\n title={label}\n tabIndex={0}\n >\n {(showWidgetIcon || showIconOnly) && iconSpec && (\n <Icon iconSpec={iconSpec} />\n )}\n {showLabel && <span>{label}</span>}\n {props.badge && <div className=\"nz-badge\">{props.badge}</div>}\n <TabTarget />\n </div>\n );\n}\n\n/** @internal */\nexport interface UseTabInteractionsArgs {\n onClick?: () => void;\n onDoubleClick?: () => void;\n onDragStart?: () => void;\n clickOnly?: boolean;\n}\n\n/** @internal */\nexport function useTabInteractions<T extends HTMLElement>({\n onClick,\n onDoubleClick,\n onDragStart,\n clickOnly,\n}: UseTabInteractionsArgs) {\n const id = React.useContext(TabIdContext);\n const widgetContext = React.useContext(WidgetContext);\n const measure = React.useContext(MeasureContext);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const widgetTabsEntryContext = React.useContext(WidgetTabsEntryContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n assert(!!widgetId);\n\n const layoutStore = useLayoutStore();\n const tabRef = React.useRef(layoutStore.getState().tabs[id]);\n const clickCount = React.useRef(0);\n const doubleClickTimer = React.useRef(new Timer(300));\n const initialPointerPosition = React.useRef<Point>();\n\n const overflown = !widgetTabsEntryContext;\n\n React.useEffect(\n () =>\n layoutStore.subscribe((state) => {\n tabRef.current = state.tabs[id];\n }),\n [layoutStore, id]\n );\n\n const handleClick = React.useCallback(() => {\n dispatch({\n type: \"WIDGET_TAB_CLICK\",\n side,\n widgetId,\n id,\n });\n onClick?.();\n }, [dispatch, widgetId, id, side, onClick]);\n const handleDoubleClick = React.useCallback(() => {\n // istanbul ignore next (preview)\n if (clickOnly) return;\n dispatch({\n type: \"WIDGET_TAB_DOUBLE_CLICK\",\n side,\n widgetId,\n floatingWidgetId,\n id,\n });\n onDoubleClick?.();\n }, [\n clickOnly,\n dispatch,\n floatingWidgetId,\n widgetId,\n id,\n side,\n onDoubleClick,\n ]);\n\n const handleDragTabStart = useDragTab({\n tabId: id,\n });\n const handleDragStart = React.useCallback(\n (pointerPosition: Point) => {\n // istanbul ignore next (preview)\n if (clickOnly) return;\n assert(!!ref.current);\n assert(!!initialPointerPosition.current);\n const nzBounds = measure();\n const nzOffset = new Point(-nzBounds.left, -nzBounds.top);\n let bounds = Rectangle.create(ref.current.getBoundingClientRect());\n bounds = bounds.offset(nzOffset);\n\n const tab = tabRef.current;\n const userSized =\n tab.userSized ||\n (tab.isFloatingWidgetResizable &&\n /* istanbul ignore next */ !!tab.preferredFloatingWidgetSize);\n let position = bounds.topLeft();\n const widgetBounds = widgetContext.measure();\n const widgetSize = restrainInitialWidgetSize(\n widgetBounds.getSize(),\n nzBounds.getSize()\n );\n if (overflown) {\n position = initialPointerPosition.current.offset(nzOffset);\n position = position.offset({ x: -7, y: -7 });\n }\n\n const dragOffset =\n initialPointerPosition.current.getOffsetTo(pointerPosition);\n position = position.offset(dragOffset);\n\n handleDragTabStart({\n initialPointerPosition: Point.create(initialPointerPosition.current),\n pointerPosition,\n widgetSize,\n });\n dispatch({\n type: \"WIDGET_TAB_DRAG_START\",\n floatingWidgetId,\n side,\n widgetId,\n id,\n position,\n userSized,\n });\n onDragStart?.();\n\n initialPointerPosition.current = undefined;\n },\n [\n clickOnly,\n measure,\n widgetContext,\n handleDragTabStart,\n dispatch,\n floatingWidgetId,\n side,\n widgetId,\n id,\n onDragStart,\n overflown,\n ]\n );\n const handlePointerDown = React.useCallback(\n (args: PointerCaptorArgs, e: PointerCaptorEvent) => {\n e.type === \"touchstart\" &&\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n },\n [dispatch, floatingWidgetId]\n );\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n // istanbul ignore next\n if (!initialPointerPosition.current) return;\n\n const pointerPosition = new Point(args.clientX, args.clientY);\n const distance =\n initialPointerPosition.current.getDistanceTo(pointerPosition);\n if (distance < 10) return;\n handleDragStart(pointerPosition);\n },\n [handleDragStart]\n );\n const handlePointerUp = React.useCallback(() => {\n clickCount.current++;\n initialPointerPosition.current = undefined;\n doubleClickTimer.current.start();\n }, []);\n\n const pointerCaptorRef = usePointerCaptor<T>(\n handlePointerDown,\n handlePointerMove,\n handlePointerUp\n );\n const ref = React.useRef<T>();\n const refs = useRefs(pointerCaptorRef, ref);\n\n React.useEffect(() => {\n const timer = doubleClickTimer.current;\n timer.setOnExecute(() => {\n if (clickCount.current === 1) handleClick();\n else handleDoubleClick();\n clickCount.current = 0;\n });\n const keydown = (e: KeyboardEvent) => {\n if (e.key === \" \" || e.key === Key.Enter) {\n handleClick();\n }\n };\n const instance = ref.current;\n instance && instance.addEventListener(\"keydown\", keydown);\n return () => {\n timer.setOnExecute(undefined);\n instance && instance.removeEventListener(\"keydown\", keydown);\n };\n }, [handleClick, handleDoubleClick]);\n return refs;\n}\n\n/** @internal */\nexport interface TabPositionContextArgs {\n first?: boolean;\n last?: boolean;\n firstInactive?: boolean;\n}\n\n/** @internal */\nexport const TabPositionContext = React.createContext<TabPositionContextArgs>(\n undefined!\n);\nTabPositionContext.displayName = \"nz:TabPositionContext\";\n\n/** @internal */\nexport const IconOnlyOnWidgetTabContext = React.createContext<boolean>(false);\nIconOnlyOnWidgetTabContext.displayName = \"nz:IconOnlyOnWidgetTabContext\";\n"]}
|
|
@@ -94,10 +94,10 @@ export const Widget = React.forwardRef(function Widget(props, forwardedRef) {
|
|
|
94
94
|
};
|
|
95
95
|
const element = elementRef.current;
|
|
96
96
|
// istanbul ignore next
|
|
97
|
-
element
|
|
97
|
+
element?.addEventListener("click", listener);
|
|
98
98
|
return () => {
|
|
99
99
|
// istanbul ignore next
|
|
100
|
-
element
|
|
100
|
+
element?.removeEventListener("click", listener);
|
|
101
101
|
};
|
|
102
102
|
}, [dispatch, floatingWidgetId]);
|
|
103
103
|
const measure = React.useCallback(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Widget.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Widget.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport \"./Widget.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle, useRefs } from \"@itwin/core-react\";\nimport type { UseDragWidgetArgs } from \"../base/DragManager\";\nimport { useDragWidget } from \"../base/DragManager\";\nimport {\n getUniqueId,\n MeasureContext,\n NineZoneDispatchContext,\n} from \"../base/NineZone\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport { PanelSideContext } from \"../widget-panels/Panel\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\n\n/** @internal */\nexport interface WidgetProviderProps {\n id: WidgetState[\"id\"];\n children?: React.ReactNode;\n}\n\n/** @internal */\nexport function WidgetProvider(props: WidgetProviderProps) {\n return (\n <WidgetIdContext.Provider value={props.id}>\n {props.children}\n </WidgetIdContext.Provider>\n );\n}\n\n/** @internal */\nexport interface WidgetProps extends CommonProps {\n children?: React.ReactNode;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onTransitionEnd?(): void;\n widgetId?: string;\n}\n\n/** @internal */\nexport const Widget = React.forwardRef<HTMLDivElement, WidgetProps>(\n function Widget(props, forwardedRef) {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n const id = React.useContext(WidgetIdContext);\n const measureNz = React.useContext(MeasureContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n const { preferredFloatingWidgetSize, userSized } = useLayout((state) => {\n const widget = getWidgetState(state, id);\n const tab = state.tabs[widget.activeTabId];\n // istanbul ignore next\n return {\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n userSized:\n tab.userSized ||\n (tab.isFloatingWidgetResizable && !!tab.preferredFloatingWidgetSize),\n };\n }, true);\n const elementRef = React.useRef<HTMLDivElement>(null);\n const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;\n const onDragStart = React.useCallback<\n NonNullable<UseDragWidgetArgs[\"onDragStart\"]>\n >(\n (updateId, initialPointerPosition, pointerPosition) => {\n assert(!!elementRef.current);\n if (floatingWidgetId !== undefined) return;\n const nzBounds = measureNz();\n let bounds = Rectangle.create(\n elementRef.current.getBoundingClientRect()\n );\n\n const size = restrainInitialWidgetSize(\n bounds.getSize(),\n nzBounds.getSize()\n );\n bounds = bounds.setSize(size);\n\n if (preferredFloatingWidgetSize) {\n bounds = bounds.setSize(preferredFloatingWidgetSize);\n }\n\n // Pointer is outside of tab area. Need to re-adjust widget bounds so that tab is behind pointer\n if (initialPointerPosition.x > bounds.right) {\n const offset = initialPointerPosition.x - bounds.right + 20;\n bounds = bounds.offsetX(offset);\n }\n\n const dragOffset = initialPointerPosition.getOffsetTo(pointerPosition);\n bounds = bounds.offset(dragOffset);\n\n // Adjust bounds to be relative to 9z origin\n bounds = bounds.offset({ x: -nzBounds.left, y: -nzBounds.top });\n\n const newFloatingWidgetId = getUniqueId();\n updateId(newFloatingWidgetId);\n\n assert(!!side);\n dispatch({\n type: \"PANEL_WIDGET_DRAG_START\",\n newFloatingWidgetId,\n id,\n bounds,\n side,\n userSized,\n });\n },\n [\n dispatch,\n floatingWidgetId,\n id,\n side,\n measureNz,\n preferredFloatingWidgetSize,\n userSized,\n ]\n );\n useDragWidget({\n widgetId,\n onDragStart,\n });\n React.useEffect(() => {\n const listener = () => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n };\n const element = elementRef.current;\n // istanbul ignore next\n element?.addEventListener(\"click\", listener);\n return () => {\n // istanbul ignore next\n element?.removeEventListener(\"click\", listener);\n };\n }, [dispatch, floatingWidgetId]);\n const measure = React.useCallback<WidgetContextArgs[\"measure\"]>(() => {\n // istanbul ignore next\n if (!elementRef.current) return new Rectangle();\n const bounds = elementRef.current.getBoundingClientRect();\n return Rectangle.create(bounds);\n }, []);\n const widgetContextValue = React.useMemo<WidgetContextArgs>(\n () => ({\n measure,\n }),\n [measure]\n );\n const ref = useRefs(forwardedRef, elementRef);\n const className = classnames(\"nz-widget-widget\", props.className);\n return (\n <WidgetContext.Provider value={widgetContextValue}>\n <div\n className={className}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n onTransitionEnd={props.onTransitionEnd}\n ref={ref}\n style={props.style}\n data-widget-id={props.widgetId}\n >\n {props.children}\n </div>\n </WidgetContext.Provider>\n );\n }\n);\n\n/** @internal */\nexport const WidgetIdContext = React.createContext<\n WidgetState[\"id\"] | undefined\n>(undefined);\nWidgetIdContext.displayName = \"nz:WidgetIdContext\";\n\n/** @internal */\nexport interface WidgetContextArgs {\n measure: () => Rectangle;\n}\n\n/** @internal */\nexport const WidgetContext = React.createContext<WidgetContextArgs>(null!);\nWidgetContext.displayName = \"nz:WidgetContext\";\n\nconst minWidth = 200;\nconst minHeight = 200;\n\n/** @internal */\nexport function restrainInitialWidgetSize(\n size: SizeProps,\n nzSize: SizeProps\n): SizeProps {\n const width = Math.max(Math.min(nzSize.width / 3, size.width), minWidth);\n const height = Math.max(Math.min(nzSize.height / 3, size.height), minHeight);\n return {\n width,\n height,\n };\n}\n\n/** @internal */\nexport function useActiveTabId() {\n const id = React.useContext(WidgetIdContext);\n assert(!!id);\n return useLayout((state) => {\n const widget = getWidgetState(state, id);\n return widget.activeTabId;\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Widget.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/Widget.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport \"./Widget.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle, useRefs } from \"@itwin/core-react\";\nimport type { UseDragWidgetArgs } from \"../base/DragManager\";\nimport { useDragWidget } from \"../base/DragManager\";\nimport {\n getUniqueId,\n MeasureContext,\n NineZoneDispatchContext,\n} from \"../base/NineZone\";\nimport type { WidgetState } from \"../state/WidgetState\";\nimport { PanelSideContext } from \"../widget-panels/Panel\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers\";\nimport { useFloatingWidgetId } from \"./FloatingWidget\";\n\n/** @internal */\nexport interface WidgetProviderProps {\n id: WidgetState[\"id\"];\n children?: React.ReactNode;\n}\n\n/** @internal */\nexport function WidgetProvider(props: WidgetProviderProps) {\n return (\n <WidgetIdContext.Provider value={props.id}>\n {props.children}\n </WidgetIdContext.Provider>\n );\n}\n\n/** @internal */\nexport interface WidgetProps extends CommonProps {\n children?: React.ReactNode;\n onMouseEnter?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n onTransitionEnd?(): void;\n widgetId?: string;\n}\n\n/** @internal */\nexport const Widget = React.forwardRef<HTMLDivElement, WidgetProps>(\n function Widget(props, forwardedRef) {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n const id = React.useContext(WidgetIdContext);\n const measureNz = React.useContext(MeasureContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n const { preferredFloatingWidgetSize, userSized } = useLayout((state) => {\n const widget = getWidgetState(state, id);\n const tab = state.tabs[widget.activeTabId];\n // istanbul ignore next\n return {\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n userSized:\n tab.userSized ||\n (tab.isFloatingWidgetResizable && !!tab.preferredFloatingWidgetSize),\n };\n }, true);\n const elementRef = React.useRef<HTMLDivElement>(null);\n const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;\n const onDragStart = React.useCallback<\n NonNullable<UseDragWidgetArgs[\"onDragStart\"]>\n >(\n (updateId, initialPointerPosition, pointerPosition) => {\n assert(!!elementRef.current);\n if (floatingWidgetId !== undefined) return;\n const nzBounds = measureNz();\n let bounds = Rectangle.create(\n elementRef.current.getBoundingClientRect()\n );\n\n const size = restrainInitialWidgetSize(\n bounds.getSize(),\n nzBounds.getSize()\n );\n bounds = bounds.setSize(size);\n\n if (preferredFloatingWidgetSize) {\n bounds = bounds.setSize(preferredFloatingWidgetSize);\n }\n\n // Pointer is outside of tab area. Need to re-adjust widget bounds so that tab is behind pointer\n if (initialPointerPosition.x > bounds.right) {\n const offset = initialPointerPosition.x - bounds.right + 20;\n bounds = bounds.offsetX(offset);\n }\n\n const dragOffset = initialPointerPosition.getOffsetTo(pointerPosition);\n bounds = bounds.offset(dragOffset);\n\n // Adjust bounds to be relative to 9z origin\n bounds = bounds.offset({ x: -nzBounds.left, y: -nzBounds.top });\n\n const newFloatingWidgetId = getUniqueId();\n updateId(newFloatingWidgetId);\n\n assert(!!side);\n dispatch({\n type: \"PANEL_WIDGET_DRAG_START\",\n newFloatingWidgetId,\n id,\n bounds,\n side,\n userSized,\n });\n },\n [\n dispatch,\n floatingWidgetId,\n id,\n side,\n measureNz,\n preferredFloatingWidgetSize,\n userSized,\n ]\n );\n useDragWidget({\n widgetId,\n onDragStart,\n });\n React.useEffect(() => {\n const listener = () => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n };\n const element = elementRef.current;\n // istanbul ignore next\n element?.addEventListener(\"click\", listener);\n return () => {\n // istanbul ignore next\n element?.removeEventListener(\"click\", listener);\n };\n }, [dispatch, floatingWidgetId]);\n const measure = React.useCallback<WidgetContextArgs[\"measure\"]>(() => {\n // istanbul ignore next\n if (!elementRef.current) return new Rectangle();\n const bounds = elementRef.current.getBoundingClientRect();\n return Rectangle.create(bounds);\n }, []);\n const widgetContextValue = React.useMemo<WidgetContextArgs>(\n () => ({\n measure,\n }),\n [measure]\n );\n const ref = useRefs(forwardedRef, elementRef);\n const className = classnames(\"nz-widget-widget\", props.className);\n return (\n <WidgetContext.Provider value={widgetContextValue}>\n <div\n className={className}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n onTransitionEnd={props.onTransitionEnd}\n ref={ref}\n style={props.style}\n data-widget-id={props.widgetId}\n >\n {props.children}\n </div>\n </WidgetContext.Provider>\n );\n }\n);\n\n/** @internal */\nexport const WidgetIdContext = React.createContext<\n WidgetState[\"id\"] | undefined\n>(undefined);\nWidgetIdContext.displayName = \"nz:WidgetIdContext\";\n\n/** @internal */\nexport interface WidgetContextArgs {\n measure: () => Rectangle;\n}\n\n/** @internal */\nexport const WidgetContext = React.createContext<WidgetContextArgs>(null!);\nWidgetContext.displayName = \"nz:WidgetContext\";\n\nconst minWidth = 200;\nconst minHeight = 200;\n\n/** @internal */\nexport function restrainInitialWidgetSize(\n size: SizeProps,\n nzSize: SizeProps\n): SizeProps {\n const width = Math.max(Math.min(nzSize.width / 3, size.width), minWidth);\n const height = Math.max(Math.min(nzSize.height / 3, size.height), minHeight);\n return {\n width,\n height,\n };\n}\n\n/** @internal */\nexport function useActiveTabId() {\n const id = React.useContext(WidgetIdContext);\n assert(!!id);\n return useLayout((state) => {\n const widget = getWidgetState(state, id);\n return widget.activeTabId;\n });\n}\n"]}
|
|
@@ -10,7 +10,7 @@ import { useActiveTabId } from "./Widget";
|
|
|
10
10
|
/** @internal */
|
|
11
11
|
export function useIsToolSettingsTab() {
|
|
12
12
|
const activeTabId = useActiveTabId();
|
|
13
|
-
const toolSettingsTabId = useLayout((state) =>
|
|
13
|
+
const toolSettingsTabId = useLayout((state) => state.toolSettings?.tabId);
|
|
14
14
|
return activeTabId === toolSettingsTabId;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=useIsToolSettingsTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsToolSettingsTab.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/useIsToolSettingsTab.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,gBAAgB;AAChB,MAAM,UAAU,oBAAoB;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"useIsToolSettingsTab.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget/useIsToolSettingsTab.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,gBAAgB;AAChB,MAAM,UAAU,oBAAoB;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,iBAAiB,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC1E,OAAO,WAAW,KAAK,iBAAiB,CAAC;AAC3C,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport { useLayout } from \"../base/LayoutStore\";\nimport { useActiveTabId } from \"./Widget\";\n\n/** @internal */\nexport function useIsToolSettingsTab() {\n const activeTabId = useActiveTabId();\n const toolSettingsTabId = useLayout((state) => state.toolSettings?.tabId);\n return activeTabId === toolSettingsTabId;\n}\n"]}
|
|
@@ -53,18 +53,16 @@ function PanelSplitter() {
|
|
|
53
53
|
}
|
|
54
54
|
}, [updatePanelSize]);
|
|
55
55
|
const handlePointerUp = React.useCallback((event) => {
|
|
56
|
-
var _a, _b;
|
|
57
56
|
updatePanelSize(event);
|
|
58
57
|
event.preventDefault();
|
|
59
58
|
event.stopPropagation();
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
containerRef.current?.ownerDocument.removeEventListener("pointermove", handlePointerMove);
|
|
60
|
+
containerRef.current?.ownerDocument.removeEventListener("pointerup", handlePointerUp);
|
|
62
61
|
}, [handlePointerMove, updatePanelSize]);
|
|
63
62
|
const handlePointerDownOnSplitter = React.useCallback((event) => {
|
|
64
|
-
var _a, _b;
|
|
65
63
|
if (containerRef.current) {
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
containerRef.current?.ownerDocument.addEventListener("pointermove", handlePointerMove);
|
|
65
|
+
containerRef.current?.ownerDocument.addEventListener("pointerup", handlePointerUp);
|
|
68
66
|
splitterProcessingActiveRef.current = true;
|
|
69
67
|
event.preventDefault();
|
|
70
68
|
event.stopPropagation();
|
|
@@ -88,9 +86,8 @@ export function PanelSections() {
|
|
|
88
86
|
}, true);
|
|
89
87
|
const isHorizontal = isHorizontalPanelSide(side);
|
|
90
88
|
const splitterControlledPanelStyle = React.useMemo(() => {
|
|
91
|
-
var _a;
|
|
92
89
|
// istanbul ignore next
|
|
93
|
-
const splitterPercent =
|
|
90
|
+
const splitterPercent = panel.splitterPercent ?? 50;
|
|
94
91
|
if (isHorizontal) {
|
|
95
92
|
return {
|
|
96
93
|
width: `${splitterPercent}%`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanelSections.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/PanelSections.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WidgetPanels\n */\n\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport { PanelWidget } from \"../widget/PanelWidget\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { isHorizontalPanelSide, PanelSideContext } from \"./Panel\";\n\n// istanbul ignore next\nfunction PanelSplitter() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const splitterProcessingActiveRef = React.useRef<boolean>(false);\n\n const isHorizontal = isHorizontalPanelSide(side);\n\n const getPercentage = React.useCallback(\n (min: number, max: number, current: number) => {\n const range = max - min;\n const adjusted = Math.max(min, Math.min(max, current));\n if (adjusted === min) return 0;\n if (adjusted === max) return 100;\n const percent = ((adjusted - min) * 100) / range;\n return percent;\n },\n []\n );\n\n const updatePanelSize = React.useCallback(\n (event: PointerEvent) => {\n if (!containerRef.current) return;\n\n const parentPanel = containerRef.current.closest(\n \".nz-widgetPanels-panel\"\n );\n const sectionToResize = containerRef.current.parentElement as HTMLElement;\n if (parentPanel && sectionToResize) {\n const rect = parentPanel.getBoundingClientRect();\n const percent = getPercentage(\n isHorizontal ? rect.left : rect.top,\n isHorizontal ? rect.right : rect.bottom,\n isHorizontal ? event.clientX : event.clientY\n );\n\n dispatch({\n type: \"PANEL_SET_SPLITTER_VALUE\",\n side,\n percent,\n });\n }\n },\n [getPercentage, isHorizontal, side, dispatch]\n );\n\n const handlePointerMove = React.useCallback(\n (event: Event): void => {\n if (splitterProcessingActiveRef.current) {\n event.preventDefault();\n event.stopPropagation();\n updatePanelSize(event as PointerEvent);\n }\n },\n [updatePanelSize]\n );\n\n const handlePointerUp = React.useCallback(\n (event: Event) => {\n updatePanelSize(event as PointerEvent);\n event.preventDefault();\n event.stopPropagation();\n containerRef.current?.ownerDocument.removeEventListener(\n \"pointermove\",\n handlePointerMove\n );\n containerRef.current?.ownerDocument.removeEventListener(\n \"pointerup\",\n handlePointerUp\n );\n },\n [handlePointerMove, updatePanelSize]\n );\n\n const handlePointerDownOnSplitter = React.useCallback(\n (event: React.PointerEvent) => {\n if (containerRef.current) {\n containerRef.current?.ownerDocument.addEventListener(\n \"pointermove\",\n handlePointerMove\n );\n containerRef.current?.ownerDocument.addEventListener(\n \"pointerup\",\n handlePointerUp\n );\n splitterProcessingActiveRef.current = true;\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [handlePointerMove, handlePointerUp]\n );\n\n const className = isHorizontal\n ? \"nz-horizontal-panel-splitter\"\n : \"nz-vertical-panel-splitter\";\n return (\n <div\n ref={containerRef}\n className={className}\n onPointerDown={handlePointerDownOnSplitter}\n />\n );\n}\n\n/** @internal */\nexport function PanelSections() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n\n const panel = useLayout((state) => {\n const p = state.panels[side];\n return {\n splitterPercent: p.splitterPercent,\n widgets: p.widgets,\n };\n }, true);\n\n const isHorizontal = isHorizontalPanelSide(side);\n\n const splitterControlledPanelStyle = React.useMemo(() => {\n // istanbul ignore next\n const splitterPercent = panel.splitterPercent ?? 50;\n if (isHorizontal) {\n return {\n width: `${splitterPercent}%`,\n };\n }\n return {\n height: `${splitterPercent}%`,\n };\n }, [isHorizontal, panel.splitterPercent]);\n\n /* istanbul ignore next */\n return (\n <>\n {panel.widgets.map((widgetId, index, array) => {\n const last = index === array.length - 1;\n\n const sectionClassName = classnames(\n `nz-panel-section-${index}`,\n isHorizontal\n ? \"nz-widgetPanels-horizontal\"\n : \"nz-widgetPanels-vertical\",\n last && 0 === index && \"nz-panel-section-full-size\"\n );\n\n const panelStyle =\n index === 0 && array.length > 1\n ? splitterControlledPanelStyle\n : undefined;\n return (\n <div key={widgetId} className={sectionClassName} style={panelStyle}>\n <PanelWidget widgetId={widgetId} />\n {!last && 0 === index && <PanelSplitter />}\n </div>\n );\n })}\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PanelSections.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/PanelSections.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WidgetPanels\n */\n\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport { PanelWidget } from \"../widget/PanelWidget\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { isHorizontalPanelSide, PanelSideContext } from \"./Panel\";\n\n// istanbul ignore next\nfunction PanelSplitter() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const splitterProcessingActiveRef = React.useRef<boolean>(false);\n\n const isHorizontal = isHorizontalPanelSide(side);\n\n const getPercentage = React.useCallback(\n (min: number, max: number, current: number) => {\n const range = max - min;\n const adjusted = Math.max(min, Math.min(max, current));\n if (adjusted === min) return 0;\n if (adjusted === max) return 100;\n const percent = ((adjusted - min) * 100) / range;\n return percent;\n },\n []\n );\n\n const updatePanelSize = React.useCallback(\n (event: PointerEvent) => {\n if (!containerRef.current) return;\n\n const parentPanel = containerRef.current.closest(\n \".nz-widgetPanels-panel\"\n );\n const sectionToResize = containerRef.current.parentElement as HTMLElement;\n if (parentPanel && sectionToResize) {\n const rect = parentPanel.getBoundingClientRect();\n const percent = getPercentage(\n isHorizontal ? rect.left : rect.top,\n isHorizontal ? rect.right : rect.bottom,\n isHorizontal ? event.clientX : event.clientY\n );\n\n dispatch({\n type: \"PANEL_SET_SPLITTER_VALUE\",\n side,\n percent,\n });\n }\n },\n [getPercentage, isHorizontal, side, dispatch]\n );\n\n const handlePointerMove = React.useCallback(\n (event: Event): void => {\n if (splitterProcessingActiveRef.current) {\n event.preventDefault();\n event.stopPropagation();\n updatePanelSize(event as PointerEvent);\n }\n },\n [updatePanelSize]\n );\n\n const handlePointerUp = React.useCallback(\n (event: Event) => {\n updatePanelSize(event as PointerEvent);\n event.preventDefault();\n event.stopPropagation();\n containerRef.current?.ownerDocument.removeEventListener(\n \"pointermove\",\n handlePointerMove\n );\n containerRef.current?.ownerDocument.removeEventListener(\n \"pointerup\",\n handlePointerUp\n );\n },\n [handlePointerMove, updatePanelSize]\n );\n\n const handlePointerDownOnSplitter = React.useCallback(\n (event: React.PointerEvent) => {\n if (containerRef.current) {\n containerRef.current?.ownerDocument.addEventListener(\n \"pointermove\",\n handlePointerMove\n );\n containerRef.current?.ownerDocument.addEventListener(\n \"pointerup\",\n handlePointerUp\n );\n splitterProcessingActiveRef.current = true;\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [handlePointerMove, handlePointerUp]\n );\n\n const className = isHorizontal\n ? \"nz-horizontal-panel-splitter\"\n : \"nz-vertical-panel-splitter\";\n return (\n <div\n ref={containerRef}\n className={className}\n onPointerDown={handlePointerDownOnSplitter}\n />\n );\n}\n\n/** @internal */\nexport function PanelSections() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n\n const panel = useLayout((state) => {\n const p = state.panels[side];\n return {\n splitterPercent: p.splitterPercent,\n widgets: p.widgets,\n };\n }, true);\n\n const isHorizontal = isHorizontalPanelSide(side);\n\n const splitterControlledPanelStyle = React.useMemo(() => {\n // istanbul ignore next\n const splitterPercent = panel.splitterPercent ?? 50;\n if (isHorizontal) {\n return {\n width: `${splitterPercent}%`,\n };\n }\n return {\n height: `${splitterPercent}%`,\n };\n }, [isHorizontal, panel.splitterPercent]);\n\n /* istanbul ignore next */\n return (\n <>\n {panel.widgets.map((widgetId, index, array) => {\n const last = index === array.length - 1;\n\n const sectionClassName = classnames(\n `nz-panel-section-${index}`,\n isHorizontal\n ? \"nz-widgetPanels-horizontal\"\n : \"nz-widgetPanels-vertical\",\n last && 0 === index && \"nz-panel-section-full-size\"\n );\n\n const panelStyle =\n index === 0 && array.length > 1\n ? splitterControlledPanelStyle\n : undefined;\n return (\n <div key={widgetId} className={sectionClassName} style={panelStyle}>\n <PanelWidget widgetId={widgetId} />\n {!last && 0 === index && <PanelSplitter />}\n </div>\n );\n })}\n </>\n );\n}\n"]}
|
|
@@ -155,10 +155,9 @@ export function useAnimatePanel() {
|
|
|
155
155
|
setTransition(undefined);
|
|
156
156
|
}, []);
|
|
157
157
|
const size = React.useMemo(() => {
|
|
158
|
-
var _a;
|
|
159
158
|
if (panelSize !== undefined)
|
|
160
159
|
return panelSize;
|
|
161
|
-
return panel.collapsed ? 0 :
|
|
160
|
+
return panel.collapsed ? 0 : panel.size ?? panel.minSize;
|
|
162
161
|
}, [panel.size, panel.collapsed, panel.minSize, panelSize]);
|
|
163
162
|
return { ref, size, handleTransitionEnd, contentSize, transition };
|
|
164
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnimatePanel.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/useAnimatePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WidgetPanels\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { SizeProps } from \"@itwin/core-react\";\nimport { DraggedPanelSideContext } from \"../base/DragManager\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { isHorizontalPanelSide, PanelSideContext } from \"./Panel\";\n\n/** @internal */\nexport function useAnimatePanel() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const draggedPanelSide = React.useContext(DraggedPanelSideContext);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const captured = draggedPanelSide === side;\n const [contentSize, setContentSize] = React.useState<number | undefined>();\n const [prepareTransition, setPrepareTransition] = React.useState(false);\n const [transition, setTransition] = React.useState<\n \"init\" | \"transition\" | undefined\n >();\n const [panelSize, setPanelSize] = React.useState<number | undefined>();\n const [initializing, setInitializing] = React.useState(false);\n const horizontal = isHorizontalPanelSide(side);\n const animateFrom = React.useRef<number | undefined>();\n const animateTo = React.useRef(0);\n const maxPanelSize = React.useRef<number | undefined>();\n const collapsing = React.useRef<\"collapsing\" | \"expanding\" | undefined>();\n const ref = React.useRef<HTMLDivElement>(null);\n\n const panel = useLayout((state) => {\n const p = state.panels[side];\n return {\n collapsed: p.collapsed,\n size: p.size,\n minSize: p.minSize,\n };\n }, true);\n\n const [prevCollapsed, setPrevCollapsed] = React.useState(panel.collapsed);\n if (prevCollapsed !== panel.collapsed) {\n setPrevCollapsed(panel.collapsed);\n let from = animateFrom.current;\n // istanbul ignore else\n if (from === undefined && ref.current) {\n const bounds = ref.current.getBoundingClientRect();\n from = getPanelSize(horizontal, bounds);\n }\n\n animateFrom.current = from;\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n setPrepareTransition(true);\n if (panel.collapsed) {\n collapsing.current = \"collapsing\";\n maxPanelSize.current = from;\n } else {\n collapsing.current = \"expanding\";\n }\n }\n\n const [prevSize, setPrevSize] = React.useState(panel.size);\n if (prevSize !== panel.size) {\n setPrevSize(panel.size);\n\n if (initializing) {\n // Panel is initializing (via dispatched PANEL_INITIALIZE), need to re-measure animateTo.\n maxPanelSize.current = undefined;\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n setPrepareTransition(true);\n } else if (collapsing.current === \"collapsing\") {\n // Panel is collapsing, ignore size changes.\n } else if (!captured && ref.current && prevSize !== undefined) {\n // Panel is expanding\n animateFrom.current = getPanelSize(\n horizontal,\n ref.current.getBoundingClientRect()\n );\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n setPrepareTransition(true);\n } else {\n // Panel is resizing, do not transition.\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n animateFrom.current = undefined;\n collapsing.current = undefined;\n }\n }\n\n React.useLayoutEffect(() => {\n if (panel.size !== undefined || panel.collapsed) return;\n assert(!!ref.current);\n const bounds = ref.current.getBoundingClientRect();\n const newSize = getPanelSize(horizontal, bounds);\n dispatch({\n type: \"PANEL_INITIALIZE\",\n side,\n size: newSize,\n });\n setInitializing(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [panel.size, panel.collapsed]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useLayoutEffect(() => {\n if (!prepareTransition) return;\n\n setPrepareTransition(false);\n assert(!!ref.current);\n animateTo.current = getPanelSize(\n horizontal,\n ref.current.getBoundingClientRect()\n );\n if (animateFrom.current === animateTo.current) {\n maxPanelSize.current = undefined;\n animateFrom.current = undefined;\n collapsing.current = undefined;\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n return;\n }\n if (\n collapsing.current === \"expanding\" &&\n maxPanelSize.current === undefined\n ) {\n maxPanelSize.current = animateTo.current;\n }\n\n setPanelSize(animateFrom.current);\n setContentSize(maxPanelSize.current);\n setTransition(\"init\");\n });\n React.useLayoutEffect(() => {\n if (transition !== \"init\") return;\n\n const handle = window.requestAnimationFrame(() => {\n animateFrom.current = undefined;\n setTransition(\"transition\");\n setPanelSize(animateTo.current);\n });\n return () => {\n window.cancelAnimationFrame(handle);\n };\n });\n React.useEffect(() => {\n setInitializing(false);\n }, [initializing]);\n\n const handleTransitionEnd = React.useCallback(\n (e: React.TransitionEvent<HTMLDivElement>) => {\n // istanbul ignore if\n if (e.target !== ref.current) return;\n\n maxPanelSize.current = undefined;\n collapsing.current = undefined;\n animateFrom.current = undefined;\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n },\n []\n );\n\n const size = React.useMemo(() => {\n if (panelSize !== undefined) return panelSize;\n return panel.collapsed ? 0 : panel.size ?? panel.minSize;\n }, [panel.size, panel.collapsed, panel.minSize, panelSize]);\n return { ref, size, handleTransitionEnd, contentSize, transition };\n}\n\nfunction getPanelSize(horizontal: boolean, size: SizeProps) {\n return horizontal ? size.height : size.width;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useAnimatePanel.js","sourceRoot":"","sources":["../../../../../src/appui-react/layout/widget-panels/useAnimatePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WidgetPanels\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { SizeProps } from \"@itwin/core-react\";\nimport { DraggedPanelSideContext } from \"../base/DragManager\";\nimport { NineZoneDispatchContext } from \"../base/NineZone\";\nimport { useLayout } from \"../base/LayoutStore\";\nimport { isHorizontalPanelSide, PanelSideContext } from \"./Panel\";\n\n/** @internal */\nexport function useAnimatePanel() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const draggedPanelSide = React.useContext(DraggedPanelSideContext);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const captured = draggedPanelSide === side;\n const [contentSize, setContentSize] = React.useState<number | undefined>();\n const [prepareTransition, setPrepareTransition] = React.useState(false);\n const [transition, setTransition] = React.useState<\n \"init\" | \"transition\" | undefined\n >();\n const [panelSize, setPanelSize] = React.useState<number | undefined>();\n const [initializing, setInitializing] = React.useState(false);\n const horizontal = isHorizontalPanelSide(side);\n const animateFrom = React.useRef<number | undefined>();\n const animateTo = React.useRef(0);\n const maxPanelSize = React.useRef<number | undefined>();\n const collapsing = React.useRef<\"collapsing\" | \"expanding\" | undefined>();\n const ref = React.useRef<HTMLDivElement>(null);\n\n const panel = useLayout((state) => {\n const p = state.panels[side];\n return {\n collapsed: p.collapsed,\n size: p.size,\n minSize: p.minSize,\n };\n }, true);\n\n const [prevCollapsed, setPrevCollapsed] = React.useState(panel.collapsed);\n if (prevCollapsed !== panel.collapsed) {\n setPrevCollapsed(panel.collapsed);\n let from = animateFrom.current;\n // istanbul ignore else\n if (from === undefined && ref.current) {\n const bounds = ref.current.getBoundingClientRect();\n from = getPanelSize(horizontal, bounds);\n }\n\n animateFrom.current = from;\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n setPrepareTransition(true);\n if (panel.collapsed) {\n collapsing.current = \"collapsing\";\n maxPanelSize.current = from;\n } else {\n collapsing.current = \"expanding\";\n }\n }\n\n const [prevSize, setPrevSize] = React.useState(panel.size);\n if (prevSize !== panel.size) {\n setPrevSize(panel.size);\n\n if (initializing) {\n // Panel is initializing (via dispatched PANEL_INITIALIZE), need to re-measure animateTo.\n maxPanelSize.current = undefined;\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n setPrepareTransition(true);\n } else if (collapsing.current === \"collapsing\") {\n // Panel is collapsing, ignore size changes.\n } else if (!captured && ref.current && prevSize !== undefined) {\n // Panel is expanding\n animateFrom.current = getPanelSize(\n horizontal,\n ref.current.getBoundingClientRect()\n );\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n setPrepareTransition(true);\n } else {\n // Panel is resizing, do not transition.\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n animateFrom.current = undefined;\n collapsing.current = undefined;\n }\n }\n\n React.useLayoutEffect(() => {\n if (panel.size !== undefined || panel.collapsed) return;\n assert(!!ref.current);\n const bounds = ref.current.getBoundingClientRect();\n const newSize = getPanelSize(horizontal, bounds);\n dispatch({\n type: \"PANEL_INITIALIZE\",\n side,\n size: newSize,\n });\n setInitializing(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [panel.size, panel.collapsed]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useLayoutEffect(() => {\n if (!prepareTransition) return;\n\n setPrepareTransition(false);\n assert(!!ref.current);\n animateTo.current = getPanelSize(\n horizontal,\n ref.current.getBoundingClientRect()\n );\n if (animateFrom.current === animateTo.current) {\n maxPanelSize.current = undefined;\n animateFrom.current = undefined;\n collapsing.current = undefined;\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n return;\n }\n if (\n collapsing.current === \"expanding\" &&\n maxPanelSize.current === undefined\n ) {\n maxPanelSize.current = animateTo.current;\n }\n\n setPanelSize(animateFrom.current);\n setContentSize(maxPanelSize.current);\n setTransition(\"init\");\n });\n React.useLayoutEffect(() => {\n if (transition !== \"init\") return;\n\n const handle = window.requestAnimationFrame(() => {\n animateFrom.current = undefined;\n setTransition(\"transition\");\n setPanelSize(animateTo.current);\n });\n return () => {\n window.cancelAnimationFrame(handle);\n };\n });\n React.useEffect(() => {\n setInitializing(false);\n }, [initializing]);\n\n const handleTransitionEnd = React.useCallback(\n (e: React.TransitionEvent<HTMLDivElement>) => {\n // istanbul ignore if\n if (e.target !== ref.current) return;\n\n maxPanelSize.current = undefined;\n collapsing.current = undefined;\n animateFrom.current = undefined;\n setPanelSize(undefined);\n setContentSize(undefined);\n setTransition(undefined);\n },\n []\n );\n\n const size = React.useMemo(() => {\n if (panelSize !== undefined) return panelSize;\n return panel.collapsed ? 0 : panel.size ?? panel.minSize;\n }, [panel.size, panel.collapsed, panel.minSize, panelSize]);\n return { ref, size, handleTransitionEnd, contentSize, transition };\n}\n\nfunction getPanelSize(horizontal: boolean, size: SizeProps) {\n return horizontal ? size.height : size.width;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputField.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/InputField.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"InputField.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/InputField.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAQrE;;GAEG;AACH,UAAU,sBAAsB;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,UAAU,sBAAsB;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,aAAa,CACxD,sBAAsB,EACtB,sBAAsB,CACvB;IACC,SAAyB,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAK9D;IAEc,MAAM,IAAI,KAAK,CAAC,SAAS;IA2EzB,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IAS5C,OAAO,CAAC,oBAAoB,CAE1B;IAEF,OAAO,CAAC,kCAAkC,CAUxC;IAEF,OAAO,CAAC,oCAAoC,CAE1C;CACH"}
|
|
@@ -10,9 +10,8 @@ import classnames from "classnames";
|
|
|
10
10
|
import * as React from "react";
|
|
11
11
|
import { OutputMessagePriority } from "@itwin/core-frontend";
|
|
12
12
|
import { RelativePosition } from "@itwin/appui-abstract";
|
|
13
|
-
import { Icon, Popup } from "@itwin/core-react";
|
|
13
|
+
import { Icon, MessageRenderer, Popup } from "@itwin/core-react";
|
|
14
14
|
import { MessageManager } from "../messages/MessageManager";
|
|
15
|
-
import { MessageDiv } from "./MessageSpan";
|
|
16
15
|
import { SvgClose, SvgInfoCircularHollow, SvgStatusError, SvgStatusWarning, } from "@itwin/itwinui-icons-react";
|
|
17
16
|
/** InputField message pops up near pointer when attempting an invalid interaction.
|
|
18
17
|
* @public
|
|
@@ -68,8 +67,8 @@ export class InputFieldMessage extends React.PureComponent {
|
|
|
68
67
|
React.createElement("i", { className: classnames("icon", "core-svg-icon") }, iconComponent),
|
|
69
68
|
" ")),
|
|
70
69
|
React.createElement("span", { className: "uifw-popup-message-text" },
|
|
71
|
-
React.createElement(
|
|
72
|
-
detailedMessage && (React.createElement(
|
|
70
|
+
React.createElement(MessageRenderer, { className: "uifw-popup-message-brief", message: message }),
|
|
71
|
+
detailedMessage && (React.createElement(MessageRenderer, { className: "uifw-popup-message-detailed", message: detailedMessage }))))),
|
|
73
72
|
showCloseButton && (
|
|
74
73
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events
|
|
75
74
|
React.createElement("div", { className: "uifw-popup-message-close", onClick: this._onInputMessageClose, role: "button", tabIndex: -1 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputField.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/InputField.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"InputField.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/InputField.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 Notification\n */\n\nimport \"./InputField.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { OutputMessagePriority } from \"@itwin/core-frontend\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport { Icon, MessageRenderer, Popup } from \"@itwin/core-react\";\nimport type { InputFieldMessageEventArgs } from \"../messages/MessageManager\";\nimport { MessageManager } from \"../messages/MessageManager\";\nimport type { NotifyMessageType } from \"./ReactNotifyMessageDetails\";\nimport {\n SvgClose,\n SvgInfoCircularHollow,\n SvgStatusError,\n SvgStatusWarning,\n} from \"@itwin/itwinui-icons-react\";\n\n/** Properties of [[InputFieldMessage]] component.\n * @public\n */\ninterface InputFieldMessageProps {\n showCloseButton?: boolean;\n}\n\n/** [[InputFieldMessage]] state.\n * @internal\n */\ninterface InputFieldMessageState {\n isVisible: boolean;\n priority: OutputMessagePriority;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n inputFieldElement?: HTMLElement;\n showCloseButton?: boolean;\n}\n\n/** InputField message pops up near pointer when attempting an invalid interaction.\n * @public\n */\nexport class InputFieldMessage extends React.PureComponent<\n InputFieldMessageProps,\n InputFieldMessageState\n> {\n public override readonly state: Readonly<InputFieldMessageState> = {\n message: \"\",\n isVisible: false,\n priority: OutputMessagePriority.None,\n showCloseButton: !!this.props.showCloseButton,\n };\n\n public override render(): React.ReactNode {\n const {\n isVisible,\n inputFieldElement,\n message,\n priority,\n detailedMessage,\n showCloseButton,\n } = this.state;\n\n if (!inputFieldElement || !message) {\n return null;\n }\n\n let iconComponent = <SvgInfoCircularHollow />;\n switch (priority) {\n case OutputMessagePriority.Warning:\n iconComponent = <SvgStatusWarning />;\n break;\n case OutputMessagePriority.Error:\n iconComponent = <SvgStatusError />;\n break;\n case OutputMessagePriority.Info:\n iconComponent = <SvgInfoCircularHollow />;\n break;\n }\n\n return (\n <Popup\n isOpen={isVisible}\n position={RelativePosition.BottomLeft}\n onClose={this._onInputMessageClose}\n target={inputFieldElement}\n >\n <div className=\"uifw-popup-message-inputField\">\n <div className=\"uifw-popup-message-inputField-content\">\n <div className=\"uifw-popup-message-inputField-primary\">\n {iconComponent && (\n <span className=\"uifw-popup-message-icon\">\n {\" \"}\n <i className={classnames(\"icon\", \"core-svg-icon\")}>\n {iconComponent}\n </i>{\" \"}\n </span>\n )}\n <span className=\"uifw-popup-message-text\">\n <MessageRenderer\n className=\"uifw-popup-message-brief\"\n message={message}\n />\n {detailedMessage && (\n <MessageRenderer\n className=\"uifw-popup-message-detailed\"\n message={detailedMessage}\n />\n )}\n </span>\n </div>\n </div>\n {showCloseButton && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <div\n className=\"uifw-popup-message-close\"\n onClick={this._onInputMessageClose}\n role=\"button\"\n tabIndex={-1}\n >\n <Icon iconSpec={<SvgClose />} />\n </div>\n )}\n </div>\n </Popup>\n );\n }\n\n public override componentDidMount(): void {\n MessageManager.onInputFieldMessageAddedEvent.addListener(\n this._handleInputFieldMessageAddedEvent\n );\n MessageManager.onInputFieldMessageRemovedEvent.addListener(\n this._handleInputFieldMessageRemovedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n MessageManager.onInputFieldMessageAddedEvent.removeListener(\n this._handleInputFieldMessageAddedEvent\n );\n MessageManager.onInputFieldMessageRemovedEvent.removeListener(\n this._handleInputFieldMessageRemovedEvent\n );\n }\n\n private _onInputMessageClose = () => {\n this.setState({ isVisible: false });\n };\n\n private _handleInputFieldMessageAddedEvent = (\n args: InputFieldMessageEventArgs\n ) => {\n this.setState({\n inputFieldElement: args.target as HTMLElement,\n message: args.messageText,\n isVisible: true,\n priority: args.priority,\n detailedMessage: args.detailedMessage,\n });\n };\n\n private _handleInputFieldMessageRemovedEvent = () => {\n this.setState({ isVisible: false });\n };\n}\n"]}
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import * as React from "react";
|
|
9
9
|
import classnames from "classnames";
|
|
10
|
-
import {
|
|
10
|
+
import { MessageRenderer } from "@itwin/core-react";
|
|
11
11
|
/** Message String/Label
|
|
12
12
|
* @internal
|
|
13
13
|
*/
|
|
14
14
|
export function MessageLabel(props) {
|
|
15
15
|
const classNames = classnames("uifw-statusbar-message-label", props.className);
|
|
16
|
-
return React.createElement(
|
|
16
|
+
return React.createElement(MessageRenderer, { className: classNames, message: props.message });
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=MessageLabel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageLabel.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageLabel.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MessageLabel.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageLabel.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAG5B;IACC,MAAM,UAAU,GAAG,UAAU,CAC3B,8BAA8B,EAC9B,KAAK,CAAC,SAAS,CAChB,CAAC;IACF,OAAO,oBAAC,eAAe,IAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAAC;AAC5E,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport { MessageRenderer } from \"@itwin/core-react\";\nimport type { NotifyMessageType } from \"./ReactNotifyMessageDetails\";\n\n/** Message String/Label\n * @internal\n */\nexport function MessageLabel(props: {\n message: NotifyMessageType;\n className: string;\n}) {\n const classNames = classnames(\n \"uifw-statusbar-message-label\",\n props.className\n );\n return <MessageRenderer className={classNames} message={props.message} />;\n}\n"]}
|