@itwin/appui-react 5.18.0 → 5.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -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/state/NineZoneStateReducer.d.ts.map +1 -1
- package/lib/appui-react/layout/state/NineZoneStateReducer.js +8 -4
- package/lib/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
- package/lib/appui-react/layout/widget/Overflow.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/Overflow.js +11 -17
- package/lib/appui-react/layout/widget/Overflow.js.map +1 -1
- package/lib/appui-react/layout/widget/Overflow.scss +3 -48
- 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/cjs/appui-react/layout/widget/Overflow.scss +3 -48
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/lib/esm/appui-react/layout/widget/Overflow.scss +3 -48
- package/package.json +10 -11
- package/lib/appui-react/layout/widget/Menu.d.ts +0 -16
- package/lib/appui-react/layout/widget/Menu.d.ts.map +0 -1
- package/lib/appui-react/layout/widget/Menu.js +0 -21
- package/lib/appui-react/layout/widget/Menu.js.map +0 -1
- package/lib/appui-react/layout/widget/Menu.scss +0 -12
- package/lib/cjs/appui-react/layout/widget/Menu.scss +0 -12
- package/lib/esm/appui-react/layout/widget/Menu.scss +0 -12
|
@@ -19,30 +19,22 @@ export class KeyboardShortcutMenuEvent extends UiEvent {
|
|
|
19
19
|
* @deprecated in 4.15.0. Component used internally to display keyboard shortcuts in a context menu.
|
|
20
20
|
*/
|
|
21
21
|
export class KeyboardShortcutMenu extends React.PureComponent {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
this._handleKeyboardShortcutMenuEvent = (state) => {
|
|
30
|
-
this.setState(state);
|
|
31
|
-
};
|
|
32
|
-
this._hideContextMenu = () => {
|
|
33
|
-
this.setState({ menuVisible: false, shortcuts: undefined });
|
|
34
|
-
};
|
|
35
|
-
this._itemPicked = (shortcut) => {
|
|
36
|
-
this._hideContextMenu();
|
|
37
|
-
shortcut.itemPicked();
|
|
38
|
-
};
|
|
39
|
-
}
|
|
22
|
+
state = {
|
|
23
|
+
menuVisible: false,
|
|
24
|
+
menuX: 0,
|
|
25
|
+
menuY: 0,
|
|
26
|
+
};
|
|
27
|
+
/** Get KeyboardShortcut Menu Event. */
|
|
28
|
+
static onKeyboardShortcutMenuEvent = new KeyboardShortcutMenuEvent();
|
|
40
29
|
componentDidMount() {
|
|
41
30
|
KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.addListener(this._handleKeyboardShortcutMenuEvent);
|
|
42
31
|
}
|
|
43
32
|
componentWillUnmount() {
|
|
44
33
|
KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.removeListener(this._handleKeyboardShortcutMenuEvent);
|
|
45
34
|
}
|
|
35
|
+
_handleKeyboardShortcutMenuEvent = (state) => {
|
|
36
|
+
this.setState(state);
|
|
37
|
+
};
|
|
46
38
|
render() {
|
|
47
39
|
const { shortcuts, menuX, menuY, menuVisible } = this.state;
|
|
48
40
|
const onClose = this._hideContextMenu;
|
|
@@ -87,7 +79,12 @@ export class KeyboardShortcutMenu extends React.PureComponent {
|
|
|
87
79
|
}
|
|
88
80
|
return node;
|
|
89
81
|
}
|
|
82
|
+
_hideContextMenu = () => {
|
|
83
|
+
this.setState({ menuVisible: false, shortcuts: undefined });
|
|
84
|
+
};
|
|
85
|
+
_itemPicked = (shortcut) => {
|
|
86
|
+
this._hideContextMenu();
|
|
87
|
+
shortcut.itemPicked();
|
|
88
|
+
};
|
|
90
89
|
}
|
|
91
|
-
/** Get KeyboardShortcut Menu Event. */
|
|
92
|
-
KeyboardShortcutMenu.onKeyboardShortcutMenuEvent = new KeyboardShortcutMenuEvent();
|
|
93
90
|
//# sourceMappingURL=KeyboardShortcutMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyboardShortcutMenu.js","sourceRoot":"","sources":["../../../src/appui-react/keyboardshortcut/KeyboardShortcutMenu.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAezE;;;GAGG;AACH,MAAM,OAAO,yBAA0B,SAAQ,OAAkC;CAAG;AAEpF;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK,CAAC,aAG/C;
|
|
1
|
+
{"version":3,"file":"KeyboardShortcutMenu.js","sourceRoot":"","sources":["../../../src/appui-react/keyboardshortcut/KeyboardShortcutMenu.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 KeyboardShortcut\n */\n\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport {\n ContextMenuItem,\n ContextSubMenu,\n GlobalContextMenu,\n} from \"@itwin/core-react\";\nimport type { KeyboardShortcut } from \"./KeyboardShortcut.js\";\nimport { ConditionalBooleanValue, UiEvent } from \"@itwin/appui-abstract\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** State of a [[KeyboardShortcutMenuEvent]] and [[KeyboardShortcutMenu]] component\n * @public\n * @deprecated in 4.15.0. Used internally by {@link KeyboardShortcutMenu} component.\n */\nexport interface KeyboardShortcutMenuState {\n menuVisible: boolean;\n menuX: number;\n menuY: number;\n shortcuts?: KeyboardShortcut[];\n}\n\n/** KeyboardShortcut Menu Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\nexport class KeyboardShortcutMenuEvent extends UiEvent<KeyboardShortcutMenuState> {}\n\n/** React component that displays a context menu at the cursor containing keyboard shortcuts.\n * @public\n * @deprecated in 4.15.0. Component used internally to display keyboard shortcuts in a context menu.\n */\nexport class KeyboardShortcutMenu extends React.PureComponent<\n CommonProps,\n KeyboardShortcutMenuState\n> {\n public override readonly state: KeyboardShortcutMenuState = {\n menuVisible: false,\n menuX: 0,\n menuY: 0,\n };\n\n /** Get KeyboardShortcut Menu Event. */\n public static readonly onKeyboardShortcutMenuEvent =\n new KeyboardShortcutMenuEvent();\n\n public override componentDidMount() {\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.addListener(\n this._handleKeyboardShortcutMenuEvent\n );\n }\n\n public override componentWillUnmount() {\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.removeListener(\n this._handleKeyboardShortcutMenuEvent\n );\n }\n\n private _handleKeyboardShortcutMenuEvent: ListenerType<\n typeof KeyboardShortcutMenu.onKeyboardShortcutMenuEvent\n > = (state) => {\n this.setState(state);\n };\n\n public override render(): React.ReactNode {\n const { shortcuts, menuX, menuY, menuVisible } = this.state;\n const onClose = this._hideContextMenu;\n\n if (menuVisible) {\n const items = this.getShortcutMenuItems(shortcuts);\n\n return (\n <GlobalContextMenu\n className={this.props.className}\n style={this.props.style}\n identifier=\"keyboard-shortcuts\"\n x={menuX}\n y={menuY}\n opened={menuVisible}\n onEsc={onClose}\n onOutsideClick={onClose}\n edgeLimit={false}\n autoflip={true}\n ignoreNextKeyUp={true} // Executing the shortcut on the keydown, so ignore the keyup in the menu\n offset={12}\n >\n {items}\n </GlobalContextMenu>\n );\n }\n\n return null;\n }\n\n private getShortcutMenuItems(\n shortcuts?: KeyboardShortcut[]\n ): React.ReactNode[] {\n const items: React.ReactNode[] = [];\n\n if (shortcuts) {\n shortcuts.forEach((shortcut: KeyboardShortcut, index: number) => {\n const item = this.getShortcutMenuItem(shortcut, index);\n if (item) items.push(item);\n });\n }\n\n return items;\n }\n\n private getShortcutMenuItem(\n shortcut: KeyboardShortcut,\n index: number\n ): React.ReactNode {\n const shortcutKey = shortcut.key;\n const isHidden = ConditionalBooleanValue.getValue(shortcut.isHidden);\n\n // Only pure characters go into the context menu\n if (\n shortcutKey !== shortcut.keyMapKey ||\n shortcut.isFunctionKey ||\n shortcut.isSpecialKey ||\n isHidden\n )\n return null;\n\n let node: React.ReactNode = null;\n let label = shortcut.label;\n const iconSpec = shortcut.iconSpec;\n\n label = `~${shortcutKey.toLocaleUpperCase()} ${label}`;\n\n if (shortcut.shortcutContainer.areKeyboardShortcutsAvailable()) {\n const shortcuts =\n shortcut.shortcutContainer.getAvailableKeyboardShortcuts();\n const items = this.getShortcutMenuItems(shortcuts);\n\n node = (\n <ContextSubMenu\n key={index}\n icon={iconSpec}\n label={label}\n disabled={shortcut.isDisabled}\n badgeType={shortcut.badgeType}\n badgeKind={shortcut.badgeKind}\n >\n {items}\n </ContextSubMenu>\n );\n } else {\n const sel = () => this._itemPicked(shortcut);\n node = (\n <ContextMenuItem\n key={index}\n onSelect={sel}\n icon={iconSpec}\n disabled={shortcut.isDisabled}\n badgeType={shortcut.badgeType}\n badgeKind={shortcut.badgeKind}\n >\n {label}\n </ContextMenuItem>\n );\n }\n\n return node;\n }\n\n private _hideContextMenu = () => {\n this.setState({ menuVisible: false, shortcuts: undefined });\n };\n\n private _itemPicked = (shortcut: KeyboardShortcut): void => {\n this._hideContextMenu();\n shortcut.itemPicked();\n };\n}\n"]}
|
|
@@ -14,17 +14,9 @@ import "./Backstage.scss";
|
|
|
14
14
|
* @internal
|
|
15
15
|
*/
|
|
16
16
|
export class Backstage extends React.PureComponent {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
this.props.onClose && this.props.onClose();
|
|
21
|
-
};
|
|
22
|
-
this._onEsc = (event) => {
|
|
23
|
-
if (this.props.isOpen && event.key === Key.Escape.valueOf()) {
|
|
24
|
-
this._onClose();
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
17
|
+
static defaultProps = {
|
|
18
|
+
showOverlay: true,
|
|
19
|
+
};
|
|
28
20
|
componentDidMount() {
|
|
29
21
|
document.addEventListener("keydown", this._onEsc, false);
|
|
30
22
|
}
|
|
@@ -42,8 +34,13 @@ export class Backstage extends React.PureComponent {
|
|
|
42
34
|
React.createElement("ul", { role: "menu" }, this.props.children),
|
|
43
35
|
this.props.footer && (React.createElement("div", { className: "nz-footer" }, this.props.footer)))));
|
|
44
36
|
}
|
|
37
|
+
_onClose = () => {
|
|
38
|
+
this.props.onClose && this.props.onClose();
|
|
39
|
+
};
|
|
40
|
+
_onEsc = (event) => {
|
|
41
|
+
if (this.props.isOpen && event.key === Key.Escape.valueOf()) {
|
|
42
|
+
this._onClose();
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
45
|
}
|
|
46
|
-
Backstage.defaultProps = {
|
|
47
|
-
showOverlay: true,
|
|
48
|
-
};
|
|
49
46
|
//# sourceMappingURL=Backstage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Backstage.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/backstage/Backstage.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,kBAAkB,CAAC;AA4B1B;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK,CAAC,aAA6B;
|
|
1
|
+
{"version":3,"file":"Backstage.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/backstage/Backstage.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAGH,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,kBAAkB,CAAC;AA4B1B;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK,CAAC,aAA6B;IACzD,MAAM,CAAU,YAAY,GAA0B;QAC3D,WAAW,EAAE,IAAI;KAClB,CAAC;IAEc,iBAAiB;QAC/B,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEe,oBAAoB;QAClC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAEe,MAAM;QACpB,MAAM,gBAAgB,GAAG,UAAU,CACjC,gCAAgC,EAChC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,EAC9B,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAY,CACvC,CAAC;QACF,MAAM,kBAAkB,GAAG,UAAU,CACnC,wBAAwB,EACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,EAC9B,IAAI,CAAC,KAAK,CAAC,cAAc;YACvB,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EACnE,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,CAAC;QACF,OAAO,CACL;YACE,6BACE,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,IAAI,EAAC,cAAc,GACnB;YACF,6BAAK,SAAS,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBACxD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CACpB,6BAAK,SAAS,EAAC,WAAW,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAO,CACrD;gBACD,4BAAI,IAAI,EAAC,MAAM,IAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAM;gBACzC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CACpB,6BAAK,SAAS,EAAC,WAAW,IAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAO,CACrD,CACG,CACL,CACJ,CAAC;IACJ,CAAC;IAEO,QAAQ,GAAG,GAAG,EAAE;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7C,CAAC,CAAC;IAEM,MAAM,GAAG,CAAC,KAAoB,EAAQ,EAAE;QAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,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 Backstage\n */\n\nimport type { CommonProps } from \"@itwin/core-react\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { SafeAreaInsets } from \"../../safearea/SafeAreaInsets.js\";\nimport { SafeAreaInsetsHelpers } from \"../base/SafeAreaInsets.js\";\nimport \"./Backstage.scss\";\n\n/** Properties of [[Backstage]] component.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface BackstageProps extends CommonProps {\n /** Backstage items and separators. I.e. [[BackstageItem]], [[BackstageSeparator]] */\n children?: React.ReactNode;\n /** Optional footer content. */\n footer?: React.ReactNode;\n /** Optional header content. I.e. [[UserProfile]] */\n header?: React.ReactNode;\n /** Describes if the backstage is open. */\n isOpen?: boolean;\n /** Function called when backstage is closed. */\n onClose?: () => void;\n /** Describes respected safe area insets. */\n safeAreaInsets?: SafeAreaInsets;\n /** Describes if a ghosting overlay is shown. */\n showOverlay: boolean;\n}\n\n/** Default properties of [[Backstage]] component.\n * @internal\n */\nexport type BackstageDefaultProps = Pick<BackstageProps, \"showOverlay\">;\n\n/** Backstage component of 9-Zone UI app.\n * @internal\n */\nexport class Backstage extends React.PureComponent<BackstageProps> {\n public static readonly defaultProps: BackstageDefaultProps = {\n showOverlay: true,\n };\n\n public override componentDidMount(): void {\n document.addEventListener(\"keydown\", this._onEsc, false);\n }\n\n public override componentWillUnmount() {\n document.removeEventListener(\"keydown\", this._onEsc, false);\n }\n\n public override render() {\n const overlayClassName = classnames(\n \"nz-backstage-backstage_overlay\",\n this.props.isOpen && \"nz-open\",\n this.props.showOverlay && \"nz-overlay\"\n );\n const backstageClassName = classnames(\n \"nz-backstage-backstage\",\n this.props.isOpen && \"nz-open\",\n this.props.safeAreaInsets &&\n SafeAreaInsetsHelpers.getCssClassNames(this.props.safeAreaInsets),\n this.props.className\n );\n return (\n <>\n <div\n className={overlayClassName}\n onClick={this._onClose}\n role=\"presentation\"\n />\n <div className={backstageClassName} style={this.props.style}>\n {this.props.header && (\n <div className=\"nz-header\">{this.props.header}</div>\n )}\n <ul role=\"menu\">{this.props.children}</ul>\n {this.props.footer && (\n <div className=\"nz-footer\">{this.props.footer}</div>\n )}\n </div>\n </>\n );\n }\n\n private _onClose = () => {\n this.props.onClose && this.props.onClose();\n };\n\n private _onEsc = (event: KeyboardEvent): void => {\n if (this.props.isOpen && event.key === Key.Escape.valueOf()) {\n this._onClose();\n }\n };\n}\n"]}
|
|
@@ -374,13 +374,12 @@ function isResizeHandleDragItem(item) {
|
|
|
374
374
|
}
|
|
375
375
|
/** @internal */
|
|
376
376
|
export class DragManager {
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
}
|
|
377
|
+
_dragged;
|
|
378
|
+
_onDragStartEmitter = new BeEvent();
|
|
379
|
+
_onDragUpdateEmitter = new BeEvent();
|
|
380
|
+
_onDragEmitter = new BeEvent();
|
|
381
|
+
_onDragEndEmitter = new BeEvent();
|
|
382
|
+
_onTargetChangedEmitter = new BeEvent();
|
|
384
383
|
get draggedItem() {
|
|
385
384
|
return this._dragged;
|
|
386
385
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragManager.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/DragManager.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 Base\n */\nimport * as React from \"react\";\nimport isEqual from \"lodash/isEqual.js\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes.js\";\nimport type { FloatingWidgetResizeHandle } from \"../widget/FloatingWidget.js\";\nimport type { WidgetState } from \"../state/WidgetState.js\";\nimport type { TabState } from \"../state/TabState.js\";\nimport { getUniqueId } from \"./NineZone.js\";\nimport type { XAndY } from \"../state/internal/NineZoneStateHelpers.js\";\nimport type {\n DropTargetState,\n PanelDropTargetState,\n TabDragDropTargetState,\n TabDropTargetState,\n WidgetDragDropTargetState,\n} from \"../state/DropTargetState.js\";\nimport {\n isTabDragDropTargetState,\n isWidgetDragDropTargetState,\n} from \"../state/DropTargetState.js\";\nimport type { SizeProps } from \"../../utils/SizeProps.js\";\n\n/** @internal */\nexport interface DragStartArgs {\n initialPointerPosition: Point;\n pointerPosition: Point;\n}\n\n/** @internal */\nexport interface TabDragStartArgs extends DragStartArgs {\n widgetSize: SizeProps;\n}\n\n/** @internal */\nexport interface UseDragTabArgs {\n tabId: TabState[\"id\"];\n onDrag?: (dragBy: XAndY) => void;\n onDragEnd?: (target: TabDragDropTargetState) => void;\n}\n\n/** @internal */\nexport function useDragTab(args: UseDragTabArgs) {\n const { tabId, onDrag, onDragEnd } = args;\n const item = React.useMemo<TabDragItem>(() => {\n return {\n type: \"tab\",\n id: tabId,\n };\n }, [tabId]);\n const handleDrag = React.useCallback<DragEventHandler>(\n (_item, info) => {\n const dragBy = info.lastPointerPosition.getOffsetTo(info.pointerPosition);\n onDrag && onDrag(dragBy);\n },\n [onDrag]\n );\n const handleDragEnd = React.useCallback<DragEventHandler>(\n (_item, info, target) => {\n if (!onDragEnd) return;\n\n let tabTarget: TabDragDropTargetState;\n if (target && isTabDragDropTargetState(target)) {\n tabTarget = target;\n } else {\n const tabInfo = info as TabDragInfo;\n const newFloatingWidgetId = getUniqueId();\n const size = tabInfo.widgetSize;\n tabTarget = {\n type: \"floatingWidget\",\n newFloatingWidgetId,\n size,\n };\n }\n onDragEnd(tabTarget);\n },\n [onDragEnd]\n );\n const onDragStart = useDragItem({\n item,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n });\n const handleDragStart = React.useCallback(\n ({\n initialPointerPosition,\n pointerPosition,\n widgetSize,\n }: TabDragStartArgs) => {\n onDragStart({\n initialPointerPosition,\n pointerPosition,\n lastPointerPosition: initialPointerPosition,\n widgetSize,\n });\n },\n [onDragStart]\n );\n return handleDragStart;\n}\n\ntype UpdateWidgetDragItemFn = (id: WidgetDragItem[\"id\"]) => void;\n\n/** @internal */\nexport interface UseDragWidgetArgs {\n widgetId: WidgetState[\"id\"];\n onDragStart?: (\n updateWidget: UpdateWidgetDragItemFn,\n initialPointerPosition: Point,\n pointerPosition: Point\n ) => void;\n onDrag?: (dragBy: Point) => void;\n onDragEnd?: (target: WidgetDragDropTargetState) => void;\n}\n\n/** @internal */\nexport function useDragWidget(args: UseDragWidgetArgs) {\n const { widgetId, onDragStart, onDrag, onDragEnd } = args;\n const dragManager = React.useContext(DragManagerContext);\n const widgetItem = React.useMemo<WidgetDragItem>(() => {\n return {\n type: \"widget\",\n id: widgetId,\n };\n }, [widgetId]);\n const handleDragStart = React.useCallback<DragEventHandler>(\n (_item, info) => {\n onDragStart &&\n onDragStart(\n (id) => {\n dragManager.handleDragUpdate({\n type: \"widget\",\n id,\n });\n },\n info.initialPointerPosition,\n info.pointerPosition\n );\n },\n [dragManager, onDragStart]\n );\n const handleDrag = React.useCallback<DragEventHandler>(\n (_item, info) => {\n const dragBy = info.lastPointerPosition.getOffsetTo(info.pointerPosition);\n onDrag && onDrag(dragBy);\n },\n [onDrag]\n );\n const handleDragEnd = React.useCallback<DragEventHandler>(\n (_item, _info, target) => {\n if (!onDragEnd) return;\n\n let widgetTarget: WidgetDragDropTargetState;\n if (target && isWidgetDragDropTargetState(target)) {\n widgetTarget = target;\n } else {\n widgetTarget = {\n type: \"window\",\n };\n }\n onDragEnd(widgetTarget);\n },\n [onDragEnd]\n );\n const isDragItem = React.useCallback<\n NonNullable<UseDragItemArgs<WidgetDragItem>[\"isDragItem\"]>\n >((item, dragged) => {\n return !!item && defaultIsDragItem(item, dragged);\n }, []);\n const onItemDragStart = useDragItem({\n item: widgetItem,\n isDragItem,\n onDragStart: handleDragStart,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n });\n const handleWidgetDragStart = React.useCallback(\n ({ initialPointerPosition, pointerPosition }: DragStartArgs) => {\n onItemDragStart({\n initialPointerPosition,\n pointerPosition,\n lastPointerPosition: initialPointerPosition,\n });\n },\n [onItemDragStart]\n );\n return handleWidgetDragStart;\n}\n\n/** @internal */\nexport interface UseDragPanelGripArgs {\n side: PanelSide;\n onDrag?: (pointerPosition: Point, lastPointerPosition: Point) => void;\n onDragEnd?: () => void;\n}\n\n/** @internal */\nexport function useDragPanelGrip(args: UseDragPanelGripArgs) {\n const { side, onDrag, onDragEnd } = args;\n const gripItem = React.useMemo<PanelGripDragItem>(() => {\n return {\n type: \"panelGrip\",\n id: side,\n };\n }, [side]);\n const handleDrag = React.useCallback<DragEventHandler>(\n (_item, info) => {\n onDrag && onDrag(info.pointerPosition, info.lastPointerPosition);\n },\n [onDrag]\n );\n const handleDragEnd = React.useCallback<DragEventHandler>(() => {\n onDragEnd && onDragEnd();\n }, [onDragEnd]);\n const onItemDragStart = useDragItem({\n item: gripItem,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n });\n const handleDragStart = React.useCallback(\n ({ initialPointerPosition }: DragStartArgs) => {\n onItemDragStart({\n initialPointerPosition,\n pointerPosition: initialPointerPosition,\n lastPointerPosition: initialPointerPosition,\n });\n },\n [onItemDragStart]\n );\n return handleDragStart;\n}\n\n/** @internal */\nexport interface UseDragResizeHandleArgs {\n widgetId: WidgetState[\"id\"];\n handle: FloatingWidgetResizeHandle;\n onDrag?: (pointerPosition: Point) => void;\n}\n\n/** @internal */\nexport function useDragResizeHandle(args: UseDragResizeHandleArgs) {\n const { handle, onDrag, widgetId } = args;\n const resizeHandleItem = React.useMemo<ResizeHandleDragItem>(() => {\n return {\n type: \"resizeHandle\",\n id: handle,\n widgetId,\n };\n }, [handle, widgetId]);\n const isDragItem = React.useCallback<\n NonNullable<UseDragItemArgs<ResizeHandleDragItem>[\"isDragItem\"]>\n >((item, draggedItem) => {\n return (\n !!item &&\n isResizeHandleDragItem(draggedItem) &&\n defaultIsDragItem(item, draggedItem) &&\n item.widgetId === draggedItem.widgetId\n );\n }, []);\n const handleDrag = React.useCallback<DragEventHandler>(\n (_item, info) => {\n onDrag && onDrag(info.pointerPosition);\n },\n [onDrag]\n );\n const onItemDragStart = useDragItem<ResizeHandleDragItem>({\n item: resizeHandleItem,\n isDragItem,\n onDrag: handleDrag,\n });\n const handleDragStart = React.useCallback(\n ({ initialPointerPosition }: DragStartArgs) => {\n onItemDragStart({\n initialPointerPosition,\n pointerPosition: initialPointerPosition,\n lastPointerPosition: initialPointerPosition,\n });\n },\n [onItemDragStart]\n );\n return handleDragStart;\n}\n\n/** @internal */\nexport interface UseDragToolSettingsArgs {\n newFloatingWidgetId: WidgetDragItem[\"id\"];\n}\n\n/** @internal */\nexport function useDragToolSettings(args: UseDragToolSettingsArgs) {\n const { newFloatingWidgetId } = args;\n const item = React.useMemo<WidgetDragItem>(() => {\n return {\n type: \"widget\",\n id: newFloatingWidgetId,\n };\n }, [newFloatingWidgetId]);\n const onDragStart = useDragItem({\n item,\n });\n const handleDragStart = React.useCallback(\n ({ initialPointerPosition }: DragStartArgs) => {\n onDragStart({\n initialPointerPosition,\n pointerPosition: initialPointerPosition,\n lastPointerPosition: initialPointerPosition,\n });\n },\n [onDragStart]\n );\n return handleDragStart;\n}\n\n/** @internal */\nexport function useTarget<T extends Element>(\n target: DropTargetState\n): [\n React.Ref<T>,\n boolean // targeted\n] {\n const dragManager = React.useContext(DragManagerContext);\n const [targeted, setTargeted] = React.useState(false);\n const targetedRef = React.useRef(false);\n const onTargeted = React.useCallback(\n (doTarget: boolean) => {\n const isTargeted = dragManager.isTargeted(target);\n if (doTarget && !isTargeted) {\n dragManager.handleTargetChanged(target);\n } else if (!doTarget && isTargeted) {\n dragManager.handleTargetChanged(undefined);\n }\n setTargeted(doTarget);\n },\n [dragManager, target]\n );\n const ref = React.useRef<T>(null);\n React.useEffect(() => {\n return dragManager.onDrag.addListener((_item, info) => {\n const targetedElement = document.elementFromPoint(\n info.pointerPosition.x,\n info.pointerPosition.y\n );\n const newTargeted = targetedElement === ref.current;\n newTargeted !== targetedRef.current && onTargeted(newTargeted);\n targetedRef.current = newTargeted;\n });\n }, [onTargeted, dragManager]);\n React.useEffect(() => {\n return dragManager.onDragEnd.addListener(() => {\n targetedRef.current && onTargeted(false);\n targetedRef.current = false;\n });\n }, [onTargeted, dragManager]);\n return [ref, targeted];\n}\n\n/** @internal */\nexport interface UseTabTargetArgs {\n widgetId: WidgetState[\"id\"];\n tabIndex: number;\n}\n\n/** @internal */\nexport function useTabTarget<T extends Element>(\n args: UseTabTargetArgs\n): [\n React.Ref<T>,\n boolean // targeted\n] {\n const { tabIndex, widgetId } = args;\n const target = React.useMemo<TabDropTargetState>(\n () => ({\n type: \"tab\",\n tabIndex,\n widgetId,\n }),\n [tabIndex, widgetId]\n );\n return useTarget(target);\n}\n\n/** @internal */\nexport interface UsePanelTargetArgs {\n side: PanelSide;\n newWidgetId: WidgetState[\"id\"];\n}\n\n/** @internal */\nexport function usePanelTarget<T extends Element>(\n args: UsePanelTargetArgs\n): [\n React.Ref<T>,\n boolean // targeted\n] {\n const { side, newWidgetId } = args;\n const target = React.useMemo<PanelDropTargetState>(\n () => ({\n type: \"panel\",\n side,\n newWidgetId,\n }),\n [side, newWidgetId]\n );\n return useTarget(target);\n}\n\n/** @internal */\nexport interface UseDragItemArgs<T extends DragItem> {\n item: T;\n isDragItem?: (item: T | undefined, dragged: DragItem) => boolean;\n onDragStart?: DragEventHandler;\n onDrag?: DragEventHandler;\n onDragEnd?: DragEventHandler;\n}\n\nfunction defaultIsDragItem(item: DragItem, dragged: DragItem) {\n return dragged.type === item.type && dragged.id === item.id;\n}\n\n/** @internal */\nexport function useDragItem<T extends DragItem>(args: UseDragItemArgs<T>) {\n const dragManager = React.useContext(DragManagerContext);\n const { item, isDragItem, onDragStart, onDrag, onDragEnd } = args;\n const handleDragStart = React.useCallback(\n (info: DragInfo) => {\n item &&\n dragManager.handleDragStart({\n item,\n info,\n });\n },\n [dragManager, item]\n );\n React.useEffect(() => {\n return dragManager.onDragStart.addListener((draggedItem, info, target) => {\n const handleEvent = isDragItem\n ? isDragItem(item, draggedItem)\n : defaultIsDragItem(item, draggedItem);\n if (!handleEvent) return;\n onDragStart && onDragStart(draggedItem, info, target);\n });\n }, [dragManager, onDragStart, item, isDragItem]);\n React.useEffect(() => {\n return dragManager.onDrag.addListener((draggedItem, info, target) => {\n const handleEvent = isDragItem\n ? isDragItem(item, draggedItem)\n : defaultIsDragItem(item, draggedItem);\n if (!handleEvent) return;\n onDrag && onDrag(draggedItem, info, target);\n });\n }, [dragManager, onDrag, item, isDragItem]);\n React.useEffect(() => {\n return dragManager.onDragEnd.addListener((draggedItem, info, target) => {\n const handleEvent = isDragItem\n ? isDragItem(item, draggedItem)\n : defaultIsDragItem(item, draggedItem);\n if (!handleEvent) return;\n onDragEnd && onDragEnd(draggedItem, info, target);\n });\n }, [dragManager, onDragEnd, item, isDragItem]);\n return handleDragStart;\n}\n\n/** @internal */\nexport function useDraggedItem() {\n const dragManager = React.useContext(DragManagerContext);\n const subscribe = React.useCallback(\n (onStoreChange: () => void) => {\n const listeners = [\n dragManager.onDragStart.addListener(onStoreChange),\n dragManager.onDragUpdate.addListener(onStoreChange),\n dragManager.onDragEnd.addListener(onStoreChange),\n ];\n return () => listeners.forEach((l) => l());\n },\n [dragManager]\n );\n const getSnapshot = React.useCallback(() => {\n return dragManager.draggedItem?.item;\n }, [dragManager]);\n return React.useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/** @internal */\nexport function useIsDraggedItem(item: DragItem) {\n const draggedItem = useDraggedItem();\n return (\n !!draggedItem &&\n draggedItem.id === item.id &&\n draggedItem.type === item.type\n );\n}\n\n/** @internal */\nexport function useIsDraggedType(type: DragItem[\"type\"]) {\n const draggedItem = useDraggedItem();\n return !!draggedItem && draggedItem.type === type;\n}\n\n/** @internal */\nexport function useDraggedItemId<T extends DragItem>(\n type: T[\"type\"]\n): T[\"id\"] | undefined {\n const draggedItem = useDraggedItem();\n\n if (draggedItem && draggedItem.type === type) {\n return draggedItem.id;\n }\n return undefined;\n}\n\n/** @internal */\nexport interface DragProviderProps {\n children?: React.ReactNode;\n}\n\n/** @internal */\nexport function DragProvider(props: DragProviderProps) {\n const dragManager = React.useRef(new DragManager());\n React.useEffect(() => {\n const mouseMove = (e: MouseEvent) => {\n dragManager.current.handleDrag(e.clientX, e.clientY);\n };\n document.addEventListener(\"mousemove\", mouseMove);\n return () => {\n document.removeEventListener(\"mousemove\", mouseMove);\n };\n }, []);\n React.useEffect(() => {\n const mouseUp = () => {\n dragManager.current.handleDragEnd();\n };\n document.addEventListener(\"mouseup\", mouseUp);\n return () => {\n document.removeEventListener(\"mouseup\", mouseUp);\n };\n }, []);\n return (\n <DragManagerContext.Provider value={dragManager.current}>\n <DraggedWidgetIdProvider>\n <DraggedPanelSideProvider>\n <DraggedResizeHandleProvider>\n {props.children}\n </DraggedResizeHandleProvider>\n </DraggedPanelSideProvider>\n </DraggedWidgetIdProvider>\n </DragManagerContext.Provider>\n );\n}\n\nfunction DraggedWidgetIdProvider(props: { children?: React.ReactNode }) {\n const draggedWidgetId = useDraggedItemId<WidgetDragItem>(\"widget\");\n return (\n <DraggedWidgetIdContext.Provider value={draggedWidgetId}>\n {props.children}\n </DraggedWidgetIdContext.Provider>\n );\n}\n\nfunction DraggedPanelSideProvider(props: { children?: React.ReactNode }) {\n const draggedSide = useDraggedItemId<PanelGripDragItem>(\"panelGrip\");\n return (\n <DraggedPanelSideContext.Provider value={draggedSide}>\n {props.children}\n </DraggedPanelSideContext.Provider>\n );\n}\n\nfunction DraggedResizeHandleProvider(props: { children?: React.ReactNode }) {\n const draggedHandle = useDraggedItemId<ResizeHandleDragItem>(\"resizeHandle\");\n return (\n <DraggedResizeHandleContext.Provider value={draggedHandle}>\n {props.children}\n </DraggedResizeHandleContext.Provider>\n );\n}\n\ninterface TabDragItem {\n type: \"tab\";\n id: TabState[\"id\"];\n}\n\ninterface WidgetDragItem {\n type: \"widget\";\n id: WidgetState[\"id\"];\n}\n\ninterface PanelGripDragItem {\n type: \"panelGrip\";\n id: PanelSide;\n}\n\ninterface ResizeHandleDragItem {\n type: \"resizeHandle\";\n id: FloatingWidgetResizeHandle;\n widgetId: WidgetState[\"id\"];\n}\n\n/** @internal */\nexport type DragItem =\n | TabDragItem\n | WidgetDragItem\n | PanelGripDragItem\n | ResizeHandleDragItem;\n\nfunction isResizeHandleDragItem(item: DragItem): item is ResizeHandleDragItem {\n return item.type === \"resizeHandle\";\n}\n\ninterface BaseDragInfo {\n initialPointerPosition: Point;\n lastPointerPosition: Point;\n pointerPosition: Point;\n}\n\ninterface TabDragInfo extends BaseDragInfo {\n widgetSize: SizeProps;\n}\n\ntype DragInfo = BaseDragInfo | TabDragInfo;\n\ninterface HandleDragStartArgs {\n item: DragItem;\n info: DragInfo;\n}\n\ninterface Dragged {\n item: DragItem;\n info: DragInfo;\n target: DropTargetState | undefined;\n}\n\ntype DragEventHandler = (\n item: DragItem,\n info: DragInfo,\n target: DropTargetState | undefined\n) => void;\ntype DropTargetChangedEventHandler = (\n target: DropTargetState | undefined\n) => void;\n\n/** @internal */\nexport class DragManager {\n private _dragged: Dragged | undefined;\n private _onDragStartEmitter = new BeEvent<DragEventHandler>();\n private _onDragUpdateEmitter = new BeEvent<DragEventHandler>();\n private _onDragEmitter = new BeEvent<DragEventHandler>();\n private _onDragEndEmitter = new BeEvent<DragEventHandler>();\n private _onTargetChangedEmitter =\n new BeEvent<DropTargetChangedEventHandler>();\n\n public get draggedItem() {\n return this._dragged;\n }\n\n public isTargeted(target: DropTargetState) {\n if (!this._dragged) return false;\n\n if (!this._dragged.target) return false;\n\n return isEqual(this._dragged.target, target);\n }\n\n public get onDragStart() {\n return this._onDragStartEmitter;\n }\n\n public get onDragUpdate() {\n return this._onDragUpdateEmitter;\n }\n\n public get onDrag() {\n return this._onDragEmitter;\n }\n\n public get onDragEnd() {\n return this._onDragEndEmitter;\n }\n\n public get onTargetChanged() {\n return this._onTargetChangedEmitter;\n }\n\n public handleDragStart({ item, info }: HandleDragStartArgs) {\n this._dragged = {\n item,\n info,\n target: undefined,\n };\n this._onDragStartEmitter.raiseEvent(\n this._dragged.item,\n this._dragged.info,\n this._dragged.target\n );\n }\n\n public handleDragUpdate(item: DragItem) {\n if (!this._dragged) return;\n\n this._dragged.item = item;\n this._onDragUpdateEmitter.raiseEvent(\n this._dragged.item,\n this._dragged.info,\n this._dragged.target\n );\n }\n\n public handleDrag(x: number, y: number) {\n if (!this._dragged) return;\n\n this._dragged.info.lastPointerPosition = this._dragged.info.pointerPosition;\n this._dragged.info.pointerPosition = new Point(x, y);\n\n this._onDragEmitter.raiseEvent(\n this._dragged.item,\n this._dragged.info,\n this._dragged.target\n );\n }\n\n public handleDragEnd() {\n if (!this._dragged) return;\n\n const item = this._dragged.item;\n const info = this._dragged.info;\n const target = this._dragged.target;\n this._dragged = undefined;\n this._onDragEndEmitter.raiseEvent(item, info, target);\n target && this._onTargetChangedEmitter.raiseEvent(undefined);\n }\n\n public handleTargetChanged(target: DropTargetState | undefined) {\n if (!this._dragged) return;\n this._dragged.target = target;\n this._onTargetChangedEmitter.raiseEvent(target);\n }\n}\n\n/** @internal */\nexport const DragManagerContext = React.createContext<DragManager>(null!);\nDragManagerContext.displayName = \"nz:DragManagerContext\";\n\n/** @internal */\nexport const DraggedWidgetIdContext = React.createContext<\n WidgetState[\"id\"] | undefined\n>(undefined);\nDraggedWidgetIdContext.displayName = \"nz:DraggedWidgetIdContext\";\n\n/** @internal */\nexport const DraggedPanelSideContext = React.createContext<\n PanelSide | undefined\n>(undefined);\nDraggedPanelSideContext.displayName = \"nz:DraggedPanelSideContext\";\n\n/** @internal */\nexport const DraggedResizeHandleContext = React.createContext<\n FloatingWidgetResizeHandle | undefined\n>(undefined);\nDraggedResizeHandleContext.displayName = \"nz:DraggedResizeHandleContext\";\n\n/** @internal */\nexport function useTargeted() {\n const dragManager = React.useContext(DragManagerContext);\n const [targeted, setTargeted] = React.useState<DropTargetState>();\n React.useEffect(() => {\n return dragManager.onTargetChanged.addListener((t) => {\n setTargeted(t);\n });\n }, [dragManager]);\n return targeted;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DragManager.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/DragManager.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 Base\n */\nimport * as React from \"react\";\nimport isEqual from \"lodash/isEqual.js\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes.js\";\nimport type { FloatingWidgetResizeHandle } from \"../widget/FloatingWidget.js\";\nimport type { WidgetState } from \"../state/WidgetState.js\";\nimport type { TabState } from \"../state/TabState.js\";\nimport { getUniqueId } from \"./NineZone.js\";\nimport type { XAndY } from \"../state/internal/NineZoneStateHelpers.js\";\nimport type {\n DropTargetState,\n PanelDropTargetState,\n TabDragDropTargetState,\n TabDropTargetState,\n WidgetDragDropTargetState,\n} from \"../state/DropTargetState.js\";\nimport {\n isTabDragDropTargetState,\n isWidgetDragDropTargetState,\n} from \"../state/DropTargetState.js\";\nimport type { SizeProps } from \"../../utils/SizeProps.js\";\n\n/** @internal */\nexport interface DragStartArgs {\n initialPointerPosition: Point;\n pointerPosition: Point;\n}\n\n/** @internal */\nexport interface TabDragStartArgs extends DragStartArgs {\n widgetSize: SizeProps;\n}\n\n/** @internal */\nexport interface UseDragTabArgs {\n tabId: TabState[\"id\"];\n onDrag?: (dragBy: XAndY) => void;\n onDragEnd?: (target: TabDragDropTargetState) => void;\n}\n\n/** @internal */\nexport function useDragTab(args: UseDragTabArgs) {\n const { tabId, onDrag, onDragEnd } = args;\n const item = React.useMemo<TabDragItem>(() => {\n return {\n type: \"tab\",\n id: tabId,\n };\n }, [tabId]);\n const handleDrag = React.useCallback<DragEventHandler>(\n (_item, info) => {\n const dragBy = info.lastPointerPosition.getOffsetTo(info.pointerPosition);\n onDrag && onDrag(dragBy);\n },\n [onDrag]\n );\n const handleDragEnd = React.useCallback<DragEventHandler>(\n (_item, info, target) => {\n if (!onDragEnd) return;\n\n let tabTarget: TabDragDropTargetState;\n if (target && isTabDragDropTargetState(target)) {\n tabTarget = target;\n } else {\n const tabInfo = info as TabDragInfo;\n const newFloatingWidgetId = getUniqueId();\n const size = tabInfo.widgetSize;\n tabTarget = {\n type: \"floatingWidget\",\n newFloatingWidgetId,\n size,\n };\n }\n onDragEnd(tabTarget);\n },\n [onDragEnd]\n );\n const onDragStart = useDragItem({\n item,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n });\n const handleDragStart = React.useCallback(\n ({\n initialPointerPosition,\n pointerPosition,\n widgetSize,\n }: TabDragStartArgs) => {\n onDragStart({\n initialPointerPosition,\n pointerPosition,\n lastPointerPosition: initialPointerPosition,\n widgetSize,\n });\n },\n [onDragStart]\n );\n return handleDragStart;\n}\n\ntype UpdateWidgetDragItemFn = (id: WidgetDragItem[\"id\"]) => void;\n\n/** @internal */\nexport interface UseDragWidgetArgs {\n widgetId: WidgetState[\"id\"];\n onDragStart?: (\n updateWidget: UpdateWidgetDragItemFn,\n initialPointerPosition: Point,\n pointerPosition: Point\n ) => void;\n onDrag?: (dragBy: Point) => void;\n onDragEnd?: (target: WidgetDragDropTargetState) => void;\n}\n\n/** @internal */\nexport function useDragWidget(args: UseDragWidgetArgs) {\n const { widgetId, onDragStart, onDrag, onDragEnd } = args;\n const dragManager = React.useContext(DragManagerContext);\n const widgetItem = React.useMemo<WidgetDragItem>(() => {\n return {\n type: \"widget\",\n id: widgetId,\n };\n }, [widgetId]);\n const handleDragStart = React.useCallback<DragEventHandler>(\n (_item, info) => {\n onDragStart &&\n onDragStart(\n (id) => {\n dragManager.handleDragUpdate({\n type: \"widget\",\n id,\n });\n },\n info.initialPointerPosition,\n info.pointerPosition\n );\n },\n [dragManager, onDragStart]\n );\n const handleDrag = React.useCallback<DragEventHandler>(\n (_item, info) => {\n const dragBy = info.lastPointerPosition.getOffsetTo(info.pointerPosition);\n onDrag && onDrag(dragBy);\n },\n [onDrag]\n );\n const handleDragEnd = React.useCallback<DragEventHandler>(\n (_item, _info, target) => {\n if (!onDragEnd) return;\n\n let widgetTarget: WidgetDragDropTargetState;\n if (target && isWidgetDragDropTargetState(target)) {\n widgetTarget = target;\n } else {\n widgetTarget = {\n type: \"window\",\n };\n }\n onDragEnd(widgetTarget);\n },\n [onDragEnd]\n );\n const isDragItem = React.useCallback<\n NonNullable<UseDragItemArgs<WidgetDragItem>[\"isDragItem\"]>\n >((item, dragged) => {\n return !!item && defaultIsDragItem(item, dragged);\n }, []);\n const onItemDragStart = useDragItem({\n item: widgetItem,\n isDragItem,\n onDragStart: handleDragStart,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n });\n const handleWidgetDragStart = React.useCallback(\n ({ initialPointerPosition, pointerPosition }: DragStartArgs) => {\n onItemDragStart({\n initialPointerPosition,\n pointerPosition,\n lastPointerPosition: initialPointerPosition,\n });\n },\n [onItemDragStart]\n );\n return handleWidgetDragStart;\n}\n\n/** @internal */\nexport interface UseDragPanelGripArgs {\n side: PanelSide;\n onDrag?: (pointerPosition: Point, lastPointerPosition: Point) => void;\n onDragEnd?: () => void;\n}\n\n/** @internal */\nexport function useDragPanelGrip(args: UseDragPanelGripArgs) {\n const { side, onDrag, onDragEnd } = args;\n const gripItem = React.useMemo<PanelGripDragItem>(() => {\n return {\n type: \"panelGrip\",\n id: side,\n };\n }, [side]);\n const handleDrag = React.useCallback<DragEventHandler>(\n (_item, info) => {\n onDrag && onDrag(info.pointerPosition, info.lastPointerPosition);\n },\n [onDrag]\n );\n const handleDragEnd = React.useCallback<DragEventHandler>(() => {\n onDragEnd && onDragEnd();\n }, [onDragEnd]);\n const onItemDragStart = useDragItem({\n item: gripItem,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n });\n const handleDragStart = React.useCallback(\n ({ initialPointerPosition }: DragStartArgs) => {\n onItemDragStart({\n initialPointerPosition,\n pointerPosition: initialPointerPosition,\n lastPointerPosition: initialPointerPosition,\n });\n },\n [onItemDragStart]\n );\n return handleDragStart;\n}\n\n/** @internal */\nexport interface UseDragResizeHandleArgs {\n widgetId: WidgetState[\"id\"];\n handle: FloatingWidgetResizeHandle;\n onDrag?: (pointerPosition: Point) => void;\n}\n\n/** @internal */\nexport function useDragResizeHandle(args: UseDragResizeHandleArgs) {\n const { handle, onDrag, widgetId } = args;\n const resizeHandleItem = React.useMemo<ResizeHandleDragItem>(() => {\n return {\n type: \"resizeHandle\",\n id: handle,\n widgetId,\n };\n }, [handle, widgetId]);\n const isDragItem = React.useCallback<\n NonNullable<UseDragItemArgs<ResizeHandleDragItem>[\"isDragItem\"]>\n >((item, draggedItem) => {\n return (\n !!item &&\n isResizeHandleDragItem(draggedItem) &&\n defaultIsDragItem(item, draggedItem) &&\n item.widgetId === draggedItem.widgetId\n );\n }, []);\n const handleDrag = React.useCallback<DragEventHandler>(\n (_item, info) => {\n onDrag && onDrag(info.pointerPosition);\n },\n [onDrag]\n );\n const onItemDragStart = useDragItem<ResizeHandleDragItem>({\n item: resizeHandleItem,\n isDragItem,\n onDrag: handleDrag,\n });\n const handleDragStart = React.useCallback(\n ({ initialPointerPosition }: DragStartArgs) => {\n onItemDragStart({\n initialPointerPosition,\n pointerPosition: initialPointerPosition,\n lastPointerPosition: initialPointerPosition,\n });\n },\n [onItemDragStart]\n );\n return handleDragStart;\n}\n\n/** @internal */\nexport interface UseDragToolSettingsArgs {\n newFloatingWidgetId: WidgetDragItem[\"id\"];\n}\n\n/** @internal */\nexport function useDragToolSettings(args: UseDragToolSettingsArgs) {\n const { newFloatingWidgetId } = args;\n const item = React.useMemo<WidgetDragItem>(() => {\n return {\n type: \"widget\",\n id: newFloatingWidgetId,\n };\n }, [newFloatingWidgetId]);\n const onDragStart = useDragItem({\n item,\n });\n const handleDragStart = React.useCallback(\n ({ initialPointerPosition }: DragStartArgs) => {\n onDragStart({\n initialPointerPosition,\n pointerPosition: initialPointerPosition,\n lastPointerPosition: initialPointerPosition,\n });\n },\n [onDragStart]\n );\n return handleDragStart;\n}\n\n/** @internal */\nexport function useTarget<T extends Element>(\n target: DropTargetState\n): [\n React.Ref<T>,\n boolean // targeted\n] {\n const dragManager = React.useContext(DragManagerContext);\n const [targeted, setTargeted] = React.useState(false);\n const targetedRef = React.useRef(false);\n const onTargeted = React.useCallback(\n (doTarget: boolean) => {\n const isTargeted = dragManager.isTargeted(target);\n if (doTarget && !isTargeted) {\n dragManager.handleTargetChanged(target);\n } else if (!doTarget && isTargeted) {\n dragManager.handleTargetChanged(undefined);\n }\n setTargeted(doTarget);\n },\n [dragManager, target]\n );\n const ref = React.useRef<T>(null);\n React.useEffect(() => {\n return dragManager.onDrag.addListener((_item, info) => {\n const targetedElement = document.elementFromPoint(\n info.pointerPosition.x,\n info.pointerPosition.y\n );\n const newTargeted = targetedElement === ref.current;\n newTargeted !== targetedRef.current && onTargeted(newTargeted);\n targetedRef.current = newTargeted;\n });\n }, [onTargeted, dragManager]);\n React.useEffect(() => {\n return dragManager.onDragEnd.addListener(() => {\n targetedRef.current && onTargeted(false);\n targetedRef.current = false;\n });\n }, [onTargeted, dragManager]);\n return [ref, targeted];\n}\n\n/** @internal */\nexport interface UseTabTargetArgs {\n widgetId: WidgetState[\"id\"];\n tabIndex: number;\n}\n\n/** @internal */\nexport function useTabTarget<T extends Element>(\n args: UseTabTargetArgs\n): [\n React.Ref<T>,\n boolean // targeted\n] {\n const { tabIndex, widgetId } = args;\n const target = React.useMemo<TabDropTargetState>(\n () => ({\n type: \"tab\",\n tabIndex,\n widgetId,\n }),\n [tabIndex, widgetId]\n );\n return useTarget(target);\n}\n\n/** @internal */\nexport interface UsePanelTargetArgs {\n side: PanelSide;\n newWidgetId: WidgetState[\"id\"];\n}\n\n/** @internal */\nexport function usePanelTarget<T extends Element>(\n args: UsePanelTargetArgs\n): [\n React.Ref<T>,\n boolean // targeted\n] {\n const { side, newWidgetId } = args;\n const target = React.useMemo<PanelDropTargetState>(\n () => ({\n type: \"panel\",\n side,\n newWidgetId,\n }),\n [side, newWidgetId]\n );\n return useTarget(target);\n}\n\n/** @internal */\nexport interface UseDragItemArgs<T extends DragItem> {\n item: T;\n isDragItem?: (item: T | undefined, dragged: DragItem) => boolean;\n onDragStart?: DragEventHandler;\n onDrag?: DragEventHandler;\n onDragEnd?: DragEventHandler;\n}\n\nfunction defaultIsDragItem(item: DragItem, dragged: DragItem) {\n return dragged.type === item.type && dragged.id === item.id;\n}\n\n/** @internal */\nexport function useDragItem<T extends DragItem>(args: UseDragItemArgs<T>) {\n const dragManager = React.useContext(DragManagerContext);\n const { item, isDragItem, onDragStart, onDrag, onDragEnd } = args;\n const handleDragStart = React.useCallback(\n (info: DragInfo) => {\n item &&\n dragManager.handleDragStart({\n item,\n info,\n });\n },\n [dragManager, item]\n );\n React.useEffect(() => {\n return dragManager.onDragStart.addListener((draggedItem, info, target) => {\n const handleEvent = isDragItem\n ? isDragItem(item, draggedItem)\n : defaultIsDragItem(item, draggedItem);\n if (!handleEvent) return;\n onDragStart && onDragStart(draggedItem, info, target);\n });\n }, [dragManager, onDragStart, item, isDragItem]);\n React.useEffect(() => {\n return dragManager.onDrag.addListener((draggedItem, info, target) => {\n const handleEvent = isDragItem\n ? isDragItem(item, draggedItem)\n : defaultIsDragItem(item, draggedItem);\n if (!handleEvent) return;\n onDrag && onDrag(draggedItem, info, target);\n });\n }, [dragManager, onDrag, item, isDragItem]);\n React.useEffect(() => {\n return dragManager.onDragEnd.addListener((draggedItem, info, target) => {\n const handleEvent = isDragItem\n ? isDragItem(item, draggedItem)\n : defaultIsDragItem(item, draggedItem);\n if (!handleEvent) return;\n onDragEnd && onDragEnd(draggedItem, info, target);\n });\n }, [dragManager, onDragEnd, item, isDragItem]);\n return handleDragStart;\n}\n\n/** @internal */\nexport function useDraggedItem() {\n const dragManager = React.useContext(DragManagerContext);\n const subscribe = React.useCallback(\n (onStoreChange: () => void) => {\n const listeners = [\n dragManager.onDragStart.addListener(onStoreChange),\n dragManager.onDragUpdate.addListener(onStoreChange),\n dragManager.onDragEnd.addListener(onStoreChange),\n ];\n return () => listeners.forEach((l) => l());\n },\n [dragManager]\n );\n const getSnapshot = React.useCallback(() => {\n return dragManager.draggedItem?.item;\n }, [dragManager]);\n return React.useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/** @internal */\nexport function useIsDraggedItem(item: DragItem) {\n const draggedItem = useDraggedItem();\n return (\n !!draggedItem &&\n draggedItem.id === item.id &&\n draggedItem.type === item.type\n );\n}\n\n/** @internal */\nexport function useIsDraggedType(type: DragItem[\"type\"]) {\n const draggedItem = useDraggedItem();\n return !!draggedItem && draggedItem.type === type;\n}\n\n/** @internal */\nexport function useDraggedItemId<T extends DragItem>(\n type: T[\"type\"]\n): T[\"id\"] | undefined {\n const draggedItem = useDraggedItem();\n\n if (draggedItem && draggedItem.type === type) {\n return draggedItem.id;\n }\n return undefined;\n}\n\n/** @internal */\nexport interface DragProviderProps {\n children?: React.ReactNode;\n}\n\n/** @internal */\nexport function DragProvider(props: DragProviderProps) {\n const dragManager = React.useRef(new DragManager());\n React.useEffect(() => {\n const mouseMove = (e: MouseEvent) => {\n dragManager.current.handleDrag(e.clientX, e.clientY);\n };\n document.addEventListener(\"mousemove\", mouseMove);\n return () => {\n document.removeEventListener(\"mousemove\", mouseMove);\n };\n }, []);\n React.useEffect(() => {\n const mouseUp = () => {\n dragManager.current.handleDragEnd();\n };\n document.addEventListener(\"mouseup\", mouseUp);\n return () => {\n document.removeEventListener(\"mouseup\", mouseUp);\n };\n }, []);\n return (\n <DragManagerContext.Provider value={dragManager.current}>\n <DraggedWidgetIdProvider>\n <DraggedPanelSideProvider>\n <DraggedResizeHandleProvider>\n {props.children}\n </DraggedResizeHandleProvider>\n </DraggedPanelSideProvider>\n </DraggedWidgetIdProvider>\n </DragManagerContext.Provider>\n );\n}\n\nfunction DraggedWidgetIdProvider(props: { children?: React.ReactNode }) {\n const draggedWidgetId = useDraggedItemId<WidgetDragItem>(\"widget\");\n return (\n <DraggedWidgetIdContext.Provider value={draggedWidgetId}>\n {props.children}\n </DraggedWidgetIdContext.Provider>\n );\n}\n\nfunction DraggedPanelSideProvider(props: { children?: React.ReactNode }) {\n const draggedSide = useDraggedItemId<PanelGripDragItem>(\"panelGrip\");\n return (\n <DraggedPanelSideContext.Provider value={draggedSide}>\n {props.children}\n </DraggedPanelSideContext.Provider>\n );\n}\n\nfunction DraggedResizeHandleProvider(props: { children?: React.ReactNode }) {\n const draggedHandle = useDraggedItemId<ResizeHandleDragItem>(\"resizeHandle\");\n return (\n <DraggedResizeHandleContext.Provider value={draggedHandle}>\n {props.children}\n </DraggedResizeHandleContext.Provider>\n );\n}\n\ninterface TabDragItem {\n type: \"tab\";\n id: TabState[\"id\"];\n}\n\ninterface WidgetDragItem {\n type: \"widget\";\n id: WidgetState[\"id\"];\n}\n\ninterface PanelGripDragItem {\n type: \"panelGrip\";\n id: PanelSide;\n}\n\ninterface ResizeHandleDragItem {\n type: \"resizeHandle\";\n id: FloatingWidgetResizeHandle;\n widgetId: WidgetState[\"id\"];\n}\n\n/** @internal */\nexport type DragItem =\n | TabDragItem\n | WidgetDragItem\n | PanelGripDragItem\n | ResizeHandleDragItem;\n\nfunction isResizeHandleDragItem(item: DragItem): item is ResizeHandleDragItem {\n return item.type === \"resizeHandle\";\n}\n\ninterface BaseDragInfo {\n initialPointerPosition: Point;\n lastPointerPosition: Point;\n pointerPosition: Point;\n}\n\ninterface TabDragInfo extends BaseDragInfo {\n widgetSize: SizeProps;\n}\n\ntype DragInfo = BaseDragInfo | TabDragInfo;\n\ninterface HandleDragStartArgs {\n item: DragItem;\n info: DragInfo;\n}\n\ninterface Dragged {\n item: DragItem;\n info: DragInfo;\n target: DropTargetState | undefined;\n}\n\ntype DragEventHandler = (\n item: DragItem,\n info: DragInfo,\n target: DropTargetState | undefined\n) => void;\ntype DropTargetChangedEventHandler = (\n target: DropTargetState | undefined\n) => void;\n\n/** @internal */\nexport class DragManager {\n private _dragged: Dragged | undefined;\n private _onDragStartEmitter = new BeEvent<DragEventHandler>();\n private _onDragUpdateEmitter = new BeEvent<DragEventHandler>();\n private _onDragEmitter = new BeEvent<DragEventHandler>();\n private _onDragEndEmitter = new BeEvent<DragEventHandler>();\n private _onTargetChangedEmitter =\n new BeEvent<DropTargetChangedEventHandler>();\n\n public get draggedItem() {\n return this._dragged;\n }\n\n public isTargeted(target: DropTargetState) {\n if (!this._dragged) return false;\n\n if (!this._dragged.target) return false;\n\n return isEqual(this._dragged.target, target);\n }\n\n public get onDragStart() {\n return this._onDragStartEmitter;\n }\n\n public get onDragUpdate() {\n return this._onDragUpdateEmitter;\n }\n\n public get onDrag() {\n return this._onDragEmitter;\n }\n\n public get onDragEnd() {\n return this._onDragEndEmitter;\n }\n\n public get onTargetChanged() {\n return this._onTargetChangedEmitter;\n }\n\n public handleDragStart({ item, info }: HandleDragStartArgs) {\n this._dragged = {\n item,\n info,\n target: undefined,\n };\n this._onDragStartEmitter.raiseEvent(\n this._dragged.item,\n this._dragged.info,\n this._dragged.target\n );\n }\n\n public handleDragUpdate(item: DragItem) {\n if (!this._dragged) return;\n\n this._dragged.item = item;\n this._onDragUpdateEmitter.raiseEvent(\n this._dragged.item,\n this._dragged.info,\n this._dragged.target\n );\n }\n\n public handleDrag(x: number, y: number) {\n if (!this._dragged) return;\n\n this._dragged.info.lastPointerPosition = this._dragged.info.pointerPosition;\n this._dragged.info.pointerPosition = new Point(x, y);\n\n this._onDragEmitter.raiseEvent(\n this._dragged.item,\n this._dragged.info,\n this._dragged.target\n );\n }\n\n public handleDragEnd() {\n if (!this._dragged) return;\n\n const item = this._dragged.item;\n const info = this._dragged.info;\n const target = this._dragged.target;\n this._dragged = undefined;\n this._onDragEndEmitter.raiseEvent(item, info, target);\n target && this._onTargetChangedEmitter.raiseEvent(undefined);\n }\n\n public handleTargetChanged(target: DropTargetState | undefined) {\n if (!this._dragged) return;\n this._dragged.target = target;\n this._onTargetChangedEmitter.raiseEvent(target);\n }\n}\n\n/** @internal */\nexport const DragManagerContext = React.createContext<DragManager>(null!);\nDragManagerContext.displayName = \"nz:DragManagerContext\";\n\n/** @internal */\nexport const DraggedWidgetIdContext = React.createContext<\n WidgetState[\"id\"] | undefined\n>(undefined);\nDraggedWidgetIdContext.displayName = \"nz:DraggedWidgetIdContext\";\n\n/** @internal */\nexport const DraggedPanelSideContext = React.createContext<\n PanelSide | undefined\n>(undefined);\nDraggedPanelSideContext.displayName = \"nz:DraggedPanelSideContext\";\n\n/** @internal */\nexport const DraggedResizeHandleContext = React.createContext<\n FloatingWidgetResizeHandle | undefined\n>(undefined);\nDraggedResizeHandleContext.displayName = \"nz:DraggedResizeHandleContext\";\n\n/** @internal */\nexport function useTargeted() {\n const dragManager = React.useContext(DragManagerContext);\n const [targeted, setTargeted] = React.useState<DropTargetState>();\n React.useEffect(() => {\n return dragManager.onTargetChanged.addListener((t) => {\n setTargeted(t);\n });\n }, [dragManager]);\n return targeted;\n}\n"]}
|
|
@@ -20,13 +20,13 @@ export class SafeAreaInsetsHelpers {
|
|
|
20
20
|
static isTop(flags) {
|
|
21
21
|
return SafeAreaInsets.Top.valueOf() === (flags & SafeAreaInsets.Top);
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
static getCssClassNames = (flags) => {
|
|
24
|
+
return {
|
|
25
|
+
"nz-safe-area-bottom": SafeAreaInsetsHelpers.isBottom(flags),
|
|
26
|
+
"nz-safe-area-left": SafeAreaInsetsHelpers.isLeft(flags),
|
|
27
|
+
"nz-safe-area-right": SafeAreaInsetsHelpers.isRight(flags),
|
|
28
|
+
"nz-safe-area-top": SafeAreaInsetsHelpers.isTop(flags),
|
|
29
|
+
};
|
|
30
30
|
};
|
|
31
|
-
}
|
|
31
|
+
}
|
|
32
32
|
//# sourceMappingURL=SafeAreaInsets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SafeAreaInsets.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/SafeAreaInsets.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,gBAAgB;AAChB,MAAM,OAAO,qBAAqB;IACzB,MAAM,CAAC,QAAQ,CAAC,KAAqB;QAC1C,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,KAAqB;QACxC,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,KAAqB;QACzC,OAAO,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAqB;QACvC,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC
|
|
1
|
+
{"version":3,"file":"SafeAreaInsets.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/SafeAreaInsets.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,gBAAgB;AAChB,MAAM,OAAO,qBAAqB;IACzB,MAAM,CAAC,QAAQ,CAAC,KAAqB;QAC1C,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,KAAqB;QACxC,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,KAAqB;QACzC,OAAO,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAqB;QACvC,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC;IAEM,MAAM,CAAC,gBAAgB,GAAG,CAAC,KAAqB,EAAE,EAAE;QACzD,OAAO;YACL,qBAAqB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5D,mBAAmB,EAAE,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC;YACxD,oBAAoB,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC;YAC1D,kBAAkB,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC;SACvD,CAAC;IACJ,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 Utilities\n */\nimport { SafeAreaInsets } from \"../../safearea/SafeAreaInsets.js\";\n\n/** @internal */\nexport class SafeAreaInsetsHelpers {\n public static isBottom(flags: SafeAreaInsets) {\n return SafeAreaInsets.Bottom.valueOf() === (flags & SafeAreaInsets.Bottom);\n }\n\n public static isLeft(flags: SafeAreaInsets) {\n return SafeAreaInsets.Left.valueOf() === (flags & SafeAreaInsets.Left);\n }\n\n public static isRight(flags: SafeAreaInsets) {\n return SafeAreaInsets.Right.valueOf() === (flags & SafeAreaInsets.Right);\n }\n\n public static isTop(flags: SafeAreaInsets) {\n return SafeAreaInsets.Top.valueOf() === (flags & SafeAreaInsets.Top);\n }\n\n public static getCssClassNames = (flags: SafeAreaInsets) => {\n return {\n \"nz-safe-area-bottom\": SafeAreaInsetsHelpers.isBottom(flags),\n \"nz-safe-area-left\": SafeAreaInsetsHelpers.isLeft(flags),\n \"nz-safe-area-right\": SafeAreaInsetsHelpers.isRight(flags),\n \"nz-safe-area-top\": SafeAreaInsetsHelpers.isTop(flags),\n };\n };\n}\n"]}
|
|
@@ -13,11 +13,14 @@ import { Point, Rectangle } from "@itwin/core-react/internal";
|
|
|
13
13
|
* @internal
|
|
14
14
|
*/
|
|
15
15
|
export class Tooltip extends React.PureComponent {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
static defaultProps = {
|
|
17
|
+
position: {
|
|
18
|
+
x: 0,
|
|
19
|
+
y: 0,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
_lastSize = { width: 0, height: 0 };
|
|
23
|
+
_tooltip = React.createRef();
|
|
21
24
|
render() {
|
|
22
25
|
const className = classnames("nz-popup-tooltip", this.props.className);
|
|
23
26
|
const style = {
|
|
@@ -49,12 +52,6 @@ export class Tooltip extends React.PureComponent {
|
|
|
49
52
|
this.props.onSizeChanged && this.props.onSizeChanged(size);
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
|
-
Tooltip.defaultProps = {
|
|
53
|
-
position: {
|
|
54
|
-
x: 0,
|
|
55
|
-
y: 0,
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
55
|
/** Function to apply offset and contain tooltip bounds in container.
|
|
59
56
|
* @internal
|
|
60
57
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/popup/Tooltip.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAyB9D;;GAEG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK,CAAC,aAA2B;
|
|
1
|
+
{"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/popup/Tooltip.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAyB9D;;GAEG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK,CAAC,aAA2B;IACrD,MAAM,CAAU,YAAY,GAAwB;QACzD,QAAQ,EAAE;YACR,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL;KACF,CAAC;IAEM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACpC,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;IAErC,MAAM;QACpB,MAAM,SAAS,GAAG,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEvE,MAAM,KAAK,GAAwB;YACjC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;YACnB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC3B,CAAC;QAEF,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK;YACxD,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAC/B,iCAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAO,CAC7B,CAAC,CAAC,CAAC,SAAS;YACb,6BAAK,SAAS,EAAC,YAAY,IAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAO,CACnD,CACP,CAAC;IACJ,CAAC;IAEe,iBAAiB;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEe,kBAAkB;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAQ,CAAC;QAEvC,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QAEF,IACE,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;YACnC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAErC,OAAO;QAET,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,aAA6B,EAC7B,aAAwB,EACxB,SAAgB,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAC1B,EAAE;IACT,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAChE,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;IAEpE,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC,OAAO,EAAE,CAAC;AAC7B,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 Popup\n */\n\nimport \"./Tooltip.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Point, Rectangle } from \"@itwin/core-react/internal\";\nimport type { XAndY } from \"../state/internal/NineZoneStateHelpers.js\";\nimport type { SizeProps } from \"../../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../../utils/RectangleProps.js\";\n\n/** Properties of [[Tooltip]] component.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface TooltipProps extends CommonProps {\n /** Tooltip content. */\n children?: React.ReactNode;\n /** Tooltip icon. */\n icon?: React.ReactNode;\n /** Function called when the bounds of the tooltip changes. */\n onSizeChanged?: (size: SizeProps) => void;\n /** Position of the tooltip. */\n position: XAndY;\n}\n\n/** Default properties of [[Tooltip]] component.\n * @internal\n */\nexport type TooltipDefaultProps = Pick<TooltipProps, \"position\">;\n\n/** Positionable tooltip component.\n * @internal\n */\nexport class Tooltip extends React.PureComponent<TooltipProps> {\n public static readonly defaultProps: TooltipDefaultProps = {\n position: {\n x: 0,\n y: 0,\n },\n };\n\n private _lastSize = { width: 0, height: 0 };\n private _tooltip = React.createRef<HTMLDivElement>();\n\n public override render() {\n const className = classnames(\"nz-popup-tooltip\", this.props.className);\n\n const style: React.CSSProperties = {\n ...this.props.style,\n left: this.props.position.x,\n top: this.props.position.y,\n };\n\n return (\n <div className={className} ref={this._tooltip} style={style}>\n {this.props.icon !== undefined ? (\n <div>{this.props.icon}</div>\n ) : undefined}\n <div className=\"nz-content\">{this.props.children}</div>\n </div>\n );\n }\n\n public override componentDidMount() {\n this.onSizeChanged();\n }\n\n public override componentDidUpdate(): void {\n this.onSizeChanged();\n }\n\n private onSizeChanged() {\n const tooltip = this._tooltip.current!;\n\n const rect = tooltip.getBoundingClientRect();\n const size = {\n height: rect.height,\n width: rect.width,\n };\n\n if (\n this._lastSize.width === size.width &&\n this._lastSize.height === size.height\n )\n return;\n\n this._lastSize = size;\n this.props.onSizeChanged && this.props.onSizeChanged(size);\n }\n}\n\n/** Function to apply offset and contain tooltip bounds in container.\n * @internal\n */\nexport const offsetAndContainInContainer = (\n tooltipBounds: RectangleProps,\n containerSize: SizeProps,\n offset: XAndY = new Point(20, 20)\n): Point => {\n let newBounds = Rectangle.create(tooltipBounds).offset(offset);\n const containerBounds = Rectangle.createFromSize(containerSize);\n if (containerBounds.contains(newBounds)) return newBounds.topLeft();\n\n newBounds = newBounds.containIn(containerBounds);\n return newBounds.topLeft();\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NineZoneStateReducer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/state/NineZoneStateReducer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAC;AAS9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0DxD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,GACrB,aAAa,
|
|
1
|
+
{"version":3,"file":"NineZoneStateReducer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/state/NineZoneStateReducer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAC;AAS9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0DxD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,GACrB,aAAa,CAq0Bf"}
|
|
@@ -219,18 +219,22 @@ export function NineZoneStateReducer(state, action) {
|
|
|
219
219
|
const minHeight = 120;
|
|
220
220
|
let newBounds = Rectangle.create(floatingWidget.bounds);
|
|
221
221
|
// Resize top-left corner.
|
|
222
|
+
const minLeft = 0;
|
|
223
|
+
const minTop = 0;
|
|
222
224
|
const maxLeft = newBounds.right - minWidth;
|
|
223
225
|
const maxTop = newBounds.bottom - minHeight;
|
|
224
226
|
newBounds = newBounds.inset(-resizeBy.left, -resizeBy.top, 0, 0);
|
|
225
|
-
const left = Math.min(maxLeft, newBounds.left);
|
|
226
|
-
const top = Math.min(maxTop, newBounds.top);
|
|
227
|
+
const left = Math.max(Math.min(maxLeft, newBounds.left), minLeft);
|
|
228
|
+
const top = Math.max(Math.min(maxTop, newBounds.top), minTop);
|
|
227
229
|
newBounds = new Rectangle(left, top, newBounds.right, newBounds.bottom);
|
|
228
230
|
// Resize bottom-right corner.
|
|
229
231
|
const minRight = newBounds.left + minWidth;
|
|
230
232
|
const minBottom = newBounds.top + minHeight;
|
|
233
|
+
const maxRight = state.size.width;
|
|
234
|
+
const maxBottom = state.size.height;
|
|
231
235
|
newBounds = newBounds.inset(0, 0, -resizeBy.right, -resizeBy.bottom);
|
|
232
|
-
const right = Math.max(
|
|
233
|
-
const bottom = Math.max(
|
|
236
|
+
const right = Math.max(Math.min(maxRight, newBounds.right), minRight);
|
|
237
|
+
const bottom = Math.max(Math.min(maxBottom, newBounds.bottom), minBottom);
|
|
234
238
|
newBounds = new Rectangle(left, top, right, bottom);
|
|
235
239
|
state = updateFloatingWidgetState(state, action.id, {
|
|
236
240
|
bounds: newBounds,
|