@finsemble/finsemble-ui 8.3.0 → 8.4.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FEA.d.ts +54 -24
- package/FEA.d.ts.map +1 -1
- package/FEA.js.map +1 -1
- package/clients/Interop/FinsembleDesktopAgent.js +2 -2
- package/clients/Interop/FinsembleDesktopAgent.js.map +1 -1
- package/clients/Startup/FSBLDesktop.d.ts +2 -8
- package/clients/Startup/FSBLDesktop.d.ts.map +1 -1
- package/clients/Startup/FSBLDesktop.js +2 -4
- package/clients/Startup/FSBLDesktop.js.map +1 -1
- package/clients/Startup/unhandledErrors.d.ts.map +1 -1
- package/clients/Startup/unhandledErrors.js +6 -4
- package/clients/Startup/unhandledErrors.js.map +1 -1
- package/clients/Startup/windowStartup.d.ts.map +1 -1
- package/clients/Startup/windowStartup.js +77 -116
- package/clients/Startup/windowStartup.js.map +1 -1
- package/clients/StoreModel.d.ts +8 -8
- package/clients/StoreModel.js +8 -8
- package/clients/appsClient.d.ts +90 -0
- package/clients/appsClient.d.ts.map +1 -0
- package/clients/appsClient.js +51 -0
- package/clients/appsClient.js.map +1 -0
- package/clients/authenticationClient.d.ts +29 -27
- package/clients/authenticationClient.d.ts.map +1 -1
- package/clients/authenticationClient.js +11 -15
- package/clients/authenticationClient.js.map +1 -1
- package/clients/configClient.d.ts +134 -70
- package/clients/configClient.d.ts.map +1 -1
- package/clients/configClient.js +129 -112
- package/clients/configClient.js.map +1 -1
- package/clients/controller/DialogManagerClientController.d.ts +78 -0
- package/clients/controller/DialogManagerClientController.d.ts.map +1 -0
- package/clients/controller/DialogManagerClientController.js +213 -0
- package/clients/controller/DialogManagerClientController.js.map +1 -0
- package/clients/dialogManagerClient.d.ts +1 -75
- package/clients/dialogManagerClient.d.ts.map +1 -1
- package/clients/dialogManagerClient.js +1 -208
- package/clients/dialogManagerClient.js.map +1 -1
- package/clients/distributedStoreClient.d.ts +1 -0
- package/clients/distributedStoreClient.d.ts.map +1 -1
- package/clients/distributedStoreClient.js +1 -0
- package/clients/distributedStoreClient.js.map +1 -1
- package/clients/hotkeyClient.d.ts +18 -9
- package/clients/hotkeyClient.d.ts.map +1 -1
- package/clients/hotkeyClient.js +30 -14
- package/clients/hotkeyClient.js.map +1 -1
- package/clients/index.d.ts +2 -0
- package/clients/index.d.ts.map +1 -1
- package/clients/index.js +2 -0
- package/clients/index.js.map +1 -1
- package/clients/launcherClient.d.ts +157 -47
- package/clients/launcherClient.d.ts.map +1 -1
- package/clients/launcherClient.js +201 -22
- package/clients/launcherClient.js.map +1 -1
- package/clients/logger.d.ts.map +1 -1
- package/clients/logger.js +43 -41
- package/clients/logger.js.map +1 -1
- package/clients/notificationClient.d.ts +2 -2
- package/clients/notificationClient.d.ts.map +1 -1
- package/clients/notificationClient.js +2 -2
- package/clients/notificationClient.js.map +1 -1
- package/clients/routerClient.d.ts +25 -21
- package/clients/routerClient.d.ts.map +1 -1
- package/clients/routerClient.js +24 -20
- package/clients/routerClient.js.map +1 -1
- package/clients/searchClient.d.ts +2 -2
- package/clients/searchClient.js +2 -2
- package/clients/storageClient.d.ts +8 -5
- package/clients/storageClient.d.ts.map +1 -1
- package/clients/storageClient.js +7 -5
- package/clients/storageClient.js.map +1 -1
- package/clients/windowClient.d.ts +160 -79
- package/clients/windowClient.d.ts.map +1 -1
- package/clients/windowClient.js +244 -138
- package/clients/windowClient.js.map +1 -1
- package/clients/workspaceClient.d.ts +19 -14
- package/clients/workspaceClient.d.ts.map +1 -1
- package/clients/workspaceClient.js +15 -9
- package/clients/workspaceClient.js.map +1 -1
- package/common/Desktop.d.ts +9 -50
- package/common/Desktop.d.ts.map +1 -1
- package/common/Desktop.js +11 -64
- package/common/Desktop.js.map +1 -1
- package/common/FinsembleWindow.d.ts +4 -107
- package/common/FinsembleWindow.d.ts.map +1 -1
- package/common/FinsembleWindow.js +21 -342
- package/common/FinsembleWindow.js.map +1 -1
- package/common/Monitors.d.ts +30 -18
- package/common/Monitors.d.ts.map +1 -1
- package/common/Monitors.js +45 -80
- package/common/Monitors.js.map +1 -1
- package/common/Singleton.d.ts +7 -1
- package/common/Singleton.d.ts.map +1 -1
- package/common/Singleton.js +24 -11
- package/common/Singleton.js.map +1 -1
- package/common/constants.d.ts +3 -9
- package/common/constants.d.ts.map +1 -1
- package/common/constants.js +3 -14
- package/common/constants.js.map +1 -1
- package/common/events/FinsembleEvent.d.ts +1 -1
- package/common/events/FinsembleEvent.d.ts.map +1 -1
- package/common/redux/getRemoteStore.d.ts +53 -0
- package/common/redux/getRemoteStore.d.ts.map +1 -0
- package/common/redux/getRemoteStore.js +50 -0
- package/common/redux/getRemoteStore.js.map +1 -0
- package/common/redux/remoteReduxEnhancer.d.ts +7 -7
- package/common/redux/remoteReduxEnhancer.d.ts.map +1 -1
- package/common/redux/remoteReduxEnhancer.js +35 -20
- package/common/redux/remoteReduxEnhancer.js.map +1 -1
- package/common/redux/types.d.ts +14 -1
- package/common/redux/types.d.ts.map +1 -1
- package/common/systemManagerClient.d.ts +11 -5
- package/common/systemManagerClient.d.ts.map +1 -1
- package/common/systemManagerClient.js +25 -8
- package/common/systemManagerClient.js.map +1 -1
- package/common/util.d.ts +1 -7
- package/common/util.d.ts.map +1 -1
- package/common/util.js +1 -14
- package/common/util.js.map +1 -1
- package/deprecated/deprecatedFunctions.d.ts +1 -1
- package/deprecated/deprecatedFunctions.d.ts.map +1 -1
- package/deprecated/deprecatedFunctions.js +1 -2
- package/deprecated/deprecatedFunctions.js.map +1 -1
- package/deprecated/dragAndDropClient.d.ts +3 -3
- package/deprecated/dragAndDropClient.d.ts.map +1 -1
- package/deprecated/dragAndDropClient.js.map +1 -1
- package/deprecated/linkerClient.d.ts +1 -1
- package/deprecated/linkerClient.d.ts.map +1 -1
- package/main.d.ts +289 -190
- package/main.d.ts.map +1 -1
- package/main.js +3 -1
- package/main.js.map +1 -1
- package/package.json +3 -3
- package/platform/services/Interop/types.d.ts +2 -1
- package/platform/services/Interop/types.d.ts.map +1 -1
- package/platform/services/router/types.d.ts +5 -6
- package/platform/services/router/types.d.ts.map +1 -1
- package/platform/services/systemManager/_constants.d.ts +1 -0
- package/platform/services/systemManager/_constants.d.ts.map +1 -1
- package/platform/services/systemManager/_constants.js +1 -0
- package/platform/services/systemManager/_constants.js.map +1 -1
- package/platform/services/window/modules/actions.d.ts +59 -0
- package/platform/services/window/modules/actions.d.ts.map +1 -0
- package/platform/services/window/modules/actions.js +57 -0
- package/platform/services/window/modules/actions.js.map +1 -0
- package/platform/services/window/types.d.ts +257 -50
- package/platform/services/window/types.d.ts.map +1 -1
- package/platform/services/workspace/types.d.ts +4 -3
- package/platform/services/workspace/types.d.ts.map +1 -1
- package/react/assets/css/core/icons.css +0 -5
- package/react/assets/css/processMonitor.css +9 -4
- package/react/assets/css/windowTitleBar.css +98 -285
- package/react/assets/icons/chevron-down.svg +1 -0
- package/react/assets/icons/chevron-up.svg +1 -0
- package/react/components/common/ButtonRow.d.ts.map +1 -1
- package/react/components/common/ButtonRow.js +4 -9
- package/react/components/common/ButtonRow.js.map +1 -1
- package/react/components/common/ContextMenu.d.ts.map +1 -1
- package/react/components/common/ContextMenu.js +2 -10
- package/react/components/common/ContextMenu.js.map +1 -1
- package/react/components/common/DropdownButton.d.ts.map +1 -1
- package/react/components/common/DropdownButton.js +11 -24
- package/react/components/common/DropdownButton.js.map +1 -1
- package/react/components/common/FinsembleIcon.d.ts +1 -1
- package/react/components/common/FinsembleIcon.d.ts.map +1 -1
- package/react/components/common/FinsembleIcon.js +6 -4
- package/react/components/common/FinsembleIcon.js.map +1 -1
- package/react/components/common/css/accordion.css +9 -21
- package/react/components/common/css/application-edit-page.css +0 -4
- package/react/components/common/css/selector.css +3 -1
- package/react/components/downloadManager/DownloadManager.d.ts +1 -1
- package/react/components/downloadManager/DownloadManager.d.ts.map +1 -1
- package/react/components/downloadManager/DownloadManager.js +2 -4
- package/react/components/downloadManager/DownloadManager.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverContainer.d.ts +6 -0
- package/react/components/fdc3Resolver/ResolverContainer.d.ts.map +1 -1
- package/react/components/fdc3Resolver/ResolverContainer.js +37 -89
- package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.d.ts +10 -1
- package/react/components/fdc3Resolver/ResolverDialog.d.ts.map +1 -1
- package/react/components/fdc3Resolver/ResolverDialog.js +78 -66
- package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
- package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +1 -1
- package/react/components/legacyControls/FinsembleDialogTextInput.d.ts.map +1 -1
- package/react/components/linker/remoteRedux.d.ts +2 -9
- package/react/components/linker/remoteRedux.d.ts.map +1 -1
- package/react/components/linker/remoteRedux.js +2 -22
- package/react/components/linker/remoteRedux.js.map +1 -1
- package/react/components/notifications/css/notification-center.css +2 -0
- package/react/components/processMonitor/ProcessMonitor.d.ts.map +1 -1
- package/react/components/processMonitor/ProcessMonitor.js +14 -36
- package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
- package/react/components/processMonitor/ProcessMonitorTypes.d.ts +0 -4
- package/react/components/processMonitor/ProcessMonitorTypes.d.ts.map +1 -1
- package/react/components/processMonitor/ProcessMonitorTypes.js +1 -5
- package/react/components/processMonitor/ProcessMonitorTypes.js.map +1 -1
- package/react/components/processMonitor/components/ChildWindow.d.ts +2 -3
- package/react/components/processMonitor/components/ChildWindow.d.ts.map +1 -1
- package/react/components/processMonitor/components/ChildWindow.js +5 -9
- package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
- package/react/components/processMonitor/components/ListHeader.d.ts +1 -5
- package/react/components/processMonitor/components/ListHeader.d.ts.map +1 -1
- package/react/components/processMonitor/components/ListHeader.js +3 -2
- package/react/components/processMonitor/components/ListHeader.js.map +1 -1
- package/react/components/processMonitor/components/Process.d.ts +10 -0
- package/react/components/processMonitor/components/Process.d.ts.map +1 -0
- package/react/components/processMonitor/components/Process.js +11 -0
- package/react/components/processMonitor/components/Process.js.map +1 -0
- package/react/components/processMonitor/components/ProcessStatistics.d.ts +5 -4
- package/react/components/processMonitor/components/ProcessStatistics.d.ts.map +1 -1
- package/react/components/processMonitor/components/ProcessStatistics.js +10 -7
- package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
- package/react/components/processMonitor/constants.d.ts +1 -2
- package/react/components/processMonitor/constants.d.ts.map +1 -1
- package/react/components/processMonitor/constants.js +2 -8
- package/react/components/processMonitor/constants.js.map +1 -1
- package/react/components/processMonitor/helpers.d.ts +0 -1
- package/react/components/processMonitor/helpers.d.ts.map +1 -1
- package/react/components/processMonitor/helpers.js +2 -9
- package/react/components/processMonitor/helpers.js.map +1 -1
- package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +0 -4
- package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts.map +1 -1
- package/react/components/processMonitor/stores/ProcessMonitorStore.js +0 -29
- package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
- package/react/components/search/SearchInput.d.ts +1 -2
- package/react/components/search/SearchInput.d.ts.map +1 -1
- package/react/components/search/SearchInput.js +11 -13
- package/react/components/search/SearchInput.js.map +1 -1
- package/react/components/shared/openQuitConfirmationDialog.d.ts.map +1 -1
- package/react/components/shared/openQuitConfirmationDialog.js +31 -4
- package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.d.ts.map +1 -1
- package/react/components/singleInputDialog/SingleInputDialog.js +81 -100
- package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
- package/react/components/toolbar/ToolbarShell.d.ts +1 -0
- package/react/components/toolbar/ToolbarShell.d.ts.map +1 -1
- package/react/components/toolbar/ToolbarShell.js +3 -2
- package/react/components/toolbar/ToolbarShell.js.map +1 -1
- package/react/components/utils.d.ts +50 -0
- package/react/components/utils.d.ts.map +1 -0
- package/react/components/utils.js +60 -0
- package/react/components/utils.js.map +1 -0
- package/react/components/windowTitleBar/AlwaysOnTopButton.d.ts +9 -0
- package/react/components/windowTitleBar/AlwaysOnTopButton.d.ts.map +1 -0
- package/react/components/windowTitleBar/AlwaysOnTopButton.js +29 -0
- package/react/components/windowTitleBar/AlwaysOnTopButton.js.map +1 -0
- package/react/components/windowTitleBar/{components/right/CloseButton.d.ts → CloseButton.d.ts} +0 -0
- package/react/components/windowTitleBar/CloseButton.d.ts.map +1 -0
- package/react/components/windowTitleBar/CloseButton.js +22 -0
- package/react/components/windowTitleBar/CloseButton.js.map +1 -0
- package/react/components/windowTitleBar/GroupingButton.d.ts +3 -0
- package/react/components/windowTitleBar/GroupingButton.d.ts.map +1 -0
- package/react/components/windowTitleBar/GroupingButton.js +25 -0
- package/react/components/windowTitleBar/GroupingButton.js.map +1 -0
- package/react/components/windowTitleBar/{components/left/LinkerButton.d.ts → LinkerButton.d.ts} +0 -0
- package/react/components/windowTitleBar/LinkerButton.d.ts.map +1 -0
- package/react/components/windowTitleBar/{components/left/LinkerButton.js → LinkerButton.js} +4 -4
- package/react/components/windowTitleBar/LinkerButton.js.map +1 -0
- package/react/components/windowTitleBar/LinkerButtonDeprecated.d.ts +11 -0
- package/react/components/windowTitleBar/LinkerButtonDeprecated.d.ts.map +1 -0
- package/react/components/windowTitleBar/LinkerButtonDeprecated.js +63 -0
- package/react/components/windowTitleBar/LinkerButtonDeprecated.js.map +1 -0
- package/react/components/windowTitleBar/{components/left/LinkerGroups.d.ts → LinkerGroups.d.ts} +0 -0
- package/react/components/windowTitleBar/LinkerGroups.d.ts.map +1 -0
- package/react/components/windowTitleBar/{components/left/LinkerGroups.js → LinkerGroups.js} +2 -3
- package/react/components/windowTitleBar/LinkerGroups.js.map +1 -0
- package/react/components/windowTitleBar/LinkerGroupsDeprecated.d.ts +7 -0
- package/react/components/windowTitleBar/LinkerGroupsDeprecated.d.ts.map +1 -0
- package/react/components/windowTitleBar/LinkerGroupsDeprecated.js +35 -0
- package/react/components/windowTitleBar/LinkerGroupsDeprecated.js.map +1 -0
- package/react/components/windowTitleBar/MaximizeButton.d.ts +3 -0
- package/react/components/windowTitleBar/MaximizeButton.d.ts.map +1 -0
- package/react/components/windowTitleBar/MaximizeButton.js +18 -0
- package/react/components/windowTitleBar/MaximizeButton.js.map +1 -0
- package/react/components/windowTitleBar/MinimizeButton.d.ts +3 -0
- package/react/components/windowTitleBar/MinimizeButton.d.ts.map +1 -0
- package/react/components/windowTitleBar/MinimizeButton.js +21 -0
- package/react/components/windowTitleBar/MinimizeButton.js.map +1 -0
- package/react/components/windowTitleBar/ShareButton.d.ts +3 -0
- package/react/components/windowTitleBar/ShareButton.d.ts.map +1 -0
- package/react/components/windowTitleBar/ShareButton.js +24 -0
- package/react/components/windowTitleBar/ShareButton.js.map +1 -0
- package/react/components/windowTitleBar/TabRegion.d.ts +7 -0
- package/react/components/windowTitleBar/TabRegion.d.ts.map +1 -0
- package/react/components/windowTitleBar/TabRegion.js +453 -0
- package/react/components/windowTitleBar/TabRegion.js.map +1 -0
- package/react/components/windowTitleBar/TabTitle.d.ts +8 -0
- package/react/components/windowTitleBar/TabTitle.d.ts.map +1 -0
- package/react/components/windowTitleBar/TabTitle.js +17 -0
- package/react/components/windowTitleBar/TabTitle.js.map +1 -0
- package/react/components/windowTitleBar/TitleEdit.d.ts +10 -0
- package/react/components/windowTitleBar/TitleEdit.d.ts.map +1 -0
- package/react/components/windowTitleBar/TitleEdit.js +30 -0
- package/react/components/windowTitleBar/TitleEdit.js.map +1 -0
- package/react/components/windowTitleBar/WindowTitleBarContext.d.ts +12 -0
- package/react/components/windowTitleBar/WindowTitleBarContext.d.ts.map +1 -0
- package/react/components/windowTitleBar/WindowTitleBarContext.js +3 -0
- package/react/components/windowTitleBar/WindowTitleBarContext.js.map +1 -0
- package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +14 -272
- package/react/components/windowTitleBar/WindowTitleBarShell.d.ts.map +1 -1
- package/react/components/windowTitleBar/WindowTitleBarShell.js +41 -929
- package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
- package/react/components/windowTitleBar/index.d.ts +9 -8
- package/react/components/windowTitleBar/index.d.ts.map +1 -1
- package/react/components/windowTitleBar/index.js +9 -8
- package/react/components/windowTitleBar/index.js.map +1 -1
- package/react/components/windowTitleBar/useKeyboardNavigation.d.ts +7 -0
- package/react/components/windowTitleBar/useKeyboardNavigation.d.ts.map +1 -0
- package/react/components/windowTitleBar/useKeyboardNavigation.js +57 -0
- package/react/components/windowTitleBar/useKeyboardNavigation.js.map +1 -0
- package/react/components/windowTitleBar/useMaximize.d.ts +5 -0
- package/react/components/windowTitleBar/useMaximize.d.ts.map +1 -0
- package/react/components/windowTitleBar/useMaximize.js +23 -0
- package/react/components/windowTitleBar/useMaximize.js.map +1 -0
- package/react/components/yesNoDialog/timer.js +2 -1
- package/react/components/yesNoDialog/timer.js.map +1 -1
- package/react/hooks/useDashbar.d.ts.map +1 -1
- package/react/hooks/useDashbar.js.map +1 -1
- package/react/hooks/useDragRegion.d.ts +27 -0
- package/react/hooks/useDragRegion.d.ts.map +1 -0
- package/react/hooks/useDragRegion.js +74 -0
- package/react/hooks/useDragRegion.js.map +1 -0
- package/react/hooks/useInjectedTitleBar.d.ts +3 -0
- package/react/hooks/useInjectedTitleBar.d.ts.map +1 -0
- package/react/hooks/useInjectedTitleBar.js +365 -0
- package/react/hooks/useInjectedTitleBar.js.map +1 -0
- package/react/hooks/useNotifications.d.ts +1 -1
- package/react/hooks/useToolbar.d.ts +1 -0
- package/react/hooks/useToolbar.d.ts.map +1 -1
- package/react/hooks/useToolbar.js +13 -3
- package/react/hooks/useToolbar.js.map +1 -1
- package/typedoc-types.d.ts +9 -0
- package/typedoc-types.d.ts.map +1 -0
- package/typedoc-types.js +6 -0
- package/typedoc-types.js.map +1 -0
- package/types.d.ts +5 -11
- package/types.d.ts.map +1 -1
- package/types.js +2 -0
- package/types.js.map +1 -1
- package/common/events/PrivateEventManager.d.ts +0 -95
- package/common/events/PrivateEventManager.d.ts.map +0 -1
- package/common/events/PrivateEventManager.js +0 -295
- package/common/events/PrivateEventManager.js.map +0 -1
- package/common/events/PrivateFinsembleEvent.d.ts +0 -30
- package/common/events/PrivateFinsembleEvent.d.ts.map +0 -1
- package/common/events/PrivateFinsembleEvent.js +0 -65
- package/common/events/PrivateFinsembleEvent.js.map +0 -1
- package/common/redux/createReducer.d.ts +0 -128
- package/common/redux/createReducer.d.ts.map +0 -1
- package/common/redux/createReducer.js +0 -298
- package/common/redux/createReducer.js.map +0 -1
- package/common/redux/index.d.ts +0 -3
- package/common/redux/index.d.ts.map +0 -1
- package/common/redux/index.js +0 -3
- package/common/redux/index.js.map +0 -1
- package/platform/services/window/Common/Pools/ObjectPool.d.ts +0 -11
- package/platform/services/window/Common/Pools/ObjectPool.d.ts.map +0 -1
- package/platform/services/window/Common/Pools/ObjectPool.js +0 -43
- package/platform/services/window/Common/Pools/ObjectPool.js.map +0 -1
- package/platform/services/window/Common/Pools/PoolSingletons.d.ts +0 -10
- package/platform/services/window/Common/Pools/PoolSingletons.d.ts.map +0 -1
- package/platform/services/window/Common/Pools/PoolSingletons.js +0 -10
- package/platform/services/window/Common/Pools/PoolSingletons.js.map +0 -1
- package/platform/services/window/Common/Pools/WindowPool.d.ts +0 -7
- package/platform/services/window/Common/Pools/WindowPool.d.ts.map +0 -1
- package/platform/services/window/Common/Pools/WindowPool.js +0 -16
- package/platform/services/window/Common/Pools/WindowPool.js.map +0 -1
- package/platform/services/window/Docking/boxMath.d.ts +0 -144
- package/platform/services/window/Docking/boxMath.d.ts.map +0 -1
- package/platform/services/window/Docking/boxMath.js +0 -511
- package/platform/services/window/Docking/boxMath.js.map +0 -1
- package/platform/services/window/Docking/constants.d.ts +0 -29
- package/platform/services/window/Docking/constants.d.ts.map +0 -1
- package/platform/services/window/Docking/constants.js +0 -29
- package/platform/services/window/Docking/constants.js.map +0 -1
- package/platform/services/window/Docking/dockableBox.d.ts +0 -117
- package/platform/services/window/Docking/dockableBox.d.ts.map +0 -1
- package/platform/services/window/Docking/dockableBox.js +0 -525
- package/platform/services/window/Docking/dockableBox.js.map +0 -1
- package/platform/services/window/Docking/dockableGroup.d.ts +0 -252
- package/platform/services/window/Docking/dockableGroup.d.ts.map +0 -1
- package/platform/services/window/Docking/dockableGroup.js +0 -1054
- package/platform/services/window/Docking/dockableGroup.js.map +0 -1
- package/platform/services/window/Docking/dockableMonitor.d.ts +0 -99
- package/platform/services/window/Docking/dockableMonitor.d.ts.map +0 -1
- package/platform/services/window/Docking/dockableMonitor.js +0 -427
- package/platform/services/window/Docking/dockableMonitor.js.map +0 -1
- package/platform/services/window/Docking/dockableWindow.d.ts +0 -272
- package/platform/services/window/Docking/dockableWindow.d.ts.map +0 -1
- package/platform/services/window/Docking/dockableWindow.js +0 -1239
- package/platform/services/window/Docking/dockableWindow.js.map +0 -1
- package/platform/services/window/Docking/dockingCalculator.d.ts +0 -741
- package/platform/services/window/Docking/dockingCalculator.d.ts.map +0 -1
- package/platform/services/window/Docking/dockingCalculator.js +0 -3438
- package/platform/services/window/Docking/dockingCalculator.js.map +0 -1
- package/platform/services/window/Docking/dockingMain.d.ts +0 -349
- package/platform/services/window/Docking/dockingMain.d.ts.map +0 -1
- package/platform/services/window/Docking/dockingMain.js +0 -2541
- package/platform/services/window/Docking/dockingMain.js.map +0 -1
- package/platform/services/window/Docking/maskBoundsCalculator.d.ts +0 -28
- package/platform/services/window/Docking/maskBoundsCalculator.d.ts.map +0 -1
- package/platform/services/window/Docking/maskBoundsCalculator.js +0 -67
- package/platform/services/window/Docking/maskBoundsCalculator.js.map +0 -1
- package/platform/services/window/Docking/monitorUpdateHandler.d.ts +0 -32
- package/platform/services/window/Docking/monitorUpdateHandler.d.ts.map +0 -1
- package/platform/services/window/Docking/monitorUpdateHandler.js +0 -117
- package/platform/services/window/Docking/monitorUpdateHandler.js.map +0 -1
- package/platform/services/window/Docking/types.d.ts +0 -334
- package/platform/services/window/Docking/types.d.ts.map +0 -1
- package/platform/services/window/Docking/types.js +0 -12
- package/platform/services/window/Docking/types.js.map +0 -1
- package/platform/services/window/MultiWindowFeatures/autoArrange.d.ts +0 -90
- package/platform/services/window/MultiWindowFeatures/autoArrange.d.ts.map +0 -1
- package/platform/services/window/MultiWindowFeatures/autoArrange.js +0 -510
- package/platform/services/window/MultiWindowFeatures/autoArrange.js.map +0 -1
- package/platform/services/window/StackedWindowManager/stackedWindowManager.d.ts +0 -411
- package/platform/services/window/StackedWindowManager/stackedWindowManager.d.ts.map +0 -1
- package/platform/services/window/StackedWindowManager/stackedWindowManager.js +0 -1641
- package/platform/services/window/StackedWindowManager/stackedWindowManager.js.map +0 -1
- package/platform/services/window/WindowAbstractions/BaseWindow.d.ts +0 -469
- package/platform/services/window/WindowAbstractions/BaseWindow.d.ts.map +0 -1
- package/platform/services/window/WindowAbstractions/BaseWindow.js +0 -1347
- package/platform/services/window/WindowAbstractions/BaseWindow.js.map +0 -1
- package/platform/services/window/WindowAbstractions/FinsembleWindowInternal.d.ts +0 -9
- package/platform/services/window/WindowAbstractions/FinsembleWindowInternal.d.ts.map +0 -1
- package/platform/services/window/WindowAbstractions/FinsembleWindowInternal.js +0 -23
- package/platform/services/window/WindowAbstractions/FinsembleWindowInternal.js.map +0 -1
- package/platform/services/window/WindowAbstractions/WebWindowWrapper.d.ts +0 -227
- package/platform/services/window/WindowAbstractions/WebWindowWrapper.d.ts.map +0 -1
- package/platform/services/window/WindowAbstractions/WebWindowWrapper.js +0 -1168
- package/platform/services/window/WindowAbstractions/WebWindowWrapper.js.map +0 -1
- package/platform/services/window/WindowAbstractions/externalWindowWrapper.d.ts +0 -121
- package/platform/services/window/WindowAbstractions/externalWindowWrapper.d.ts.map +0 -1
- package/platform/services/window/WindowAbstractions/externalWindowWrapper.js +0 -591
- package/platform/services/window/WindowAbstractions/externalWindowWrapper.js.map +0 -1
- package/platform/services/window/WindowAbstractions/stackedWindowWrapper.d.ts +0 -194
- package/platform/services/window/WindowAbstractions/stackedWindowWrapper.d.ts.map +0 -1
- package/platform/services/window/WindowAbstractions/stackedWindowWrapper.js +0 -680
- package/platform/services/window/WindowAbstractions/stackedWindowWrapper.js.map +0 -1
- package/platform/services/window/windowGroup.d.ts +0 -86
- package/platform/services/window/windowGroup.d.ts.map +0 -1
- package/platform/services/window/windowGroup.js +0 -323
- package/platform/services/window/windowGroup.js.map +0 -1
- package/platform/services/workspace/windowStorageManager.d.ts +0 -180
- package/platform/services/workspace/windowStorageManager.d.ts.map +0 -1
- package/platform/services/workspace/windowStorageManager.js +0 -195
- package/platform/services/workspace/windowStorageManager.js.map +0 -1
- package/react/assets/icons/question-circle.svg +0 -6
- package/react/components/legacyControls/FinsembleHoverDetector.d.ts +0 -23
- package/react/components/legacyControls/FinsembleHoverDetector.d.ts.map +0 -1
- package/react/components/legacyControls/FinsembleHoverDetector.js +0 -57
- package/react/components/legacyControls/FinsembleHoverDetector.js.map +0 -1
- package/react/components/sdd/Appearance.helpers.d.ts +0 -2
- package/react/components/sdd/Appearance.helpers.d.ts.map +0 -1
- package/react/components/sdd/Appearance.helpers.js +0 -2
- package/react/components/sdd/Appearance.helpers.js.map +0 -1
- package/react/components/shared/linkerUtil.d.ts +0 -4
- package/react/components/shared/linkerUtil.d.ts.map +0 -1
- package/react/components/shared/linkerUtil.js +0 -10
- package/react/components/shared/linkerUtil.js.map +0 -1
- package/react/components/windowTitleBar/components/center/Tab.d.ts +0 -31
- package/react/components/windowTitleBar/components/center/Tab.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/center/Tab.js +0 -58
- package/react/components/windowTitleBar/components/center/Tab.js.map +0 -1
- package/react/components/windowTitleBar/components/center/TabList.d.ts +0 -138
- package/react/components/windowTitleBar/components/center/TabList.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/center/TabList.js +0 -614
- package/react/components/windowTitleBar/components/center/TabList.js.map +0 -1
- package/react/components/windowTitleBar/components/center/TabRegion.d.ts +0 -3
- package/react/components/windowTitleBar/components/center/TabRegion.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/center/TabRegion.js +0 -13
- package/react/components/windowTitleBar/components/center/TabRegion.js.map +0 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/left/LinkerButton.js.map +0 -1
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +0 -85
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js +0 -172
- package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +0 -1
- package/react/components/windowTitleBar/components/left/LinkerGroups.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +0 -1
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts +0 -50
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js +0 -120
- package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +0 -1
- package/react/components/windowTitleBar/components/left/ShareButton.d.ts +0 -42
- package/react/components/windowTitleBar/components/left/ShareButton.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/left/ShareButton.js +0 -82
- package/react/components/windowTitleBar/components/left/ShareButton.js.map +0 -1
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.d.ts +0 -3
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js +0 -15
- package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +0 -1
- package/react/components/windowTitleBar/components/right/CloseButton.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/right/CloseButton.js +0 -16
- package/react/components/windowTitleBar/components/right/CloseButton.js.map +0 -1
- package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +0 -50
- package/react/components/windowTitleBar/components/right/GroupingButton.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/right/GroupingButton.js +0 -82
- package/react/components/windowTitleBar/components/right/GroupingButton.js.map +0 -1
- package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +0 -59
- package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/right/MaximizeButton.js +0 -96
- package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +0 -1
- package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +0 -26
- package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/right/MinimizeButton.js +0 -32
- package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +0 -1
- package/react/components/windowTitleBar/components/windowTitle.d.ts +0 -67
- package/react/components/windowTitleBar/components/windowTitle.d.ts.map +0 -1
- package/react/components/windowTitleBar/components/windowTitle.js +0 -382
- package/react/components/windowTitleBar/components/windowTitle.js.map +0 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +0 -69
- package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts.map +0 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStore.js +0 -610
- package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +0 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.d.ts +0 -44
- package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.d.ts.map +0 -1
- package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.js +0 -43
- package/react/components/windowTitleBar/stores/windowTitleBarStoreDefaults.js.map +0 -1
- package/react/components/windowTitleBar/windowTitleBarContext.d.ts +0 -23
- package/react/components/windowTitleBar/windowTitleBarContext.d.ts.map +0 -1
- package/react/components/windowTitleBar/windowTitleBarContext.js +0 -22
- package/react/components/windowTitleBar/windowTitleBarContext.js.map +0 -1
- package/react/types/windowTitleBar.d.ts +0 -49
- package/react/types/windowTitleBar.d.ts.map +0 -1
- package/react/types/windowTitleBar.js +0 -2
- package/react/types/windowTitleBar.js.map +0 -1
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* There are several UI aspects brought together in the tabbing implementation.
|
|
3
|
+
*
|
|
4
|
+
* 1) Rendering tab collections. A redux store in the window service provides the single source of truth for tab rendering. Each
|
|
5
|
+
* WindowTitleBar subscribes to that store via remote-redux. Activity (such as clicking on a tab) is then published back to the
|
|
6
|
+
* remote store via redux dispatch actions. There are no client side effects that use the FSBL library or FinsembleWindow.
|
|
7
|
+
*
|
|
8
|
+
* 2) Tab dragging - this includes re-ordering of tabs, moving tabs between windows, removing tabs from collections and using the tab
|
|
9
|
+
* drag to initiate tiling. Tab dragging uses the `dragging` section of the remote-redux store to coordinate actions between windows.
|
|
10
|
+
* The algorithm does not affect the permanent store until the dragging action is complete (when onDragEnd is triggered). The `Tabs` react
|
|
11
|
+
* component temporarily removes the tab that is being dragged. `Tabs` react components in any window will then create "gaps" in the tab
|
|
12
|
+
* collection to indicate where the tab will be relocated. Gaps are created with a CSS transform that shifts tabs to the right to make
|
|
13
|
+
* the gap. Note that extra space is added to the end of the tab collection to balance the space lost when the tab was removed (transform
|
|
14
|
+
* space is not accounted for by the browser).
|
|
15
|
+
*
|
|
16
|
+
* 3) scrolling - A tab collection can be scrolled either with the mousewheel or by clicking on scroll buttons (chevrons). The `useScroll()`
|
|
17
|
+
* hook performs all the calculations necessary. The entire tab collection is then transformed to the left or right to emulate a scrolling
|
|
18
|
+
* action.
|
|
19
|
+
*
|
|
20
|
+
* 4) Title editing - Double clicking on a title allows it to be edited by the user. When in editing mode, the tab is rendered with an
|
|
21
|
+
* input field. Enter or Escape can be used to complete the edit.
|
|
22
|
+
*/
|
|
23
|
+
import React, { useContext, useEffect, useRef, useState } from "react";
|
|
24
|
+
import { useDispatch, useSelector } from "react-redux";
|
|
25
|
+
import { actions } from "../../../platform/services/window/modules/actions";
|
|
26
|
+
import { WindowNameContext } from "./WindowTitleBarContext";
|
|
27
|
+
import { TabTitle } from "./TabTitle";
|
|
28
|
+
import { useDragRegion } from "../../hooks/useDragRegion";
|
|
29
|
+
import { useMaximize } from "./useMaximize";
|
|
30
|
+
import { TitleEdit } from "./TitleEdit";
|
|
31
|
+
const TabClose = ({ tabWindowName }) => {
|
|
32
|
+
const dispatch = useDispatch();
|
|
33
|
+
const closeThisTab = (e) => {
|
|
34
|
+
// Stop propagation to prevent the tab from being promoted while we're actually closing it
|
|
35
|
+
e.stopPropagation();
|
|
36
|
+
dispatch(actions.closeTab({
|
|
37
|
+
targetWindowName: tabWindowName,
|
|
38
|
+
}));
|
|
39
|
+
};
|
|
40
|
+
return (React.createElement("div", { className: "fsbl-tab-close", onClick: closeThisTab },
|
|
41
|
+
React.createElement("i", { className: "ff-close" })));
|
|
42
|
+
};
|
|
43
|
+
const TabInnards = ({ editing, title, tabWindowName, cancelEditing, saveTitle, }) => {
|
|
44
|
+
if (editing)
|
|
45
|
+
return React.createElement(TitleEdit, { title: title, cancelEditing: cancelEditing, saveTitle: saveTitle });
|
|
46
|
+
return (React.createElement(React.Fragment, null,
|
|
47
|
+
React.createElement(TabTitle, { tabWindowName: tabWindowName }),
|
|
48
|
+
React.createElement(TabClose, { tabWindowName: tabWindowName })));
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Sets a custom drag image that is a standard size and semi-opaque. This makes it easier
|
|
52
|
+
* to see the tabs and gap below the cursor.
|
|
53
|
+
*/
|
|
54
|
+
const setDragImage = (transfer) => {
|
|
55
|
+
const width = 60;
|
|
56
|
+
const height = 20;
|
|
57
|
+
const border = 4;
|
|
58
|
+
const light = "rgba(255,255,255,.5)";
|
|
59
|
+
const dark = "rgba(0,0,0,.5)";
|
|
60
|
+
const canvas = document.createElement("canvas");
|
|
61
|
+
canvas.width = width;
|
|
62
|
+
canvas.height = height;
|
|
63
|
+
const ctx = canvas.getContext("2d");
|
|
64
|
+
for (let x = 0; x < width / 2; x++) {
|
|
65
|
+
for (let y = 0; y < height / 2; y++) {
|
|
66
|
+
ctx.fillStyle = (x + y) % 2 ? light : dark;
|
|
67
|
+
ctx.fillRect(x * 2, y * 2, 2, 2);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
ctx.clearRect(border, border, width - border * 2, height - border * 2);
|
|
71
|
+
// Add to browser body and then immediately remove in the timeout
|
|
72
|
+
// Position it way off the edge of the screen
|
|
73
|
+
Object.assign(canvas.style, {
|
|
74
|
+
position: "absolute",
|
|
75
|
+
left: "-4000px",
|
|
76
|
+
top: "-4000px",
|
|
77
|
+
width: `${width}px`,
|
|
78
|
+
height: `${height}}px`,
|
|
79
|
+
});
|
|
80
|
+
document.body.appendChild(canvas);
|
|
81
|
+
transfer.setDragImage(canvas, width / 2, height / 2);
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
canvas.remove();
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Encapsulates logic relating to dragging an individual tab. This interacts with the remote redux store, turning dragging on
|
|
88
|
+
* and off when dragstart and dragend events are triggered on the tab.
|
|
89
|
+
*/
|
|
90
|
+
const useDragTab = ({ draggable, tabWindowName, windowName, index, domRef, }) => {
|
|
91
|
+
const dispatch = useDispatch();
|
|
92
|
+
const state = useSelector((currentState) => currentState);
|
|
93
|
+
const onDragStart = (e) => {
|
|
94
|
+
var _a, _b, _c, _d;
|
|
95
|
+
if (!draggable || !windowName)
|
|
96
|
+
return;
|
|
97
|
+
dispatch(actions.setDraggingStatus({
|
|
98
|
+
windowNameBeingDragged: tabWindowName,
|
|
99
|
+
inWindowName: windowName,
|
|
100
|
+
temporaryPosition: index,
|
|
101
|
+
tabWidth: (_c = (_b = (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) === null || _b === void 0 ? void 0 : _b.width) !== null && _c !== void 0 ? _c : 60,
|
|
102
|
+
}));
|
|
103
|
+
// Not really used, but good housekeeping to have some data set
|
|
104
|
+
e.dataTransfer.setData("application/windowName", tabWindowName);
|
|
105
|
+
// Eliminates the default "+" that appears on the cursor
|
|
106
|
+
e.dataTransfer.effectAllowed = "move";
|
|
107
|
+
// Override the auto-generated image
|
|
108
|
+
setDragImage(e.dataTransfer);
|
|
109
|
+
/**
|
|
110
|
+
* We can't use React's onDragEnd event because we're temporarily removing our tab during the dragging. When
|
|
111
|
+
* we remove the tab, React loses its linkage to the orphaned DOM node. Instead, we manually set an HTML
|
|
112
|
+
* "dragend" event to capture the end of the drag action (and we're careful to also remove that event handler)
|
|
113
|
+
* after it triggers.
|
|
114
|
+
*/
|
|
115
|
+
const onDragEnd = (dragEvent) => {
|
|
116
|
+
var _a;
|
|
117
|
+
(_a = dragEvent.currentTarget) === null || _a === void 0 ? void 0 : _a.removeEventListener("dragend", onDragEnd);
|
|
118
|
+
dispatch(actions.stopDragging());
|
|
119
|
+
};
|
|
120
|
+
(_d = domRef.current) === null || _d === void 0 ? void 0 : _d.addEventListener("dragend", onDragEnd);
|
|
121
|
+
};
|
|
122
|
+
const onDragOver = (e) => {
|
|
123
|
+
var _a;
|
|
124
|
+
e.preventDefault();
|
|
125
|
+
if (!draggable || !windowName || !domRef || !state.dragging)
|
|
126
|
+
return;
|
|
127
|
+
const rect = (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
128
|
+
if (!rect)
|
|
129
|
+
return;
|
|
130
|
+
const midpoint = rect.x + rect.width / 2;
|
|
131
|
+
// If the mouse is over the left side of the tab then a gap should appear to the left of the tab. So if this tab is in position
|
|
132
|
+
// zero then the gap should take over that position. But if the mouse is over the right side of the tab then the gap should be
|
|
133
|
+
// to the right of this tab. So if this tab is in position zero then the gap should be in position 1.
|
|
134
|
+
const gapPosition = e.clientX < midpoint ? index : index + 1;
|
|
135
|
+
// Only dispatch if the position has changed. onDragOver fires continually as you're dragging (60 times per second) so we have
|
|
136
|
+
// to be careful not to do too much work in each cycle and not to trigger renders unless necessary
|
|
137
|
+
if (gapPosition !== state.dragging.temporaryPosition) {
|
|
138
|
+
dispatch(actions.setDraggingStatus(Object.assign(Object.assign({}, state.dragging), { inWindowName: windowName, temporaryPosition: gapPosition })));
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
return {
|
|
142
|
+
onDragStart,
|
|
143
|
+
onDragOver,
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* This hook encapsulates logic related to editing titles. Title editing is a local operation. It does
|
|
148
|
+
* not interact with the remote redux store until the title has been fully edited. The actual editing
|
|
149
|
+
* occurs in the TitleEdit component.
|
|
150
|
+
*/
|
|
151
|
+
const useEditTab = ({ allowEdit }) => {
|
|
152
|
+
const [editing, setEditing] = useState(false);
|
|
153
|
+
const dispatch = useDispatch();
|
|
154
|
+
// Only allow editing if the tab is wide enough
|
|
155
|
+
const maybeEditTitle = () => {
|
|
156
|
+
if (!allowEdit)
|
|
157
|
+
return;
|
|
158
|
+
setEditing(true);
|
|
159
|
+
};
|
|
160
|
+
const cancelEditing = () => {
|
|
161
|
+
setEditing(false);
|
|
162
|
+
};
|
|
163
|
+
const saveTitle = (title) => {
|
|
164
|
+
dispatch(actions.setUserDefinedTitle({
|
|
165
|
+
title,
|
|
166
|
+
}));
|
|
167
|
+
setEditing(false);
|
|
168
|
+
};
|
|
169
|
+
return {
|
|
170
|
+
maybeEditTitle,
|
|
171
|
+
cancelEditing,
|
|
172
|
+
saveTitle,
|
|
173
|
+
editing,
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* An individual tab. This handles dragging and clicking events.
|
|
178
|
+
*
|
|
179
|
+
* `index` is the tab's position in the tab list
|
|
180
|
+
* `gap` indicates a gap section for a possible drop
|
|
181
|
+
* `transform` the CSS transform that should be applied - which will create a gap when dragging tabs around
|
|
182
|
+
*/
|
|
183
|
+
const Tab = ({ tabWindowName, index, transform, }) => {
|
|
184
|
+
var _a, _b, _c, _d;
|
|
185
|
+
const dispatch = useDispatch();
|
|
186
|
+
const domRef = useRef(null);
|
|
187
|
+
const windowName = useContext(WindowNameContext);
|
|
188
|
+
const state = useSelector((currentState) => currentState);
|
|
189
|
+
const myState = state.windows[tabWindowName];
|
|
190
|
+
const title = (_a = myState === null || myState === void 0 ? void 0 : myState.title) !== null && _a !== void 0 ? _a : null;
|
|
191
|
+
const isThin = !!((_b = domRef === null || domRef === void 0 ? void 0 : domRef.current) === null || _b === void 0 ? void 0 : _b.clientWidth) && !state.dragging && ((_c = domRef === null || domRef === void 0 ? void 0 : domRef.current) === null || _c === void 0 ? void 0 : _c.clientWidth) < 80;
|
|
192
|
+
const isPromoted = (myState === null || myState === void 0 ? void 0 : myState.tabCollectionId)
|
|
193
|
+
? ((_d = state.tabCollections[myState.tabCollectionId]) === null || _d === void 0 ? void 0 : _d.promotedWindowName) === tabWindowName
|
|
194
|
+
: true;
|
|
195
|
+
// Only show the close button on wide tabs. On thin tabs, only show the close button if it is the current promoted tab.
|
|
196
|
+
const showCloseButton = !state.dragging && (!isThin || isPromoted);
|
|
197
|
+
const { editing, maybeEditTitle, cancelEditing, saveTitle } = useEditTab({
|
|
198
|
+
allowEdit: (myState === null || myState === void 0 ? void 0 : myState.editable) && isPromoted,
|
|
199
|
+
});
|
|
200
|
+
const draggable = !!windowName && !editing;
|
|
201
|
+
const { onDragStart, onDragOver } = useDragTab({
|
|
202
|
+
draggable,
|
|
203
|
+
tabWindowName,
|
|
204
|
+
windowName,
|
|
205
|
+
index,
|
|
206
|
+
domRef,
|
|
207
|
+
});
|
|
208
|
+
const promoteTab = () => {
|
|
209
|
+
dispatch(actions.promoteTab({
|
|
210
|
+
targetWindowName: tabWindowName,
|
|
211
|
+
}));
|
|
212
|
+
};
|
|
213
|
+
const style = transform
|
|
214
|
+
? {
|
|
215
|
+
transform,
|
|
216
|
+
}
|
|
217
|
+
: undefined;
|
|
218
|
+
const className = isPromoted && !editing && !state.dragging ? "fsbl-tab fsbl-active-tab" : "fsbl-tab";
|
|
219
|
+
return (React.createElement("div", { ref: domRef, draggable: !editing, onDragStart: onDragStart, onDragOver: onDragOver, onDoubleClick: maybeEditTitle, onClick: promoteTab, className: className, style: style, title: title !== null && title !== void 0 ? title : "", "data-show-close-button": showCloseButton },
|
|
220
|
+
React.createElement(TabInnards, { title: title, tabWindowName: tabWindowName, editing: editing, cancelEditing: cancelEditing, saveTitle: saveTitle })));
|
|
221
|
+
};
|
|
222
|
+
const domNotReady = {
|
|
223
|
+
scrollLeft: 0,
|
|
224
|
+
scrollWidth: 0,
|
|
225
|
+
offsetWidth: 0,
|
|
226
|
+
clientWidth: 0,
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* Scroll algorithm:
|
|
230
|
+
*
|
|
231
|
+
* Scrolling is accomplished using the "translateX" CSS transform. This transform shifts the entire fsbl-tabs-container to the right
|
|
232
|
+
* or to the left, creating the illusion of scrolling. The "transition" CSS provides an animation. This is the primary reason for using
|
|
233
|
+
* this technique (rather than adjusting scrollBy).
|
|
234
|
+
*
|
|
235
|
+
* `scrollAmount` is the distance that the dom element is shifted from its normal position. Note that a transform moves left in order to
|
|
236
|
+
* give the illusion of scrolling to the right. Thus the transform is always the negative inverse of `scrollAmount`.
|
|
237
|
+
*
|
|
238
|
+
* The transition animation is applied by default, taking effect when the scroll buttons (chevrons) are pressed. The transition is
|
|
239
|
+
* disabled when a mousewheel event is received. Mousewheel events provide a precise pixel amount, incorporating their own heuristics
|
|
240
|
+
* for easing (such as touch pad gestures, which get translated into a stream of mousewheel events). Thus, the transition is disabled for
|
|
241
|
+
* 500 milliseconds whenever a mousewheel event is received.
|
|
242
|
+
*/
|
|
243
|
+
const useScroll = () => {
|
|
244
|
+
var _a;
|
|
245
|
+
const [scrollAmount, setScrollAmountPrivate] = useState(0);
|
|
246
|
+
const scrollAmountRef = useRef(scrollAmount);
|
|
247
|
+
const [transition, setTransition] = useState(true);
|
|
248
|
+
const [transitionTimeout, setTransitionTimeout] = useState(null);
|
|
249
|
+
const tabContainerRef = useRef(null);
|
|
250
|
+
const { offsetWidth, scrollWidth } = (_a = tabContainerRef.current) !== null && _a !== void 0 ? _a : domNotReady;
|
|
251
|
+
const setScrollAmount = (newScrollAmount) => {
|
|
252
|
+
scrollAmountRef.current = newScrollAmount;
|
|
253
|
+
setScrollAmountPrivate(newScrollAmount);
|
|
254
|
+
};
|
|
255
|
+
const onWheel = (e) => {
|
|
256
|
+
if (e.deltaY < 0) {
|
|
257
|
+
setScrollAmount(Math.max(0, scrollAmount + e.deltaY));
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
setScrollAmount(Math.min(scrollWidth - offsetWidth, scrollAmount + e.deltaY));
|
|
261
|
+
}
|
|
262
|
+
setTransition(false);
|
|
263
|
+
if (transitionTimeout)
|
|
264
|
+
clearTimeout(transitionTimeout);
|
|
265
|
+
setTransitionTimeout(setTimeout(() => {
|
|
266
|
+
setTransition(true);
|
|
267
|
+
}, 500));
|
|
268
|
+
};
|
|
269
|
+
const lessScroll = () => {
|
|
270
|
+
setScrollAmount(Math.max(0, scrollAmount - 200));
|
|
271
|
+
};
|
|
272
|
+
const moreScroll = () => {
|
|
273
|
+
setScrollAmount(Math.min(scrollWidth - offsetWidth, scrollAmount + 200));
|
|
274
|
+
};
|
|
275
|
+
const enableLeftScrollButton = scrollAmount > 0;
|
|
276
|
+
// It's possible for scrollLeft to be a half pixel. Adding "1" ensures that it's over the scrollWidth when all the way to the right.
|
|
277
|
+
const enableRightScrollButton = scrollAmount + offsetWidth + 1 < scrollWidth;
|
|
278
|
+
useEffect(() => {
|
|
279
|
+
window.addEventListener("resize", () => {
|
|
280
|
+
var _a;
|
|
281
|
+
const { offsetWidth: updatedOffsetWidth, scrollWidth: updatedScrollWidth } = (_a = tabContainerRef.current) !== null && _a !== void 0 ? _a : domNotReady;
|
|
282
|
+
setScrollAmount(Math.min(updatedScrollWidth - updatedOffsetWidth, scrollAmountRef.current));
|
|
283
|
+
});
|
|
284
|
+
}, []);
|
|
285
|
+
const transforms = {
|
|
286
|
+
transform: `translateX(-${scrollAmount}px)`,
|
|
287
|
+
transition: transition ? `1s all ease` : `none`,
|
|
288
|
+
};
|
|
289
|
+
return {
|
|
290
|
+
lessScroll,
|
|
291
|
+
moreScroll,
|
|
292
|
+
enableLeftScrollButton,
|
|
293
|
+
enableRightScrollButton,
|
|
294
|
+
transforms,
|
|
295
|
+
onWheel,
|
|
296
|
+
tabContainerRef,
|
|
297
|
+
};
|
|
298
|
+
};
|
|
299
|
+
/**
|
|
300
|
+
* Encapsulation of the scrollable section of the tab region, with chevrons.
|
|
301
|
+
*
|
|
302
|
+
* Pass the tabs in as children.
|
|
303
|
+
*/
|
|
304
|
+
const Scrollable = ({ children, noScroll }) => {
|
|
305
|
+
const { lessScroll, moreScroll, enableLeftScrollButton, enableRightScrollButton, onWheel, transforms, tabContainerRef, } = useScroll();
|
|
306
|
+
const showScrollButtons = !noScroll && (enableLeftScrollButton || enableRightScrollButton);
|
|
307
|
+
return (React.createElement(React.Fragment, null,
|
|
308
|
+
showScrollButtons && (React.createElement("button", { className: "fsbl-tab-scroll-button", onClick: lessScroll, disabled: !enableLeftScrollButton }, "<")),
|
|
309
|
+
React.createElement("div", { className: "fsbl-tabs-scroll-surround", onWheel: onWheel },
|
|
310
|
+
React.createElement("div", { className: "fsbl-tabs-container", ref: tabContainerRef, style: transforms }, children)),
|
|
311
|
+
showScrollButtons && (React.createElement("button", { className: "fsbl-tab-scroll-button", onClick: moreScroll, disabled: !enableRightScrollButton }, ">"))));
|
|
312
|
+
};
|
|
313
|
+
const createTab = ({ transform, tabWindowName, index, }) => React.createElement(Tab, { tabWindowName: tabWindowName, index: index, transform: transform, key: tabWindowName });
|
|
314
|
+
/**
|
|
315
|
+
* The collection of tabs
|
|
316
|
+
*/
|
|
317
|
+
const Tabs = ({ useDOMBasedMovement }) => {
|
|
318
|
+
var _a, _b, _c, _d, _e;
|
|
319
|
+
const dispatch = useDispatch();
|
|
320
|
+
const domRef = useRef(null);
|
|
321
|
+
const state = useSelector((currentState) => currentState);
|
|
322
|
+
const windowName = useContext(WindowNameContext);
|
|
323
|
+
const myState = windowName ? state.windows[windowName] : null;
|
|
324
|
+
const { onMouseDown, onMouseMove } = useDragRegion((_a = myState === null || myState === void 0 ? void 0 : myState.maximized) !== null && _a !== void 0 ? _a : false);
|
|
325
|
+
const { toggle: toggleMaximize } = useMaximize();
|
|
326
|
+
const tabCollectionId = (_b = myState === null || myState === void 0 ? void 0 : myState.tabCollectionId) !== null && _b !== void 0 ? _b : null;
|
|
327
|
+
const defaultTabs = [windowName !== null && windowName !== void 0 ? windowName : ""];
|
|
328
|
+
const tabs = tabCollectionId ? (_c = state.tabCollections[tabCollectionId]) === null || _c === void 0 ? void 0 : _c.tabs : defaultTabs !== null && defaultTabs !== void 0 ? defaultTabs : defaultTabs;
|
|
329
|
+
const gapPosition = (_e = (_d = state.dragging) === null || _d === void 0 ? void 0 : _d.temporaryPosition) !== null && _e !== void 0 ? _e : null;
|
|
330
|
+
const gapWidth = 60; // state.dragging?.tabWidth contains the actual width of the tab but 60px provides a better UX
|
|
331
|
+
// If a window is being dragged then filter it out so that it isn't displayed, then convert from string to object and calculate the transform size to create a gap
|
|
332
|
+
const tabsWithTransform = tabs
|
|
333
|
+
.filter((tabWindowName) => { var _a; return tabWindowName !== ((_a = state.dragging) === null || _a === void 0 ? void 0 : _a.windowNameBeingDragged); })
|
|
334
|
+
.map((tabWindowName, index) => {
|
|
335
|
+
var _a;
|
|
336
|
+
return {
|
|
337
|
+
transform: ((_a = state.dragging) === null || _a === void 0 ? void 0 : _a.inWindowName) === windowName && gapPosition !== null && index >= gapPosition
|
|
338
|
+
? `translateX(${gapWidth}px)`
|
|
339
|
+
: null,
|
|
340
|
+
tabWindowName,
|
|
341
|
+
index,
|
|
342
|
+
};
|
|
343
|
+
});
|
|
344
|
+
/**
|
|
345
|
+
* When we remove the tab that is being dragged it causes the tab collection space to shrink, since it thinks there
|
|
346
|
+
* is one less element. So we add an equivalent amount of space to the end of the tab collection to prevent the
|
|
347
|
+
* shrinkage, providing UX feedback to the end user when the tab is inserted.
|
|
348
|
+
*
|
|
349
|
+
* We "display" the gap space only when the tab is going to be dropped into that space (when the tab is going to be)
|
|
350
|
+
* dropped into the final position.
|
|
351
|
+
*/
|
|
352
|
+
const maybeAddGapSpace = () => {
|
|
353
|
+
var _a, _b;
|
|
354
|
+
const style = {
|
|
355
|
+
width: `${(_a = state.dragging) === null || _a === void 0 ? void 0 : _a.tabWidth}px`,
|
|
356
|
+
};
|
|
357
|
+
if (((_b = state.dragging) === null || _b === void 0 ? void 0 : _b.inWindowName) !== windowName)
|
|
358
|
+
return;
|
|
359
|
+
// Only "display" the gap if the drag action is occurring in our window and the gap should be in the final position
|
|
360
|
+
const dataDisplay = gapPosition === tabsWithTransform.length;
|
|
361
|
+
if (gapPosition !== null)
|
|
362
|
+
return React.createElement("div", { className: "fsbl-tab-gap", style: style, "data-display": dataDisplay });
|
|
363
|
+
return null;
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* This code is disabled due to a bug in Chromium on Windows. dragLeave events do not fire if
|
|
367
|
+
* the draggable object is moved too quickly out of the window. To work around this problem the
|
|
368
|
+
* docking system watches mouse movement during drag operations and detects when the mouse has
|
|
369
|
+
* moved outside of the _calculated_ tab area. This code is in dockingMain.ts.
|
|
370
|
+
*
|
|
371
|
+
* Normal comment for when this function can be used again:
|
|
372
|
+
* dragleave triggers when the dragged element leaves a valid drop target. This can therefore
|
|
373
|
+
* trigger as the mouse moves from tab to tab. We only want to catch the situation where the
|
|
374
|
+
* mouse leaves the tab area entirely, so we do some mouse location calculations to determine
|
|
375
|
+
* this.
|
|
376
|
+
*
|
|
377
|
+
* If we have definitely left the tabbing region then we set tabPosition to null in order
|
|
378
|
+
* that any gaps be closed.
|
|
379
|
+
*/
|
|
380
|
+
const onDragLeave = (e) => {
|
|
381
|
+
/*
|
|
382
|
+
if (!state.dragging) return;
|
|
383
|
+
const rect = domRef.current?.getBoundingClientRect();
|
|
384
|
+
if (!rect) return;
|
|
385
|
+
if (e.clientX > rect.left && e.clientX < rect.right && e.clientY > rect.top && e.clientY < rect.bottom) return;
|
|
386
|
+
dispatch(
|
|
387
|
+
actions.setDraggingStatus({
|
|
388
|
+
...state.dragging,
|
|
389
|
+
temporaryPosition: null,
|
|
390
|
+
inWindowName: null,
|
|
391
|
+
})
|
|
392
|
+
);*/
|
|
393
|
+
};
|
|
394
|
+
/**
|
|
395
|
+
* If the user enters the tab collection space from the outside then the temporary position will probably be null.
|
|
396
|
+
* We immediately set it to the end position of our current collection in order to indicate that it can now be
|
|
397
|
+
* dropped into this tab collection.
|
|
398
|
+
*/
|
|
399
|
+
const onDragOver = () => {
|
|
400
|
+
var _a;
|
|
401
|
+
if (!state.dragging)
|
|
402
|
+
return;
|
|
403
|
+
if (!windowName)
|
|
404
|
+
return;
|
|
405
|
+
if (((_a = state.dragging) === null || _a === void 0 ? void 0 : _a.temporaryPosition) === null) {
|
|
406
|
+
dispatch(actions.setDraggingStatus(Object.assign(Object.assign({}, state.dragging), { temporaryPosition: tabsWithTransform.length, inWindowName: windowName })));
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
/**
|
|
410
|
+
* When dragging a tab over the right side of the WindowTitleBar, set the
|
|
411
|
+
* drag position to the last position. Without this, sometimes the gap gets
|
|
412
|
+
* stuck in the second to last position.
|
|
413
|
+
*/
|
|
414
|
+
const dragOverDragRegion = () => {
|
|
415
|
+
var _a;
|
|
416
|
+
if (!state.dragging)
|
|
417
|
+
return;
|
|
418
|
+
if (!windowName)
|
|
419
|
+
return;
|
|
420
|
+
if (((_a = state.dragging) === null || _a === void 0 ? void 0 : _a.temporaryPosition) !== tabsWithTransform.length) {
|
|
421
|
+
dispatch(actions.setDraggingStatus(Object.assign(Object.assign({}, state.dragging), { temporaryPosition: tabsWithTransform.length, inWindowName: windowName })));
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
const className = useDOMBasedMovement
|
|
425
|
+
? "fsbl-guaranteed-drag-area fsbl-app-region"
|
|
426
|
+
: "fsbl-guaranteed-drag-area fsbl-app-region fsbl-no-dom-movement";
|
|
427
|
+
return (React.createElement("div", { className: "fsbl-tab-region-tabbing-enabled", onDragLeave: onDragLeave, onDragOver: onDragOver, ref: domRef },
|
|
428
|
+
React.createElement(Scrollable, { noScroll: !!state.dragging },
|
|
429
|
+
tabsWithTransform.map((tab) => createTab(tab)),
|
|
430
|
+
maybeAddGapSpace()),
|
|
431
|
+
React.createElement("div", { className: className, onMouseDown: onMouseDown, onMouseMove: onMouseMove, onDoubleClick: toggleMaximize, onDragOver: dragOverDragRegion })));
|
|
432
|
+
};
|
|
433
|
+
/**
|
|
434
|
+
* The "Tab Region", which is the area where tabs appear but also where just the title appears
|
|
435
|
+
* if tabbing is disabled.
|
|
436
|
+
*/
|
|
437
|
+
export const TabRegion = () => {
|
|
438
|
+
var _a, _b;
|
|
439
|
+
const windowName = useContext(WindowNameContext);
|
|
440
|
+
const state = useSelector((currentState) => currentState);
|
|
441
|
+
const myState = windowName ? state.windows[windowName] : null;
|
|
442
|
+
const { useDOMBasedMovement = true } = state;
|
|
443
|
+
const enableTabbing = (_a = myState === null || myState === void 0 ? void 0 : myState.enableTabbing) !== null && _a !== void 0 ? _a : false;
|
|
444
|
+
const { onMouseDown, onMouseMove } = useDragRegion((_b = myState === null || myState === void 0 ? void 0 : myState.maximized) !== null && _b !== void 0 ? _b : false);
|
|
445
|
+
const { toggle: toggleMaximize } = useMaximize();
|
|
446
|
+
const className = useDOMBasedMovement
|
|
447
|
+
? "fsbl-tab-region-tabbing-disabled fsbl-app-region"
|
|
448
|
+
: "fsbl-tab-region-tabbing-disabled fsbl-no-dom-movement fsbl-app-region";
|
|
449
|
+
const singleTitleOrTabs = () => enableTabbing ? (React.createElement(Tabs, { useDOMBasedMovement: useDOMBasedMovement })) : (React.createElement("div", { className: className, onDoubleClick: toggleMaximize, onMouseDown: onMouseDown, onMouseMove: onMouseMove },
|
|
450
|
+
React.createElement(TabTitle, { tabWindowName: windowName })));
|
|
451
|
+
return React.createElement("div", { className: "fsbl-tab-region" }, singleTitleOrTabs());
|
|
452
|
+
};
|
|
453
|
+
//# sourceMappingURL=TabRegion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabRegion.js","sourceRoot":"","sources":["../../../../../src/ui/components/windowTitleBar/TabRegion.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* Displays the tab's icon and text. Editing of titles is handled within this component.
|
|
4
|
+
*/
|
|
5
|
+
export declare const TabTitle: ({ tabWindowName }: {
|
|
6
|
+
tabWindowName: string | null;
|
|
7
|
+
}) => JSX.Element;
|
|
8
|
+
//# sourceMappingURL=TabTitle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabTitle.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/windowTitleBar/TabTitle.tsx"],"names":[],"mappings":";AAKA;;GAEG;AACH,eAAO,MAAM,QAAQ;mBAAwC,MAAM,GAAG,IAAI;iBAazE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Icon } from "../icon/Icon";
|
|
3
|
+
import { useSelector } from "react-redux";
|
|
4
|
+
/**
|
|
5
|
+
* Displays the tab's icon and text. Editing of titles is handled within this component.
|
|
6
|
+
*/
|
|
7
|
+
export const TabTitle = ({ tabWindowName }) => {
|
|
8
|
+
var _a;
|
|
9
|
+
const state = useSelector((currentState) => currentState);
|
|
10
|
+
const myState = tabWindowName ? state.windows[tabWindowName] : null;
|
|
11
|
+
const title = (_a = myState === null || myState === void 0 ? void 0 : myState.title) !== null && _a !== void 0 ? _a : "";
|
|
12
|
+
const icon = myState === null || myState === void 0 ? void 0 : myState.icon;
|
|
13
|
+
return (React.createElement("div", { className: "fsbl-tab-title" },
|
|
14
|
+
icon && React.createElement(Icon, Object.assign({}, icon)),
|
|
15
|
+
React.createElement("span", { className: "fsbl-tab-title-text" }, title)));
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=TabTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabTitle.js","sourceRoot":"","sources":["../../../../../src/ui/components/windowTitleBar/TabTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAE,aAAa,EAAoC,EAAE,EAAE;;IAC/E,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,YAAiC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IAE/E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,MAAM,KAAK,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IAE3B,OAAO,CACN,6BAAK,SAAS,EAAC,gBAAgB;QAC7B,IAAI,IAAI,oBAAC,IAAI,oBAAK,IAAI,EAAI;QAC3B,8BAAM,SAAS,EAAC,qBAAqB,IAAE,KAAK,CAAQ,CAC/C,CACN,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* A simple React component for a user to set a custom title for a tab.
|
|
4
|
+
*/
|
|
5
|
+
export declare const TitleEdit: ({ title, cancelEditing, saveTitle, }: {
|
|
6
|
+
title: string | null;
|
|
7
|
+
cancelEditing: () => void;
|
|
8
|
+
saveTitle: (newTitle: string | null) => void;
|
|
9
|
+
}) => JSX.Element;
|
|
10
|
+
//# sourceMappingURL=TitleEdit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TitleEdit.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/windowTitleBar/TitleEdit.tsx"],"names":[],"mappings":";AAEA;;GAEG;AACH,eAAO,MAAM,SAAS;WAKd,MAAM,GAAG,IAAI;mBACL,MAAM,IAAI;0BACH,MAAM,GAAG,IAAI,KAAK,IAAI;iBAuC5C,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React, { useState, useRef, useEffect } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* A simple React component for a user to set a custom title for a tab.
|
|
4
|
+
*/
|
|
5
|
+
export const TitleEdit = ({ title, cancelEditing, saveTitle, }) => {
|
|
6
|
+
const [newTitle, setNewTitle] = useState(title);
|
|
7
|
+
const ref = useRef(null);
|
|
8
|
+
// Sets the cursor focus in the input box
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
var _a;
|
|
11
|
+
(_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
12
|
+
}, []);
|
|
13
|
+
const onBlur = () => {
|
|
14
|
+
cancelEditing();
|
|
15
|
+
};
|
|
16
|
+
const onKeyDown = (e) => {
|
|
17
|
+
if (e.key === "Escape")
|
|
18
|
+
cancelEditing();
|
|
19
|
+
if (e.key === "Enter") {
|
|
20
|
+
// When the user erases the entire input then the title should revert back to its default
|
|
21
|
+
const replacementTitle = newTitle === "" ? null : newTitle;
|
|
22
|
+
saveTitle(replacementTitle);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const onChange = (e) => {
|
|
26
|
+
setNewTitle(e.target.value);
|
|
27
|
+
};
|
|
28
|
+
return (React.createElement("input", { ref: ref, value: newTitle !== null && newTitle !== void 0 ? newTitle : "", onBlur: onBlur, onChange: onChange, onKeyDown: onKeyDown, type: "text", className: "fsbl-tab-input", maxLength: 32 }));
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=TitleEdit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TitleEdit.js","sourceRoot":"","sources":["../../../../../src/ui/components/windowTitleBar/TitleEdit.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACzB,KAAK,EACL,aAAa,EACb,SAAS,GAKT,EAAE,EAAE;IACJ,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAElD,yCAAyC;IACzC,SAAS,CAAC,GAAG,EAAE;;QACd,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,0CAAE,KAAK,EAAE,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,GAAG,EAAE;QACnB,aAAa,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAwC,EAAE,EAAE;QAC9D,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;YAAE,aAAa,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;YACtB,yFAAyF;YACzF,MAAM,gBAAgB,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC3D,SAAS,CAAC,gBAAgB,CAAC,CAAC;SAC5B;IACF,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC3D,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACN,+BACC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,gBAAgB,EAC1B,SAAS,EAAE,EAAE,GACZ,CACF,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* Rendering of the WindowTitleBar is dependent on it knowing its own windowName. The windowName
|
|
4
|
+
* is retrieved asynchronously on initial render (by calling getWindowName()).
|
|
5
|
+
*
|
|
6
|
+
* The windowName is made available to sub-components via a ReactContext (WindowNameContext). With
|
|
7
|
+
* the windowName, the sub-components can then look inside the redux store for the values that pertain
|
|
8
|
+
* to them.
|
|
9
|
+
*/
|
|
10
|
+
export declare type WindowName = string | null;
|
|
11
|
+
export declare const WindowNameContext: import("react").Context<WindowName>;
|
|
12
|
+
//# sourceMappingURL=WindowTitleBarContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WindowTitleBarContext.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/windowTitleBar/WindowTitleBarContext.tsx"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,oBAAY,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;AAEvC,eAAO,MAAM,iBAAiB,qCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WindowTitleBarContext.js","sourceRoot":"","sources":["../../../../../src/ui/components/windowTitleBar/WindowTitleBarContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAatC,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAa,IAAI,CAAC,CAAC"}
|