@itwin/appui-react 5.19.0 → 5.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/lib/appui-react/UiFramework.js +20 -13
- package/lib/appui-react/UiFramework.js.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
- package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
- package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
- package/lib/appui-react/accudraw/Calculator.js +92 -98
- package/lib/appui-react/accudraw/Calculator.js.map +1 -1
- package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
- package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
- package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
- package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
- package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
- package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
- package/lib/appui-react/accudraw/MenuButton.js +20 -20
- package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
- package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
- package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
- package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
- package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
- package/lib/appui-react/backstage/BackstageManager.js +1 -3
- package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
- package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
- package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
- package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
- package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
- package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
- package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
- package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
- package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
- package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/appui-react/configurableui/TimeTracker.js +25 -27
- package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/appui-react/content/ContentControl.js +2 -1
- package/lib/appui-react/content/ContentControl.js.map +1 -1
- package/lib/appui-react/content/ContentGroup.js +8 -4
- package/lib/appui-react/content/ContentGroup.js.map +1 -1
- package/lib/appui-react/content/ContentLayout.js +47 -38
- package/lib/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/appui-react/content/IModelViewport.js +28 -23
- package/lib/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
- package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/appui-react/content/InternalContentViewManager.js +9 -8
- package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/appui-react/content/StandardContentLayouts.js +141 -141
- package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
- package/lib/appui-react/content/ViewportContentControl.js +25 -22
- package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
- package/lib/appui-react/cursor/CursorInformation.js +7 -6
- package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
- package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
- package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
- package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
- package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
- package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
- package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
- package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/ModelessDialog.js +3 -3
- package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
- package/lib/appui-react/feedback/ElementTooltip.js +3 -1
- package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
- package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
- package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
- package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
- package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
- package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
- package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
- package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
- package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
- package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
- package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
- package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
- package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
- package/lib/appui-react/layout/backstage/Backstage.js +11 -14
- package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
- package/lib/appui-react/layout/base/DragManager.js +6 -7
- package/lib/appui-react/layout/base/DragManager.js.map +1 -1
- package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
- package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
- package/lib/appui-react/layout/popup/Tooltip.js +8 -11
- package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
- package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/Tab.js +7 -5
- package/lib/appui-react/layout/widget/Tab.js.map +1 -1
- package/lib/appui-react/messages/InputField.js +21 -24
- package/lib/appui-react/messages/InputField.js.map +1 -1
- package/lib/appui-react/messages/MessageManager.js +39 -38
- package/lib/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/appui-react/messages/Pointer.js +38 -38
- package/lib/appui-react/messages/Pointer.js.map +1 -1
- package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
- package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
- package/lib/appui-react/messages/StatusMessageManager.js +2 -4
- package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
- package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
- package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
- package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
- package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
- package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
- package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
- package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
- package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
- package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
- package/lib/appui-react/pickers/ListPicker.js +28 -28
- package/lib/appui-react/pickers/ListPicker.js.map +1 -1
- package/lib/appui-react/pickers/ViewSelector.js +87 -86
- package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/appui-react/popup/CardPopup.js +18 -21
- package/lib/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
- package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
- package/lib/appui-react/popup/InputEditorPopup.js +18 -20
- package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
- package/lib/appui-react/popup/PopupManager.js +22 -25
- package/lib/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
- package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
- package/lib/appui-react/popup/ToolbarPopup.js +18 -21
- package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
- package/lib/appui-react/redux/ReducerRegistry.js +2 -0
- package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
- package/lib/appui-react/redux/StateManager.js +4 -1
- package/lib/appui-react/redux/StateManager.js.map +1 -1
- package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
- package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
- package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
- package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
- package/lib/appui-react/shared/CommandItemDef.js +3 -3
- package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
- package/lib/appui-react/shared/CustomItemDef.js +4 -2
- package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
- package/lib/appui-react/shared/ItemDefBase.js +13 -5
- package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
- package/lib/appui-react/shared/MenuItem.js +6 -1
- package/lib/appui-react/shared/MenuItem.js.map +1 -1
- package/lib/appui-react/shared/ToolItemDef.js +1 -1
- package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
- package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
- package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
- package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
- package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
- package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
- package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
- package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
- package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
- package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
- package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
- package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
- package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
- package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
- package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
- package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
- package/lib/appui-react/toolbar/GroupItem.js +11 -5
- package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
- package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
- package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
- package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
- package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
- package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
- package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
- package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
- package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
- package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
- package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
- package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
- package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
- package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
- package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
- package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
- package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
- package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
- package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
- package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
- package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
- package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
- package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
- package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/appui-react/uistate/AppUiSettings.js +41 -33
- package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
- package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
- package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
- package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
- package/lib/appui-react/widgets/WidgetControl.js +2 -0
- package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
- package/lib/appui-react/widgets/WidgetDef.js +28 -7
- package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/appui-react/widgets/WidgetHost.js +4 -4
- package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/appui-react/widgets/WidgetManager.js +5 -7
- package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/package.json +9 -9
|
@@ -26,42 +26,8 @@ export class PointerMessageChangedEvent extends UiEvent {
|
|
|
26
26
|
* @public
|
|
27
27
|
*/
|
|
28
28
|
export class PointerMessage extends React.Component {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.state = {
|
|
32
|
-
message: "",
|
|
33
|
-
isVisible: false,
|
|
34
|
-
position: {
|
|
35
|
-
x: 0,
|
|
36
|
-
y: 0,
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
this._size = {
|
|
40
|
-
height: 0,
|
|
41
|
-
width: 0,
|
|
42
|
-
};
|
|
43
|
-
this._handleSizeChanged = (size) => {
|
|
44
|
-
this._size = size;
|
|
45
|
-
this.updatePosition();
|
|
46
|
-
};
|
|
47
|
-
this._handlePointerMessageChangedEvent = (args) => {
|
|
48
|
-
this._relativePosition = args.relativePosition;
|
|
49
|
-
this._viewport = args.viewport;
|
|
50
|
-
this._position = args.pt;
|
|
51
|
-
this.setState(() => ({
|
|
52
|
-
isVisible: args.isVisible,
|
|
53
|
-
message: args.message,
|
|
54
|
-
detailedMessage: args.detailedMessage,
|
|
55
|
-
messageDetails: args.messageDetails,
|
|
56
|
-
}));
|
|
57
|
-
this.updatePosition();
|
|
58
|
-
};
|
|
59
|
-
this._handlePointerMessagePositionChangedEvent = (args) => {
|
|
60
|
-
this._relativePosition = args.relativePosition;
|
|
61
|
-
this._position = args.pt;
|
|
62
|
-
this.updatePosition();
|
|
63
|
-
};
|
|
64
|
-
}
|
|
29
|
+
static _pointerMessageChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
30
|
+
static _onPointerMessagePositionChangedEvent = new BeUiEvent();
|
|
65
31
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
66
32
|
static get onPointerMessageChangedEvent() {
|
|
67
33
|
return PointerMessage._pointerMessageChangedEvent;
|
|
@@ -91,6 +57,21 @@ export class PointerMessage extends React.Component {
|
|
|
91
57
|
message: "",
|
|
92
58
|
});
|
|
93
59
|
}
|
|
60
|
+
state = {
|
|
61
|
+
message: "",
|
|
62
|
+
isVisible: false,
|
|
63
|
+
position: {
|
|
64
|
+
x: 0,
|
|
65
|
+
y: 0,
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
_relativePosition;
|
|
69
|
+
_viewport;
|
|
70
|
+
_position;
|
|
71
|
+
_size = {
|
|
72
|
+
height: 0,
|
|
73
|
+
width: 0,
|
|
74
|
+
};
|
|
94
75
|
render() {
|
|
95
76
|
if (!this.state.isVisible)
|
|
96
77
|
return null;
|
|
@@ -120,6 +101,27 @@ export class PointerMessage extends React.Component {
|
|
|
120
101
|
PointerMessage.onPointerMessageChangedEvent.removeListener(this._handlePointerMessageChangedEvent);
|
|
121
102
|
PointerMessage._onPointerMessagePositionChangedEvent.removeListener(this._handlePointerMessagePositionChangedEvent);
|
|
122
103
|
}
|
|
104
|
+
_handleSizeChanged = (size) => {
|
|
105
|
+
this._size = size;
|
|
106
|
+
this.updatePosition();
|
|
107
|
+
};
|
|
108
|
+
_handlePointerMessageChangedEvent = (args) => {
|
|
109
|
+
this._relativePosition = args.relativePosition;
|
|
110
|
+
this._viewport = args.viewport;
|
|
111
|
+
this._position = args.pt;
|
|
112
|
+
this.setState(() => ({
|
|
113
|
+
isVisible: args.isVisible,
|
|
114
|
+
message: args.message,
|
|
115
|
+
detailedMessage: args.detailedMessage,
|
|
116
|
+
messageDetails: args.messageDetails,
|
|
117
|
+
}));
|
|
118
|
+
this.updatePosition();
|
|
119
|
+
};
|
|
120
|
+
_handlePointerMessagePositionChangedEvent = (args) => {
|
|
121
|
+
this._relativePosition = args.relativePosition;
|
|
122
|
+
this._position = args.pt;
|
|
123
|
+
this.updatePosition();
|
|
124
|
+
};
|
|
123
125
|
updatePosition() {
|
|
124
126
|
const adjustmentOffset = 20;
|
|
125
127
|
let offset;
|
|
@@ -167,6 +169,4 @@ export class PointerMessage extends React.Component {
|
|
|
167
169
|
});
|
|
168
170
|
}
|
|
169
171
|
}
|
|
170
|
-
PointerMessage._pointerMessageChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
171
|
-
PointerMessage._onPointerMessagePositionChangedEvent = new BeUiEvent();
|
|
172
172
|
//# sourceMappingURL=Pointer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pointer.js","sourceRoot":"","sources":["../../../src/appui-react/messages/Pointer.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 \"./Pointer.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport {\n MessageSeverity,\n RelativePosition,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { OutputMessagePriority } from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { Icon, MessageContainer, MessageRenderer } from \"@itwin/core-react\";\nimport { Point, Rectangle } from \"@itwin/core-react/internal\";\nimport {\n offsetAndContainInContainer,\n Tooltip,\n} from \"../layout/popup/Tooltip.js\";\nimport { MessageManager } from \"./MessageManager.js\";\nimport type {\n NotifyMessageDetailsType,\n NotifyMessageType,\n} from \"./ReactNotifyMessageDetails.js\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Properties of [[PointerMessage]] component.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface PointerMessageProps extends CommonProps {\n /** Text to display */\n message?: string;\n}\n\n/** [[PointerMessage]] state.\n * @internal\n */\ninterface PointerMessageState {\n isVisible: boolean;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n position: XAndY;\n messageDetails?: NotifyMessageDetailsType;\n}\n\n/** [[PointerMessageChangedEvent]] arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PointerMessageChangedEventArgs {\n isVisible: boolean;\n priority: OutputMessagePriority;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n relativePosition?: RelativePosition;\n viewport?: HTMLElement;\n pt?: XAndY;\n messageDetails?: NotifyMessageDetailsType;\n}\n\n/** Pointer Message Changed Event emitted by the [[PointerMessage]] component\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PointerMessageChangedEvent extends UiEvent<PointerMessageChangedEventArgs> {}\n\n/** Pointer message pops up near pointer when attempting an invalid interaction.\n * @public\n */\nexport class PointerMessage extends React.Component<\n PointerMessageProps,\n PointerMessageState\n> {\n private static _pointerMessageChangedEvent =\n new BeUiEvent<PointerMessageChangedEventArgs>(); // eslint-disable-line @typescript-eslint/no-deprecated\n private static readonly _onPointerMessagePositionChangedEvent =\n new BeUiEvent<{\n pt: XAndY;\n relativePosition: RelativePosition;\n }>();\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static get onPointerMessageChangedEvent(): PointerMessageChangedEvent {\n return PointerMessage._pointerMessageChangedEvent;\n }\n\n public static showMessage(message: NotifyMessageDetailsType): void {\n PointerMessage.onPointerMessageChangedEvent.emit({\n isVisible: true,\n priority: message.priority,\n message: message.briefMessage,\n detailedMessage: message.detailedMessage,\n relativePosition: message.relativePosition,\n viewport: message.viewport,\n pt: message.displayPoint,\n messageDetails: message,\n });\n }\n\n public static updateMessage(\n displayPoint: XAndY,\n relativePosition: RelativePosition\n ): void {\n PointerMessage._onPointerMessagePositionChangedEvent.emit({\n pt: displayPoint,\n relativePosition,\n });\n }\n\n public static hideMessage(): void {\n PointerMessage.onPointerMessageChangedEvent.emit({\n isVisible: false,\n priority: OutputMessagePriority.None,\n message: \"\",\n });\n }\n\n public override readonly state: Readonly<PointerMessageState> = {\n message: \"\",\n isVisible: false,\n position: {\n x: 0,\n y: 0,\n },\n };\n\n private _relativePosition?: RelativePosition;\n private _viewport?: HTMLElement;\n private _position?: XAndY;\n private _size: SizeProps = {\n height: 0,\n width: 0,\n };\n\n public override render(): React.ReactNode {\n if (!this.state.isVisible) return null;\n\n const className = classnames(\"uifw-pointer-message\", this.props.className);\n const severity = MessageManager.getSeverity(this.state.messageDetails!);\n\n return (\n <Tooltip\n className={className}\n onSizeChanged={this._handleSizeChanged}\n position={this.state.position}\n style={this.props.style}\n >\n <div className=\"uifw-pointer-message-content\">\n {severity !== MessageSeverity.None && (\n <span className=\"uifw-pointer-message-icon\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Icon\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n className={`icon ${MessageContainer.getIconClassName(\n severity\n )}`}\n // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n iconSpec={`${MessageContainer.getIcon(severity, false)}`}\n />\n </span>\n )}\n <span className=\"uifw-pointer-message-text\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <MessageRenderer\n className=\"uifw-pointer-message-brief\"\n message={this.state.message}\n useSpan\n />\n {this.state.detailedMessage && (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <MessageRenderer\n className=\"uifw-pointer-message-detailed\"\n message={this.state.detailedMessage}\n />\n )}\n </span>\n </div>\n </Tooltip>\n );\n }\n\n public override componentDidMount(): void {\n PointerMessage.onPointerMessageChangedEvent.addListener(\n this._handlePointerMessageChangedEvent\n );\n PointerMessage._onPointerMessagePositionChangedEvent.addListener(\n this._handlePointerMessagePositionChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n PointerMessage.onPointerMessageChangedEvent.removeListener(\n this._handlePointerMessageChangedEvent\n );\n PointerMessage._onPointerMessagePositionChangedEvent.removeListener(\n this._handlePointerMessagePositionChangedEvent\n );\n }\n\n private _handleSizeChanged = (size: SizeProps) => {\n this._size = size;\n this.updatePosition();\n };\n\n private _handlePointerMessageChangedEvent: ListenerType<\n typeof PointerMessage.onPointerMessageChangedEvent\n > = (args) => {\n this._relativePosition = args.relativePosition;\n this._viewport = args.viewport;\n this._position = args.pt;\n this.setState(() => ({\n isVisible: args.isVisible,\n message: args.message,\n detailedMessage: args.detailedMessage,\n messageDetails: args.messageDetails,\n }));\n this.updatePosition();\n };\n\n private _handlePointerMessagePositionChangedEvent: ListenerType<\n typeof PointerMessage._onPointerMessagePositionChangedEvent\n > = (args) => {\n this._relativePosition = args.relativePosition;\n this._position = args.pt;\n this.updatePosition();\n };\n\n private updatePosition() {\n const adjustmentOffset = 20;\n let offset: XAndY | undefined;\n switch (this._relativePosition) {\n case RelativePosition.Top:\n offset = { x: 0, y: -adjustmentOffset };\n break;\n case RelativePosition.TopRight:\n offset = { x: adjustmentOffset, y: -adjustmentOffset };\n break;\n case RelativePosition.Right:\n offset = { x: adjustmentOffset, y: 0 };\n break;\n case RelativePosition.BottomRight:\n offset = { x: adjustmentOffset, y: adjustmentOffset };\n break;\n case RelativePosition.Bottom:\n offset = { x: 0, y: adjustmentOffset };\n break;\n case RelativePosition.BottomLeft:\n offset = { x: -adjustmentOffset, y: adjustmentOffset };\n break;\n case RelativePosition.Left:\n offset = { x: -adjustmentOffset, y: 0 };\n break;\n case RelativePosition.TopLeft:\n offset = { x: -adjustmentOffset, y: -adjustmentOffset };\n break;\n }\n\n this.setState((prevState) => {\n if (!this._viewport) return null;\n if (!this._position) return null;\n\n const containerBounds = Rectangle.create(\n this._viewport.getBoundingClientRect()\n );\n const relativeBounds = Rectangle.createFromSize(this._size).offset(\n this._position\n );\n const viewportOffset = new Point().getOffsetTo(containerBounds.topLeft());\n\n const adjustedPosition = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(viewportOffset);\n\n if (position.equals(prevState.position)) return null;\n\n return {\n position,\n };\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Pointer.js","sourceRoot":"","sources":["../../../src/appui-react/messages/Pointer.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 \"./Pointer.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport {\n MessageSeverity,\n RelativePosition,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { OutputMessagePriority } from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { Icon, MessageContainer, MessageRenderer } from \"@itwin/core-react\";\nimport { Point, Rectangle } from \"@itwin/core-react/internal\";\nimport {\n offsetAndContainInContainer,\n Tooltip,\n} from \"../layout/popup/Tooltip.js\";\nimport { MessageManager } from \"./MessageManager.js\";\nimport type {\n NotifyMessageDetailsType,\n NotifyMessageType,\n} from \"./ReactNotifyMessageDetails.js\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Properties of [[PointerMessage]] component.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface PointerMessageProps extends CommonProps {\n /** Text to display */\n message?: string;\n}\n\n/** [[PointerMessage]] state.\n * @internal\n */\ninterface PointerMessageState {\n isVisible: boolean;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n position: XAndY;\n messageDetails?: NotifyMessageDetailsType;\n}\n\n/** [[PointerMessageChangedEvent]] arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PointerMessageChangedEventArgs {\n isVisible: boolean;\n priority: OutputMessagePriority;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n relativePosition?: RelativePosition;\n viewport?: HTMLElement;\n pt?: XAndY;\n messageDetails?: NotifyMessageDetailsType;\n}\n\n/** Pointer Message Changed Event emitted by the [[PointerMessage]] component\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PointerMessageChangedEvent extends UiEvent<PointerMessageChangedEventArgs> {}\n\n/** Pointer message pops up near pointer when attempting an invalid interaction.\n * @public\n */\nexport class PointerMessage extends React.Component<\n PointerMessageProps,\n PointerMessageState\n> {\n private static _pointerMessageChangedEvent =\n new BeUiEvent<PointerMessageChangedEventArgs>(); // eslint-disable-line @typescript-eslint/no-deprecated\n private static readonly _onPointerMessagePositionChangedEvent =\n new BeUiEvent<{\n pt: XAndY;\n relativePosition: RelativePosition;\n }>();\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static get onPointerMessageChangedEvent(): PointerMessageChangedEvent {\n return PointerMessage._pointerMessageChangedEvent;\n }\n\n public static showMessage(message: NotifyMessageDetailsType): void {\n PointerMessage.onPointerMessageChangedEvent.emit({\n isVisible: true,\n priority: message.priority,\n message: message.briefMessage,\n detailedMessage: message.detailedMessage,\n relativePosition: message.relativePosition,\n viewport: message.viewport,\n pt: message.displayPoint,\n messageDetails: message,\n });\n }\n\n public static updateMessage(\n displayPoint: XAndY,\n relativePosition: RelativePosition\n ): void {\n PointerMessage._onPointerMessagePositionChangedEvent.emit({\n pt: displayPoint,\n relativePosition,\n });\n }\n\n public static hideMessage(): void {\n PointerMessage.onPointerMessageChangedEvent.emit({\n isVisible: false,\n priority: OutputMessagePriority.None,\n message: \"\",\n });\n }\n\n public override readonly state: Readonly<PointerMessageState> = {\n message: \"\",\n isVisible: false,\n position: {\n x: 0,\n y: 0,\n },\n };\n\n private _relativePosition?: RelativePosition;\n private _viewport?: HTMLElement;\n private _position?: XAndY;\n private _size: SizeProps = {\n height: 0,\n width: 0,\n };\n\n public override render(): React.ReactNode {\n if (!this.state.isVisible) return null;\n\n const className = classnames(\"uifw-pointer-message\", this.props.className);\n const severity = MessageManager.getSeverity(this.state.messageDetails!);\n\n return (\n <Tooltip\n className={className}\n onSizeChanged={this._handleSizeChanged}\n position={this.state.position}\n style={this.props.style}\n >\n <div className=\"uifw-pointer-message-content\">\n {severity !== MessageSeverity.None && (\n <span className=\"uifw-pointer-message-icon\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Icon\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n className={`icon ${MessageContainer.getIconClassName(\n severity\n )}`}\n // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n iconSpec={`${MessageContainer.getIcon(severity, false)}`}\n />\n </span>\n )}\n <span className=\"uifw-pointer-message-text\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <MessageRenderer\n className=\"uifw-pointer-message-brief\"\n message={this.state.message}\n useSpan\n />\n {this.state.detailedMessage && (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <MessageRenderer\n className=\"uifw-pointer-message-detailed\"\n message={this.state.detailedMessage}\n />\n )}\n </span>\n </div>\n </Tooltip>\n );\n }\n\n public override componentDidMount(): void {\n PointerMessage.onPointerMessageChangedEvent.addListener(\n this._handlePointerMessageChangedEvent\n );\n PointerMessage._onPointerMessagePositionChangedEvent.addListener(\n this._handlePointerMessagePositionChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n PointerMessage.onPointerMessageChangedEvent.removeListener(\n this._handlePointerMessageChangedEvent\n );\n PointerMessage._onPointerMessagePositionChangedEvent.removeListener(\n this._handlePointerMessagePositionChangedEvent\n );\n }\n\n private _handleSizeChanged = (size: SizeProps) => {\n this._size = size;\n this.updatePosition();\n };\n\n private _handlePointerMessageChangedEvent: ListenerType<\n typeof PointerMessage.onPointerMessageChangedEvent\n > = (args) => {\n this._relativePosition = args.relativePosition;\n this._viewport = args.viewport;\n this._position = args.pt;\n this.setState(() => ({\n isVisible: args.isVisible,\n message: args.message,\n detailedMessage: args.detailedMessage,\n messageDetails: args.messageDetails,\n }));\n this.updatePosition();\n };\n\n private _handlePointerMessagePositionChangedEvent: ListenerType<\n typeof PointerMessage._onPointerMessagePositionChangedEvent\n > = (args) => {\n this._relativePosition = args.relativePosition;\n this._position = args.pt;\n this.updatePosition();\n };\n\n private updatePosition() {\n const adjustmentOffset = 20;\n let offset: XAndY | undefined;\n switch (this._relativePosition) {\n case RelativePosition.Top:\n offset = { x: 0, y: -adjustmentOffset };\n break;\n case RelativePosition.TopRight:\n offset = { x: adjustmentOffset, y: -adjustmentOffset };\n break;\n case RelativePosition.Right:\n offset = { x: adjustmentOffset, y: 0 };\n break;\n case RelativePosition.BottomRight:\n offset = { x: adjustmentOffset, y: adjustmentOffset };\n break;\n case RelativePosition.Bottom:\n offset = { x: 0, y: adjustmentOffset };\n break;\n case RelativePosition.BottomLeft:\n offset = { x: -adjustmentOffset, y: adjustmentOffset };\n break;\n case RelativePosition.Left:\n offset = { x: -adjustmentOffset, y: 0 };\n break;\n case RelativePosition.TopLeft:\n offset = { x: -adjustmentOffset, y: -adjustmentOffset };\n break;\n }\n\n this.setState((prevState) => {\n if (!this._viewport) return null;\n if (!this._position) return null;\n\n const containerBounds = Rectangle.create(\n this._viewport.getBoundingClientRect()\n );\n const relativeBounds = Rectangle.createFromSize(this._size).offset(\n this._position\n );\n const viewportOffset = new Point().getOffsetTo(containerBounds.topLeft());\n\n const adjustedPosition = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(viewportOffset);\n\n if (position.equals(prevState.position)) return null;\n\n return {\n position,\n };\n });\n }\n}\n"]}
|
|
@@ -11,6 +11,12 @@ import { RelativePosition } from "@itwin/appui-abstract";
|
|
|
11
11
|
* @public
|
|
12
12
|
*/
|
|
13
13
|
export class ReactNotifyMessageDetails {
|
|
14
|
+
priority;
|
|
15
|
+
briefMessage;
|
|
16
|
+
detailedMessage;
|
|
17
|
+
msgType;
|
|
18
|
+
openAlert;
|
|
19
|
+
_notifyMessageDetails;
|
|
14
20
|
/** @internal */
|
|
15
21
|
get messageDetails() {
|
|
16
22
|
return this._notifyMessageDetails;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactNotifyMessageDetails.js","sourceRoot":"","sources":["../../../src/appui-react/messages/ReactNotifyMessageDetails.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAKH,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAgBzD;;GAEG;AACH,MAAM,OAAO,yBAAyB;
|
|
1
|
+
{"version":3,"file":"ReactNotifyMessageDetails.js","sourceRoot":"","sources":["../../../src/appui-react/messages/ReactNotifyMessageDetails.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAKH,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAgBzD;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAyC3B;IACA;IACA;IACA;IACA;IA5CD,qBAAqB,CAAuB;IAEpD,gBAAgB;IAChB,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,kDAAkD;IAClD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;IAChD,CAAC;IACD,IAAW,WAAW,CAAC,QAAoB;QACzC,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,QAAQ,CAAC;IACpD,CAAC;IAED,4CAA4C;IAC5C,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;IAC7C,CAAC;IACD,kCAAkC;IAClC,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;IACjD,CAAC;IACD,8CAA8C;IAC9C,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;IACrD,CAAC;IACD,oDAAoD;IACpD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,YACS,QAA+B,EAC/B,YAA+B,EAC/B,eAAmC,EACnC,UAAU,iBAAiB,CAAC,KAAK,EACjC,YAAY,kBAAkB,CAAC,IAAI;QAJnC,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,oBAAe,GAAf,eAAe,CAAoB;QACnC,YAAO,GAAP,OAAO,CAA0B;QACjC,cAAS,GAAT,SAAS,CAA0B;QAE1C,8CAA8C;QAC9C,IAAI,CAAC,qBAAqB,GAAG,IAAI,oBAAoB,CACnD,QAAQ,EACR,EAAE,EACF,SAAS,EACT,OAAO,EACP,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,qBAAqB,CAC1B,QAAqB,EACrB,YAAmB,EACnB,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ;QAE5C,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAC9C,QAAQ,EACR,YAAY,EACZ,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,wBAAwB,CAAC,UAAuB;QACrD,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAAY,EAC0B,EAAE;IACxC,OAAQ,OAAqC,CAAC,cAAc,KAAK,SAAS,CAAC;AAC7E,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport type { BeDuration } from \"@itwin/core-bentley\";\nimport type { Point2d, XAndY } from \"@itwin/core-geometry\";\nimport type { OutputMessagePriority } from \"@itwin/core-frontend\";\nimport {\n NotifyMessageDetails,\n OutputMessageAlert,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { MessageType } from \"@itwin/core-react\";\n\n/** Types for message in [[MessageManager]]\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport type NotifyMessageType = MessageType;\n\n/** Types for NotifyMessageDetails.\n * @public\n */\nexport type NotifyMessageDetailsType =\n | NotifyMessageDetails\n | ReactNotifyMessageDetails;\n\n/** Describes a message to be displayed to the user and adds support for React components in messages.\n * @public\n */\nexport class ReactNotifyMessageDetails {\n private _notifyMessageDetails: NotifyMessageDetails;\n\n /** @internal */\n public get messageDetails(): NotifyMessageDetails {\n return this._notifyMessageDetails;\n }\n\n /** Amount of time a Toast message is displayed */\n public get displayTime(): BeDuration {\n return this._notifyMessageDetails.displayTime;\n }\n public set displayTime(duration: BeDuration) {\n this._notifyMessageDetails.displayTime = duration;\n }\n\n /** Anchor viewport for a Pointer message */\n public get viewport(): HTMLElement | undefined {\n return this._notifyMessageDetails.viewport;\n }\n /** Point for a Pointer message */\n public get displayPoint(): Point2d | undefined {\n return this._notifyMessageDetails.displayPoint;\n }\n /** Relative position for a Pointer message */\n public get relativePosition(): RelativePosition {\n return this._notifyMessageDetails.relativePosition;\n }\n /** Anchor input field for an Input Field message */\n public get inputField(): HTMLElement | undefined {\n return this._notifyMessageDetails.inputField;\n }\n\n /** Constructor\n * @param priority The priority this message should be accorded by the NotificationManager.\n * @param briefMessage A short message that conveys the simplest explanation of the issue.\n * @param detailedMessage A comprehensive message that explains the issue in detail and potentially offers a solution.\n * @param msgType The type of message.\n * @param openAlert Whether an alert box should be displayed or not, and if so what kind.\n */\n public constructor(\n public priority: OutputMessagePriority,\n public briefMessage: NotifyMessageType,\n public detailedMessage?: NotifyMessageType,\n public msgType = OutputMessageType.Toast,\n public openAlert = OutputMessageAlert.None\n ) {\n /** Create an internal NotifyMessageDetails */\n this._notifyMessageDetails = new NotifyMessageDetails(\n priority,\n \"\",\n undefined,\n msgType,\n openAlert\n );\n }\n\n /** Set OutputMessageType.Pointer message details.\n * @param viewport Viewport over which to display the Pointer type message.\n * @param displayPoint Point at which to display the Pointer type message.\n * @param relativePosition Position relative to displayPoint at which to display the Pointer type message.\n */\n public setPointerTypeDetails(\n viewport: HTMLElement,\n displayPoint: XAndY,\n relativePosition = RelativePosition.TopRight\n ) {\n this._notifyMessageDetails.setPointerTypeDetails(\n viewport,\n displayPoint,\n relativePosition\n );\n }\n\n /** Set OutputMessageType.InputField message details.\n * @param inputField Input field that message pertains. The message will be shown just below this input field element.\n */\n public setInputFieldTypeDetails(inputField: HTMLElement) {\n this._notifyMessageDetails.setInputFieldTypeDetails(inputField);\n }\n}\n\n/** ReactNotifyMessageDetails type guard.\n * @internal\n */\nexport const isReactNotifyMessageDetails = (\n details: any\n): details is ReactNotifyMessageDetails => {\n return (details as ReactNotifyMessageDetails).messageDetails !== undefined;\n};\n"]}
|
|
@@ -11,10 +11,8 @@ import { OutputMessageType } from "@itwin/core-frontend";
|
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
13
13
|
export class StatusMessageManager {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this._messageId = 0;
|
|
17
|
-
}
|
|
14
|
+
_messages = [];
|
|
15
|
+
_messageId = 0;
|
|
18
16
|
initialize() {
|
|
19
17
|
this._messages = [];
|
|
20
18
|
this._messageId = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusMessageManager.js","sourceRoot":"","sources":["../../../src/appui-react/messages/StatusMessageManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAWzD;;GAEG;AACH,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"StatusMessageManager.js","sourceRoot":"","sources":["../../../src/appui-react/messages/StatusMessageManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAWzD;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACvB,SAAS,GAAiC,EAAE,CAAC;IAC7C,UAAU,GAAW,CAAC,CAAC;IAExB,UAAU;QACf,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,GAAG,CAAC,cAAwC;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAE5D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACxC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,sBAAsB;QAC/E,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,sDAAsD;QACtD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAC1C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,KAAK,iBAAiB,CAAC,MAAM,CACzE,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,0BAA0B,EAAE,CAAC;YACtE,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CACzC,cAAc,CAAC,0BAA0B,CAC1C,CAAC;YACF,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,EAAU;QACtB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CACzC,CAAC,OAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAC9C,CAAC;QAEF,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport type { NotifyMessageDetailsType } from \"./ReactNotifyMessageDetails.js\";\nimport type { MessageSeverity } from \"@itwin/appui-abstract\";\nimport { MessageManager } from \"./MessageManager.js\";\nimport { OutputMessageType } from \"@itwin/core-frontend\";\n\n/** Interface for Status Message\n * @internal\n */\nexport interface StatusMessage {\n id: string;\n messageDetails: NotifyMessageDetailsType;\n severity: MessageSeverity;\n}\n\n/** Manager for Status messages\n * @internal\n */\nexport class StatusMessageManager {\n private _messages: ReadonlyArray<StatusMessage> = [];\n private _messageId: number = 0;\n\n public initialize() {\n this._messages = [];\n this._messageId = 0;\n }\n\n public get messages() {\n return this._messages;\n }\n\n public add(messageDetails: NotifyMessageDetailsType): void {\n const id = this._messageId.toString();\n const severity = MessageManager.getSeverity(messageDetails);\n\n const messages = this._messages.slice();\n messages.splice(0, 0, { id, messageDetails, severity }); // Insert at beginning\n this._messages = messages;\n\n this._messageId++;\n\n /** Remove Sticky messages beyond the max displayed */\n const stickyMessages = this._messages.filter(\n (message) => message.messageDetails.msgType === OutputMessageType.Sticky\n );\n if (stickyMessages.length > MessageManager.maxDisplayedStickyMessages) {\n const removeMessages = stickyMessages.slice(\n MessageManager.maxDisplayedStickyMessages\n );\n for (const removeMessage of removeMessages) {\n this.remove(removeMessage.id);\n }\n }\n }\n\n public remove(id: string): boolean {\n let result = false;\n const foundIndex = this._messages.findIndex(\n (message: StatusMessage) => message.id === id\n );\n\n if (foundIndex >= 0) {\n const messages = this._messages.slice();\n messages.splice(foundIndex, 1);\n this._messages = messages;\n result = true;\n }\n\n return result;\n }\n}\n"]}
|
|
@@ -14,6 +14,7 @@ import { NavigationAidControl } from "./NavigationAidControl.js";
|
|
|
14
14
|
*/
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
16
16
|
export class CubeNavigationAidControl extends NavigationAidControl {
|
|
17
|
+
static navigationAidId = "CubeNavigationAid";
|
|
17
18
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
18
19
|
constructor(info, options) {
|
|
19
20
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -24,5 +25,4 @@ export class CubeNavigationAidControl extends NavigationAidControl {
|
|
|
24
25
|
return "96px";
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
|
-
CubeNavigationAidControl.navigationAidId = "CubeNavigationAid";
|
|
28
28
|
//# sourceMappingURL=CubeNavigationAidControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeNavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/CubeNavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;
|
|
1
|
+
{"version":3,"file":"CubeNavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/CubeNavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IACzD,MAAM,CAAC,eAAe,GAAG,mBAAmB,CAAC;IAEpD,4DAA4D;IAC5D,YAAY,IAA4B,EAAE,OAAY;QACpD,4DAA4D;QAC5D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CACf,oBAAC,iBAAiB,IAChB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAC1B,CACH,CAAC;IACJ,CAAC;IAEe,OAAO;QACrB,OAAO,MAAM,CAAC;IAChB,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 NavigationAids\n */\n\nimport * as React from \"react\";\nimport { CubeNavigationAid } from \"@itwin/imodel-components-react\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\n\n/** Navigation Aid that displays an interactive rotation cube for Spatial views that synchronizes with the rotation of the iModel Viewport\n * @public\n * @deprecated in 4.16.0. Use {@link @itwin/imodel-components-react#CubeNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class CubeNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"CubeNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n super(info, options);\n this.reactNode = (\n <CubeNavigationAid\n iModelConnection={options.imodel}\n viewport={options.viewport}\n />\n );\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n"]}
|
|
@@ -14,6 +14,7 @@ import { NavigationAidControl } from "./NavigationAidControl.js";
|
|
|
14
14
|
*/
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
16
16
|
export class DrawingNavigationAidControl extends NavigationAidControl {
|
|
17
|
+
static navigationAidId = "DrawingNavigationAid";
|
|
17
18
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
18
19
|
constructor(info, options) {
|
|
19
20
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -24,5 +25,4 @@ export class DrawingNavigationAidControl extends NavigationAidControl {
|
|
|
24
25
|
return "96px";
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
|
-
DrawingNavigationAidControl.navigationAidId = "DrawingNavigationAid";
|
|
28
28
|
//# sourceMappingURL=DrawingNavigationAidControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingNavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/DrawingNavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;
|
|
1
|
+
{"version":3,"file":"DrawingNavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/DrawingNavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;IAC5D,MAAM,CAAC,eAAe,GAAG,sBAAsB,CAAC;IAEvD,4DAA4D;IAC5D,YAAY,IAA4B,EAAE,OAAY;QACpD,4DAA4D;QAC5D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CACf,oBAAC,oBAAoB,IACnB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAC1B,CACH,CAAC;IACJ,CAAC;IAEe,OAAO;QACrB,OAAO,MAAM,CAAC;IAChB,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 NavigationAids\n */\n\nimport * as React from \"react\";\nimport { DrawingNavigationAid } from \"@itwin/imodel-components-react\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\n\n/** Navigation Aid that displays an interactive mini-map for Drawing views that synchronizes with the iModel Viewport.\n * @public\n * @deprecated in 4.16.0. Use {@link @itwin/imodel-components-react#DrawingNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class DrawingNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"DrawingNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n super(info, options);\n this.reactNode = (\n <DrawingNavigationAid\n iModelConnection={options.imodel}\n viewport={options.viewport}\n />\n );\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n"]}
|
|
@@ -18,6 +18,7 @@ export class NavigationAidActivatedEvent extends UiEvent {
|
|
|
18
18
|
* @deprecated in 4.16.0. Extends a deprecated class {@link ConfigurableUiControl}.
|
|
19
19
|
*/
|
|
20
20
|
export class NavigationAidControl extends ConfigurableUiControl {
|
|
21
|
+
_reactNode;
|
|
21
22
|
constructor(info, options) {
|
|
22
23
|
super(info, options);
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/NavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4CAA4C,CAAC;AAapD;;;GAGG;AACH,MAAM,OAAO,2BAA4B,SAAQ,OAAwC;CAAG;AAE5F;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,qBAAqB;
|
|
1
|
+
{"version":3,"file":"NavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/NavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EACL,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4CAA4C,CAAC;AAapD;;;GAGG;AACH,MAAM,OAAO,2BAA4B,SAAQ,OAAwC;CAAG;AAE5F;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,qBAAqB;IACrD,UAAU,CAAkB;IAEpC,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,qDAAqD;IACrD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,SAAS,CAAC,CAAkB;QACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,+FAA+F;IACxF,OAAO;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,oCAAoC;IAC7B,OAAO;QACZ,OAAO,yBAAyB,CAAC,aAAa,CAAC;IACjD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NavigationAids\n */\n\nimport type * as React from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport {\n ConfigurableUiControl,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** NavigationAid Activated Event Args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface NavigationAidActivatedEventArgs {\n navigationAidId: string;\n iModelConnection: IModelConnection;\n}\n\n/** NavigationAid Activated Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\nexport class NavigationAidActivatedEvent extends UiEvent<NavigationAidActivatedEventArgs> {}\n\n/** The base class for Navigation Aid controls.\n * @public\n * @deprecated in 4.16.0. Extends a deprecated class {@link ConfigurableUiControl}.\n */\nexport class NavigationAidControl extends ConfigurableUiControl {\n private _reactNode: React.ReactNode;\n\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n }\n\n /** The React element associated with this control */\n public get reactNode(): React.ReactNode {\n return this._reactNode;\n }\n public set reactNode(r: React.ReactNode) {\n this._reactNode = r;\n }\n\n /** Square size of navigation aid. Default size is \"64px\". Override to set a different size. */\n public getSize(): string | undefined {\n return undefined;\n }\n\n /** Get the type of this control. */\n public getType(): ConfigurableUiControlType {\n return ConfigurableUiControlType.NavigationAid;\n }\n}\n"]}
|
|
@@ -22,6 +22,7 @@ import { SvgChevronLeft, SvgChevronRight } from "@itwin/itwinui-icons-react";
|
|
|
22
22
|
*/
|
|
23
23
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
24
24
|
export class SheetNavigationAidControl extends NavigationAidControl {
|
|
25
|
+
static navigationAidId = "SheetNavigationAid";
|
|
25
26
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
26
27
|
constructor(info, options) {
|
|
27
28
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -32,66 +33,18 @@ export class SheetNavigationAidControl extends NavigationAidControl {
|
|
|
32
33
|
return "96px";
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
|
-
SheetNavigationAidControl.navigationAidId = "SheetNavigationAid";
|
|
36
36
|
/** A Sheet Navigation Aid.
|
|
37
37
|
* @public
|
|
38
38
|
*/
|
|
39
39
|
export class SheetNavigationAid extends React.Component {
|
|
40
|
+
_isMounted = false;
|
|
41
|
+
state = {
|
|
42
|
+
index: 0,
|
|
43
|
+
sheetData: [],
|
|
44
|
+
};
|
|
45
|
+
_viewport;
|
|
40
46
|
constructor(props) {
|
|
41
47
|
super(props);
|
|
42
|
-
this._isMounted = false;
|
|
43
|
-
this.state = {
|
|
44
|
-
index: 0,
|
|
45
|
-
sheetData: [],
|
|
46
|
-
};
|
|
47
|
-
/** Sets index of newly selected card */
|
|
48
|
-
this._handleCardSelected = (event) => {
|
|
49
|
-
event &&
|
|
50
|
-
this.setState({
|
|
51
|
-
index: event.index,
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
/** Updates view to the next lowest index in sheetData */
|
|
55
|
-
this._handleOnClickLeftArrow = () => {
|
|
56
|
-
this.setState((prevState) => ({
|
|
57
|
-
index: prevState.index <= 0
|
|
58
|
-
? prevState.sheetData.length - 1
|
|
59
|
-
: prevState.index - 1,
|
|
60
|
-
}), async () => this._updateView());
|
|
61
|
-
};
|
|
62
|
-
/** Updates view to next highest index in sheetData */
|
|
63
|
-
this._handleOnClickRightArrow = () => {
|
|
64
|
-
this.setState((prevState) => ({
|
|
65
|
-
index: (prevState.index + 1) % prevState.sheetData.length,
|
|
66
|
-
}), async () => this._updateView());
|
|
67
|
-
};
|
|
68
|
-
/** Handles a Viewport change & synchs the index */
|
|
69
|
-
this._handleSelectedViewportChanged = (args) => {
|
|
70
|
-
if (args.current) {
|
|
71
|
-
this._handleViewportChanged(args.current);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
this._handleViewIdChanged = (args) => {
|
|
75
|
-
if (this._viewport === args.viewport)
|
|
76
|
-
this._handleViewportChanged(args.viewport);
|
|
77
|
-
};
|
|
78
|
-
/** Handles a Viewport change & synchs the index */
|
|
79
|
-
this._handleViewportChanged = (viewport) => {
|
|
80
|
-
const className = ViewUtilities.getBisBaseClass(viewport.view.classFullName);
|
|
81
|
-
if (ViewUtilities.isSheet(className)) {
|
|
82
|
-
this._viewport = viewport;
|
|
83
|
-
const viewId = this._viewport.view.id.toString();
|
|
84
|
-
const index = this.state.sheetData.findIndex((sheetData) => {
|
|
85
|
-
return viewId === sheetData.viewId;
|
|
86
|
-
});
|
|
87
|
-
if (index >= 0)
|
|
88
|
-
this.setState({ index });
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
/** Opens a new SheetsModelFrontstage on sheetName click */
|
|
92
|
-
this._handleOnClickSheetName = () => {
|
|
93
|
-
UiFramework.frontstages.openModalFrontstage(this.modalFrontstage());
|
|
94
|
-
};
|
|
95
48
|
this._viewport = IModelApp.viewManager.selectedView;
|
|
96
49
|
}
|
|
97
50
|
/** Adds listeners when components mounts */
|
|
@@ -171,6 +124,50 @@ export class SheetNavigationAid extends React.Component {
|
|
|
171
124
|
}
|
|
172
125
|
return (React.createElement("div", { className: classnames("uifw-sheet-navigation", this.props.className), style: this.props.style }, content));
|
|
173
126
|
}
|
|
127
|
+
/** Sets index of newly selected card */
|
|
128
|
+
_handleCardSelected = (event) => {
|
|
129
|
+
event &&
|
|
130
|
+
this.setState({
|
|
131
|
+
index: event.index,
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
/** Updates view to the next lowest index in sheetData */
|
|
135
|
+
_handleOnClickLeftArrow = () => {
|
|
136
|
+
this.setState((prevState) => ({
|
|
137
|
+
index: prevState.index <= 0
|
|
138
|
+
? prevState.sheetData.length - 1
|
|
139
|
+
: prevState.index - 1,
|
|
140
|
+
}), async () => this._updateView());
|
|
141
|
+
};
|
|
142
|
+
/** Updates view to next highest index in sheetData */
|
|
143
|
+
_handleOnClickRightArrow = () => {
|
|
144
|
+
this.setState((prevState) => ({
|
|
145
|
+
index: (prevState.index + 1) % prevState.sheetData.length,
|
|
146
|
+
}), async () => this._updateView());
|
|
147
|
+
};
|
|
148
|
+
/** Handles a Viewport change & synchs the index */
|
|
149
|
+
_handleSelectedViewportChanged = (args) => {
|
|
150
|
+
if (args.current) {
|
|
151
|
+
this._handleViewportChanged(args.current);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
_handleViewIdChanged = (args) => {
|
|
155
|
+
if (this._viewport === args.viewport)
|
|
156
|
+
this._handleViewportChanged(args.viewport);
|
|
157
|
+
};
|
|
158
|
+
/** Handles a Viewport change & synchs the index */
|
|
159
|
+
_handleViewportChanged = (viewport) => {
|
|
160
|
+
const className = ViewUtilities.getBisBaseClass(viewport.view.classFullName);
|
|
161
|
+
if (ViewUtilities.isSheet(className)) {
|
|
162
|
+
this._viewport = viewport;
|
|
163
|
+
const viewId = this._viewport.view.id.toString();
|
|
164
|
+
const index = this.state.sheetData.findIndex((sheetData) => {
|
|
165
|
+
return viewId === sheetData.viewId;
|
|
166
|
+
});
|
|
167
|
+
if (index >= 0)
|
|
168
|
+
this.setState({ index });
|
|
169
|
+
}
|
|
170
|
+
};
|
|
174
171
|
/** Updates view to currently set sheet */
|
|
175
172
|
async _updateView() {
|
|
176
173
|
const viewState = await this.props.iModelConnection.views.load(this.state.sheetData[this.state.index].viewId);
|
|
@@ -181,5 +178,9 @@ export class SheetNavigationAid extends React.Component {
|
|
|
181
178
|
modalFrontstage() {
|
|
182
179
|
return new SheetsModalFrontstage(this.state.sheetData, this.props.iModelConnection, this.state.index);
|
|
183
180
|
}
|
|
181
|
+
/** Opens a new SheetsModelFrontstage on sheetName click */
|
|
182
|
+
_handleOnClickSheetName = () => {
|
|
183
|
+
UiFramework.frontstages.openModalFrontstage(this.modalFrontstage());
|
|
184
|
+
};
|
|
184
185
|
}
|
|
185
186
|
//# sourceMappingURL=SheetNavigationAid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetNavigationAid.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/SheetNavigationAid.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 NavigationAids\n */\n\nimport \"./SheetNavigationAid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n IModelConnection,\n ScreenViewport,\n SelectedViewportChangedArgs,\n} from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { ViewportComponentEvents } from \"@itwin/imodel-components-react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport type { ModalFrontstageInfo } from \"../framework/FrameworkFrontstages.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { ViewUtilities } from \"../utils/ViewUtilities.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\nimport {\n CardContainer,\n SheetsModalFrontstage,\n} from \"./SheetsModalFrontstage.js\";\nimport { IconButton, ProgressRadial } from \"@itwin/itwinui-react\";\nimport { SvgChevronLeft, SvgChevronRight } from \"@itwin/itwinui-icons-react\";\n\n/** A Sheet Navigation Aid control.\n * @public\n * @deprecated in 4.16.0. Use {@link SheetNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class SheetNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"SheetNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n super(info, options);\n this.reactNode = <SheetNavigationAid iModelConnection={options.imodel} />;\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n\n/** Data displayed about sheet\n * @alpha\n */\nexport interface SheetData {\n name: string;\n viewId: string;\n}\n\n/** Properties for the [[SheetNavigationAid]] component\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface SheetNavigationProps extends CommonProps {\n iModelConnection: IModelConnection;\n}\n\ninterface SheetNavigationState {\n index: number;\n sheetData: SheetData[];\n}\n\n/** A Sheet Navigation Aid.\n * @public\n */\nexport class SheetNavigationAid extends React.Component<\n SheetNavigationProps,\n SheetNavigationState\n> {\n private _isMounted = false;\n\n public override readonly state: Readonly<SheetNavigationState> = {\n index: 0,\n sheetData: [],\n };\n\n private _viewport: ScreenViewport | undefined;\n\n constructor(props: SheetNavigationProps) {\n super(props);\n\n this._viewport = IModelApp.viewManager.selectedView;\n }\n\n /** Adds listeners when components mounts */\n public override async componentDidMount() {\n this._isMounted = true;\n\n CardContainer.onCardSelectedEvent.addListener(this._handleCardSelected);\n ViewportComponentEvents.onViewIdChangedEvent.addListener(\n this._handleViewIdChanged\n );\n\n IModelApp.viewManager.onSelectedViewportChanged.addListener(\n this._handleSelectedViewportChanged\n );\n\n const stateData = await this._setupSheets();\n\n if (this._isMounted) this.setState(stateData);\n }\n\n /** Removes listeners when component will unmount */\n public override componentWillUnmount() {\n this._isMounted = false;\n\n CardContainer.onCardSelectedEvent.removeListener(this._handleCardSelected);\n ViewportComponentEvents.onViewIdChangedEvent.removeListener(\n this._handleViewIdChanged\n );\n\n IModelApp.viewManager.onSelectedViewportChanged.removeListener(\n this._handleSelectedViewportChanged\n );\n }\n\n /** Queries for sheet info and sets as sheetData */\n private async _setupSheets(): Promise<SheetNavigationState> {\n const stateData: SheetNavigationState = {\n index: 0,\n sheetData: [],\n };\n\n if (\n !this.props.iModelConnection ||\n !this.props.iModelConnection.views.getViewList\n )\n return stateData;\n\n let viewId = \"\";\n if (this._viewport) {\n viewId = this._viewport.view.id.toString();\n }\n\n const sheets = await this.props.iModelConnection.views.getViewList({\n from: \"BisCore.SheetViewDefinition\",\n });\n sheets.forEach((viewSpec: IModelConnection.ViewSpec, index: number) => {\n stateData.sheetData.push({ name: viewSpec.name, viewId: viewSpec.id });\n if (viewSpec.id === viewId) stateData.index = index;\n });\n\n return stateData;\n }\n\n public override render(): React.ReactNode {\n const name =\n this.state.sheetData.length > 0\n ? this.state.sheetData[this.state.index].name\n : \"\";\n const leftIndex =\n this.state.index === 0\n ? this.state.sheetData.length - 1\n : this.state.index - 1;\n const rightIndex =\n this.state.index >= this.state.sheetData.length - 1\n ? 0\n : this.state.index + 1;\n const leftTitle = this.state.sheetData[leftIndex]\n ? this.state.sheetData[leftIndex].name\n : undefined;\n const rightTitle = this.state.sheetData[rightIndex]\n ? this.state.sheetData[rightIndex].name\n : undefined;\n\n let content: React.ReactNode;\n if (this.state.sheetData.length > 0) {\n content = (\n <>\n <div className=\"sheet-title\">\n {UiFramework.translate(\"general.sheet\")}\n </div>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n className=\"sheet-name\"\n title={name}\n onClick={this._handleOnClickSheetName}\n role=\"button\"\n tabIndex={-1}\n >\n {name}\n </div>\n <div className=\"sheet-container\">\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <IconButton\n size=\"small\"\n styleType=\"borderless\"\n onClick={this._handleOnClickLeftArrow}\n tabIndex={-1}\n label={leftTitle}\n >\n <SvgChevronLeft />\n </IconButton>\n <div>\n {this.state.index + 1} {UiFramework.translate(\"general.of\")}\n {this.state.sheetData.length}\n </div>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <IconButton\n size=\"small\"\n styleType=\"borderless\"\n onClick={this._handleOnClickRightArrow}\n role=\"button\"\n tabIndex={-1}\n label={rightTitle}\n >\n <SvgChevronRight />\n </IconButton>\n </div>\n </>\n );\n } else {\n content = <ProgressRadial size=\"x-small\" indeterminate />;\n }\n\n return (\n <div\n className={classnames(\"uifw-sheet-navigation\", this.props.className)}\n style={this.props.style}\n >\n {content}\n </div>\n );\n }\n\n /** Sets index of newly selected card */\n private _handleCardSelected: ListenerType<\n typeof CardContainer.onCardSelectedEvent\n > = (event) => {\n event &&\n this.setState({\n index: event.index,\n });\n };\n\n /** Updates view to the next lowest index in sheetData */\n private _handleOnClickLeftArrow = () => {\n this.setState(\n (prevState) => ({\n index:\n prevState.index <= 0\n ? prevState.sheetData.length - 1\n : prevState.index - 1,\n }),\n async () => this._updateView()\n );\n };\n\n /** Updates view to next highest index in sheetData */\n private _handleOnClickRightArrow = () => {\n this.setState(\n (prevState) => ({\n index: (prevState.index + 1) % prevState.sheetData.length,\n }),\n async () => this._updateView()\n );\n };\n\n /** Handles a Viewport change & synchs the index */\n private _handleSelectedViewportChanged = (\n args: SelectedViewportChangedArgs\n ) => {\n if (args.current) {\n this._handleViewportChanged(args.current);\n }\n };\n\n private _handleViewIdChanged: ListenerType<\n typeof ViewportComponentEvents.onViewIdChangedEvent\n > = (args) => {\n if (this._viewport === args.viewport)\n this._handleViewportChanged(args.viewport as ScreenViewport);\n };\n\n /** Handles a Viewport change & synchs the index */\n private _handleViewportChanged = (viewport: ScreenViewport) => {\n const className = ViewUtilities.getBisBaseClass(\n viewport.view.classFullName\n );\n\n if (ViewUtilities.isSheet(className)) {\n this._viewport = viewport;\n\n const viewId = this._viewport.view.id.toString();\n\n const index = this.state.sheetData.findIndex((sheetData: SheetData) => {\n return viewId === sheetData.viewId;\n });\n\n if (index >= 0) this.setState({ index });\n }\n };\n\n /** Updates view to currently set sheet */\n private async _updateView() {\n const viewState = await this.props.iModelConnection.views.load(\n this.state.sheetData[this.state.index].viewId\n );\n if (this._viewport) this._viewport.changeView(viewState);\n }\n\n /** Creates a new SheetsModalFrontstage */\n private modalFrontstage(): ModalFrontstageInfo {\n return new SheetsModalFrontstage(\n this.state.sheetData,\n this.props.iModelConnection,\n this.state.index\n );\n }\n\n /** Opens a new SheetsModelFrontstage on sheetName click */\n private _handleOnClickSheetName = () => {\n UiFramework.frontstages.openModalFrontstage(this.modalFrontstage());\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SheetNavigationAid.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/SheetNavigationAid.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AACnC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAKzE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,aAAa,EACb,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7E;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,yBAA0B,SAAQ,oBAAoB;IAC1D,MAAM,CAAC,eAAe,GAAG,oBAAoB,CAAC;IAErD,4DAA4D;IAC5D,YAAY,IAA4B,EAAE,OAAY;QACpD,4DAA4D;QAC5D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,oBAAC,kBAAkB,IAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,GAAI,CAAC;IAC5E,CAAC;IAEe,OAAO;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;;AAwBH;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK,CAAC,SAG7C;IACS,UAAU,GAAG,KAAK,CAAC;IAEF,KAAK,GAAmC;QAC/D,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,EAAE;KACd,CAAC;IAEM,SAAS,CAA6B;IAE9C,YAAY,KAA2B;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC;IACtD,CAAC;IAED,4CAA4C;IAC5B,KAAK,CAAC,iBAAiB;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACxE,uBAAuB,CAAC,oBAAoB,CAAC,WAAW,CACtD,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QAEF,SAAS,CAAC,WAAW,CAAC,yBAAyB,CAAC,WAAW,CACzD,IAAI,CAAC,8BAA8B,CACpC,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,oDAAoD;IACpC,oBAAoB;QAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC3E,uBAAuB,CAAC,oBAAoB,CAAC,cAAc,CACzD,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QAEF,SAAS,CAAC,WAAW,CAAC,yBAAyB,CAAC,cAAc,CAC5D,IAAI,CAAC,8BAA8B,CACpC,CAAC;IACJ,CAAC;IAED,mDAAmD;IAC3C,KAAK,CAAC,YAAY;QACxB,MAAM,SAAS,GAAyB;YACtC,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,IACE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC5B,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW;YAE9C,OAAO,SAAS,CAAC;QAEnB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;YACjE,IAAI,EAAE,6BAA6B;SACpC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,CAAC,QAAmC,EAAE,KAAa,EAAE,EAAE;YACpE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,IAAI,QAAQ,CAAC,EAAE,KAAK,MAAM;gBAAE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAEe,MAAM;QACpB,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;YAC7C,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,SAAS,GACb,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;YACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,UAAU,GACd,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI;YACtC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;YACjD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI;YACvC,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,OAAwB,CAAC;QAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,GAAG,CACR;gBACE,6BAAK,SAAS,EAAC,aAAa,IACzB,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CACnC;gBAEN,6BACE,SAAS,EAAC,YAAY,EACtB,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,IAAI,CAAC,uBAAuB,EACrC,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,IAEX,IAAI,CACD;gBACN,6BAAK,SAAS,EAAC,iBAAiB;oBAE9B,oBAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,IAAI,CAAC,uBAAuB,EACrC,QAAQ,EAAE,CAAC,CAAC,EACZ,KAAK,EAAE,SAAS;wBAEhB,oBAAC,cAAc,OAAG,CACP;oBACb;wBACG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;;wBAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC;wBAC1D,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CACxB;oBAEN,oBAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,IAAI,CAAC,wBAAwB,EACtC,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,KAAK,EAAE,UAAU;wBAEjB,oBAAC,eAAe,OAAG,CACR,CACT,CACL,CACJ,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,oBAAC,cAAc,IAAC,IAAI,EAAC,SAAS,EAAC,aAAa,SAAG,CAAC;QAC5D,CAAC;QAED,OAAO,CACL,6BACE,SAAS,EAAE,UAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EACpE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAEtB,OAAO,CACJ,CACP,CAAC;IACJ,CAAC;IAED,wCAAwC;IAChC,mBAAmB,GAEvB,CAAC,KAAK,EAAE,EAAE;QACZ,KAAK;YACH,IAAI,CAAC,QAAQ,CAAC;gBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,yDAAyD;IACjD,uBAAuB,GAAG,GAAG,EAAE;QACrC,IAAI,CAAC,QAAQ,CACX,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACd,KAAK,EACH,SAAS,CAAC,KAAK,IAAI,CAAC;gBAClB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;gBAChC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC;SAC1B,CAAC,EACF,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAC/B,CAAC;IACJ,CAAC,CAAC;IAEF,sDAAsD;IAC9C,wBAAwB,GAAG,GAAG,EAAE;QACtC,IAAI,CAAC,QAAQ,CACX,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACd,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM;SAC1D,CAAC,EACF,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAC/B,CAAC;IACJ,CAAC,CAAC;IAEF,mDAAmD;IAC3C,8BAA8B,GAAG,CACvC,IAAiC,EACjC,EAAE;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC;IAEM,oBAAoB,GAExB,CAAC,IAAI,EAAE,EAAE;QACX,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ;YAClC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAA0B,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,mDAAmD;IAC3C,sBAAsB,GAAG,CAAC,QAAwB,EAAE,EAAE;QAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,eAAe,CAC7C,QAAQ,CAAC,IAAI,CAAC,aAAa,CAC5B,CAAC;QAEF,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,SAAoB,EAAE,EAAE;gBACpE,OAAO,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,CAAC;gBAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;IAEF,0CAA0C;IAClC,KAAK,CAAC,WAAW;QACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAC5D,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAC9C,CAAC;QACF,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,0CAA0C;IAClC,eAAe;QACrB,OAAO,IAAI,qBAAqB,CAC9B,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,CACjB,CAAC;IACJ,CAAC;IAED,2DAA2D;IACnD,uBAAuB,GAAG,GAAG,EAAE;QACrC,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC;CACH","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NavigationAids\n */\n\nimport \"./SheetNavigationAid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n IModelConnection,\n ScreenViewport,\n SelectedViewportChangedArgs,\n} from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { ViewportComponentEvents } from \"@itwin/imodel-components-react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport type { ModalFrontstageInfo } from \"../framework/FrameworkFrontstages.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { ViewUtilities } from \"../utils/ViewUtilities.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\nimport {\n CardContainer,\n SheetsModalFrontstage,\n} from \"./SheetsModalFrontstage.js\";\nimport { IconButton, ProgressRadial } from \"@itwin/itwinui-react\";\nimport { SvgChevronLeft, SvgChevronRight } from \"@itwin/itwinui-icons-react\";\n\n/** A Sheet Navigation Aid control.\n * @public\n * @deprecated in 4.16.0. Use {@link SheetNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class SheetNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"SheetNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n super(info, options);\n this.reactNode = <SheetNavigationAid iModelConnection={options.imodel} />;\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n\n/** Data displayed about sheet\n * @alpha\n */\nexport interface SheetData {\n name: string;\n viewId: string;\n}\n\n/** Properties for the [[SheetNavigationAid]] component\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface SheetNavigationProps extends CommonProps {\n iModelConnection: IModelConnection;\n}\n\ninterface SheetNavigationState {\n index: number;\n sheetData: SheetData[];\n}\n\n/** A Sheet Navigation Aid.\n * @public\n */\nexport class SheetNavigationAid extends React.Component<\n SheetNavigationProps,\n SheetNavigationState\n> {\n private _isMounted = false;\n\n public override readonly state: Readonly<SheetNavigationState> = {\n index: 0,\n sheetData: [],\n };\n\n private _viewport: ScreenViewport | undefined;\n\n constructor(props: SheetNavigationProps) {\n super(props);\n\n this._viewport = IModelApp.viewManager.selectedView;\n }\n\n /** Adds listeners when components mounts */\n public override async componentDidMount() {\n this._isMounted = true;\n\n CardContainer.onCardSelectedEvent.addListener(this._handleCardSelected);\n ViewportComponentEvents.onViewIdChangedEvent.addListener(\n this._handleViewIdChanged\n );\n\n IModelApp.viewManager.onSelectedViewportChanged.addListener(\n this._handleSelectedViewportChanged\n );\n\n const stateData = await this._setupSheets();\n\n if (this._isMounted) this.setState(stateData);\n }\n\n /** Removes listeners when component will unmount */\n public override componentWillUnmount() {\n this._isMounted = false;\n\n CardContainer.onCardSelectedEvent.removeListener(this._handleCardSelected);\n ViewportComponentEvents.onViewIdChangedEvent.removeListener(\n this._handleViewIdChanged\n );\n\n IModelApp.viewManager.onSelectedViewportChanged.removeListener(\n this._handleSelectedViewportChanged\n );\n }\n\n /** Queries for sheet info and sets as sheetData */\n private async _setupSheets(): Promise<SheetNavigationState> {\n const stateData: SheetNavigationState = {\n index: 0,\n sheetData: [],\n };\n\n if (\n !this.props.iModelConnection ||\n !this.props.iModelConnection.views.getViewList\n )\n return stateData;\n\n let viewId = \"\";\n if (this._viewport) {\n viewId = this._viewport.view.id.toString();\n }\n\n const sheets = await this.props.iModelConnection.views.getViewList({\n from: \"BisCore.SheetViewDefinition\",\n });\n sheets.forEach((viewSpec: IModelConnection.ViewSpec, index: number) => {\n stateData.sheetData.push({ name: viewSpec.name, viewId: viewSpec.id });\n if (viewSpec.id === viewId) stateData.index = index;\n });\n\n return stateData;\n }\n\n public override render(): React.ReactNode {\n const name =\n this.state.sheetData.length > 0\n ? this.state.sheetData[this.state.index].name\n : \"\";\n const leftIndex =\n this.state.index === 0\n ? this.state.sheetData.length - 1\n : this.state.index - 1;\n const rightIndex =\n this.state.index >= this.state.sheetData.length - 1\n ? 0\n : this.state.index + 1;\n const leftTitle = this.state.sheetData[leftIndex]\n ? this.state.sheetData[leftIndex].name\n : undefined;\n const rightTitle = this.state.sheetData[rightIndex]\n ? this.state.sheetData[rightIndex].name\n : undefined;\n\n let content: React.ReactNode;\n if (this.state.sheetData.length > 0) {\n content = (\n <>\n <div className=\"sheet-title\">\n {UiFramework.translate(\"general.sheet\")}\n </div>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n className=\"sheet-name\"\n title={name}\n onClick={this._handleOnClickSheetName}\n role=\"button\"\n tabIndex={-1}\n >\n {name}\n </div>\n <div className=\"sheet-container\">\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <IconButton\n size=\"small\"\n styleType=\"borderless\"\n onClick={this._handleOnClickLeftArrow}\n tabIndex={-1}\n label={leftTitle}\n >\n <SvgChevronLeft />\n </IconButton>\n <div>\n {this.state.index + 1} {UiFramework.translate(\"general.of\")}\n {this.state.sheetData.length}\n </div>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <IconButton\n size=\"small\"\n styleType=\"borderless\"\n onClick={this._handleOnClickRightArrow}\n role=\"button\"\n tabIndex={-1}\n label={rightTitle}\n >\n <SvgChevronRight />\n </IconButton>\n </div>\n </>\n );\n } else {\n content = <ProgressRadial size=\"x-small\" indeterminate />;\n }\n\n return (\n <div\n className={classnames(\"uifw-sheet-navigation\", this.props.className)}\n style={this.props.style}\n >\n {content}\n </div>\n );\n }\n\n /** Sets index of newly selected card */\n private _handleCardSelected: ListenerType<\n typeof CardContainer.onCardSelectedEvent\n > = (event) => {\n event &&\n this.setState({\n index: event.index,\n });\n };\n\n /** Updates view to the next lowest index in sheetData */\n private _handleOnClickLeftArrow = () => {\n this.setState(\n (prevState) => ({\n index:\n prevState.index <= 0\n ? prevState.sheetData.length - 1\n : prevState.index - 1,\n }),\n async () => this._updateView()\n );\n };\n\n /** Updates view to next highest index in sheetData */\n private _handleOnClickRightArrow = () => {\n this.setState(\n (prevState) => ({\n index: (prevState.index + 1) % prevState.sheetData.length,\n }),\n async () => this._updateView()\n );\n };\n\n /** Handles a Viewport change & synchs the index */\n private _handleSelectedViewportChanged = (\n args: SelectedViewportChangedArgs\n ) => {\n if (args.current) {\n this._handleViewportChanged(args.current);\n }\n };\n\n private _handleViewIdChanged: ListenerType<\n typeof ViewportComponentEvents.onViewIdChangedEvent\n > = (args) => {\n if (this._viewport === args.viewport)\n this._handleViewportChanged(args.viewport as ScreenViewport);\n };\n\n /** Handles a Viewport change & synchs the index */\n private _handleViewportChanged = (viewport: ScreenViewport) => {\n const className = ViewUtilities.getBisBaseClass(\n viewport.view.classFullName\n );\n\n if (ViewUtilities.isSheet(className)) {\n this._viewport = viewport;\n\n const viewId = this._viewport.view.id.toString();\n\n const index = this.state.sheetData.findIndex((sheetData: SheetData) => {\n return viewId === sheetData.viewId;\n });\n\n if (index >= 0) this.setState({ index });\n }\n };\n\n /** Updates view to currently set sheet */\n private async _updateView() {\n const viewState = await this.props.iModelConnection.views.load(\n this.state.sheetData[this.state.index].viewId\n );\n if (this._viewport) this._viewport.changeView(viewState);\n }\n\n /** Creates a new SheetsModalFrontstage */\n private modalFrontstage(): ModalFrontstageInfo {\n return new SheetsModalFrontstage(\n this.state.sheetData,\n this.props.iModelConnection,\n this.state.index\n );\n }\n\n /** Opens a new SheetsModelFrontstage on sheetName click */\n private _handleOnClickSheetName = () => {\n UiFramework.frontstages.openModalFrontstage(this.modalFrontstage());\n };\n}\n"]}
|